aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <apinski@marvell.com>2021-09-18 08:20:16 +0000
committerAndrew Pinski <apinski@marvell.com>2021-09-19 03:49:13 +0000
commit767c098247a405041a48d6c1663100bfc29e414c (patch)
tree2cd43fb885858c0ca8076417053c8934b882fb52 /gcc
parentcf74e7b57bc2e94fdd752d824fa221d1d529fad8 (diff)
downloadgcc-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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/lra-constraints.c4
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;