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 ();
}