diff options
author | Chung-Lin Tang <cltang@codesourcery.com> | 2011-02-18 17:26:31 +0000 |
---|---|---|
committer | Chung-Lin Tang <cltang@gcc.gnu.org> | 2011-02-18 17:26:31 +0000 |
commit | 7efcf910eeb14928a4230e835a126784e9e196b0 (patch) | |
tree | ac4d7d4b4ed03e4c4988fae35b30f39df0d21689 /gcc/ira.c | |
parent | 4a16e6813387edc211094a97a5366e272dfa6512 (diff) | |
download | gcc-7efcf910eeb14928a4230e835a126784e9e196b0.zip gcc-7efcf910eeb14928a4230e835a126784e9e196b0.tar.gz gcc-7efcf910eeb14928a4230e835a126784e9e196b0.tar.bz2 |
re PR rtl-optimization/46178 (gcc.target/i386/(u)divmod-[58].c FAIL: ICE: in dec_register_pressure, at ira-lives.c:215 with -fira-algorithm=priority)
2011-02-18 Chung-Lin Tang <cltang@codesourcery.com>
PR rtl-optimization/46178
* ira.c (setup_hard_regno_class): Use ira_class_translate[] to
compute ira_hard_regno_cover_class[].
From-SVN: r170277
Diffstat (limited to 'gcc/ira.c')
-rw-r--r-- | gcc/ira.c | 18 |
1 files changed, 5 insertions, 13 deletions
@@ -1033,22 +1033,14 @@ find_reg_class_closure (void) static void setup_hard_regno_cover_class (void) { - int i, j; - enum reg_class cl; + int i; for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) { - ira_hard_regno_cover_class[i] = NO_REGS; - for (j = 0; j < ira_reg_class_cover_size; j++) - { - cl = ira_reg_class_cover[j]; - if (ira_class_hard_reg_index[cl][i] >= 0) - { - ira_hard_regno_cover_class[i] = cl; - break; - } - } - + ira_hard_regno_cover_class[i] + = (TEST_HARD_REG_BIT (no_unit_alloc_regs, i) + ? NO_REGS + : ira_class_translate[REGNO_REG_CLASS (i)]); } } |