diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2014-02-03 15:06:31 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2014-02-03 07:06:31 -0800 |
commit | f742cf901dd37dfeb116e7dc099461b1291389e8 (patch) | |
tree | 551ae48976df67b73976cc8d577747ca14e60aa8 /gcc | |
parent | 8f36fd301702fdfe96b23ba0656903262dd74c30 (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/sel-sched.c | 14 |
2 files changed, 13 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5f8d35..e6df43b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-02-03 H.J. Lu <hongjiu.lu@intel.com> + + PR rtl-optimization/60024 + * sel-sched.c (init_regs_for_mode): Check if mode is OK first. + 2014-02-03 Markus Trippelsdorf <markus@trippelsdorf.de> * doc/invoke.texi: (fprofile-reorder-functions): Fix typo. 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); |