Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/g++.dg/abi/mangle69.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 // { dg-do compile { target c++2a } } | |
2 | |
3 struct A1 { char c[5]; }; | |
4 | |
5 template <A1> struct B { }; | |
6 | |
7 // All of the following name the same type. | |
8 typedef B<A1{ }> A______; | |
9 typedef B<A1{ { 0 } }> A_Z____; | |
10 typedef B<A1{ { 0, 0 } }> A_ZZ___; | |
11 typedef B<A1{ { 0, 0, 0 } }> A_ZZZ__; | |
12 typedef B<A1{ { 0, 0, 0, 0 } }> A_ZZZZ_; | |
13 typedef B<A1{ { 0, 0, 0, 0, 0 } }> A_ZZZZZ; | |
14 | |
15 // Verify that the types mangle the same. | |
16 void a______ (A______) { } | |
17 // { dg-final { scan-assembler "_Z7a______1BIXtl2A1EEE" } } | |
18 | |
19 void a_z____ (A_Z____) { } | |
20 // { dg-final { scan-assembler "_Z7a_z____1BIXtl2A1EEE" } } | |
21 | |
22 void a_zz___ (A_ZZ___) { } | |
23 // { dg-final { scan-assembler "_Z7a_zz___1BIXtl2A1EEE" } } | |
24 | |
25 void a_zzz__ (A_ZZZ__) { } | |
26 // { dg-final { scan-assembler "_Z7a_zzz__1BIXtl2A1EEE" } } | |
27 | |
28 void a_zzzz_ (A_ZZZZ_) { } | |
29 // { dg-final { scan-assembler "_Z7a_zzzz_1BIXtl2A1EEE" } } | |
30 | |
31 void a_zzzzz (A_ZZZZZ) { } | |
32 // { dg-final { scan-assembler "_Z7a_zzzzz1BIXtl2A1EEE" } } | |
33 | |
34 | |
35 // All of the following use a string to initialize the array but | |
36 // also name the same type as the above. | |
37 typedef B<A1{ "" }> S_z____; | |
38 typedef B<A1{ "\0" }> S_Zz___; | |
39 typedef B<A1{ "\0\0" }> S_ZZz__; | |
40 typedef B<A1{ "\0\0\0" }> S_ZZZz_; | |
41 typedef B<A1{ "\0\0\0\0" }> S_ZZZZz; | |
42 | |
43 // Verify that the types mangle the same. | |
44 void s_z____ (S_z____) { } | |
45 // { dg-final { scan-assembler "_Z7s_z____1BIXtl2A1EEE" } } | |
46 | |
47 void s_Zz___ (S_Zz___) { } | |
48 // { dg-final { scan-assembler "_Z7s_Zz___1BIXtl2A1EEE" } } | |
49 | |
50 void s_ZZz__ (S_ZZz__) { } | |
51 // { dg-final { scan-assembler "_Z7s_ZZz__1BIXtl2A1EEE" } } | |
52 | |
53 void s_ZZZz_ (S_ZZZz_) { } | |
54 // { dg-final { scan-assembler "_Z7s_ZZZz_1BIXtl2A1EEE" } } | |
55 | |
56 void s_ZZZZz (S_ZZZZz) { } | |
57 // { dg-final { scan-assembler "_Z7s_ZZZZz1BIXtl2A1EEE" } } | |
58 | |
59 | |
60 // All of the following also name the same type (distinct from | |
61 // the above). | |
62 typedef B<A1{ { 'A' } }> A_A____; | |
63 typedef B<A1{ { 'A', 0 } }> A_AZ___; | |
64 typedef B<A1{ { 'A', 0, 0 } }> A_AZZ__; | |
65 typedef B<A1{ { 'A', 0, 0, 0 } }> A_AZZZ_; | |
66 typedef B<A1{ { 'A', 0, 0, 0, 0 } }> A_AZZZZ; | |
67 | |
68 void a_A____ (A_A____) { } | |
69 // { dg-final { scan-assembler "_Z7a_A____1BIXtl2A1tlA5_cLc65EEEEE" } } | |
70 | |
71 void a_AZ___ (A_AZ___) { } | |
72 // { dg-final { scan-assembler "_Z7a_AZ___1BIXtl2A1tlA5_cLc65EEEEE" } } | |
73 | |
74 void a_AZZ__ (A_AZZ__) { } | |
75 // { dg-final { scan-assembler "_Z7a_AZZ__1BIXtl2A1tlA5_cLc65EEEEE" } } | |
76 | |
77 void a_AZZZ_ (A_AZZZ_) { } | |
78 // { dg-final { scan-assembler "_Z7a_AZZZ_1BIXtl2A1tlA5_cLc65EEEEE" } } | |
79 | |
80 void a_AZZZZ (A_AZZZZ) { } | |
81 // { dg-final { scan-assembler "_Z7a_AZZZZ1BIXtl2A1tlA5_cLc65EEEEE" } } | |
82 | |
83 | |
84 typedef B<A1{ "A" }> S_Az___; | |
85 typedef B<A1{ "A\0" }> S_AZz__; | |
86 typedef B<A1{ "A\0\0" }> S_AZZz_; | |
87 typedef B<A1{ "A\0\0\0" }> S_AZZZz; | |
88 | |
89 void s_Az___ (S_Az___) { } | |
90 // { dg-final { scan-assembler "_Z7s_Az___1BIXtl2A1tlA5_cLc65EEEEE" } } | |
91 | |
92 void s_AZz__ (S_AZz__) { } | |
93 // { dg-final { scan-assembler "_Z7s_AZz__1BIXtl2A1tlA5_cLc65EEEEE" } } | |
94 | |
95 void s_AZZz_ (S_AZZz_) { } | |
96 // { dg-final { scan-assembler "_Z7s_AZZz_1BIXtl2A1tlA5_cLc65EEEEE" } } | |
97 | |
98 void s_AZZZz (S_AZZZz) { } | |
99 // { dg-final { scan-assembler "_Z7s_AZZZz1BIXtl2A1tlA5_cLc65EEEEE" } } | |
100 | |
101 | |
102 typedef B<A1{ 'A', 0, 0, 'D', 0 }> A_AZZDZ; | |
103 typedef B<A1{ 'A', 0, 0, 'D' }> A_AZZD_; | |
104 | |
105 void a_AZZDZ (A_AZZDZ) { } | |
106 // { dg-final { scan-assembler "_Z7a_AZZD_1BIXtl2A1tlA5_cLc65ELc0ELc0ELc68EEEEE" } } | |
107 | |
108 void a_AZZD_ (A_AZZD_) { } | |
109 // { dg-final { scan-assembler "_Z7a_AZZDZ1BIXtl2A1tlA5_cLc65ELc0ELc0ELc68EEEEE" } } | |
110 | |
111 | |
112 typedef B<A1{ { "AB\0D" } }> S_ABZD_; | |
113 typedef B<A1{ { "AB\0\0" } }> S_ABZZ_; | |
114 typedef B<A1{ { "AB\0" } }> S_ABZ__; | |
115 typedef B<A1{ { "AB" } }> S_AB___; | |
116 | |
117 void s_abzd_ (S_ABZD_) { } | |
118 // { dg-final { scan-assembler "_Z7s_abzd_1BIXtl2A1tlA5_cLc65ELc66ELc0ELc68EEEEE" } } | |
119 | |
120 void s_abzz_ (S_ABZZ_) { } | |
121 // { dg-final { scan-assembler "_Z7s_abzz_1BIXtl2A1tlA5_cLc65ELc66EEEEE" } } | |
122 | |
123 void s_abz__ (S_ABZ__) { } | |
124 // { dg-final { scan-assembler "_Z7s_abz__1BIXtl2A1tlA5_cLc65ELc66EEEEE" } } | |
125 | |
126 void s_ab___ (S_AB___) { } | |
127 // { dg-final { scan-assembler "_Z7s_ab___1BIXtl2A1tlA5_cLc65ELc66EEEEE" } } | |
128 | |
129 | |
130 struct A3 { char a[5], b[5], c[5]; }; | |
131 template <A3> struct B3 { }; | |
132 | |
133 /* These all name the same type. */ | |
134 typedef B3<A3{ "\1\2", { }, "\3\4\5\6" }> T_123z_______3456z; | |
135 typedef B3<A3{ "\1\2", { 0 }, "\3\4\5\6" }> T_123z__Z____3456z; | |
136 typedef B3<A3{ "\1\2", { 0, 0 }, "\3\4\5\6" }> T_123z__ZZ___3456z; | |
137 typedef B3<A3{ "\1\2", { 0, 0, 0 }, "\3\4\5\6" }> T_123z__ZZZ__3456z; | |
138 typedef B3<A3{ "\1\2", { 0, 0, 0, 0 }, "\3\4\5\6" }> T_123z__ZZZZ_3456z; | |
139 typedef B3<A3{ "\1\2", "", "\3\4\5\6" }> T_123z__Z____3456z; | |
140 typedef B3<A3{ "\1\2", "\0", "\3\4\5\6" }> T_123z__ZZ___3456z; | |
141 typedef B3<A3{ "\1\2", "\0\0", "\3\4\5\6" }> T_123z__ZZZ__3456z; | |
142 typedef B3<A3{ "\1\2", "\0\0\0", "\3\4\5\6" }> T_123z__ZZZZ_3456z; | |
143 typedef B3<A3{ "\1\2", "\0\0\0\0", "\3\4\5\6" }> T_123z__ZZZZZ3456z; | |
144 typedef B3<A3{ "\1\2\0", "\0\0\0\0", "\3\4\5\6" }> T_123Zz_ZZZZZ3456z; | |
145 typedef B3<A3{ "\1\2\0\0", "\0\0\0\0", "\3\4\5\6" }> T_123ZZzZZZZZ3456z; | |
146 | |
147 | |
148 void ft0 (T_123z_______3456z) { } | |
149 // { dg-final { scan-assembler "_Z3ft02B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } } | |
150 | |
151 void ft1 (T_123z__Z____3456z) { } | |
152 // { dg-final { scan-assembler "_Z3ft12B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } } | |
153 void ft2 (T_123z__ZZ___3456z) { } | |
154 // { dg-final { scan-assembler "_Z3ft22B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } } | |
155 void ft3 (T_123z__ZZZ__3456z) { } | |
156 // { dg-final { scan-assembler "_Z3ft32B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } } | |
157 void ft4 (T_123z__ZZZZ_3456z) { } | |
158 // { dg-final { scan-assembler "_Z3ft42B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } } | |
159 void ft9 (T_123z__ZZZZZ3456z) { } | |
160 // { dg-final { scan-assembler "_Z3ft92B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } } | |
161 void fta (T_123Zz_ZZZZZ3456z) { } | |
162 // { dg-final { scan-assembler "_Z3fta2B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } } | |
163 void ftb (T_123ZZzZZZZZ3456z) { } | |
164 // { dg-final { scan-assembler "_Z3ftb2B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } } |