xref: /llvm-project/clang/test/CodeGenCXX/mangle-local-anonymous-unions.cpp (revision 665027dbc4d648eb2a78e591352ad9528db914f6)
1*665027dbSEvgeny Astigeevich // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s
2*665027dbSEvgeny Astigeevich 
3*665027dbSEvgeny Astigeevich // CHECK-DAG: @_ZZ2f0vE1a
4*665027dbSEvgeny Astigeevich // CHECK-DAG: @_ZZ2f0vE1c
5*665027dbSEvgeny Astigeevich // CHECK-DAG: @_ZZ2f0vE1e_0
f0()6*665027dbSEvgeny Astigeevich inline int f0() {
7*665027dbSEvgeny Astigeevich   static union {
8*665027dbSEvgeny Astigeevich     int a;
9*665027dbSEvgeny Astigeevich     long int b;
10*665027dbSEvgeny Astigeevich   };
11*665027dbSEvgeny Astigeevich 
12*665027dbSEvgeny Astigeevich   static union {
13*665027dbSEvgeny Astigeevich     int c;
14*665027dbSEvgeny Astigeevich     double d;
15*665027dbSEvgeny Astigeevich   };
16*665027dbSEvgeny Astigeevich 
17*665027dbSEvgeny Astigeevich   if (0) {
18*665027dbSEvgeny Astigeevich     static union {
19*665027dbSEvgeny Astigeevich       int e;
20*665027dbSEvgeny Astigeevich       int f;
21*665027dbSEvgeny Astigeevich     };
22*665027dbSEvgeny Astigeevich   }
23*665027dbSEvgeny Astigeevich   static union {
24*665027dbSEvgeny Astigeevich     int e;
25*665027dbSEvgeny Astigeevich     int f;
26*665027dbSEvgeny Astigeevich   };
27*665027dbSEvgeny Astigeevich 
28*665027dbSEvgeny Astigeevich   return a+c;
29*665027dbSEvgeny Astigeevich }
30*665027dbSEvgeny Astigeevich 
nop()31*665027dbSEvgeny Astigeevich inline void nop() {
32*665027dbSEvgeny Astigeevich   static union {
33*665027dbSEvgeny Astigeevich     union {
34*665027dbSEvgeny Astigeevich     };
35*665027dbSEvgeny Astigeevich   };
36*665027dbSEvgeny Astigeevich }
37*665027dbSEvgeny Astigeevich 
f1(int a,int c)38*665027dbSEvgeny Astigeevich int f1 (int a, int c) {
39*665027dbSEvgeny Astigeevich   nop();
40*665027dbSEvgeny Astigeevich   return a+c+f0();
41*665027dbSEvgeny Astigeevich }
42*665027dbSEvgeny Astigeevich 
43