1 // RUN: %clang_cc1 %s -triple %itanium_abi_triple -Wno-unused-value -emit-llvm -o - -std=c++11 | FileCheck %s
12 void f1(A
*x
) { typeid(false, *x
); }
13 // CHECK-LABEL: define {{.*}}void @_Z2f1P1A
14 // CHECK: icmp eq {{.*}}, null
17 void f2(bool b
, A
*x
, A
*y
) { typeid(b
? *x
: *y
); }
18 // CHECK-LABEL: define {{.*}}void @_Z2f2bP1AS0_
19 // CHECK: icmp eq {{.*}}, null
22 void f3(bool b
, A
*x
, A
&y
) { typeid(b
? *x
: y
); }
23 // CHECK-LABEL: define {{.*}}void @_Z2f3bP1ARS_
24 // CHECK: icmp eq {{.*}}, null
27 void f4(bool b
, A
&x
, A
*y
) { typeid(b
? x
: *y
); }
28 // CHECK-LABEL: define {{.*}}void @_Z2f4bR1APS_
29 // CHECK: icmp eq {{.*}}, null
32 void f5(volatile A
*x
) { typeid(*x
); }
33 // CHECK-LABEL: define {{.*}}void @_Z2f5PV1A
34 // CHECK: icmp eq {{.*}}, null
37 void f6(A
*x
) { typeid((B
&)*(B
*)x
); }
38 // CHECK-LABEL: define {{.*}}void @_Z2f6P1A
39 // CHECK: icmp eq {{.*}}, null
42 void f7(A
*x
) { typeid((*x
)); }
43 // CHECK-LABEL: define {{.*}}void @_Z2f7P1A
44 // CHECK: icmp eq {{.*}}, null
47 void f8(A
*x
) { typeid(x
[0]); }
48 // CHECK-LABEL: define {{.*}}void @_Z2f8P1A
49 // CHECK: icmp eq {{.*}}, null
52 void f9(A
*x
) { typeid(0[x
]); }
53 // CHECK-LABEL: define {{.*}}void @_Z2f9P1A
54 // CHECK: icmp eq {{.*}}, null
57 void f10(A
*x
, A
*y
) { typeid(*y
?: *x
); }
58 // CHECK-LABEL: define {{.*}}void @_Z3f10P1AS0_
59 // CHECK: icmp eq {{.*}}, null
62 void f11(A
*x
, A
&y
) { typeid(*x
?: y
); }
63 // CHECK-LABEL: define {{.*}}void @_Z3f11P1ARS_
64 // CHECK: icmp eq {{.*}}, null
67 void f12(A
&x
, A
*y
) { typeid(x
?: *y
); }
68 // CHECK-LABEL: define {{.*}}void @_Z3f12R1APS_
69 // CHECK: icmp eq {{.*}}, null
72 void f13(A
&x
, A
&y
) { typeid(x
?: y
); }
73 // CHECK-LABEL: define {{.*}}void @_Z3f13R1AS0_
74 // CHECK-NOT: icmp eq {{.*}}, null
76 void f14(A
*x
) { typeid((const A
&)(A
)*x
); }
77 // CHECK-LABEL: define {{.*}}void @_Z3f14P1A
78 // CHECK-NOT: icmp eq {{.*}}, null
80 void f15(A
*x
) { typeid((A
&&)*(A
*)nullptr); }
81 // CHECK-LABEL: define {{.*}}void @_Z3f15P1A
82 // CHECK-NOT: icmp eq {{.*}}, null