From 8922eb5b249f40a3f6835570eebba2126aa32aa2 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Wed, 30 Nov 1994 18:04:48 -0500 Subject: [PATCH] (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 --- gcc/reload.c | 11 +++++++++++ 1 file changed, 11 insertions(+) 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, -- 2.30.2