aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2007-10-12 08:42:13 +0000
committerRichard Guenther <rguenther@suse.de>2007-10-12 08:42:13 +0000
commit4c64d04450d047f8e0146f3ef6a64bbc3130e4e0 (patch)
treef8336d7e5dd6093801511dfd43a58da560108cd7 /gcc/testsuite
parentda00e041509d5bdf1938fce06c358a245a984e76 (diff)
2007-10-12 Richard Guenther <rguenther@suse.de>
PR middle-end/26198 * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from a rhs with side-effects or which is a load. (forward_propagate_into_cond): Also try combining both operands. * gcc.dg/tree-ssa/forwprop-3.c: New testcase. * gcc.c-torture/execute/20071011-1.c: Likewise. * gcc.dg/tree-ssa/ssa-pre-9.c: Adjust. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@129256 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20071011-1.c19
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/forwprop-3.c18
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c2
4 files changed, 45 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cacf0a9ed7d..97d93ea5ef1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2007-10-12 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/26198
+ * gcc.dg/tree-ssa/forwprop-3.c: New testcase.
+ * gcc.c-torture/execute/20071011-1.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-9.c: Adjust.
+
2007-10-12 Uros Bizjak <ubizjak@gmail.com>
PR tree-optimization/33742
diff --git a/gcc/testsuite/gcc.c-torture/execute/20071011-1.c b/gcc/testsuite/gcc.c-torture/execute/20071011-1.c
new file mode 100644
index 00000000000..631658540b3
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20071011-1.c
@@ -0,0 +1,19 @@
+extern void abort(void);
+void foo(int *p)
+{
+ int x;
+ int y;
+ x = *p;
+ *p = 0;
+ y = *p;
+ if (x != y)
+ return;
+ abort ();
+}
+
+int main()
+{
+ int a = 1;
+ foo(&a);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-3.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-3.c
new file mode 100644
index 00000000000..0d26b8d9cf3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-3.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-forwprop1" } */
+
+struct bar {
+ int a[2];
+};
+
+int foo(struct bar *x)
+{
+ int *p = &x->a[0];
+ int *q = &x->a[1];
+ if (p < q)
+ return 1;
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump "Replaced .p_. < q_.. with .1." "forwprop1" } } */
+/* { dg-final { cleanup-tree-dump "forwprop1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
index 32e37b99703..30d968b7c53 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
@@ -9,5 +9,5 @@ foo (unsigned long a)
return 1;
return 0;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre"} } */
+/* { dg-final { scan-tree-dump-times "return 0;" 0 "fre"} } */
/* { dg-final { cleanup-tree-dump "fre" } } */