diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2011-07-06 23:11:51 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2011-07-06 23:11:51 +0000 |
commit | 6a4bdc797621dbf63470b88dcd50095571b0fe1d (patch) | |
tree | 5f9f7faef58377378ef03c74cddbf4a06d8c42d4 /gcc/emit-rtl.c | |
parent | 76594d53186a78667bbb7b25f9231c396509a0a2 (diff) | |
download | gcc-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/emit-rtl.c')
-rw-r--r-- | gcc/emit-rtl.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index f010ac6..c641b7e 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -1334,6 +1334,16 @@ subreg_lowpart_p (const_rtx x) return (subreg_lowpart_offset (GET_MODE (x), GET_MODE (SUBREG_REG (x))) == SUBREG_BYTE (x)); } + +/* Return true if X is a paradoxical subreg, false otherwise. */ +bool +paradoxical_subreg_p (const_rtx x) +{ + if (GET_CODE (x) != SUBREG) + return false; + return (GET_MODE_PRECISION (GET_MODE (x)) + > GET_MODE_PRECISION (GET_MODE (SUBREG_REG (x)))); +} /* Return subword OFFSET of operand OP. The word number, OFFSET, is interpreted as the word number starting |