LRA removes insn modifying sp for given PR test set. We should also have
checked living hard regs to prevent this. The patch fixes this.
gcc/ChangeLog:
PR middle-end/104971
* lra-lives.cc (process_bb_lives): Check hard_regs_live for hard
regs to clear remove_p flag.
bool remove_p = true;
for (reg = curr_id->regs; reg != NULL; reg = reg->next)
- if (reg->type != OP_IN && sparseset_bit_p (pseudos_live, reg->regno))
+ if (reg->type != OP_IN
+ && (reg->regno < FIRST_PSEUDO_REGISTER
+ ? TEST_HARD_REG_BIT (hard_regs_live, reg->regno)
+ : sparseset_bit_p (pseudos_live, reg->regno)))
{
remove_p = false;
break;