diff options
Diffstat (limited to 'test/CodeGenCXX/default-arguments.cpp')
-rw-r--r-- | test/CodeGenCXX/default-arguments.cpp | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/test/CodeGenCXX/default-arguments.cpp b/test/CodeGenCXX/default-arguments.cpp index 5028ce99c7..71d4baa475 100644 --- a/test/CodeGenCXX/default-arguments.cpp +++ b/test/CodeGenCXX/default-arguments.cpp @@ -1,4 +1,4 @@ -// RUN: clang-cc -emit-llvm %s -o - -triple=x86_64-apple-darwin10 +// RUN: clang-cc %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s // PR5484 namespace PR5484 { @@ -11,3 +11,59 @@ void g() { f(); } } + +struct A1 { + A1(); + ~A1(); +}; + +struct A2 { + A2(); + ~A2(); +}; + +struct B { + B(const A1& = A1(), const A2& = A2()); +}; + +// CHECK: define void @_Z2f1v() +void f1() { + + // CHECK: call void @_ZN2A1C1Ev( + // CHECK: call void @_ZN2A2C1Ev( + // CHECK: call void @_ZN1BC1ERK2A1RK2A2( + // CHECK: call void @_ZN2A2D1Ev + // CHECK: call void @_ZN2A1D1Ev + B bs[2]; +} + +struct C { + B bs[2]; + C(); +}; + +// CHECK: define void @_ZN1CC1Ev( +// CHECK: call void @_ZN2A1C1Ev( +// CHECK: call void @_ZN2A2C1Ev( +// CHECK: call void @_ZN1BC1ERK2A1RK2A2( +// CHECK: call void @_ZN2A2D1Ev +// CHECK: call void @_ZN2A1D1Ev + +// CHECK: define void @_ZN1CC2Ev( +// CHECK: call void @_ZN2A1C1Ev( +// CHECK: call void @_ZN2A2C1Ev( +// CHECK: call void @_ZN1BC1ERK2A1RK2A2( +// CHECK: call void @_ZN2A2D1Ev +// CHECK: call void @_ZN2A1D1Ev +C::C() { } + +// CHECK: define void @_Z2f3v() +void f3() { + // CHECK: call void @_ZN2A1C1Ev( + // CHECK: call void @_ZN2A2C1Ev( + // CHECK: call void @_ZN1BC1ERK2A1RK2A2( + // CHECK: call void @_ZN2A2D1Ev + // CHECK: call void @_ZN2A1D1Ev + B *bs = new B[2]; + delete bs; +} |