summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/vect/O3-pr46077.c10
-rw-r--r--gcc/tree-chrec.c10
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7f4a8d77e61..f1f06ce7a8d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-19 Michael Matz <matz@suse.de>
+
+ PR tree-optimization/46077
+ * tree-chrec.c (eq_evolutions_p): Accept some expressions.
+
2010-11-19 Anatoly Sokolov <aesok@post.ru>
* config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cea7f4414bf..a37ba969d09 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-19 Michael Matz <matz@suse.de>
+
+ PR tree-optimization/46077
+ * gcc.dg/vect/O3-pr46077.c: New testcase.
+
2010-11-19 Joseph Myers <joseph@codesourcery.com>
PR c/46547
diff --git a/gcc/testsuite/gcc.dg/vect/O3-pr46077.c b/gcc/testsuite/gcc.dg/vect/O3-pr46077.c
new file mode 100644
index 00000000000..6546f6e3c00
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/O3-pr46077.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+
+void intf_pcmPlayEffect(int *src, int *dst, int size) {
+ int i;
+ for (i = 0; i < size; i++)
+ *dst++ = *src & 0x80 ? (*src++ & 0x7f) : -*src++;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/tree-chrec.c b/gcc/tree-chrec.c
index 72955108c7b..0c13c21bfe8 100644
--- a/gcc/tree-chrec.c
+++ b/gcc/tree-chrec.c
@@ -1433,6 +1433,16 @@ eq_evolutions_p (const_tree chrec0, const_tree chrec1)
return (CHREC_VARIABLE (chrec0) == CHREC_VARIABLE (chrec1)
&& eq_evolutions_p (CHREC_LEFT (chrec0), CHREC_LEFT (chrec1))
&& eq_evolutions_p (CHREC_RIGHT (chrec0), CHREC_RIGHT (chrec1)));
+
+ case PLUS_EXPR:
+ case MULT_EXPR:
+ case MINUS_EXPR:
+ case POINTER_PLUS_EXPR:
+ return eq_evolutions_p (TREE_OPERAND (chrec0, 0),
+ TREE_OPERAND (chrec1, 0))
+ && eq_evolutions_p (TREE_OPERAND (chrec0, 1),
+ TREE_OPERAND (chrec1, 1));
+
default:
return false;
}