https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80754
--- Comment #6 from Wilco <wilco at gcc dot gnu.org> --- Author: wilco Date: Thu May 25 15:12:49 2017 New Revision: 248463 URL: https://gcc.gnu.org/viewcvs?rev=248463&root=gcc&view=rev Log: When lra-remat rematerializes an instruction with a clobber, it checks that the clobber does not kill live registers. However it fails to check that the clobber also doesn't overlap with the destination register of the final rematerialized instruction. As a result it is possible to generate illegal instructions with the same hard register as the destination and a clobber. Fix this by also checking for overlaps with the destination register. Backport from mainline PR rtl-optimization/80754 * lra-remat.c (do_remat): Add overlap checks for dst_regno. Modified: branches/gcc-7-branch/gcc/ChangeLog branches/gcc-7-branch/gcc/lra-remat.c