https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #31 from Kazumoto Kojima <kkojima at gcc dot gnu.org> --- Created attachment 33556 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33556&action=edit A bit reduced test case of pr38338.c (-O0 -m4 -ml) That case has only one basic block which looks like (prologue) (Save r4-r7,fr4-fr11,...) ;; Save argument mov.b r0,@(8,r1) ! 4 *movqi_store_mem_disp04/1 ;; insns don't use r0 ... ;; untyped_call mov.l .L3,r1 jsr @r1 nop ! 97 calli mov.l r0,@(56,r9) ! 98 movsi_ie/9 flds fr0,fpul ! 197 movsi_ie/22 sts fpul,r1 ! 198 movsi_ie/20 mov.l r1,@(60,r8) ! 99 movsi_ie/9 ;; ... if RA was done. It seems that LRA thought that r0 in insn 4 conflicts r0 in insn 98 and fails at reloading *movqi_store_mem_disp04 which permits only r0 as the source operand when reg+offset addressing mode is used. LRA looks right, because RA doesn't know that r0 is the function return value register set by function call. Target could notify it with clobbering function value registers before call.