diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2008-03-05 17:20:26 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2008-03-05 17:20:26 +0000 |
commit | ea7e6d5ae0e3b5d14740bd33d55302a73f6d2b32 (patch) | |
tree | 581bbd0f679ef1aaf0ad42e7d8f0b56620d3e34a /gcc/tree-flow.h | |
parent | a7d95bfef5d2b7515ca51bfaba63b3ef70452adf (diff) | |
download | gcc-ea7e6d5ae0e3b5d14740bd33d55302a73f6d2b32.zip gcc-ea7e6d5ae0e3b5d14740bd33d55302a73f6d2b32.tar.gz gcc-ea7e6d5ae0e3b5d14740bd33d55302a73f6d2b32.tar.bz2 |
cfg.c: Include tree-flow.h.
* cfg.c: Include tree-flow.h.
(remove_edge_raw): Call redirect_edge_var_map_clear.
(redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
* tree-flow-inline.h (redirect_edge_var_map_def): New.
(redirect_edge_var_map_result): New.
* tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
PENDING_STMT use with redirect_edge_var_map_*.
* tree-ssa.c (edge_var_maps): New definition.
(redirect_edge_var_map_add): New.
(redirect_edge_var_map_clear): New.
(redirect_edge_var_map_dup): New.
(redirect_edge_var_map_vector): New.
(redirect_edge_var_map_destroy): New.
(ssa_redirect_edge): Replace PENDING_STMT use with
redirect_edge_var_map_*.
(flush_pending_stmts): Same.
(delete_tree_ssa): Destroy edge var map.
* tree-flow.h (struct _edge_var_map): New.
Define edge_var_map vector type.
Declare redirect_edge_var_map_* prototypes.
* Makefile.in (cfg.o): Depend on TREE_FLOW_H.
* tree-cfg.c (reinstall_phi_args): Replace
PENDING_STMT use with redirect_edge_var_map_*.
From-SVN: r132903
Diffstat (limited to 'gcc/tree-flow.h')
-rw-r--r-- | gcc/tree-flow.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 555d3a3..1e3c92a 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -879,7 +879,30 @@ typedef bool (*walk_use_def_chains_fn) (tree, tree, void *); /* In tree-ssa-alias-warnings.c */ extern void strict_aliasing_warning_backend (void); + /* In tree-ssa.c */ + +/* Mapping for redirected edges. */ +struct _edge_var_map GTY(()) +{ + tree result; /* PHI result. */ + tree def; /* PHI arg definition. */ +}; +typedef struct _edge_var_map edge_var_map; + +DEF_VEC_O(edge_var_map); +DEF_VEC_ALLOC_O(edge_var_map, heap); + +/* A vector of var maps. */ +typedef VEC(edge_var_map, heap) *edge_var_map_vector; + +extern void redirect_edge_var_map_add (edge, tree, tree); +extern void redirect_edge_var_map_clear (edge); +extern void redirect_edge_var_map_dup (edge, edge); +extern edge_var_map_vector redirect_edge_var_map_vector (edge); +extern void redirect_edge_var_map_destroy (void); + + extern void init_tree_ssa (void); extern edge ssa_redirect_edge (edge, basic_block); extern void flush_pending_stmts (edge); @@ -892,6 +915,7 @@ extern void walk_use_def_chains (tree, walk_use_def_chains_fn, void *, bool); extern bool stmt_references_memory_p (tree); extern bool ssa_undefined_value_p (tree); + /* In tree-into-ssa.c */ void update_ssa (unsigned); void delete_update_ssa (void); |