1 | // RUN: %clang_cc1 -emit-llvm %s -o - -std=c++11 -triple %itanium_abi_triple | FileCheck %s |
2 | |
3 | extern "C" int printf(...); |
4 | |
5 | struct S { |
6 | S() { printf("S::S\n"); } |
7 | }; |
8 | |
9 | struct A { |
10 | double x; |
11 | A() : x(), y(), s() { printf("x = %f y = %x \n", x, y); } |
12 | int *y; |
13 | S s; |
14 | }; |
15 | |
16 | A a; |
17 | |
18 | struct B { |
19 | B() = default; |
20 | B(const B&); |
21 | }; |
22 | |
23 | // CHECK-NOT: _ZL1b |
24 | static B b; |
25 | |
26 | struct C { |
27 | ~C(); |
28 | }; |
29 | |
30 | // CHECK: _ZL1c |
31 | static C c[4]; |
32 | |
33 | int main() { |
34 | } |
35 | |
36 | namespace PR22793 { |
37 | template <typename> |
38 | struct foo { |
39 | protected: |
40 | // CHECK-NOT: _ZN7PR227933fooIiED2Ev |
41 | ~foo() = default; |
42 | friend void func(); |
43 | }; |
44 | |
45 | void func() { foo<int> f; } |
46 | |
47 | template struct foo<int>; |
48 | } |
49 | |