xref: /aosp_15_r20/external/clang/test/Profile/cxx-structors.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Tests for instrumentation of C++ constructors and destructors.
2*67e74705SXin Li //
3*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-apple-macosx10.11.0 -x c++ %s -o - -emit-llvm -fprofile-instrument=clang | FileCheck %s
4*67e74705SXin Li 
5*67e74705SXin Li struct Foo {
FooFoo6*67e74705SXin Li   Foo() {}
FooFoo7*67e74705SXin Li   Foo(int) {}
~FooFoo8*67e74705SXin Li   ~Foo() {}
9*67e74705SXin Li };
10*67e74705SXin Li 
11*67e74705SXin Li struct Bar : public Foo {
BarBar12*67e74705SXin Li   Bar() {}
BarBar13*67e74705SXin Li   Bar(int x) : Foo(x) {}
14*67e74705SXin Li   ~Bar();
15*67e74705SXin Li };
16*67e74705SXin Li 
17*67e74705SXin Li Foo foo;
18*67e74705SXin Li Foo foo2(1);
19*67e74705SXin Li Bar bar;
20*67e74705SXin Li 
21*67e74705SXin Li // Profile data for complete constructors and destructors must absent.
22*67e74705SXin Li 
23*67e74705SXin Li // CHECK-NOT: @__profn__ZN3FooC1Ev
24*67e74705SXin Li // CHECK-NOT: @__profn__ZN3FooC1Ei
25*67e74705SXin Li // CHECK-NOT: @__profn__ZN3FooD1Ev
26*67e74705SXin Li // CHECK-NOT: @__profn__ZN3BarC1Ev
27*67e74705SXin Li // CHECK-NOT: @__profn__ZN3BarD1Ev
28*67e74705SXin Li // CHECK-NOT: @__profc__ZN3FooD1Ev
29*67e74705SXin Li // CHECK-NOT: @__profd__ZN3FooD1Ev
30*67e74705SXin Li 
main()31*67e74705SXin Li int main() {
32*67e74705SXin Li }
33