[Bug rtl-optimization/101882] [16 Regression] combine vs. insn with earlyclobber and input and output set to a hard register

segher at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Jul 6 23:35:01 GMT 2025


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101882

--- Comment #19 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Hi Peter!

(In reply to Peter Bergner from comment #18)
> So the error message is coming from this hunk in my patch:
> 
> +		/* Both the earlyclobber operand and conflicting operand
> +		   cannot both be user defined hard registers.  */
> +		if (HARD_REGISTER_P (operand_reg[i])
> +		    && REG_USERVAR_P (operand_reg[i])
> +		    && operand_reg[j] != NULL_RTX
> +		    && HARD_REGISTER_P (operand_reg[j])
> +		    && REG_USERVAR_P (operand_reg[j]))
> +		  fatal_insn ("unable to generate reloads for "
> +			      "impossible constraints:", curr_insn);
> 
> ...which I believe is correct.

Yes, that is correct.  Was that patch ever committed?  Should this PR
be open at all then?

The REG_USER_VAR_P things aren't necessary really, if RA decides to do
this it is just as wrong, but it will not decide to do this anyway.

> As you said, operand 4 cannot use the same
> register as the early clobber output operand 0, and this hunk is catching
> the illegal usage.  That is a good thing.

Yup.

Xi, please open your own PR for the loongarch problem?  I'll close this one
(as fixed) asap.


More information about the Gcc-bugs mailing list