summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2011-02-14 17:59:10 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2011-02-14 17:59:10 +0000
commita2676c4feb62508b6e23d65f0aea0ec151596520 (patch)
tree320a3607dd8780b767137a8f417688b91a15da32 /gcc
parent48fd9d1676f20a9c17f4d635572337ad13271512 (diff)
downloadgcc-a2676c4feb62508b6e23d65f0aea0ec151596520.tar.gz
PR tree-optimization/46494
* loop-unroll.c (split_edge_and_insert): Adjust comment. * loop-init.c (loop_optimizer_finalize): Do not call verify_flow_info. (pass_rtl_loop_done): Add TODO_verify_flow. * fwprop.c (pass_rtl_fwprop): Likewise. * modulo-sched.c (pass_sms): Likewise. * tree-ssa-dom.c (pass_dominator): Likewise. * tree-ssa-loop-ch.c (pass_ch): Likewise. * tree-ssa-loop.c (pass_complete_unrolli): Likewise. (pass_tree_loop_done): Likewise. * tree-ssa-pre.c (execute_pre): Likewise. * tree-ssa-reassoc.c (pass_reassoc): Likewise. * tree-ssa-sink.c (pass_sink_code): Likewise. * tree-vrp.c (pass_vrp): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170141 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog43
-rw-r--r--gcc/fwprop.c6
-rw-r--r--gcc/loop-init.c12
-rw-r--r--gcc/loop-unroll.c2
-rw-r--r--gcc/modulo-sched.c8
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/pr46494.c9
-rw-r--r--gcc/tree-ssa-dom.c7
-rw-r--r--gcc/tree-ssa-loop-ch.c6
-rw-r--r--gcc/tree-ssa-loop.c7
-rw-r--r--gcc/tree-ssa-pre.c5
-rw-r--r--gcc/tree-ssa-reassoc.c5
-rw-r--r--gcc/tree-ssa-sink.c5
-rw-r--r--gcc/tree-vrp.c5
14 files changed, 83 insertions, 41 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 76d333971d6..c9b7f354471 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,18 +1,35 @@
+2011-02-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR tree-optimization/46494
+ * loop-unroll.c (split_edge_and_insert): Adjust comment.
+ * loop-init.c (loop_optimizer_finalize): Do not call verify_flow_info.
+ (pass_rtl_loop_done): Add TODO_verify_flow.
+ * fwprop.c (pass_rtl_fwprop): Likewise.
+ * modulo-sched.c (pass_sms): Likewise.
+ * tree-ssa-dom.c (pass_dominator): Likewise.
+ * tree-ssa-loop-ch.c (pass_ch): Likewise.
+ * tree-ssa-loop.c (pass_complete_unrolli): Likewise.
+ (pass_tree_loop_done): Likewise.
+ * tree-ssa-pre.c (execute_pre): Likewise.
+ * tree-ssa-reassoc.c (pass_reassoc): Likewise.
+ * tree-ssa-sink.c (pass_sink_code): Likewise.
+ * tree-vrp.c (pass_vrp): Likewise.
+
2011-02-14 Nathan Froyd <froydnj@codesourcery.com>
- * config/v850/constraints.md: New file.
- * config/v850/v850.md: Include it.
- * config/v850/predicates.md (reg_or_0_operand): Use
- satisfies_constraint_G.
- (special_symbolref_operand): Use satisfies_constraint_K.
- * config/v850/v850.h (CONSTANT_ADDRESS_P): Use constraint_satisfied_p.
- (GO_IF_LEGITIMATE_ADDRESS): Likewise.
- (REG_CLASS_FROM_LETTER, INT_7_BITS, INT_8_BITS): Delete.
- (CONST_OK_FOR_P, CONST_OK_FOR_LETTER_P): Delete.
- (EXTRA_CONSTRAINT): Delete.
- (CONST_OK_FOR_I, CONST_OK_FOR_J): Use insn_const_int_ok_for_constraint.
- (CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M): Likewise.
- (CONST_OK_FOR_N, CONST_OK_FOR_O): Likewise.
+ * config/v850/constraints.md: New file.
+ * config/v850/v850.md: Include it.
+ * config/v850/predicates.md (reg_or_0_operand): Use
+ satisfies_constraint_G.
+ (special_symbolref_operand): Use satisfies_constraint_K.
+ * config/v850/v850.h (CONSTANT_ADDRESS_P): Use constraint_satisfied_p.
+ (GO_IF_LEGITIMATE_ADDRESS): Likewise.
+ (REG_CLASS_FROM_LETTER, INT_7_BITS, INT_8_BITS): Delete.
+ (CONST_OK_FOR_P, CONST_OK_FOR_LETTER_P): Delete.
+ (EXTRA_CONSTRAINT): Delete.
+ (CONST_OK_FOR_I, CONST_OK_FOR_J): Use insn_const_int_ok_for_constraint.
+ (CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M): Likewise.
+ (CONST_OK_FOR_N, CONST_OK_FOR_O): Likewise.
2011-02-14 Anatoly Sokolov <aesok@post.ru>
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index 704e1431233..b2fd9556bbb 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -1471,8 +1471,10 @@ struct rtl_opt_pass pass_rtl_fwprop =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_df_finish | TODO_verify_rtl_sharing |
- TODO_dump_func /* todo_flags_finish */
+ TODO_df_finish
+ | TODO_verify_flow
+ | TODO_verify_rtl_sharing
+ | TODO_dump_func /* todo_flags_finish */
}
};
diff --git a/gcc/loop-init.c b/gcc/loop-init.c
index ce388b60136..bd4af30c5c5 100644
--- a/gcc/loop-init.c
+++ b/gcc/loop-init.c
@@ -123,14 +123,6 @@ loop_optimizer_finalize (void)
{
bb->loop_father = NULL;
}
-
- /* Checking. */
-#ifdef ENABLE_CHECKING
- /* FIXME: no point to verify flow info after bundling on ia64. Use this
- hack for achieving this. */
- if (!reload_completed)
- verify_flow_info ();
-#endif
}
@@ -235,7 +227,9 @@ struct rtl_opt_pass pass_rtl_loop_done =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */
+ TODO_verify_flow
+ | TODO_verify_rtl_sharing
+ | TODO_dump_func /* todo_flags_finish */
}
};
diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c
index 67d6ea0cf64..6deff4141a3 100644
--- a/gcc/loop-unroll.c
+++ b/gcc/loop-unroll.c
@@ -900,7 +900,7 @@ split_edge_and_insert (edge e, rtx insns)
CFG. For this purpose we used to set the BB_SUPERBLOCK flag on BB
and call break_superblocks when going out of cfglayout mode. But it
turns out that this never happens; and that if it does ever happen,
- the verify_flow_info call in loop_optimizer_finalize would fail.
+ the TODO_verify_flow at the end of the RTL loop passes would fail.
There are two reasons why we expected we could have control flow insns
in INSNS. The first is when a comparison has to be done in parts, and
diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c
index 9179de504aa..2ae267c81a3 100644
--- a/gcc/modulo-sched.c
+++ b/gcc/modulo-sched.c
@@ -2897,9 +2897,11 @@ struct rtl_opt_pass pass_sms =
0, /* properties_provided */
0, /* properties_destroyed */
TODO_dump_func, /* todo_flags_start */
- TODO_df_finish | TODO_verify_rtl_sharing |
- TODO_dump_func |
- TODO_ggc_collect /* todo_flags_finish */
+ TODO_df_finish
+ | TODO_verify_flow
+ | TODO_verify_rtl_sharing
+ | TODO_dump_func
+ | TODO_ggc_collect /* todo_flags_finish */
}
};
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index be7c57e6da5..823ca7d6624 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2011-02-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr46494.c: New test.
+
2011-02-14 Richard Guenther <rguenther@suse.de>
* gcc.dg/attr-weak-hidden-1.c: Make definition of foo strong.
diff --git a/gcc/testsuite/gcc.dg/pr46494.c b/gcc/testsuite/gcc.dg/pr46494.c
new file mode 100644
index 00000000000..29f96856b1d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr46494.c
@@ -0,0 +1,9 @@
+/* { dg-do compile }
+/* { dg-options "-O -fno-tree-ccp -fno-tree-fre -ftree-vrp" } */
+
+extern void foo (void) __attribute__((noreturn));
+void g (void)
+{
+ void (*f) (void) = foo;
+ f ();
+}
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index bab6ced1c60..fc87c4604c7 100644
--- a/gcc/tree-ssa-dom.c
+++ b/gcc/tree-ssa-dom.c
@@ -799,10 +799,11 @@ struct gimple_opt_pass pass_dominator =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func
+ TODO_cleanup_cfg
| TODO_update_ssa
- | TODO_cleanup_cfg
- | TODO_verify_ssa /* todo_flags_finish */
+ | TODO_verify_ssa
+ | TODO_verify_flow
+ | TODO_dump_func /* todo_flags_finish */
}
};
diff --git a/gcc/tree-ssa-loop-ch.c b/gcc/tree-ssa-loop-ch.c
index 85c6de8aa07..c58cb5f8bba 100644
--- a/gcc/tree-ssa-loop-ch.c
+++ b/gcc/tree-ssa-loop-ch.c
@@ -276,7 +276,9 @@ struct gimple_opt_pass pass_ch =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_cleanup_cfg | TODO_dump_func
- | TODO_verify_ssa /* todo_flags_finish */
+ TODO_cleanup_cfg
+ | TODO_verify_ssa
+ | TODO_verify_flow
+ | TODO_dump_func /* todo_flags_finish */
}
};
diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c
index 43693eaeae7..a1edb51c13d 100644
--- a/gcc/tree-ssa-loop.c
+++ b/gcc/tree-ssa-loop.c
@@ -528,7 +528,8 @@ struct gimple_opt_pass pass_complete_unrolli =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func
+ TODO_verify_flow
+ | TODO_dump_func
| TODO_ggc_collect /* todo_flags_finish */
}
};
@@ -670,6 +671,8 @@ struct gimple_opt_pass pass_tree_loop_done =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_cleanup_cfg | TODO_dump_func /* todo_flags_finish */
+ TODO_cleanup_cfg
+ | TODO_verify_flow
+ | TODO_dump_func /* todo_flags_finish */
}
};
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 00ff8cc1ab5..3056723e2ec 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -4909,7 +4909,10 @@ execute_pre (bool do_fre)
clear_expression_ids ();
free_scc_vn ();
if (!do_fre)
- remove_dead_inserted_code ();
+ {
+ remove_dead_inserted_code ();
+ todo |= TODO_verify_flow;
+ }
scev_finalize ();
fini_pre (do_fre);
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index 197591e330f..904fef80447 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -2282,7 +2282,10 @@ struct gimple_opt_pass pass_reassoc =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_ggc_collect | TODO_verify_ssa /* todo_flags_finish */
+ TODO_verify_ssa
+ | TODO_verify_flow
+ | TODO_dump_func
+ | TODO_ggc_collect /* todo_flags_finish */
}
};
diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c
index bfa1a3108a7..962c2955e26 100644
--- a/gcc/tree-ssa-sink.c
+++ b/gcc/tree-ssa-sink.c
@@ -604,8 +604,9 @@ struct gimple_opt_pass pass_sink_code =
0, /* properties_destroyed */
0, /* todo_flags_start */
TODO_update_ssa
+ | TODO_verify_ssa
+ | TODO_verify_flow
| TODO_dump_func
- | TODO_ggc_collect
- | TODO_verify_ssa /* todo_flags_finish */
+ | TODO_ggc_collect /* todo_flags_finish */
}
};
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 5e891f51462..65d249f9ae2 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -7766,9 +7766,10 @@ struct gimple_opt_pass pass_vrp =
0, /* properties_destroyed */
0, /* todo_flags_start */
TODO_cleanup_cfg
- | TODO_ggc_collect
+ | TODO_update_ssa
| TODO_verify_ssa
+ | TODO_verify_flow
| TODO_dump_func
- | TODO_update_ssa /* todo_flags_finish */
+ | TODO_ggc_collect /* todo_flags_finish */
}
};