diff options
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 5441494aa3d..926d7960991 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -6441,7 +6441,10 @@ emit_input_reload_insns (chain, rl, old, j) && ((reg_equiv_memory_loc [REGNO (SUBREG_REG (oldequiv))] != 0) || (reg_equiv_constant - [REGNO (SUBREG_REG (oldequiv))] != 0)))) + [REGNO (SUBREG_REG (oldequiv))] != 0))) + || (CONSTANT_P (oldequiv) + && PREFERRED_RELOAD_CLASS (oldequiv, + REGNO_REG_CLASS (REGNO (reloadreg))) == NO_REGS)) real_oldequiv = rl->in; gen_reload (reloadreg, real_oldequiv, rl->opnum, rl->when_needed); |