diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-array7.C | 13 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C | 28 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem3.C | 16 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist-array4.C | 9 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C | 7 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/rv-cond1.C | 13 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/expr/cond12.C | 12 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/ext/restrict2.C | 8 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/init/explicit2.C | 8 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-39.C | 28 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/opt/pr62146.C | 51 | ||||
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local10.C | 23 |
12 files changed, 215 insertions, 1 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-array7.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-array7.C new file mode 100644 index 000000000..8f74675f2 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-array7.C @@ -0,0 +1,13 @@ +// PR c++/61994 +// { dg-do compile { target c++11 } } + +struct A { int i,j; }; + +struct X { + A a = {1,1}; +}; + +constexpr X table[1][1] = {{ {} }}; + +#define SA(X) static_assert(X,#X) +SA(table[0][0].a.i == 1); diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C new file mode 100644 index 000000000..f491994a1 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C @@ -0,0 +1,28 @@ +// PR c++/61959 +// { dg-do compile { target c++11 } } + +template <class Coord> struct BasePoint +{ + Coord x, y; + constexpr BasePoint (Coord, Coord) : x (0), y (0) {} +}; +template <class T> struct BaseCoord +{ + int value; + constexpr BaseCoord (T) : value (1) {} +}; +template <class units> struct IntCoordTyped : BaseCoord<int>, units +{ + typedef BaseCoord Super; + constexpr IntCoordTyped (int) : Super (0) {} +}; +template <class units> +struct IntPointTyped : BasePoint<IntCoordTyped<units> >, units +{ + typedef BasePoint<IntCoordTyped<units> > Super; + constexpr IntPointTyped (int, int) : Super (0, 0) {} +}; +struct A +{ +}; +IntPointTyped<A> a (0, 0); diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem3.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem3.C new file mode 100644 index 000000000..c5e2101c0 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem3.C @@ -0,0 +1,16 @@ +// PR c++/62129 +// { dg-do compile { target c++11 } } + +class Evaluator +{ + int MakeChangelist (); + typedef int (Evaluator::*fac_t)(); + struct CreatorEntry + { + const char *type; + fac_t factory; + }; + static constexpr CreatorEntry kCreators[] = { "", &Evaluator::MakeChangelist }; +}; + +constexpr Evaluator::CreatorEntry Evaluator::kCreators[]; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist-array4.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist-array4.C new file mode 100644 index 000000000..af2045d9b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist-array4.C @@ -0,0 +1,9 @@ +// PR c++/58636 +// { dg-do compile { target c++11 } } + +#include <initializer_list> + +// { dg-error "pointer to reference" "" { target *-*-* } 0 } +int foo(std::initializer_list<int&&>); + +int i = foo({ 0 }); // { dg-error "std::initializer_list" } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C index adbb4dbca..79ab4107d 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C @@ -1,5 +1,6 @@ // PR c++/61566 // { dg-do compile { target c++11 } } +// { dg-options "-fabi-version=0" } struct function { @@ -7,6 +8,7 @@ struct function function (_Functor); }; +template <class U> struct C { template <typename T> @@ -15,6 +17,9 @@ struct C void bar () { - C c; + C<int> c; c.foo (1); } + +// { dg-final { scan-assembler "_ZN8functionC1IZN1CIiE3fooIiEEvT_S_Ed_UlvE_EET_" } } +// { dg-final { scan-assembler-not "_ZZN1CIiE3fooIiEEvT_8functionEd_NKUlvE_clEv" } } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/rv-cond1.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/rv-cond1.C new file mode 100644 index 000000000..a8f598f17 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/rv-cond1.C @@ -0,0 +1,13 @@ +// PR c++/58714 +// { dg-do compile { target c++11 } } + +struct X { + X& operator=(const X&) = delete; + X& operator=(X&& ) = default; +}; + +void f(bool t) { + X a, b; + *(t ? &a : &b) = X(); + (t ? a : b) = X(); +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/expr/cond12.C b/gcc-4.9/gcc/testsuite/g++.dg/expr/cond12.C new file mode 100644 index 000000000..9134f8166 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/expr/cond12.C @@ -0,0 +1,12 @@ +// PR c++/58714 +// { dg-do run } + +struct X { + X& operator=(const X&){} + X& operator=(X&){__builtin_abort();} +}; + +int main(int argv,char**) { + X a, b; + ((argv > 2) ? a : b) = X(); +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/restrict2.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/restrict2.C new file mode 100644 index 000000000..f05321002 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/restrict2.C @@ -0,0 +1,8 @@ +// PR c++/60872 +// { dg-options "" } + +typedef double *__restrict T; +void f(T* p) +{ + void *p2 = p; +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/explicit2.C b/gcc-4.9/gcc/testsuite/g++.dg/init/explicit2.C new file mode 100644 index 000000000..d1dbb39fc --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/explicit2.C @@ -0,0 +1,8 @@ +// PR c++/60417 + +struct A { explicit A(int = 0); }; + +int main() +{ + A a[1] = { }; +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-39.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-39.C new file mode 100644 index 000000000..fbeea126e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-39.C @@ -0,0 +1,28 @@ +// PR c++/61214 +/* { dg-options "-O2 -fdump-tree-optimized" } */ + +struct Base +{ + virtual ~Base(); + virtual Base* clone() { + return 0; + } +}; + +struct Foo : Base +{ + virtual ~Foo(); + virtual Base* clone() { + return new Foo(); + } +}; + +int main() +{ + Base* f = new Foo(); + f->clone(); + return 0; +} + +/* { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr62146.C b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr62146.C new file mode 100644 index 000000000..dbe417434 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr62146.C @@ -0,0 +1,51 @@ +/* PR rtl-optimization/62146 */ +/* { dg-do compile } */ +/* { dg-options "-O2 " } */ +class F +{ +public: + virtual ~ F (); +}; +template < class CL > class G:public F +{ + int *member_; +public: + G ( int *b): member_ (0) + { + } +}; + +class D +{ +public: + template < class CL > void RegisterNonTagCallback (int, + void (CL:: + *p3) ()) + { + InternalRegisterNonTag (p3 ? new G < CL > ( 0) : 0); + } void InternalRegisterNonTag (F *); +}; + +void fn1 (); +class C1 +{ + void foo(); + class TokenType + { + public: + void AddToken () + { + } + }; + C1::TokenType bar_t; +}; +D a; +void C1::foo() +{ + if (&bar_t) + fn1 (); + for (int i = 0; i < sizeof 0; ++i) + a.RegisterNonTagCallback (0, &TokenType::AddToken); +} + +/* { dg-final { scan-assembler-not "mov.*_ZN2C19TokenType8AddTokenEv, .\\\(" } } */ diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local10.C b/gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local10.C new file mode 100644 index 000000000..48c1b861c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local10.C @@ -0,0 +1,23 @@ +// PR c++/58624 + +// { dg-do run { target c++11 } } +// { dg-add-options tls } +// { dg-require-effective-target tls_runtime } + +int i; + +template <typename> struct A +{ + static thread_local int s; + + A () { i = s; } +}; + +int f() { return 42; } +template <typename T> thread_local int A<T>::s = f(); + +int main () { + A<void> a; + if (i != 42) + __builtin_abort(); +} |