1*67e74705SXin Li // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li // PR5484 4*67e74705SXin Li namespace PR5484 { 5*67e74705SXin Li struct A { }; 6*67e74705SXin Li extern A a; 7*67e74705SXin Li 8*67e74705SXin Li void f(const A & = a); 9*67e74705SXin Li g()10*67e74705SXin Livoid g() { 11*67e74705SXin Li f(); 12*67e74705SXin Li } 13*67e74705SXin Li } 14*67e74705SXin Li 15*67e74705SXin Li struct A1 { 16*67e74705SXin Li A1(); 17*67e74705SXin Li ~A1(); 18*67e74705SXin Li }; 19*67e74705SXin Li 20*67e74705SXin Li struct A2 { 21*67e74705SXin Li A2(); 22*67e74705SXin Li ~A2(); 23*67e74705SXin Li }; 24*67e74705SXin Li 25*67e74705SXin Li struct B { 26*67e74705SXin Li B(const A1& = A1(), const A2& = A2()); 27*67e74705SXin Li }; 28*67e74705SXin Li 29*67e74705SXin Li // CHECK-LABEL: define void @_Z2f1v() f1()30*67e74705SXin Livoid f1() { 31*67e74705SXin Li 32*67e74705SXin Li // CHECK: call void @_ZN2A1C1Ev( 33*67e74705SXin Li // CHECK: call void @_ZN2A2C1Ev( 34*67e74705SXin Li // CHECK: call void @_ZN1BC1ERK2A1RK2A2( 35*67e74705SXin Li // CHECK: call void @_ZN2A2D1Ev 36*67e74705SXin Li // CHECK: call void @_ZN2A1D1Ev 37*67e74705SXin Li B bs[2]; 38*67e74705SXin Li } 39*67e74705SXin Li 40*67e74705SXin Li struct C { 41*67e74705SXin Li B bs[2]; 42*67e74705SXin Li C(); 43*67e74705SXin Li }; 44*67e74705SXin Li 45*67e74705SXin Li // CHECK-LABEL: define void @_ZN1CC2Ev(%struct.C* %this) unnamed_addr 46*67e74705SXin Li // CHECK: call void @_ZN2A1C1Ev( 47*67e74705SXin Li // CHECK: call void @_ZN2A2C1Ev( 48*67e74705SXin Li // CHECK: call void @_ZN1BC1ERK2A1RK2A2( 49*67e74705SXin Li // CHECK: call void @_ZN2A2D1Ev 50*67e74705SXin Li // CHECK: call void @_ZN2A1D1Ev 51*67e74705SXin Li 52*67e74705SXin Li // CHECK-LABEL: define void @_ZN1CC1Ev(%struct.C* %this) unnamed_addr 53*67e74705SXin Li // CHECK: call void @_ZN1CC2Ev( C()54*67e74705SXin LiC::C() { } 55*67e74705SXin Li 56*67e74705SXin Li // CHECK-LABEL: define void @_Z2f3v() f3()57*67e74705SXin Livoid f3() { 58*67e74705SXin Li // CHECK: call void @_ZN2A1C1Ev( 59*67e74705SXin Li // CHECK: call void @_ZN2A2C1Ev( 60*67e74705SXin Li // CHECK: call void @_ZN1BC1ERK2A1RK2A2( 61*67e74705SXin Li // CHECK: call void @_ZN2A2D1Ev 62*67e74705SXin Li // CHECK: call void @_ZN2A1D1Ev 63*67e74705SXin Li B *bs = new B[2]; 64*67e74705SXin Li delete bs; 65*67e74705SXin Li } 66*67e74705SXin Li f4()67*67e74705SXin Livoid f4() { 68*67e74705SXin Li void g4(int a, int b = 7); 69*67e74705SXin Li { 70*67e74705SXin Li void g4(int a, int b = 5); 71*67e74705SXin Li } 72*67e74705SXin Li void g4(int a = 5, int b); 73*67e74705SXin Li 74*67e74705SXin Li // CHECK: call void @_Z2g4ii(i32 5, i32 7) 75*67e74705SXin Li g4(); 76*67e74705SXin Li } 77