https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91518
--- Comment #11 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-9 branch has been updated by Xiong Hu Luo <luo...@gcc.gnu.org>: https://gcc.gnu.org/g:b8da02efe62611a9f173c699a76010de5b916d33 commit r9-8583-gb8da02efe62611a9f173c699a76010de5b916d33 Author: Xionghu Luo <luo...@linux.ibm.com> Date: Sun May 10 20:27:38 2020 -0500 rs6000: Don't use HARD_FRAME_POINTER_REGNUM if it's not live in pro_and_epilogue (PR91518) Backport from master. This bug is exposed by FRE refactor of r263875. Comparing the fre dump file shows no obvious change of the segment fault function proves it to be a target issue. frame_pointer_needed is set to true in reload pass setup_can_eliminate, but regs_ever_live[31] is false, pro_and_epilogue uses it without live check causing CPU2006 465.tonto segment fault of loading from invalid addresses due to r31 not saved/restored. Thus, add HARD_FRAME_POINTER_REGNUM live check with frame_pointer_needed_indeed when generating pro_and_epilogue instructions. gcc/ChangeLog 2020-05-11 Xiong Hu Luo <luo...@linux.ibm.com> Backport from master. 2020-04-27 Xiong Hu Luo <luo...@linux.ibm.com> PR target/91518 * config/rs6000/rs6000.c (frame_pointer_needed_indeed): New variable. (rs6000_emit_prologue_components): Check with frame_pointer_needed_indeed. (rs6000_emit_epilogue_components): Likewise. (rs6000_emit_prologue): Likewise. (rs6000_emit_epilogue): Set frame_pointer_needed_indeed.