diff mbox

[regrename,sel-sched] Fix bogus use of HARD_FRAME_POINTER_REGNUM (was: Fix arm bootstrap)

Message ID 57E9320C.3060609@foss.arm.com
State New
Headers show

Commit Message

Kyrill Tkachov Sept. 26, 2016, 2:34 p.m. UTC
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.

Comments

Bernd Schmidt Sept. 26, 2016, 2:38 p.m. UTC | #1
On 09/26/2016 04:34 PM, Kyrill Tkachov wrote:
> 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.

Oh well, it's the minimal fix. Ok.


Bernd
diff mbox

Patch

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))
     {