Clang Project

clang_source_code/test/CodeGenCXX/mangle-fail.cpp
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
4struct A { int a; };
5
6#if N == 1
7// ChooseExpr
8template<class T> void test(int (&)[sizeof(__builtin_choose_expr(true, 1, 1), T())]) {} // expected-error {{cannot yet mangle}}
9template void test<int>(int (&)[sizeof(int)]);
10
11#elif N == 2
12// CompoundLiteralExpr
13template<class T> void test(int (&)[sizeof((A){}, T())]) {} // expected-error {{cannot yet mangle}}
14template 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