aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorZack Weinberg <zack@codesourcery.com>2004-06-17 17:03:11 +0000
committerZack Weinberg <zack@gcc.gnu.org>2004-06-17 17:03:11 +0000
commit42eb30b557a129514aa76470115ea8bb1e35f027 (patch)
tree0a832326b76ae184884d7c3a79794d139ce1b70c /gcc
parent1616280e701452fe2ee16e6e9ae88bd13de68bed (diff)
downloadgcc-42eb30b557a129514aa76470115ea8bb1e35f027.zip
gcc-42eb30b557a129514aa76470115ea8bb1e35f027.tar.gz
gcc-42eb30b557a129514aa76470115ea8bb1e35f027.tar.bz2
expmed.c (expand_mult_const): In sanity check...
* expmed.c (expand_mult_const): In sanity check, compare only the bits of val and val_so_far that are significant in the result mode. From-SVN: r83294
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/expmed.c4
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 551a2ec..5a1a3c2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-06-17 Zack Weinberg <zack@codesourcery.com>
+
+ * expmed.c (expand_mult_const): In sanity check, compare only
+ the bits of val and val_so_far that are significant in the
+ result mode.
+
2004-06-17 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-pre.c: Update comments.
@@ -198,7 +204,7 @@
2004-06-16 Daniel Berlin <dberlin@dberlin.org>
* tree-cfg.c (pass_split_crit_edge): Give it a name and a dump file.
-
+
2004-06-16 Dale Johannesen <dalej@apple.com>
* loop.c (loop_givs_reduce): Avoid miscompilation of
diff --git a/gcc/expmed.c b/gcc/expmed.c
index fb590cd..ae76695 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -2610,6 +2610,10 @@ expand_mult_const (enum machine_mode mode, rtx op0, HOST_WIDE_INT val,
accum = force_operand (gen_rtx_PLUS (mode, accum, op0), target);
}
+ /* Compare only the bits of val and val_so_far that are significant
+ in the result mode, to avoid sign-/zero-extension confusion. */
+ val &= GET_MODE_MASK (mode);
+ val_so_far &= GET_MODE_MASK (mode);
if (val != val_so_far)
abort ();