diff options
author | dpatel <dpatel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-04 03:27:01 +0000 |
---|---|---|
committer | dpatel <dpatel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-04 03:27:01 +0000 |
commit | 07c03fb07980462ea57c04544fc4e575dc72deb8 (patch) | |
tree | 1634fa84e47784b37bfc8b13390fa4532f7860b8 /gcc/tree-ssa-operands.c | |
parent | a9afac44702c78e3c40150c3c1384e8829e08827 (diff) | |
download | gcc-07c03fb07980462ea57c04544fc4e575dc72deb8.tar.gz |
Tree level if-conversion for vectorizer.
* Makefile.in (OBJS-common): Add tree-if-conv.o
(tree-if-conv.o): New rule.
* cfgloop.c (flow_loop_exit_edges_find): Set EDGE_LOOP_EXIT flag.
(get_loop_body_in_bfs_order): New.
* cfgloop.h (get_loop_body_in_bfs_order): New.
* tree-flow.h (enum move_pos): Move here from ..
* tree-ssa-loop-im.c (enum move_pos): here.
(movement_possibility): Make externally visible.
* tree-optimize.c (init_tree_optimization_passes): New entry for
if conversion pass.
* tree-pass.h (pass_if_conversion): New.
* tree-ssa-operands.c (get_expr_operands): Handle COND_EXPR.
* tree-if-conv.c: New file.
* doc/passes.texi: Document tree if-conversion pass.
* doc/tree-ssa.texi: Same.
testsuite:
* gcc.dg/tree-ssa/ifc-20040816-1.c: New test.
* gcc.dg/tree-ssa/ifc-20040816-2.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87073 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-operands.c')
-rw-r--r-- | gcc/tree-ssa-operands.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index a87d8450348..200f4b58f7a 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -625,7 +625,6 @@ finalize_ssa_vuses (vuse_optype *old_ops_p) return vuse_ops; } - /* Return a new v_must_def operand vector for STMT, comparing to OLD_OPS_P. */ static v_must_def_optype @@ -1081,6 +1080,12 @@ get_expr_operands (tree stmt, tree *expr_p, int flags) get_call_expr_operands (stmt, expr); return; + case COND_EXPR: + get_expr_operands (stmt, &COND_EXPR_COND (expr), opf_none); + get_expr_operands (stmt, &TREE_OPERAND (expr, 1), opf_none); + get_expr_operands (stmt, &TREE_OPERAND (expr, 2), opf_none); + return; + case MODIFY_EXPR: { int subflags; |