aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-flow.h
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2008-03-05 17:20:26 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2008-03-05 17:20:26 +0000
commitea7e6d5ae0e3b5d14740bd33d55302a73f6d2b32 (patch)
tree581bbd0f679ef1aaf0ad42e7d8f0b56620d3e34a /gcc/tree-flow.h
parenta7d95bfef5d2b7515ca51bfaba63b3ef70452adf (diff)
downloadgcc-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.h24
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);