https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83245
--- Comment #3 from Segher Boessenkool <segher at gcc dot gnu.org> --- Author: segher Date: Mon Dec 4 09:30:37 2017 New Revision: 255377 URL: https://gcc.gnu.org/viewcvs?rev=255377&root=gcc&view=rev Log: lra: Clobbers in a parallel are earlyclobbers (PR83245) The documentation (rtl.texi) says: When a @code{clobber} expression for a register appears inside a @code{parallel} with other side effects, the register allocator guarantees that the register is unoccupied both before and after that insn if it is a hard register clobber. and at least the rs6000 backend relies on that (see PR83245). This patch restores that behaviour. Registers that are also used as operands in the instruction are not treated as earlyclobber, so such insns also still work (PR80818, an s390 testcase). PR rtl-optimization/83245 * lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand hard registers as earlyclobber, also if not in an asm. Modified: trunk/gcc/ChangeLog trunk/gcc/lra.c