Fix middle-end/102395: reg_class having only NO_REGS and ALL_REGS.
So this is a simple fix is to just add to the assert that sclass and dclass are both greater than or equal to NO_REGS. NO_REGS is documented as the first register class so it should have the value of 0. gcc/ChangeLog: * lra-constraints.c (check_and_process_move): Assert that dclass and sclass are greater than or equal to NO_REGS.
This commit is contained in:
parent
cf74e7b57b
commit
767c098247
@ -1276,7 +1276,7 @@ check_and_process_move (bool *change_p, bool *sec_mem_p ATTRIBUTE_UNUSED)
|
||||
sclass = dclass = NO_REGS;
|
||||
if (REG_P (dreg))
|
||||
dclass = get_reg_class (REGNO (dreg));
|
||||
gcc_assert (dclass < LIM_REG_CLASSES);
|
||||
gcc_assert (dclass < LIM_REG_CLASSES && dclass >= NO_REGS);
|
||||
if (dclass == ALL_REGS)
|
||||
/* ALL_REGS is used for new pseudos created by transformations
|
||||
like reload of SUBREG_REG (see function
|
||||
@ -1288,7 +1288,7 @@ check_and_process_move (bool *change_p, bool *sec_mem_p ATTRIBUTE_UNUSED)
|
||||
return false;
|
||||
if (REG_P (sreg))
|
||||
sclass = get_reg_class (REGNO (sreg));
|
||||
gcc_assert (sclass < LIM_REG_CLASSES);
|
||||
gcc_assert (sclass < LIM_REG_CLASSES && sclass >= NO_REGS);
|
||||
if (sclass == ALL_REGS)
|
||||
/* See comments above. */
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user