aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/match.pd3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr70050.c11
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e232f52..c7b8c17 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-03-03 Marek Polacek <polacek@redhat.com>
+
+ PR middle-end/70050
+ * match.pd (X % -Y): Add INTEGRAL_TYPE_P check.
+
2016-03-03 Martin Liska <mliska@suse.cz>
PR tree-optimization/70043
diff --git a/gcc/match.pd b/gcc/match.pd
index 5903782..112deb3 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -293,7 +293,8 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
/* X % -Y is the same as X % Y. */
(simplify
(trunc_mod @0 (convert? (negate @1)))
- (if (!TYPE_UNSIGNED (type)
+ (if (INTEGRAL_TYPE_P (type)
+ && !TYPE_UNSIGNED (type)
&& !TYPE_OVERFLOW_TRAPS (type)
&& tree_nop_conversion_p (type, TREE_TYPE (@1))
/* Avoid this transformation if X might be INT_MIN or
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 875de1a..9949f9c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-03-03 Marek Polacek <polacek@redhat.com>
+
+ PR middle-end/70050
+ * gcc.dg/pr70050.c: New test.
+
2016-03-03 James Greenhalgh <james.greenhalgh@arm.com>
* gcc.dg/vect/bb-slp-34.c: Don't XFAIL for ARM/AArch64.
diff --git a/gcc/testsuite/gcc.dg/pr70050.c b/gcc/testsuite/gcc.dg/pr70050.c
new file mode 100644
index 0000000..feedd3f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr70050.c
@@ -0,0 +1,11 @@
+/* PR middle-end/70025 */
+/* { dg-do compile } */
+/* { dg-options "-Wno-psabi" } */
+
+typedef int v8si __attribute__ ((vector_size (32)));
+
+v8si
+foo (v8si v)
+{
+ return v %= -v;
+}