aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/interface.c
diff options
context:
space:
mode:
authorXionghu Luo <luoxhu@linux.ibm.com>2020-04-26 20:37:27 -0500
committerXionghu Luo <luoxhu@linux.ibm.com>2020-04-26 20:41:38 -0500
commitf6955089db6c3aa63c276704159ffad1ef15d256 (patch)
tree0433341f8d43b3c95276846b1130cb88eb5e535b /gcc/fortran/interface.c
parentbfdea9ae81f924ecdcc6be9bd64b6c9084881088 (diff)
downloadgcc-f6955089db6c3aa63c276704159ffad1ef15d256.zip
gcc-f6955089db6c3aa63c276704159ffad1ef15d256.tar.gz
gcc-f6955089db6c3aa63c276704159ffad1ef15d256.tar.bz2
rs6000: Don't use HARD_FRAME_POINTER_REGNUM if it's not live in pro_and_epilogue (PR91518)
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-04-27 Xiong Hu Luo <luoxhu@linux.ibm.com> PR target/91518 * config/rs6000/rs6000-logue.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.
Diffstat (limited to 'gcc/fortran/interface.c')
0 files changed, 0 insertions, 0 deletions