170d085aaad33bd3864f621dbc1defab5368819e8Nick Lewycky// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 -emit-llvm -o - %s | FileCheck %s 292be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor 392be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregorstruct X { 492be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor X(); 592be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor ~X(); 692be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor}; 792be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor 892be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregorstruct Y { 992be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor X get(); 1092be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor}; 1192be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor 1292be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregorstruct X2 { 1392be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor X x; 1492be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor}; 1592be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor 1692be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregortemplate<typename T> 1792be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregorvoid call() { 1892be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor Y().get(); 1992be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor} 2092be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor 2192be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor// CHECK: define weak_odr void @_Z4callIiEvv 2292be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor// CHECK: call void @_ZN1Y3getEv 2392be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor// CHECK-NEXT: call void @_ZN1XD1Ev 2492be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor// CHECK-NEXT: ret void 2592be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregortemplate void call<int>(); 2692be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor 2792be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregortemplate<typename T> 2892be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregorvoid compound_literal() { 2992be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor (X2){}; 3092be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor} 3192be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor 3292be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor// CHECK: define weak_odr void @_Z16compound_literalIiEvv 3392be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor// CHECK: call void @_ZN1XC1Ev 3492be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor// CHECK-NEXT: call void @_ZN2X2D1Ev 3592be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor// CHECK-NEXT: ret void 3692be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregortemplate void compound_literal<int>(); 3792be2a5f4e938fc512683cd4e7dfd4e6789eb787Douglas Gregor 38