// PR c++/118278 // Verify that class literals are mangled the same way regardless // of the underlying type. // { dg-do compile { target c++20 } } // { dg-additional-options -fabi-compat-version=0 } struct I { int a[5], b[5], c[144]; }; template struct X { }; typedef X Ti; void f (Ti) { } // { dg-final { scan-assembler "_Z1f1XIXtl1ItlA5_iLi1ELi2EEtlS1_EtlA144_i(?:Li101ELi102ELi103ELi104ELi105ELi106ELi255ELi254ELi253ELi252ELi251ELi0ELi1ELi2ELi3ELi4E){8}Li101ELi102EEEEE" } } struct C { unsigned char a[5], b[5], c[144]; }; template struct Y { }; typedef Y Tca; void g (Tca) { } // { dg-final { scan-assembler "_Z1g1YIXtl1CtlA5_hLh1ELh2EEtlS1_EtlA144_h(?:Lh101ELh102ELh103ELh104ELh105ELh106ELh255ELh254ELh253ELh252ELh251ELh0ELh1ELh2ELh3ELh4E){8}Lh101ELh102EEEEE" } } typedef Y Tcs; void h (Tcs) { } // { dg-final { scan-assembler "_Z1h1YIXtl1CtlA5_hLh1ELh2EEtlS1_EtlA144_h(?:Lh101ELh102ELh103ELh104ELh105ELh106ELh255ELh254ELh253ELh252ELh251ELh0ELh1ELh2ELh3ELh4E){8}Lh101ELh102EEEEE" } } struct S { signed char a[5], b[5], c[144]; }; template struct Z { }; typedef Z Tsc; void i (Tsc) { } // { dg-final { scan-assembler "_Z1i1ZIXtl1StlA5_aLa1ELa2EEtlS1_EtlA144_a(?:La101ELa102ELa103ELa104ELa105ELa106ELa95ELa94ELa93ELa92ELa91ELa0ELa1ELa2ELa3ELa4E){8}La101ELa102EEEEE" } }