diff options
Diffstat (limited to 'gcc-4.4.0/gcc/combine.c')
-rw-r--r-- | gcc-4.4.0/gcc/combine.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/gcc-4.4.0/gcc/combine.c b/gcc-4.4.0/gcc/combine.c index 5bffb5845..0de23fe0f 100644 --- a/gcc-4.4.0/gcc/combine.c +++ b/gcc-4.4.0/gcc/combine.c @@ -2445,10 +2445,16 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p) i2dest = SET_DEST (temp); i2dest_killed = dead_or_set_p (i2, i2dest); + /* Replace the source in I2 with the new constant and make the + resulting insn the new pattern for I3. Then skip to where we + validate the pattern. Everything was set up above. */ SUBST (SET_SRC (temp), immed_double_const (olo, ohi, GET_MODE (SET_DEST (temp)))); newpat = PATTERN (i2); + + /* The dest of I3 has been replaced with the dest of I2. */ + changed_i3_dest = 1; goto validate_replacement; } } @@ -2820,8 +2826,6 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p) } } - /* We come here when we are replacing a destination in I2 with the - destination of I3. */ validate_replacement: /* Note which hard regs this insn has as inputs. */ @@ -8512,12 +8516,6 @@ distribute_and_simplify_rtx (rtx x, int n) enum rtx_code outer_code, inner_code; rtx decomposed, distributed, inner_op0, inner_op1, new_op0, new_op1, tmp; - /* Distributivity is not true for floating point as it can change the - value. So we don't do it unless -funsafe-math-optimizations. */ - if (FLOAT_MODE_P (GET_MODE (x)) - && ! flag_unsafe_math_optimizations) - return NULL_RTX; - decomposed = XEXP (x, n); if (!ARITHMETIC_P (decomposed)) return NULL_RTX; |