aboutsummaryrefslogtreecommitdiff
path: root/gcc/sel-sched.c
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2014-02-03 15:06:31 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2014-02-03 07:06:31 -0800
commitf742cf901dd37dfeb116e7dc099461b1291389e8 (patch)
tree551ae48976df67b73976cc8d577747ca14e60aa8 /gcc/sel-sched.c
parent8f36fd301702fdfe96b23ba0656903262dd74c30 (diff)
downloadgcc-f742cf901dd37dfeb116e7dc099461b1291389e8.zip
gcc-f742cf901dd37dfeb116e7dc099461b1291389e8.tar.gz
gcc-f742cf901dd37dfeb116e7dc099461b1291389e8.tar.bz2
Check if mode is OK first
PR rtl-optimization/60024 * sel-sched.c (init_regs_for_mode): Check if mode is OK first. From-SVN: r207427
Diffstat (limited to 'gcc/sel-sched.c')
-rw-r--r--gcc/sel-sched.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index d3d73b2..490f361 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -1116,9 +1116,16 @@ init_regs_for_mode (enum machine_mode mode)
for (cur_reg = 0; cur_reg < FIRST_PSEUDO_REGISTER; cur_reg++)
{
- int nregs = hard_regno_nregs[cur_reg][mode];
+ int nregs;
int i;
+ /* See whether it accepts all modes that occur in
+ original insns. */
+ if (! HARD_REGNO_MODE_OK (cur_reg, mode))
+ continue;
+
+ nregs = hard_regno_nregs[cur_reg][mode];
+
for (i = nregs - 1; i >= 0; --i)
if (fixed_regs[cur_reg + i]
|| global_regs[cur_reg + i]
@@ -1140,11 +1147,6 @@ init_regs_for_mode (enum machine_mode mode)
if (i >= 0)
continue;
- /* See whether it accepts all modes that occur in
- original insns. */
- if (! HARD_REGNO_MODE_OK (cur_reg, mode))
- continue;
-
if (HARD_REGNO_CALL_PART_CLOBBERED (cur_reg, mode))
SET_HARD_REG_BIT (sel_hrd.regs_for_call_clobbered[mode],
cur_reg);