https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101023
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW CC| |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Here it is: // PR target/101023 // { dg-do run } // { dg-options "-O2 -mtune=opteron -mstackrealign --param=hot-bb-frequency-fraction=1" } struct S { __attribute__((noipa)) int m1 (); __attribute__((noipa)) void m2 (); }; struct T { __attribute__((noipa)) virtual S m3 (); }; struct U : T { int u; __attribute__((noipa)) U (int); }; int *a; S *b; int c; int S::m1 () { return 0; } void S::m2 () { } S T::m3 () { return S (); } U::U (int) : u (4) { } __attribute__((noipa)) int foo () { if (a) return 0; U d(c); S *e = b; e->m2 (); return e->m1(); } int main () { register int r12 __asm ("r12") = 1; register int rax __asm ("rax") = 2; asm volatile ("" : "+r" (r12), "+r" (rax)); foo (); asm volatile ("" : "+r" (r12)); if (r12 != 1) __builtin_abort (); }