https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113280
--- Comment #4 from Segher Boessenkool <segher at gcc dot gnu.org> --- Nothing has changed here. opt == 2 and opt == 3 should use "=X", not "+X", btw. combine is perfectly correct that "X" allows *any operand whatsoever*, also those that you cannot really use as an output. Maybe we should not allow "X" for output operands at all? The error happens during reloading btw. Which makes sense, I would be much more surprised if the compiler figured out a way to move data into an addition :-)