diff options
author | Andrew Pinski <apinski@marvell.com> | 2021-09-18 08:20:16 +0000 |
---|---|---|
committer | Andrew Pinski <apinski@marvell.com> | 2021-09-19 03:49:13 +0000 |
commit | 767c098247a405041a48d6c1663100bfc29e414c (patch) | |
tree | 2cd43fb885858c0ca8076417053c8934b882fb52 | |
parent | cf74e7b57bc2e94fdd752d824fa221d1d529fad8 (diff) | |
download | gcc-767c098247a405041a48d6c1663100bfc29e414c.zip gcc-767c098247a405041a48d6c1663100bfc29e414c.tar.gz gcc-767c098247a405041a48d6c1663100bfc29e414c.tar.bz2 |
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.
-rw-r--r-- | gcc/lra-constraints.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index a56080b..4d73454 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -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; |