Home | History | Annotate | Download | only in CodeGenCXX
      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 struct A1 {
     16  A1();
     17  ~A1();
     18 };
     19 
     20 struct A2 {
     21  A2();
     22  ~A2();
     23 };
     24 
     25 struct B {
     26  B(const A1& = A1(), const A2& = A2());
     27 };
     28 
     29 // CHECK-LABEL: define void @_Z2f1v()
     30 void f1() {
     31 
     32  // CHECK: call void @_ZN2A1C1Ev(
     33  // CHECK: call void @_ZN2A2C1Ev(
     34  // CHECK: call void @_ZN1BC1ERK2A1RK2A2(
     35  // CHECK: call void @_ZN2A2D1Ev
     36  // CHECK: call void @_ZN2A1D1Ev
     37  B bs[2];
     38 }
     39 
     40 struct C {
     41  B bs[2];
     42  C();
     43 };
     44 
     45 // CHECK-LABEL: define void @_ZN1CC2Ev(%struct.C* %this) unnamed_addr
     46 // CHECK: call void @_ZN2A1C1Ev(
     47 // CHECK: call void @_ZN2A2C1Ev(
     48 // CHECK: call void @_ZN1BC1ERK2A1RK2A2(
     49 // CHECK: call void @_ZN2A2D1Ev
     50 // CHECK: call void @_ZN2A1D1Ev
     51 
     52 // CHECK-LABEL: define void @_ZN1CC1Ev(%struct.C* %this) unnamed_addr
     53 // CHECK: call void @_ZN1CC2Ev(
     54 C::C() { }
     55 
     56 // CHECK-LABEL: define void @_Z2f3v()
     57 void f3() {
     58  // CHECK: call void @_ZN2A1C1Ev(
     59  // CHECK: call void @_ZN2A2C1Ev(
     60  // CHECK: call void @_ZN1BC1ERK2A1RK2A2(
     61  // CHECK: call void @_ZN2A2D1Ev
     62  // CHECK: call void @_ZN2A1D1Ev
     63  B *bs = new B[2];
     64  delete bs;
     65 }
     66 
     67 void f4() {
     68   void g4(int a, int b = 7);
     69   {
     70     void g4(int a, int b = 5);
     71   }
     72   void g4(int a = 5, int b);
     73 
     74   // CHECK: call void @_Z2g4ii(i32 5, i32 7)
     75   g4();
     76 }
     77