// RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s // CHECK: @_ZZ4FUNCvEN4SSSSC1ERKf // CHECK: @_ZZ4FUNCvEN4SSSSC2E_0RKf // CHECK: @_ZZ4GORFfEN4SSSSC1ERKf // CHECK: @_ZZ4GORFfEN4SSSSC2E_0RKf void FUNC () { { float IVAR1 ; struct SSSS { float bv; SSSS( const float& from): bv(from) { } }; SSSS VAR1(IVAR1); } { float IVAR2 ; struct SSSS { SSSS( const float& from) {} }; SSSS VAR2(IVAR2); } } void GORF (float IVAR1) { { struct SSSS { float bv; SSSS( const float& from): bv(from) { } }; SSSS VAR1(IVAR1); } { float IVAR2 ; struct SSSS { SSSS( const float& from) {} }; SSSS VAR2(IVAR2); } } // CHECK: @_ZZ12OmittingCodefEN4SSSSC1E_0RKf inline void OmittingCode(float x) { if (0) { struct SSSS { float bv; SSSS(const float& from): bv(from) { } }; SSSS VAR1(x); } struct SSSS { float bv; SSSS(const float& from): bv(from) { } }; SSSS VAR2(x); } void CallOmittingCode() { OmittingCode(1); } // CHECK: @_ZZ15LocalAnonStructvENUt0_1gEv inline void LocalAnonStruct() { if (0) { struct { void f() {} } x; x.f(); } struct { void g() {} } y; y.g(); } void CallLocalAnonStruct() { LocalAnonStruct(); }