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.

Reply via email to