aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@redhat.com>2001-12-03 23:01:44 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2001-12-03 23:01:44 +0000
commita76033a004d088679af685a8f4decec6f9cc90df (patch)
tree64c791825a2440da1885d44bded41186b4c9148e
parent251931f3ad609ff984a367e8225f3a26233a47ed (diff)
downloadgcc-a76033a004d088679af685a8f4decec6f9cc90df.zip
gcc-a76033a004d088679af685a8f4decec6f9cc90df.tar.gz
gcc-a76033a004d088679af685a8f4decec6f9cc90df.tar.bz2
emit-rtl.c (gen_lowpart_common): Avoid unwanted sign-extension of array elements.
* emit-rtl.c (gen_lowpart_common): Avoid unwanted sign-extension of array elements. From-SVN: r47568
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/emit-rtl.c8
2 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a3db409..e24faea 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-12-03 Geoff Keating <geoffk@redhat.com>
+
+ * emit-rtl.c (gen_lowpart_common): Avoid unwanted sign-extension
+ of array elements.
+
2001-12-03 Neil Booth <neil@daikokuya.demon.co.uk>
PR c/4988
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 9528b29..3c2d847 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -1062,10 +1062,10 @@ gen_lowpart_common (mode, x)
if (HOST_BITS_PER_WIDE_INT != 64)
abort ();
- return immed_double_const (i[3 * endian]
- | ((HOST_WIDE_INT) i[1 + endian] << 32),
- i[2 - endian]
- | ((HOST_WIDE_INT) i[3 - 3 * endian] << 32),
+ return immed_double_const ((((unsigned long) i[3 * endian])
+ | ((HOST_WIDE_INT) i[1 + endian] << 32)),
+ (((unsigned long) i[2 - endian])
+ | ((HOST_WIDE_INT) i[3 - 3 * endian] << 32)),
mode);
#endif
}