diff options
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 8df32e6..6affa68 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -6147,7 +6147,7 @@ emit_input_reload_insns (chain, rl, old, j) reg_renumber[REGNO (old)] = REGNO (rl->reg_rtx); alter_reg (REGNO (old), -1); } - return; + special = 1; } } @@ -6165,7 +6165,7 @@ emit_input_reload_insns (chain, rl, old, j) because we don't make such reloads when both the input and output need secondary reload registers. */ - if (rl->secondary_in_reload >= 0) + if (! special && rl->secondary_in_reload >= 0) { rtx second_reload_reg = 0; int secondary_reload = rl->secondary_in_reload; @@ -6283,7 +6283,7 @@ emit_input_reload_insns (chain, rl, old, j) { emit_insn (GEN_FCN (icode) (reloadreg, real_oldequiv, second_reload_reg)); - return; + special = 1; } else { @@ -6312,7 +6312,7 @@ emit_input_reload_insns (chain, rl, old, j) } #endif - if (! rtx_equal_p (reloadreg, oldequiv)) + if (! special && ! rtx_equal_p (reloadreg, oldequiv)) { rtx real_oldequiv = oldequiv; |