This patch fixes PR30282, caused by instructions being scheduled over the stack reset. Note that only for ABI_V4 do we currently have frame_reg_rtx != sp_reg_rtx in rs6000_emit_stack_reset, so the patch doesn't emit *less* blockages. I did benchmark this change and saw nothing but the usual benchmake noise.
Bootstrapped etc. powerpc-linux. OK to apply? * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Always emit blockage for ABI_V4. Index: gcc/config/rs6000/rs6000.c =================================================================== --- gcc/config/rs6000/rs6000.c (revision 177309) +++ gcc/config/rs6000/rs6000.c (working copy) @@ -19689,7 +19689,7 @@ rs6000_emit_stack_reset (rs6000_stack_t { /* This blockage is needed so that sched doesn't decide to move the sp change before the register restores. */ - if (frame_reg_rtx != sp_reg_rtx + if (DEFAULT_ABI == ABI_V4 || (TARGET_SPE_ABI && info->spe_64bit_regs_used != 0 && info->first_gp_reg_save != 32)) -- Alan Modra Australia Development Lab, IBM