diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:02:28 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:02:28 +0000 |
commit | 7442d6faa2719e4e7d33a7021c406c5a4facd74d (patch) | |
tree | c72b9241553fc9966179aba84f90f17bfa9235c3 /test/Profile/cxx-structors.cpp | |
parent | b52119637f743680a99710ce5fdb6646da2772af (diff) |
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() { } |