aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2006-03-01 17:46:56 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2006-03-01 17:46:56 +0000
commit607f460c8b9e032b3fec25313b032bf07788b354 (patch)
tree17009f3aa25f5cc800051e170d18537240489187
parent54a1703906edf8624f2afc899646aecacf9edafe (diff)
downloadgcc-607f460c8b9e032b3fec25313b032bf07788b354.zip
gcc-607f460c8b9e032b3fec25313b032bf07788b354.tar.gz
gcc-607f460c8b9e032b3fec25313b032bf07788b354.tar.bz2
re PR tree-optimization/26443 (ICE in add_virtual_operand, at tree-ssa-operands.c:1867)
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. From-SVN: r111608
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr26443.C20
-rw-r--r--gcc/tree-ssa-ccp.c8
-rw-r--r--gcc/tree-ssa-dom.c5
-rw-r--r--gcc/tree-vrp.c5
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 */
};