aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-02-08 13:29:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-02-08 13:29:22 +0000
commitea72cc1dcab80a27beb22a2c9f0b4110392ec56d (patch)
tree18998203ec72edbfcd8709766098cdd7edafc8d5 /gcc
parent9e66e106ab1018782aba2630f01a059cb3c839d1 (diff)
downloadgcc-ea72cc1dcab80a27beb22a2c9f0b4110392ec56d.zip
gcc-ea72cc1dcab80a27beb22a2c9f0b4110392ec56d.tar.gz
gcc-ea72cc1dcab80a27beb22a2c9f0b4110392ec56d.tar.bz2
re PR rtl-optimization/52170 (ICE in trunc_int_for_mode, at explow.c:57 during simplify_plus_minus)
2012-02-08 Richard Guenther <rguenther@suse.de> PR rtl-optimization/52170 * simplify-rtx.c (simplify_plus_minus): Use CONSTM1_RTX to properly handle integer vector modes. * gcc.dg/torture/pr52170.c: New testcase. From-SVN: r184007
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/simplify-rtx.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr52170.c17
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fcea3cf..71cdd93 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-02-08 Richard Guenther <rguenther@suse.de>
+
+ PR rtl-optimization/52170
+ * simplify-rtx.c (simplify_plus_minus): Use CONSTM1_RTX to
+ properly handle integer vector modes.
+
2012-02-08 Jakub Jelinek <jakub@redhat.com>
PR gcov-profile/52150
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 6733b84..bba565d 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -3947,7 +3947,7 @@ simplify_plus_minus (enum rtx_code code, enum machine_mode mode, rtx op0,
/* ~a -> (-a - 1) */
if (n_ops != 7)
{
- ops[n_ops].op = constm1_rtx;
+ ops[n_ops].op = CONSTM1_RTX (mode);
ops[n_ops++].neg = this_neg;
ops[i].op = XEXP (this_op, 0);
ops[i].neg = !this_neg;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6cedc9e..7928ea1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-08 Richard Guenther <rguenther@suse.de>
+
+ PR rtl-optimization/52170
+ * gcc.dg/torture/pr52170.c: New testcase.
+
2012-02-08 Jakub Jelinek <jakub@redhat.com>
PR gcov-profile/52150
diff --git a/gcc/testsuite/gcc.dg/torture/pr52170.c b/gcc/testsuite/gcc.dg/torture/pr52170.c
new file mode 100644
index 0000000..3d0a038
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr52170.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+
+typedef unsigned char uint8_t ;
+typedef unsigned long uint32_t;
+void f0a(uint32_t * result, uint32_t * arg1)
+{
+ int idx;
+ for (idx=0;idx<96;idx += 1)
+ {
+ uint8_t temp_5;
+ uint8_t temp_6;
+
+ temp_5 = ~(*arg1);
+ temp_6 = (*arg1) + 1 - temp_5;
+ result[idx] = temp_6;
+ }
+}