diff options
Diffstat (limited to 'test/Profile/cxx-structors.cpp')
-rw-r--r-- | test/Profile/cxx-structors.cpp | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/test/Profile/cxx-structors.cpp b/test/Profile/cxx-structors.cpp index 73562d39c973f..8e0fac163d975 100644 --- a/test/Profile/cxx-structors.cpp +++ b/test/Profile/cxx-structors.cpp @@ -1,6 +1,8 @@ // Tests for instrumentation of C++ constructors and destructors. // -// RUN: %clang_cc1 -triple x86_64-apple-macosx10.11.0 -x c++ %s -o - -emit-llvm -fprofile-instrument=clang | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-apple-macosx10.11.0 -x c++ %s -o %t -emit-llvm -fprofile-instrument=clang +// RUN: FileCheck %s -input-file=%t -check-prefix=INSTR +// RUN: FileCheck %s -input-file=%t -check-prefix=NOINSTR struct Foo { Foo() {} @@ -14,19 +16,40 @@ struct Bar : public Foo { ~Bar(); }; +struct Baz : virtual public Foo { + Baz() {} + Baz(int x) : Foo(x) {} + ~Baz(); +}; + +struct Quux : public Foo { + Quux(const char *y, ...) : Foo(0) {} +}; + Foo foo; Foo foo2(1); Bar bar; +Baz baz; +Baz baz2(1); +Quux qux("fi", "fo", "fum"); // Profile data for complete constructors and destructors must absent. -// CHECK-NOT: @__profn__ZN3FooC1Ev -// CHECK-NOT: @__profn__ZN3FooC1Ei -// CHECK-NOT: @__profn__ZN3FooD1Ev -// CHECK-NOT: @__profn__ZN3BarC1Ev -// CHECK-NOT: @__profn__ZN3BarD1Ev -// CHECK-NOT: @__profc__ZN3FooD1Ev -// CHECK-NOT: @__profd__ZN3FooD1Ev +// INSTR: @__profc__ZN3BazC1Ev = +// INSTR: @__profc__ZN3BazC1Ei = +// INSTR: @__profc__ZN4QuuxC1EPKcz = +// INSTR: @__profc_main = +// INSTR: @__profc__ZN3FooC2Ev = +// INSTR: @__profc__ZN3FooD2Ev = +// INSTR: @__profc__ZN3FooC2Ei = +// INSTR: @__profc__ZN3BarC2Ev = + +// NOINSTR-NOT: @__profc__ZN3FooC1Ev +// NOINSTR-NOT: @__profc__ZN3FooC1Ei +// NOINSTR-NOT: @__profc__ZN3FooD1Ev +// NOINSTR-NOT: @__profc__ZN3BarC1Ev +// NOINSTR-NOT: @__profc__ZN3BarD1Ev +// NOINSTR-NOT: @__profc__ZN3FooD1Ev int main() { } |