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