Home | History | Annotate | Download | only in CodeGenCXX
      1 // RUN: %clang_cc1 -emit-llvm-only -x c++ -std=c++11 -triple %itanium_abi_triple -verify %s -DN=1
      2 // RUN: %clang_cc1 -emit-llvm-only -x c++ -std=c++11 -triple %itanium_abi_triple -verify %s -DN=2
      3 // RUN: %clang_cc1 -emit-llvm-only -x c++ -std=c++11 -triple %itanium_abi_triple -verify %s -DN=3
      4 
      5 struct A { int a; };
      6 
      7 #if N == 1
      8 // ChooseExpr
      9 template<class T> void test(int (&)[sizeof(__builtin_choose_expr(true, 1, 1), T())]) {} // expected-error {{cannot yet mangle}}
     10 template void test<int>(int (&)[sizeof(int)]);
     11 
     12 #elif N == 2
     13 // CompoundLiteralExpr
     14 template<class T> void test(int (&)[sizeof((A){}, T())]) {} // expected-error {{cannot yet mangle}}
     15 template void test<int>(int (&)[sizeof(A)]);
     16 
     17 #elif N == 3
     18 // DesignatedInitExpr
     19 template<class T> void test(int (&)[sizeof(A{.a = 10}, T())]) {} // expected-error {{cannot yet mangle}}
     20 template void test<int>(int (&)[sizeof(A)]);
     21 
     22 // FIXME: There are several more cases we can't yet mangle.
     23 
     24 #else
     25 #error unknown N
     26 #endif
     27