1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li // CHECK: @_ZZ4FUNCvEN4SSSSC1ERKf 4*67e74705SXin Li // CHECK: @_ZZ4FUNCvEN4SSSSC2E_0RKf 5*67e74705SXin Li // CHECK: @_ZZ4GORFfEN4SSSSC1ERKf 6*67e74705SXin Li // CHECK: @_ZZ4GORFfEN4SSSSC2E_0RKf 7*67e74705SXin Li FUNC()8*67e74705SXin Livoid FUNC () 9*67e74705SXin Li { 10*67e74705SXin Li { 11*67e74705SXin Li float IVAR1 ; 12*67e74705SXin Li 13*67e74705SXin Li struct SSSS 14*67e74705SXin Li { 15*67e74705SXin Li float bv; 16*67e74705SXin Li SSSS( const float& from): bv(from) { } 17*67e74705SXin Li }; 18*67e74705SXin Li 19*67e74705SXin Li SSSS VAR1(IVAR1); 20*67e74705SXin Li } 21*67e74705SXin Li 22*67e74705SXin Li { 23*67e74705SXin Li float IVAR2 ; 24*67e74705SXin Li 25*67e74705SXin Li struct SSSS 26*67e74705SXin Li { 27*67e74705SXin Li SSSS( const float& from) {} 28*67e74705SXin Li }; 29*67e74705SXin Li 30*67e74705SXin Li SSSS VAR2(IVAR2); 31*67e74705SXin Li } 32*67e74705SXin Li } 33*67e74705SXin Li GORF(float IVAR1)34*67e74705SXin Livoid GORF (float IVAR1) 35*67e74705SXin Li { 36*67e74705SXin Li { 37*67e74705SXin Li struct SSSS 38*67e74705SXin Li { 39*67e74705SXin Li float bv; 40*67e74705SXin Li SSSS( const float& from): bv(from) { } 41*67e74705SXin Li }; 42*67e74705SXin Li 43*67e74705SXin Li SSSS VAR1(IVAR1); 44*67e74705SXin Li } 45*67e74705SXin Li 46*67e74705SXin Li { 47*67e74705SXin Li float IVAR2 ; 48*67e74705SXin Li 49*67e74705SXin Li struct SSSS 50*67e74705SXin Li { 51*67e74705SXin Li SSSS( const float& from) {} 52*67e74705SXin Li }; 53*67e74705SXin Li 54*67e74705SXin Li SSSS VAR2(IVAR2); 55*67e74705SXin Li } 56*67e74705SXin Li } 57*67e74705SXin Li 58*67e74705SXin Li // CHECK: @_ZZ12OmittingCodefEN4SSSSC1E_0RKf OmittingCode(float x)59*67e74705SXin Liinline void OmittingCode(float x) { 60*67e74705SXin Li if (0) { 61*67e74705SXin Li struct SSSS { 62*67e74705SXin Li float bv; 63*67e74705SXin Li SSSS(const float& from): bv(from) { } 64*67e74705SXin Li }; 65*67e74705SXin Li 66*67e74705SXin Li SSSS VAR1(x); 67*67e74705SXin Li } 68*67e74705SXin Li 69*67e74705SXin Li struct SSSS { 70*67e74705SXin Li float bv; 71*67e74705SXin Li SSSS(const float& from): bv(from) { } 72*67e74705SXin Li }; 73*67e74705SXin Li 74*67e74705SXin Li SSSS VAR2(x); 75*67e74705SXin Li } CallOmittingCode()76*67e74705SXin Livoid CallOmittingCode() { OmittingCode(1); } 77*67e74705SXin Li 78*67e74705SXin Li // CHECK: @_ZZ15LocalAnonStructvENUt0_1gEv LocalAnonStruct()79*67e74705SXin Liinline void LocalAnonStruct() { 80*67e74705SXin Li if (0) { 81*67e74705SXin Li struct { void f() {} } x; 82*67e74705SXin Li x.f(); 83*67e74705SXin Li } 84*67e74705SXin Li struct { void g() {} } y; 85*67e74705SXin Li y.g(); 86*67e74705SXin Li } CallLocalAnonStruct()87*67e74705SXin Livoid CallLocalAnonStruct() { LocalAnonStruct(); } 88