Commit 2f77200b by Martin Liska Committed by Martin Liska

pr63270.h: New test.

	* g++.dg/lto/pr63270.h: New test.
	* g++.dg/lto/pr63270_0.C (int main): Implementation replaced with
	include.
	* g++.dg/lto/pr63270_2.C: New test.

From-SVN: r215967
parent a35c1ac7
2014-10-07 Martin Liska <mliska@suse.cz>
* g++.dg/lto/pr63270.h: New test.
* g++.dg/lto/pr63270_0.C (int main): Implementation replaced with
include.
* g++.dg/lto/pr63270_2.C: New test.
2014-10-07 Eric Botcazou <ebotcazou@adacore.com> 2014-10-07 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/lto16.adb: New test. * gnat.dg/lto16.adb: New test.
......
typedef unsigned long uintptr_t;
namespace v8 {
class Extension;
namespace internal {
class A {
public:
A(int) {};
};
class B {
public:
B(int) {};
};
class Scanner;
class FuncNameInferrer;
template <typename Traits> class ParserBase : Traits {
class FunctionState;
bool parenthesized_function_;
typename Traits::Type::Scope *scope_;
FunctionState *function_state_;
v8::Extension *extension_;
FuncNameInferrer *fni_;
Scanner *scanner_;
uintptr_t stack_limit_;
bool stack_overflow_;
bool allow_lazy_;
bool allow_natives_syntax_;
bool allow_generators_;
bool allow_for_of_;
typename Traits::Type::Zone *zone_;
};
class PreParserScope;
class F;
class PreParserTraits {
public:
struct Type {
typedef PreParserScope Scope;
typedef void Zone;
};
private:
F *pre_parser_;
};
class F : ParserBase<PreParserTraits> {};
class C {
public:
struct Type {
typedef v8::internal::FuncNameInferrer Scope;
typedef int Zone;
};
};
class G : ParserBase<C> {
public:
static int m_fn1();
static int test();
F reusable_preparser_;
};
class D {
public:
D(int a) : function_(0), context_(0), nested_scope_chain_(0) { G::test(); }
B function_;
B context_;
A nested_scope_chain_;
};
}
}
// { dg-lto-do link } // { dg-lto-do link }
// { dg-lto-options {{-flto -O2 -Wno-odr}} } // { dg-lto-options {{-flto -O2 -Wno-odr}} }
typedef unsigned long uintptr_t;
namespace v8 {
class Extension;
namespace internal {
class A {
public:
A(int);
};
class B {
public:
B(int);
};
class Scanner;
class FuncNameInferrer;
template <typename Traits> class ParserBase : Traits {
class FunctionState;
bool parenthesized_function_;
typename Traits::Type::Scope *scope_;
FunctionState *function_state_;
v8::Extension *extension_;
FuncNameInferrer *fni_;
Scanner *scanner_;
uintptr_t stack_limit_;
bool stack_overflow_;
bool allow_lazy_;
bool allow_natives_syntax_;
bool allow_generators_;
bool allow_for_of_;
typename Traits::Type::Zone *zone_;
};
class PreParserScope;
class F;
class PreParserTraits {
public:
struct Type {
typedef PreParserScope Scope;
typedef void Zone;
};
private: #include "pr63270.h"
F *pre_parser_;
};
class F : ParserBase<PreParserTraits> {};
class C {
public:
struct Type {
typedef v8::internal::FuncNameInferrer Scope;
typedef int Zone;
};
};
class G : ParserBase<C> {
public:
static int m_fn1();
F reusable_preparser_;
};
class D {
public:
D(int) : function_(0), context_(0), nested_scope_chain_(0) { G::m_fn1(); }
B function_;
B context_;
A nested_scope_chain_;
};
void fn1() { D(0); }
}
}
int main() int main()
{ {
......
// { dg-options "-fno-lto" }
#include "pr63270.h"
int v8::internal::G::test()
{
return 2;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment