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