OSDN Git Service

2006-03-01 Daniel Berlin <dberlin@dberlin.org>
authordberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Mar 2006 17:46:56 +0000 (17:46 +0000)
committerdberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Mar 2006 17:46:56 +0000 (17:46 +0000)
Fix PR tree-optimization/26443
* tree-vrp.c (pass_vrp): Add TODO_update_tmt_usage
to todo and PROP_tmt_usage to properties_destroyed.
* tree-ssa-ccp.c (pass_ccp): Ditto.
(pass_store_ccp): Ditto.
* tree-ssa-dom.c (pass_dominator): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111608 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-ssa/pr26443.C [new file with mode: 0644]
gcc/tree-ssa-ccp.c
gcc/tree-ssa-dom.c
gcc/tree-vrp.c

index f59ad08..a30b5cd 100644 (file)
@@ -1,3 +1,12 @@
+2006-03-01  Daniel Berlin  <dberlin@dberlin.org>
+       Fix PR tree-optimization/26443
+       * tree-vrp.c (pass_vrp): Add TODO_update_tmt_usage
+       to todo and PROP_tmt_usage to properties_destroyed.
+       * tree-ssa-ccp.c (pass_ccp): Ditto.
+       (pass_store_ccp): Ditto.
+       * tree-ssa-dom.c (pass_dominator): Ditto.
+
 2006-03-01  Diego Novillo  <dnovillo@redhat.com>
 
        * tree-ssa-operands.c: Cleanup whitespace.
index d5c50de..eb29008 100644 (file)
@@ -1,3 +1,7 @@
+2006-03-01  Daniel Berlin  <dberlin@dberlin.org>
+
+       * g++.dg/tree-ssa/pr26443.C: New test case.
+
 2006-02-28  Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR middle-end/26022
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr26443.C b/gcc/testsuite/g++.dg/tree-ssa/pr26443.C
new file mode 100644 (file)
index 0000000..1db87ab
--- /dev/null
@@ -0,0 +1,20 @@
+// { dg-do compile }
+
+struct A
+{
+    double x[4];
+};
+
+struct B
+{
+    A y[2];
+};
+
+A foo(B *p)
+{
+    for ( int i=0; i<4; ++i )
+        p->y[1].x[i]=0;
+
+    A a;
+    return a;
+}
index 309a282..c0a2c6e 100644 (file)
@@ -1403,11 +1403,11 @@ struct tree_opt_pass pass_ccp =
   TV_TREE_CCP,                         /* tv_id */
   PROP_cfg | PROP_ssa | PROP_alias,    /* properties_required */
   0,                                   /* properties_provided */
-  0,                                   /* properties_destroyed */
+  PROP_tmt_usage,                      /* properties_destroyed */
   0,                                   /* todo_flags_start */
   TODO_cleanup_cfg | TODO_dump_func | TODO_update_ssa
     | TODO_ggc_collect | TODO_verify_ssa
-    | TODO_verify_stmts,               /* todo_flags_finish */
+    | TODO_verify_stmts | TODO_update_tmt_usage, /* todo_flags_finish */
   0                                    /* letter */
 };
 
@@ -1440,12 +1440,12 @@ struct tree_opt_pass pass_store_ccp =
   TV_TREE_STORE_CCP,                   /* tv_id */
   PROP_cfg | PROP_ssa | PROP_alias,    /* properties_required */
   0,                                   /* properties_provided */
-  0,                                   /* properties_destroyed */
+  PROP_tmt_usage,                      /* properties_destroyed */
   0,                                   /* todo_flags_start */
   TODO_dump_func | TODO_update_ssa
     | TODO_ggc_collect | TODO_verify_ssa
     | TODO_cleanup_cfg
-    | TODO_verify_stmts,               /* todo_flags_finish */
+    | TODO_verify_stmts | TODO_update_tmt_usage, /* todo_flags_finish */
   0                                    /* letter */
 };
 
index c79a4ca..9742ebb 100644 (file)
@@ -377,12 +377,13 @@ struct tree_opt_pass pass_dominator =
   TV_TREE_SSA_DOMINATOR_OPTS,          /* tv_id */
   PROP_cfg | PROP_ssa | PROP_alias,    /* properties_required */
   0,                                   /* properties_provided */
-  0,                                   /* properties_destroyed */
+  PROP_tmt_usage,                      /* properties_destroyed */
   0,                                   /* todo_flags_start */
   TODO_dump_func
     | TODO_update_ssa
     | TODO_cleanup_cfg
-    | TODO_verify_ssa,                 /* todo_flags_finish */
+    | TODO_verify_ssa  
+    | TODO_update_tmt_usage,           /* todo_flags_finish */
   0                                    /* letter */
 };
 
index 96a1827..a680bf4 100644 (file)
@@ -4571,12 +4571,13 @@ struct tree_opt_pass pass_vrp =
   TV_TREE_VRP,                         /* tv_id */
   PROP_ssa | PROP_alias,               /* properties_required */
   0,                                   /* properties_provided */
-  0,                                   /* properties_destroyed */
+  PROP_tmt_usage,                                      /* properties_destroyed */
   0,                                   /* todo_flags_start */
   TODO_cleanup_cfg
     | TODO_ggc_collect
     | TODO_verify_ssa
     | TODO_dump_func
-    | TODO_update_ssa,                 /* todo_flags_finish */
+    | TODO_update_ssa
+    | TODO_update_tmt_usage,                   /* todo_flags_finish */
   0                                    /* letter */
 };