https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79058
--- Comment #12 from Andreas Krebbel <krebbel at gcc dot gnu.org> --- (In reply to Dominik Vogt from comment #11) > gccint: > > A operand which is read by the instruction can be tied to an earlyclobber > > operand if its only use as an input occurs before the early result is > > written. > > Mabe it's allowed here because of the forced split? > > operands[3] = gen_lowpart (SImode, operands[0]); > operands[5] = gen_highpart (SImode, operands[0]); > > operands[4] = simplify_gen_binary (AND, SImode, > gen_lowpart (SImode, > operands[1]), > gen_lowpart (SImode, > operands[2])); > operands[6] = simplify_gen_binary (AND, SImode, > gen_highpart (SImode, > operands[1]), > gen_highpart_mode (SImode, > DImode, o\ > perands[2])); The splitter probably is the reason why the early clobber has been added. Handling the SImode part separately requires that the source reg does not match the target reg. Alternative 4 does not appear to be correct to me. It uses an early clobber and a matching constraint between source and target. Reload cannot meet both requirements. Since the alternative 4 just seems to be a subset of alternative 5 I'm wondering if it could not just be removed?!