summaryrefslogtreecommitdiffstats
path: root/clang/test/Profile/cxx-structors.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Profile/cxx-structors.cpp')
-rw-r--r--clang/test/Profile/cxx-structors.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/clang/test/Profile/cxx-structors.cpp b/clang/test/Profile/cxx-structors.cpp
new file mode 100644
index 00000000000..24c595b863e
--- /dev/null
+++ b/clang/test/Profile/cxx-structors.cpp
@@ -0,0 +1,32 @@
+// 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-instr-generate | FileCheck %s
+
+struct Foo {
+ Foo() {}
+ Foo(int) {}
+ ~Foo() {}
+};
+
+struct Bar : public Foo {
+ Bar() {}
+ Bar(int x) : Foo(x) {}
+ ~Bar();
+};
+
+Foo foo;
+Foo foo2(1);
+Bar bar;
+
+// Profile data for complete constructors and destructors must absent.
+
+// CHECK-NOT: @__llvm_profile_name__ZN3FooC1Ev
+// CHECK-NOT: @__llvm_profile_name__ZN3FooC1Ei
+// CHECK-NOT: @__llvm_profile_name__ZN3FooD1Ev
+// CHECK-NOT: @__llvm_profile_name__ZN3BarC1Ev
+// CHECK-NOT: @__llvm_profile_name__ZN3BarD1Ev
+// CHECK-NOT: @__llvm_profile_counters__ZN3FooD1Ev
+// CHECK-NOT: @__llvm_profile_data__ZN3FooD1Ev
+
+int main() {
+}
OpenPOWER on IntegriCloud