From: Richard Kenner Date: Wed, 30 Nov 1994 23:04:48 +0000 (-0500) Subject: (combine_reloads): If using reg dying in this insn as reload reg, X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8922eb5b249f40a3f6835570eebba2126aa32aa2;p=gcc.git (combine_reloads): If using reg dying in this insn as reload reg, ensure it can't be a secondary output reload reg. From-SVN: r8584 --- diff --git a/gcc/reload.c b/gcc/reload.c index 06d7746cc40..ce5019190c6 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -1382,6 +1382,7 @@ combine_reloads () { int i; int output_reload = -1; + int secondary_out = -1; rtx note; /* Find the output reload; return unless there is exactly one @@ -1525,6 +1526,16 @@ combine_reloads () REGNO (XEXP (note, 0))) && (HARD_REGNO_NREGS (REGNO (XEXP (note, 0)), reload_outmode[output_reload]) <= HARD_REGNO_NREGS (REGNO (XEXP (note, 0)), GET_MODE (XEXP (note, 0)))) + /* Ensure that a secondary or tertiary reload for this output + won't want this register. */ + && ((secondary_out = reload_secondary_out_reload[output_reload]) == -1 + || (! (TEST_HARD_REG_BIT + (reg_class_contents[(int) reload_reg_class[secondary_out]], + REGNO (XEXP (note, 0)))) + && ((secondary_out = reload_secondary_out_reload[secondary_out]) == -1 + || ! (TEST_HARD_REG_BIT + (reg_class_contents[(int) reload_reg_class[secondary_out]], + REGNO (XEXP (note, 0))))))) && ! fixed_regs[REGNO (XEXP (note, 0))]) { reload_reg_rtx[output_reload] = gen_rtx (REG,