Message ID | 1631992566-20048-1-git-send-email-apinski@marvell.com |
---|---|
State | New |
Headers | show |
Series | Fix middle-end/102395: reg_class having only NO_REGS and ALL_REGS. | expand |
On 9/18/2021 1:16 PM, apinski--- via Gcc-patches wrote: > From: Andrew Pinski <apinski@marvell.com> > > 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. OK jeff
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index a56080bee35..4d734548c38 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;
From: Andrew Pinski <apinski@marvell.com> 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. --- gcc/lra-constraints.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)