aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@codesourcery.com>2011-07-06 23:11:51 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2011-07-06 23:11:51 +0000
commit6a4bdc797621dbf63470b88dcd50095571b0fe1d (patch)
tree5f9f7faef58377378ef03c74cddbf4a06d8c42d4 /gcc/rtlanal.c
parent76594d53186a78667bbb7b25f9231c396509a0a2 (diff)
downloadgcc-6a4bdc797621dbf63470b88dcd50095571b0fe1d.zip
gcc-6a4bdc797621dbf63470b88dcd50095571b0fe1d.tar.gz
gcc-6a4bdc797621dbf63470b88dcd50095571b0fe1d.tar.bz2
emit-rtl.c (paradoxical_subreg_p): New function.
* emit-rtl.c (paradoxical_subreg_p): New function. * rtl.h (paradoxical_subreg_p): Declare. * combine.c (set_nonzero_bits_and_sign_copies, get_last_value, apply_distributive_law, simplify_comparison, simplify_set): Use it. * cse.c (record_jump_cond, cse_insn): Likewise. * expr.c (force_operand): Likewise. * rtlanal.c (num_sign_bit_copies1): Likewise. * reload1.c (eliminate_regs_1, strip_paradoxical_subreg): Likewise. * reload.c (push_secondary_reload, find_reloads_toplev): Likewise. (push_reload): Use precision to check for paradoxical subregs. * expmed.c (extract_bit_field_1): Likewise. From-SVN: r175944
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r--gcc/rtlanal.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 9ac347e..2dfbd8f 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -4483,8 +4483,7 @@ num_sign_bit_copies1 (const_rtx x, enum machine_mode mode, const_rtx known_x,
then we lose all sign bit copies that existed before the store
to the stack. */
- if ((GET_MODE_SIZE (GET_MODE (x))
- > GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))))
+ if (paradoxical_subreg_p (x)
&& LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (x))) == SIGN_EXTEND
&& MEM_P (SUBREG_REG (x)))
return cached_num_sign_bit_copies (SUBREG_REG (x), mode,