[backport gcc-4.8/trunk r195515, fixes regression from reload-subreg-1 patch aka r190252 ] gcc/ 2013-01-28 Bernd Schmidt PR other/54814 * reload.c (find_valid_class_1): Use in_hard_reg_set_p instead of TEST_HARD_REG_BIT. --- gcc-4.7.2/gcc/reload.c.~1~ 2013-02-02 12:52:35.012106110 +0100 +++ gcc-4.7.2/gcc/reload.c 2013-02-02 12:54:59.481518011 +0100 @@ -710,7 +710,7 @@ find_valid_class (enum machine_mode oute } /* 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. */ @@ -730,10 +730,12 @@ find_valid_class_1 (enum machine_mode ou { 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;