testsuite: suppress mangling compatibility aliases
[official-gcc.git] / gcc / testsuite / g++.dg / abi / mangle73.C
blobc226307c59815164fde7fb2bd3f086a6f21723cb
1 // { dg-do compile { target c++2a } }
2 // { dg-additional-options -fabi-compat-version=0 }
4 struct A
6   char a[2][2];
7 };
9 template <A> struct B { };
11 typedef B<A{ { { 0, 0 }, { 0, 0 } } }> AZZZZ;
12 typedef B<A{ { { 0, 0 }, { 0 } } }>    AZZZ_;
13 typedef B<A{ { { 0, 0 } } }>           AZZ__;
14 typedef B<A{ { { 0 } } }>              AZ___;
15 typedef B<A{ { { } } }>                A____;
17 typedef B<A{ { { "" }, { "" } } }>     AS_S_;
18 typedef B<A{ { { "" }, { 0, 0 } } }>   AS_ZZ;
19 typedef B<A{ { { "" }, { 0 } } }>      AS_Z_;
20 typedef B<A{ { { "" } } }>             AS___;
23 // Verify that the types mangle the same.
24 void a_zzzz (AZZZZ) { }
25 // { dg-final { scan-assembler "_Z6a_zzzz1BIXtl1AEEE" } }
27 void a_zzz_ (AZZZ_) { }
28 // { dg-final { scan-assembler "_Z6a_zzz_1BIXtl1AEEE" } }
30 void a_zz__ (AZZ__) { }
31 // { dg-final { scan-assembler "_Z6a_zz__1BIXtl1AEEE" } }
33 void a_z___ (AZ___) { }
34 // { dg-final { scan-assembler "_Z6a_z___1BIXtl1AEEE" } }
36 void a_____ (A____) { }
37 // { dg-final { scan-assembler "_Z6a_____1BIXtl1AEEE" } }
39 void a_s_s_ (AS_S_) { }
40 // { dg-final { scan-assembler "_Z6a_s_s_1BIXtl1AEEE" } }
42 void a_s_zz (AS_ZZ) { }
43 // { dg-final { scan-assembler "_Z6a_s_zz1BIXtl1AEEE" } }
45 void a_s_z_ (AS_Z_) { }
46 // { dg-final { scan-assembler "_Z6a_s_z_1BIXtl1AEEE" } }
48 void a_s___ (AS___) { }
49 // { dg-final { scan-assembler "_Z6a_s___1BIXtl1AEEE" } }
52 struct C
54   struct { const char a[2][2], *p; } a[2];
57 template <C> struct D { };
59 typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }, {{{ 0, 0 }, { 0, 0 }}, 0 }}}> DZZZZZZZZZZ;
60 typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }, {{{ 0, 0 }, { 0, 0 }}}}}> DZZZZZZZZZ_;
61 typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }, {{{ 0, 0 }, { 0 }}}}}>    DZZZZZZZZ__;
62 typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }, {{{ 0, 0 } }}}}>          DZZZZZZZ___;
63 typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }, {{{ 0 } }}}}>             DZZZZZZ____;
64 typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }}}>                         DZZZZZ_____;
65 typedef D<C{{{{{ 0, 0 }, { 0, 0 }}}}}>                             DZZZZ______;
66 typedef D<C{{{{{ 0, 0 }, { 0 }}}}}>                                DZZZ_______;
67 typedef D<C{{{{{ 0, 0 }}}}}>                                       DZZ________;
68 typedef D<C{{{{{ 0 }}}}}>                                          DZ_________;
69 typedef D<C{ }>                                                    D__________;
71 typedef D<C{{{{{ "" }, { "" }}, 0 }, {{{ "" }, { "" }}, 0 }}}>     DS_S_ZS_S_Z;
73 void d_zzzzzzzzzz (DZZZZZZZZZZ) { }
74 // { dg-final { scan-assembler "_Z12d_zzzzzzzzzz1DIXtl1CEEE" } }
75 void d_zzzzzzzzz_ (DZZZZZZZZZ_) { }
76 // { dg-final { scan-assembler "_Z12d_zzzzzzzzz_1DIXtl1CEEE" } }
77 void d_zzzzzzzz__ (DZZZZZZZZ__) { }
78 // { dg-final { scan-assembler "_Z12d_zzzzzzzz__1DIXtl1CEEE" } }
79 void d_zzzzzzz___ (DZZZZZZZ___) { }
80 // { dg-final { scan-assembler "_Z12d_zzzzzzz___1DIXtl1CEEE" } }
81 void d_zzzzzz____ (DZZZZZZ____) { }
82 // { dg-final { scan-assembler "_Z12d_zzzzzz____1DIXtl1CEEE" } }
83 void d_zzzzz_____ (DZZZZZ_____) { }
84 // { dg-final { scan-assembler "_Z12d_zzzzz_____1DIXtl1CEEE" } }
85 void d_zzzz______ (DZZZZ______) { }
86 // { dg-final { scan-assembler "_Z12d_zzzz______1DIXtl1CEEE" } }
87 void d_zzz_______ (DZZZ_______) { }
88 // { dg-final { scan-assembler "_Z12d_zzz_______1DIXtl1CEEE" } }
89 void d_zz________ (DZZ________) { }
90 // { dg-final { scan-assembler "_Z12d_zz________1DIXtl1CEEE" } }
91 void d_z_________ (DZ_________) { }
92 // { dg-final { scan-assembler "_Z12d_z_________1DIXtl1CEEE" } }
93 void d___________ (D__________) { }
94 // { dg-final { scan-assembler "_Z12d___________1DIXtl1CEEE" } }
96 void d_s_s_zs_s_z (DS_S_ZS_S_Z) { }
97 // { dg-final { scan-assembler "_Z12d_s_s_zs_s_z1DIXtl1CEEE" } }