diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2016-09-26 14:52:03 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2016-09-26 14:52:03 +0000 |
commit | a943bb7fcd9e251ee4192478561cea62ab54a7d8 (patch) | |
tree | 00f000d6af08c61e66048c948c6e08d6d6f4e5a9 | |
parent | 1d92cba91be69be5d1baaca46b834d6b8d780acd (diff) | |
download | gcc-a943bb7fcd9e251ee4192478561cea62ab54a7d8.zip gcc-a943bb7fcd9e251ee4192478561cea62ab54a7d8.tar.gz gcc-a943bb7fcd9e251ee4192478561cea62ab54a7d8.tar.bz2 |
[regrename][sel-sched] Fix bogus use of HARD_FRAME_POINTER_REGNUM (was: Fix arm bootstrap)
* 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.
Co-Authored-By: Alexander Monakov <amonakov@ispras.ru>
From-SVN: r240496
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/regrename.c | 2 | ||||
-rw-r--r-- | gcc/sel-sched.c | 2 |
3 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bdebe60..707b55f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +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. + 2016-09-26 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * config/s390/s390.c (s390_rtx_costs): Add /* fallthrough */. diff --git a/gcc/regrename.c b/gcc/regrename.c index 54c7768..3509e8b 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 1ed0d4b..2968bdf 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)) { |