diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index 8f98bd85750..3dab843f803 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -3426,7 +3426,8 @@ static unsigned int rest_of_handle_stack_regs (void) { #ifdef STACK_REGS - reg_to_stack (); + if (reg_to_stack ()) + df_insn_rescan_all (); regstack_completed = 1; #endif return 0; diff --git a/gcc/testsuite/gcc.target/i386/pr97777.c b/gcc/testsuite/gcc.target/i386/pr97777.c new file mode 100644 index 00000000000..fcefc098637 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr97777.c @@ -0,0 +1,9 @@ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-options "-O -fzero-call-used-regs=used -ffinite-math-only" } */ + +float +foo (void) +{ + return __builtin_fmod (0, 0); +} +