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 
4 struct A { int a; };
5 
6 #if N == 1
7 // ChooseExpr
test(int (&)[sizeof (__builtin_choose_expr (true,1,1),T ())])8 template<class T> void test(int (&)[sizeof(__builtin_choose_expr(true, 1, 1), T())]) {} // expected-error {{cannot yet mangle}}
9 template void test<int>(int (&)[sizeof(int)]);
10 
11 #elif N == 2
12 // CompoundLiteralExpr
test(int (&)[sizeof ((A){},T ())])13 template<class T> void test(int (&)[sizeof((A){}, T())]) {} // expected-error {{cannot yet mangle}}
14 template void test<int>(int (&)[sizeof(A)]);
15 
16 // FIXME: There are several more cases we can't yet mangle.
17 
18 #else
19 #error unknown N
20 #endif
21