diff options
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tree-ssa/pr26443.C | 20 | ||||
-rw-r--r-- | gcc/tree-ssa-ccp.c | 8 | ||||
-rw-r--r-- | gcc/tree-ssa-dom.c | 5 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 5 |
6 files changed, 43 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f59ad08..a30b5cd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d5c50de..eb29008 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..1db87ab --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/pr26443.C @@ -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; +} diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 309a282..c0a2c6e 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -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 */ }; diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index c79a4ca..9742ebb 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -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 */ }; diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 96a1827..a680bf4 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -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 */ }; |