diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 2000-05-23 17:13:36 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2000-05-23 18:13:36 +0100 |
commit | a3afe9205d962176ddc12f507072273d8629de90 (patch) | |
tree | bb872e08aa14730493371ff27263c975c457431b /gcc/reload1.c | |
parent | ed7fd6c8d92b376b50b92b05f510c8273faf1495 (diff) | |
download | gcc-a3afe9205d962176ddc12f507072273d8629de90.zip gcc-a3afe9205d962176ddc12f507072273d8629de90.tar.gz gcc-a3afe9205d962176ddc12f507072273d8629de90.tar.bz2 |
* reload1.c (reload_cse_move2add): Honor TRULY_NOOP_TRUNCATION.
From-SVN: r34106
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index e7da78b..c0bf424 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -8905,8 +8905,12 @@ reload_cse_move2add (first) /* ??? We don't know how zero / sign extension is handled, hence we can't go from a narrower to a wider mode. */ if (reg_set_luid[regno] > last_label_luid - && (GET_MODE_SIZE (GET_MODE (reg)) - <= GET_MODE_SIZE (reg_mode[regno])) + && ((GET_MODE_SIZE (GET_MODE (reg)) + == GET_MODE_SIZE (reg_mode[regno])) + || ((GET_MODE_SIZE (GET_MODE (reg)) + <= GET_MODE_SIZE (reg_mode[regno])) + && TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (GET_MODE (reg)), + GET_MODE_BITSIZE (reg_mode[regno])))) && GET_CODE (reg_offset[regno]) == CONST_INT) { /* Try to transform (set (REGX) (CONST_INT A)) |