xref: /aosp_15_r20/external/clang/test/CodeGenCXX/mangle-abi-examples.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li // CHECK: @_ZTVZN1A3fooEiE1B =
4*67e74705SXin Li // CHECK: @_ZTVZ3foovEN1C1DE =
5*67e74705SXin Li // CHECK: define {{.*}} @_ZZZ3foovEN1C3barEvEN1E3bazEv(
6*67e74705SXin Li 
7*67e74705SXin Li // Itanium C++ ABI examples.
8*67e74705SXin Li struct A {
fooA9*67e74705SXin Li   void foo (int) {
10*67e74705SXin Li     struct B { virtual ~B() {} };
11*67e74705SXin Li     B();
12*67e74705SXin Li   }
13*67e74705SXin Li };
foo()14*67e74705SXin Li void foo () {
15*67e74705SXin Li   struct C {
16*67e74705SXin Li     struct D { virtual ~D() {} };
17*67e74705SXin Li     void bar () {
18*67e74705SXin Li       struct E {
19*67e74705SXin Li         void baz() { }
20*67e74705SXin Li       };
21*67e74705SXin Li       E().baz();
22*67e74705SXin Li     }
23*67e74705SXin Li   };
24*67e74705SXin Li   A().foo(0);
25*67e74705SXin Li   C::D();
26*67e74705SXin Li   C().bar();
27*67e74705SXin Li }
28