diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2013-01-28 20:03:26 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2013-01-28 20:03:26 +0000 |
commit | 51e44392b3084a2bb00aa185f42f538a61c7befe (patch) | |
tree | 51f69a79495e01d0369cd4bf6546fc69c24e0d77 /gcc | |
parent | db1fb332e127cef6bcbfd861e597ddb84505210f (diff) | |
download | gcc-51e44392b3084a2bb00aa185f42f538a61c7befe.zip gcc-51e44392b3084a2bb00aa185f42f538a61c7befe.tar.gz gcc-51e44392b3084a2bb00aa185f42f538a61c7befe.tar.bz2 |
re PR other/54814 (ICE: unable to find a register to spill in class 'R0_REG')
PR other/54814
* reload.c (find_valid_class_1): Use in_hard_reg_set_p instead of
TEST_HARD_REG_BIT.
From-SVN: r195515
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/reload.c | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cab97ef..917986b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-01-28 Bernd Schmidt <bernds@codesourcery.com> + + PR other/54814 + * reload.c (find_valid_class_1): Use in_hard_reg_set_p instead of + TEST_HARD_REG_BIT. + 2013-01-28 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/56117 diff --git a/gcc/reload.c b/gcc/reload.c index fb1021c..889a6cc 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -707,7 +707,7 @@ find_valid_class (enum machine_mode outer ATTRIBUTE_UNUSED, } /* We are trying to reload a subreg of something that is not a register. - Find the largest class which has at least one register valid in + Find the largest class which contains only registers valid in mode MODE. OUTER is the mode of the subreg, DEST_CLASS the class in which we would eventually like to obtain the object. */ @@ -727,10 +727,12 @@ find_valid_class_1 (enum machine_mode outer ATTRIBUTE_UNUSED, { int bad = 0; for (regno = 0; regno < FIRST_PSEUDO_REGISTER && !bad; regno++) - if (TEST_HARD_REG_BIT (reg_class_contents[rclass], regno) - && !HARD_REGNO_MODE_OK (regno, mode)) - bad = 1; - + { + if (in_hard_reg_set_p (reg_class_contents[rclass], mode, regno) + && !HARD_REGNO_MODE_OK (regno, mode)) + bad = 1; + } + if (bad) continue; |