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