This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH][regrename][sel-sched] Fix bogus use of HARD_FRAME_POINTER_REGNUM (was: Fix arm bootstrap)
- From: Kyrill Tkachov <kyrylo dot tkachov at foss dot arm dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: Alexander Monakov <amonakov at ispras dot ru>
- Date: Mon, 26 Sep 2016 15:34:52 +0100
- Subject: [PATCH][regrename][sel-sched] Fix bogus use of HARD_FRAME_POINTER_REGNUM (was: Fix arm bootstrap)
- Authentication-results: sourceware.org; auth=none
Hi all,
This patch implements the minimal fixes for the issues that
https://gcc.gnu.org/ml/gcc-patches/2016-09/msg01547.html was supposed to address
as suggested by Alexander.
Bootstrapped and tested on aarch64-none-linux-gnu and arm-none-linux-gnueabihf.
Is this ok for trunk?
Thanks,
Kyrill
2016-09-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Alexander Monakov <amonakov@ispras.ru>
* regrename.c (rename_chains): Check
HARD_FRAME_POINTER_IS_FRAME_POINTER rather than
HARD_FRAME_POINTER_REGNUM when picking unavailable registers.
* sel-sched.c (mark_unavailable_hard_regs): Likewise.
diff --git a/gcc/regrename.c b/gcc/regrename.c
index 54c7768efa226139c340868e42b784fb011a19b9..3509e8bab81bcbaeee124347bef21468ec80ec48 100644
--- a/gcc/regrename.c
+++ b/gcc/regrename.c
@@ -481,7 +481,7 @@ rename_chains (void)
if (fixed_regs[reg] || global_regs[reg]
|| (!HARD_FRAME_POINTER_IS_FRAME_POINTER && frame_pointer_needed
&& reg == HARD_FRAME_POINTER_REGNUM)
- || (HARD_FRAME_POINTER_REGNUM && frame_pointer_needed
+ || (HARD_FRAME_POINTER_IS_FRAME_POINTER && frame_pointer_needed
&& reg == FRAME_POINTER_REGNUM))
continue;
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index 25a100ee34f6ceaceda2814ae281cadf8b29e688..009e7831ecc0822ff83c63c6214a11917a3e2d27 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -1185,7 +1185,7 @@ mark_unavailable_hard_regs (def_t def, struct reg_rename *reg_rename_p,
|| global_regs[regno]
|| (!HARD_FRAME_POINTER_IS_FRAME_POINTER && frame_pointer_needed
&& regno == HARD_FRAME_POINTER_REGNUM)
- || (HARD_FRAME_POINTER_REGNUM && frame_pointer_needed
+ || (HARD_FRAME_POINTER_IS_FRAME_POINTER && frame_pointer_needed
&& regno == FRAME_POINTER_REGNUM)
|| (reload_completed && cl == NO_REGS))
{