]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGenCXX/mangle-local-class-names.cpp
Vendor import of clang release_34 branch r197841 (effectively, 3.4 RC3):
[FreeBSD/FreeBSD.git] / test / CodeGenCXX / mangle-local-class-names.cpp
1 // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
2
3 // CHECK:  @_ZZ4FUNCvEN4SSSSC1ERKf
4 // CHECK: @_ZZ4FUNCvEN4SSSSC2E_0RKf
5 // CHECK:  @_ZZ4GORFfEN4SSSSC1ERKf
6 // CHECK: @_ZZ4GORFfEN4SSSSC2E_0RKf
7
8 void FUNC ()
9 {
10   {
11     float IVAR1 ;
12
13     struct SSSS 
14     {
15       float bv;
16       SSSS( const float& from): bv(from) { }
17     };
18
19     SSSS VAR1(IVAR1);
20    }
21
22    {
23     float IVAR2 ;
24
25     struct SSSS
26     {
27      SSSS( const float& from) {}
28     };
29
30     SSSS VAR2(IVAR2);
31    }
32 }
33
34 void GORF (float IVAR1)
35 {
36   {
37     struct SSSS 
38     {
39       float bv;
40       SSSS( const float& from): bv(from) { }
41     };
42
43     SSSS VAR1(IVAR1);
44    }
45
46    {
47     float IVAR2 ;
48
49     struct SSSS
50     {
51      SSSS( const float& from) {}
52     };
53
54     SSSS VAR2(IVAR2);
55    }
56 }
57
58 // CHECK: @_ZZ12OmittingCodefEN4SSSSC1E_0RKf
59 inline void OmittingCode(float x) {
60   if (0) {
61     struct SSSS {
62       float bv;
63       SSSS(const float& from): bv(from) { }
64     };
65
66     SSSS VAR1(x);
67   }
68
69   struct SSSS {
70     float bv;
71     SSSS(const float& from): bv(from) { }
72   };
73
74   SSSS VAR2(x);
75 }
76 void CallOmittingCode() { OmittingCode(1); }
77
78 // CHECK: @_ZZ15LocalAnonStructvENUt0_1gEv
79 inline void LocalAnonStruct() {
80   if (0) {
81     struct { void f() {} } x;
82     x.f();
83   }
84   struct { void g() {} } y;
85   y.g();
86 }
87 void CallLocalAnonStruct() { LocalAnonStruct(); }