diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-10-28 18:55:05 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-10-28 18:55:05 -0400 |
commit | 1a8e9a8e0574f6f2923c4f7ce8ddefe412ecda2c (patch) | |
tree | d5c98cca0a6f86e9c31eaa4a535dd2df3a7bcc61 /gcc/cse.c | |
parent | 99d13c40244720f821c7a342748e314cac4c729b (diff) | |
download | gcc-1a8e9a8e0574f6f2923c4f7ce8ddefe412ecda2c.zip gcc-1a8e9a8e0574f6f2923c4f7ce8ddefe412ecda2c.tar.gz gcc-1a8e9a8e0574f6f2923c4f7ce8ddefe412ecda2c.tar.bz2 |
(cse_insn): Don't record a DEST a paradoxical SUBREG and SRC is a
SIGN_EXTEND or ZERO_EXTEND.
From-SVN: r8354
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -7188,7 +7188,17 @@ cse_insn (insn, in_libcall_block) || in_libcall_block /* If we didn't put a REG_EQUAL value or a source into the hash table, there is no point is recording DEST. */ - || sets[i].src_elt == 0) + || sets[i].src_elt == 0 + /* If DEST is a paradoxical SUBREG and SRC is a ZERO_EXTEND + or SIGN_EXTEND, don't record DEST since it can cause + some tracking to be wrong. + + ??? Think about this more later. */ + || (GET_CODE (dest) == SUBREG + && (GET_MODE_SIZE (GET_MODE (dest)) + > GET_MODE_SIZE (GET_MODE (SUBREG_REG (dest)))) + && (GET_CODE (sets[i].src) == SIGN_EXTEND + || GET_CODE (sets[i].src) == ZERO_EXTEND))) continue; /* STRICT_LOW_PART isn't part of the value BEING set, |