1 | // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s |
2 | |
3 | // CHECK: @_ZTVZ1GvE1C = {{.*}} @_ZTIZ1GvE1C {{.*}} @_ZZ1GvENK1C1FEv |
4 | // CHECK: @_ZTIZ1GvE1C = {{.*}} @_ZTSZ1GvE1C |
5 | // CHECK: @_ZTVZ1GvE1C_0 = {{.*}} @_ZTIZ1GvE1C_0 {{.*}} @_ZZ1GvENK1C1FE_0v |
6 | // CHECK: @_ZTIZ1GvE1C_0 = {{.*}} @_ZTSZ1GvE1C_0 |
7 | // CHECK: @_ZTVZ1GvE1C_1 = {{.*}} @_ZTIZ1GvE1C_1 {{.*}} @_ZZ1GvENK1C1FE_1v |
8 | // CHECK: @_ZTIZ1GvE1C_1 = {{.*}} @_ZTSZ1GvE1C_1 |
9 | // CHECK: @_ZTVZN1J1KEvE1C = {{.*}} @_ZTIZN1J1KEvE1C {{.*}} @_ZZN1J1KEvENK1C1FEv |
10 | // CHECK: @_ZTIZN1J1KEvE1C = {{.*}} @_ZTSZN1J1KEvE1C |
11 | |
12 | // CHECK: define {{.*}} @_ZZ1GvEN1CC2Ev( |
13 | // CHECK: define {{.*}} @_ZZ1GvENK1C1FEv( |
14 | // CHECK: define {{.*}} @_ZZ1GvEN1CC2E_0v( |
15 | // CHECK: define {{.*}} @_ZZ1GvENK1C1FE_0v( |
16 | // CHECK: define {{.*}} @_ZZ1GvENK1C1GE_0v( |
17 | // CHECK: define {{.*}} @_ZZ1GvEN1CC2E_1v( |
18 | // CHECK: define {{.*}} @_ZZ1GvENK1C1FE_1v( |
19 | // CHECK: define {{.*}} @_ZZ1GvENK1C1HE_1v( |
20 | // CHECK: define {{.*}} @_ZZN1J1KEvEN1CC2Ev( |
21 | // CHECK: define {{.*}} @_ZZN1J1KEvENK1C1FEv( |
22 | |
23 | struct I { |
24 | virtual void F() const = 0; |
25 | }; |
26 | |
27 | void Go(const I &i); |
28 | |
29 | void G() { |
30 | { |
31 | struct C : I { |
32 | void F() const {} |
33 | }; |
34 | Go(C()); |
35 | } |
36 | { |
37 | struct C : I { |
38 | void F() const { G(); } |
39 | void G() const {} |
40 | }; |
41 | Go(C()); |
42 | } |
43 | { |
44 | struct C : I { |
45 | void F() const { H(); } |
46 | void H() const {} |
47 | }; |
48 | Go(C()); |
49 | } |
50 | } |
51 | |
52 | struct J { |
53 | void K(); |
54 | }; |
55 | |
56 | void J::K() { |
57 | struct C : I { |
58 | void F() const {} |
59 | }; |
60 | Go(C()); |
61 | } |
62 | |