summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr22335-2.c
diff options
context:
space:
mode:
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2005-07-12 17:02:54 +0000
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2005-07-12 17:02:54 +0000
commit3bd64623062f8cbeb5efacb73f023457bd0b067e (patch)
tree297d8a54a0ca613be8f063e03b65974b41a32d09 /gcc/testsuite/gcc.dg/pr22335-2.c
parentf6be5aa50ac86a6de9865c884b757f3761e4745e (diff)
downloadgcc-3bd64623062f8cbeb5efacb73f023457bd0b067e.tar.gz
2005-07-12 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/22335 * gcc.dg/pr22335-1.c: New test. * gcc.dg/pr22335-2.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101930 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr22335-2.c')
-rw-r--r--gcc/testsuite/gcc.dg/pr22335-2.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr22335-2.c b/gcc/testsuite/gcc.dg/pr22335-2.c
new file mode 100644
index 00000000000..afba95521b3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr22335-2.c
@@ -0,0 +1,39 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+void abort(void) __attribute__((__noreturn__));
+typedef struct {
+ int container;
+} edge_iterator;
+struct ls_expr
+{
+ int index;
+ int stores;
+ struct ls_expr * next;
+};
+struct ls_expr * pre_ldst_mems;
+edge_iterator ei;
+void
+store_motion (void)
+{
+ struct ls_expr * ptr, **prev_next_ptr_ptr;
+ edge_iterator ei1;
+ edge_iterator ei2;
+ int a = ptr != ((void *)0);
+ for (ptr = pre_ldst_mems, prev_next_ptr_ptr = &pre_ldst_mems;
+ ptr != ((void *)0);
+ ptr = *prev_next_ptr_ptr)
+ if (!((ptr)->stores))
+ *prev_next_ptr_ptr = ptr->next;
+ else
+ prev_next_ptr_ptr = &ptr->next;
+
+ for (ptr = pre_ldst_mems; ptr != 0; ptr = ptr->next)
+ ;
+ ei1 = ei;
+ ei2 = ei1;
+ if (!ei2.container)
+ abort ();
+ ei2 = ei1;
+ if (!ei2.container)
+ abort ();
+}