https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111157
--- Comment #3 from Martin Jambor <jamborm at gcc dot gnu.org> --- Simple C testcase: ---------- pr111157_0.c ---------- /* { dg-lto-do run } */ /* { dg-lto-options { { -O2 -flto=auto } } } */ /* { dg-extra-ld-options { -flto-partition=1to1 } } */ extern __attribute__((noinline)) void foo (int *p); void __attribute__((noinline)) bar (void) { int istat; istat = 1234; foo (&istat); if (istat != 1234) __builtin_abort (); } int main (int argc, char **argv) { bar (); return 0; } ---------- pr111157_1.c ---------- volatile int v = 0; void __attribute__((noinline)) foo (int *p) { *p = 1234; if (v) *p = 0; return; } ----------------------------------