aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-04-24 15:20:20 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2018-04-24 15:20:20 +0200
commit1704194ae7485f7faca06c026fbfc33233feae1d (patch)
treee040b649fa9605968ecf26fa647371aad23b6513
parent062c0a7b2f8dc58f8bb7c6d3448866812bfc75c1 (diff)
downloadgcc-1704194ae7485f7faca06c026fbfc33233feae1d.zip
gcc-1704194ae7485f7faca06c026fbfc33233feae1d.tar.gz
gcc-1704194ae7485f7faca06c026fbfc33233feae1d.tar.bz2
re PR target/85508 (runtime error in config/i386/i386.c)
PR target/85508 * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL instead of INTVAL when shifting x left. * gcc.target/i386/pr85508.c: New test. From-SVN: r259594
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr85508.c12
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dcf0d0b..767455f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/85508
+ * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
+ instead of INTVAL when shifting x left.
+
2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
PR tree-optimization/85478
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 19d1c30..fada22b 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -43194,7 +43194,7 @@ ix86_expand_vector_init_one_var (bool mmx_ok, machine_mode mode,
else
{
var = convert_modes (HImode, QImode, var, true);
- x = gen_int_mode (INTVAL (x) << 8, HImode);
+ x = gen_int_mode (UINTVAL (x) << 8, HImode);
}
if (x != const0_rtx)
var = expand_simple_binop (HImode, IOR, var, x, var,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8c92593..65c4d61 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/85508
+ * gcc.target/i386/pr85508.c: New test.
+
2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
PR tree-optimization/85478
diff --git a/gcc/testsuite/gcc.target/i386/pr85508.c b/gcc/testsuite/gcc.target/i386/pr85508.c
new file mode 100644
index 0000000..a75a38f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr85508.c
@@ -0,0 +1,12 @@
+/* PR target/85508 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2" } */
+
+typedef signed char V __attribute__((vector_size (16)));
+signed char c;
+
+V
+foo (void)
+{
+ return (V) { c, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
+}