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 |
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 |
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 | |