diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 1997-05-02 18:16:50 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 1997-05-02 18:16:50 +0000 |
commit | 99c2b71fd5ba314067699ba0dfbf96d8e8967181 (patch) | |
tree | 621ec82dea1964a285aa745cb0018731cf5dda02 | |
parent | dbd7556ea43c59fcea8caa0d0c52dec6b4304369 (diff) | |
download | gcc-99c2b71fd5ba314067699ba0dfbf96d8e8967181.zip gcc-99c2b71fd5ba314067699ba0dfbf96d8e8967181.tar.gz gcc-99c2b71fd5ba314067699ba0dfbf96d8e8967181.tar.bz2 |
Check the mode when checking values equivalent to sreg
From-SVN: r14009
-rw-r--r-- | gcc/reload1.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 8489fe4..199ae68 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -8035,8 +8035,21 @@ reload_cse_noop_set_p (set, insn) for (x = reg_values[sreg]; x; x = XEXP (x, 1)) { - if (XEXP (x, 0) != 0 - && reload_cse_regno_equal_p (dreg, XEXP (x, 0), dest_mode)) + rtx tmp; + + if (XEXP (x, 0) == 0) + continue; + + if (dest_mode == GET_MODE (x)) + tmp = XEXP (x, 0); + else if (GET_MODE_BITSIZE (dest_mode) + < GET_MODE_BITSIZE (GET_MODE (x))) + tmp = gen_lowpart_common (dest_mode, XEXP (x, 0)); + else + continue; + + if (tmp + && reload_cse_regno_equal_p (dreg, tmp, dest_mode)) { ret = 1; break; |