From 6e5dedda84b1879e814ad686adc3f00ab063c15c Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Mon, 22 Sep 2014 11:39:20 +0200 Subject: [PATCH] PR lto/63270 - new test * g++.dg/lto/pr63270_0.C: New test. * g++.dg/lto/pr63270_1.C: New test. From-SVN: r215451 --- gcc/testsuite/ChangeLog | 6 +++ gcc/testsuite/g++.dg/lto/pr63270_0.C | 72 ++++++++++++++++++++++++++++ gcc/testsuite/g++.dg/lto/pr63270_1.C | 53 ++++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 gcc/testsuite/g++.dg/lto/pr63270_0.C create mode 100644 gcc/testsuite/g++.dg/lto/pr63270_1.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 61b15e08757..c200560689d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-09-22 Martin Liska + + PR lto/63270 + * g++.dg/lto/pr63270_0.C: New test. + * g++.dg/lto/pr63270_1.C: New test. + 2014-09-21 Uros Bizjak * gcc.target/i386/avx-vzeroupper-16.c (dg-final): Remove check diff --git a/gcc/testsuite/g++.dg/lto/pr63270_0.C b/gcc/testsuite/g++.dg/lto/pr63270_0.C new file mode 100644 index 00000000000..98f27350d5a --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/pr63270_0.C @@ -0,0 +1,72 @@ +// { dg-lto-do link } +// { 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 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 {}; +class C { +public: + struct Type { + typedef v8::internal::FuncNameInferrer Scope; + typedef int Zone; + }; +}; +class G : ParserBase { +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() +{ + return 0; +} diff --git a/gcc/testsuite/g++.dg/lto/pr63270_1.C b/gcc/testsuite/g++.dg/lto/pr63270_1.C new file mode 100644 index 00000000000..a842e5cfcc6 --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/pr63270_1.C @@ -0,0 +1,53 @@ +typedef unsigned long uintptr_t; +namespace v8 +{ + + int kPointerSize = 0; + + class Extension; + namespace internal + { + class Token; + class Scanner; + int kCodeOffset = 0; + int kOptimizedCodeMapOffset = 0; + int kScopeInfoOffset = 0; + + 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 PreParser; + class PreParserTraits + { + public:struct Type + { + typedef PreParserScope Scope; + typedef void Zone; + }; + PreParser *pre_parser_; + }; + class PreParser:ParserBase < PreParserTraits > + { + int ParseMemberWithNewPrefixesExpression ( bool * ); + }; + int PreParser::ParseMemberWithNewPrefixesExpression ( bool * ) + { + } + } +} -- 2.30.2