1 // RUN: %clang_cc1 -triple=x86_64-linux-gnu -emit-llvm -o - %s | FileCheck %s
3 // Don't crash if the argument to __builtin_constant_p isn't scalar.
5 constexpr bool is_constant(const T v
) {
6 return __builtin_constant_p(v
);
15 constexpr numeric(S value
)
16 : value_(static_cast<T
>(value
)) {}
23 return is_constant(numeric
<int>(1));
30 // CHECK: define {{.*}}bcp_stmt_expr_1
31 bool bcp_stmt_expr_1() {
32 // CHECK-NOT: call {{.*}}with_dtorD
33 return __builtin_constant_p(({with_dtor wd
; 123;}));
37 // CHECK: define {{.*}}bcp_stmt_expr_2
38 bool bcp_stmt_expr_2(int n
) {
39 // CHECK-NOT: call {{.*}}do_not_call
40 return __builtin_constant_p(({
41 // This has a side-effect due to the VLA bound, so CodeGen should fold it
43 typedef int arr
[do_not_call()];
47 // CHECK: ret i1 false