testsuite: suppress mangling compatibility aliases
[official-gcc.git] / gcc / testsuite / g++.dg / abi / mangle69.C
blob4dbe765d1582cb275d85fbd0eb8163eb77cc5256
1 // { dg-do compile { target c++2a } }
2 // { dg-additional-options -fabi-compat-version=0 }
4 struct A1 { char c[5]; };
6 template <A1> struct B { };
8 // All of the following name the same type.
9 typedef B<A1{ }>                   A______;
10 typedef B<A1{ { 0 } }>             A_Z____;
11 typedef B<A1{ { 0, 0 } }>          A_ZZ___;
12 typedef B<A1{ { 0, 0, 0 } }>       A_ZZZ__;
13 typedef B<A1{ { 0, 0, 0, 0 } }>    A_ZZZZ_;
14 typedef B<A1{ { 0, 0, 0, 0, 0 } }> A_ZZZZZ;
16 // Verify that the types mangle the same.
17 void a______ (A______) { }
18 // { dg-final { scan-assembler "_Z7a______1BIXtl2A1EEE" } }
20 void a_z____ (A_Z____) { }
21 // { dg-final { scan-assembler "_Z7a_z____1BIXtl2A1EEE" } }
23 void a_zz___ (A_ZZ___) { }
24 // { dg-final { scan-assembler "_Z7a_zz___1BIXtl2A1EEE" } }
26 void a_zzz__ (A_ZZZ__) { }
27 // { dg-final { scan-assembler "_Z7a_zzz__1BIXtl2A1EEE" } }
29 void a_zzzz_ (A_ZZZZ_) { }
30 // { dg-final { scan-assembler "_Z7a_zzzz_1BIXtl2A1EEE" } }
32 void a_zzzzz (A_ZZZZZ) { }
33 // { dg-final { scan-assembler "_Z7a_zzzzz1BIXtl2A1EEE" } }
36 // All of the following use a string to initialize the array but
37 // also name the same type as the above.
38 typedef B<A1{ "" }>                S_z____;
39 typedef B<A1{ "\0" }>              S_Zz___;
40 typedef B<A1{ "\0\0" }>            S_ZZz__;
41 typedef B<A1{ "\0\0\0" }>          S_ZZZz_;
42 typedef B<A1{ "\0\0\0\0" }>        S_ZZZZz;
44 // Verify that the types mangle the same.
45 void s_z____ (S_z____) { }
46 // { dg-final { scan-assembler "_Z7s_z____1BIXtl2A1EEE" } }
48 void s_Zz___ (S_Zz___) { }
49 // { dg-final { scan-assembler "_Z7s_Zz___1BIXtl2A1EEE" } }
51 void s_ZZz__ (S_ZZz__) { }
52 // { dg-final { scan-assembler "_Z7s_ZZz__1BIXtl2A1EEE" } }
54 void s_ZZZz_ (S_ZZZz_) { }
55 // { dg-final { scan-assembler "_Z7s_ZZZz_1BIXtl2A1EEE" } }
57 void s_ZZZZz (S_ZZZZz) { }
58 // { dg-final { scan-assembler "_Z7s_ZZZZz1BIXtl2A1EEE" } }
61 // All of the following also name the same type (distinct from
62 // the above).
63 typedef B<A1{ { 'A' } }>              A_A____;
64 typedef B<A1{ { 'A', 0 } }>           A_AZ___;
65 typedef B<A1{ { 'A', 0, 0 } }>        A_AZZ__;
66 typedef B<A1{ { 'A', 0, 0, 0 } }>     A_AZZZ_;
67 typedef B<A1{ { 'A', 0, 0, 0, 0 } }>  A_AZZZZ;
69 void a_A____ (A_A____) { }
70 // { dg-final { scan-assembler "_Z7a_A____1BIXtl2A1tlA5_cLc65EEEEE" } }
72 void a_AZ___ (A_AZ___) { }
73 // { dg-final { scan-assembler "_Z7a_AZ___1BIXtl2A1tlA5_cLc65EEEEE" } }
75 void a_AZZ__ (A_AZZ__) { }
76 // { dg-final { scan-assembler "_Z7a_AZZ__1BIXtl2A1tlA5_cLc65EEEEE" } }
78 void a_AZZZ_ (A_AZZZ_) { }
79 // { dg-final { scan-assembler "_Z7a_AZZZ_1BIXtl2A1tlA5_cLc65EEEEE" } }
81 void a_AZZZZ (A_AZZZZ) { }
82 // { dg-final { scan-assembler "_Z7a_AZZZZ1BIXtl2A1tlA5_cLc65EEEEE" } }
85 typedef B<A1{ "A" }>            S_Az___;
86 typedef B<A1{ "A\0" }>          S_AZz__;
87 typedef B<A1{ "A\0\0" }>        S_AZZz_;
88 typedef B<A1{ "A\0\0\0" }>      S_AZZZz;
90 void s_Az___ (S_Az___) { }
91 // { dg-final { scan-assembler "_Z7s_Az___1BIXtl2A1tlA5_cLc65EEEEE" } }
93 void s_AZz__ (S_AZz__) { }
94 // { dg-final { scan-assembler "_Z7s_AZz__1BIXtl2A1tlA5_cLc65EEEEE" } }
96 void s_AZZz_ (S_AZZz_) { }
97 // { dg-final { scan-assembler "_Z7s_AZZz_1BIXtl2A1tlA5_cLc65EEEEE" } }
99 void s_AZZZz (S_AZZZz) { }
100 // { dg-final { scan-assembler "_Z7s_AZZZz1BIXtl2A1tlA5_cLc65EEEEE" } }
103 typedef B<A1{ 'A', 0, 0, 'D', 0 }> A_AZZDZ;
104 typedef B<A1{ 'A', 0, 0, 'D' }>    A_AZZD_;
106 void a_AZZDZ (A_AZZDZ) { }
107 // { dg-final { scan-assembler "_Z7a_AZZD_1BIXtl2A1tlA5_cLc65ELc0ELc0ELc68EEEEE" } }
109 void a_AZZD_ (A_AZZD_) { }
110 // { dg-final { scan-assembler "_Z7a_AZZDZ1BIXtl2A1tlA5_cLc65ELc0ELc0ELc68EEEEE" } }
113 typedef B<A1{ { "AB\0D" } }>  S_ABZD_;
114 typedef B<A1{ { "AB\0\0" } }> S_ABZZ_;
115 typedef B<A1{ { "AB\0" } }>   S_ABZ__;
116 typedef B<A1{ { "AB" } }>     S_AB___;
118 void s_abzd_ (S_ABZD_) { }
119 // { dg-final { scan-assembler "_Z7s_abzd_1BIXtl2A1tlA5_cLc65ELc66ELc0ELc68EEEEE" } }
121 void s_abzz_ (S_ABZZ_) { }
122 // { dg-final { scan-assembler "_Z7s_abzz_1BIXtl2A1tlA5_cLc65ELc66EEEEE" } }
124 void s_abz__ (S_ABZ__) { }
125 // { dg-final { scan-assembler "_Z7s_abz__1BIXtl2A1tlA5_cLc65ELc66EEEEE" } }
127 void s_ab___ (S_AB___) { }
128 // { dg-final { scan-assembler "_Z7s_ab___1BIXtl2A1tlA5_cLc65ELc66EEEEE" } }
131 struct A3 { char a[5], b[5], c[5]; };
132 template <A3> struct B3 { };
134 /* These all name the same type.  */
135 typedef B3<A3{ "\1\2",     { },             "\3\4\5\6" }> T_123z_______3456z;
136 typedef B3<A3{ "\1\2",     { 0 },           "\3\4\5\6" }> T_123z__Z____3456z;
137 typedef B3<A3{ "\1\2",     { 0, 0 },        "\3\4\5\6" }> T_123z__ZZ___3456z;
138 typedef B3<A3{ "\1\2",     { 0, 0, 0 },     "\3\4\5\6" }> T_123z__ZZZ__3456z;
139 typedef B3<A3{ "\1\2",     { 0, 0, 0, 0 },  "\3\4\5\6" }> T_123z__ZZZZ_3456z;
140 typedef B3<A3{ "\1\2",     "",              "\3\4\5\6" }> T_123z__Z____3456z;
141 typedef B3<A3{ "\1\2",     "\0",            "\3\4\5\6" }> T_123z__ZZ___3456z;
142 typedef B3<A3{ "\1\2",     "\0\0",          "\3\4\5\6" }> T_123z__ZZZ__3456z;
143 typedef B3<A3{ "\1\2",     "\0\0\0",        "\3\4\5\6" }> T_123z__ZZZZ_3456z;
144 typedef B3<A3{ "\1\2",     "\0\0\0\0",      "\3\4\5\6" }> T_123z__ZZZZZ3456z;
145 typedef B3<A3{ "\1\2\0",   "\0\0\0\0",      "\3\4\5\6" }> T_123Zz_ZZZZZ3456z;
146 typedef B3<A3{ "\1\2\0\0", "\0\0\0\0",      "\3\4\5\6" }> T_123ZZzZZZZZ3456z;
149 void ft0 (T_123z_______3456z) { }
150 // { dg-final { scan-assembler "_Z3ft02B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } }
152 void ft1 (T_123z__Z____3456z) { }
153 // { dg-final { scan-assembler "_Z3ft12B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } }
154 void ft2 (T_123z__ZZ___3456z) { }
155 // { dg-final { scan-assembler "_Z3ft22B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } }
156 void ft3 (T_123z__ZZZ__3456z) { }
157 // { dg-final { scan-assembler "_Z3ft32B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } }
158 void ft4 (T_123z__ZZZZ_3456z) { }
159 // { dg-final { scan-assembler "_Z3ft42B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } }
160 void ft9 (T_123z__ZZZZZ3456z) { }
161 // { dg-final { scan-assembler "_Z3ft92B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } }
162 void fta (T_123Zz_ZZZZZ3456z) { }
163 // { dg-final { scan-assembler "_Z3fta2B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } }
164 void ftb (T_123ZZzZZZZZ3456z) { }
165 // { dg-final { scan-assembler "_Z3ftb2B3IXtl2A3tlA5_cLc1ELc2EEtlS1_EtlS1_Lc3ELc4ELc5ELc6EEEEE" } }