summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-propagate.h
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-08-04 12:29:48 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-08-04 12:29:48 +0000
commit14f101cffa72ffaa29995b1e6a3597c676a7882a (patch)
tree44d87dd02a78032816f3cb81e0405f29ab9570c6 /gcc/tree-ssa-propagate.h
parent459a1bdc1386060a2ca9d65c7f03c401001d1ee7 (diff)
downloadgcc-14f101cffa72ffaa29995b1e6a3597c676a7882a.tar.gz
2010-08-04 Richard Guenther <rguenther@suse.de>
* tree-ssa-propagate.h (struct prop_value_d, prop_value_t): Move ... * tree-ssa-ccp.c: ... here. * tree-ssa-copy.c: ... and here. * tree-ssa-propagate.h (enum value_range_type, struct value_range_d, value_range_t): Move ... * tree-vrp.c: ... here. * tree-ssa-propagate.h (ssa_prop_get_value_fn): New typedef. (substitute_and_fold): Adjust prototype. * tree-ssa-propagate.c (replace_uses_in): Adjust. (replace_phi_args_in): Likewise. (substitute_and_fold): Take callback to query lattice instead of pointer to lattice. Replace SSA name defs with lattice values first. * tree-ssa-ccp.c (ccp_finalize): Adjust. * tree-ssa-copy.c (copy_prop_visit_phi_node): Adjust. (get_value): New function. (fini_copy_prop): Adjust. * tree-vrp.c (vrp_finalize): Adjust. * gcc.dg/tree-ssa/vrp35.c: Adjust. * gcc.dg/tree-ssa/vrp36.c: Likewise. * gcc.dg/tree-ssa/vrp50.c: Likewise. * gcc.dg/tree-ssa/vrp52.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162864 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-propagate.h')
-rw-r--r--gcc/tree-ssa-propagate.h49
1 files changed, 2 insertions, 47 deletions
diff --git a/gcc/tree-ssa-propagate.h b/gcc/tree-ssa-propagate.h
index c5bb9731c5e..778f650d030 100644
--- a/gcc/tree-ssa-propagate.h
+++ b/gcc/tree-ssa-propagate.h
@@ -61,56 +61,11 @@ enum ssa_prop_result {
};
-struct prop_value_d {
- /* Lattice value. Each propagator is free to define its own
- lattice and this field is only meaningful while propagating.
- It will not be used by substitute_and_fold. */
- unsigned lattice_val;
-
- /* Propagated value. */
- tree value;
-};
-
-typedef struct prop_value_d prop_value_t;
-
-
-/* Type of value ranges. See value_range_d for a description of these
- types. */
-enum value_range_type { VR_UNDEFINED, VR_RANGE, VR_ANTI_RANGE, VR_VARYING };
-
-/* Range of values that can be associated with an SSA_NAME after VRP
- has executed. */
-struct value_range_d
-{
- /* Lattice value represented by this range. */
- enum value_range_type type;
-
- /* Minimum and maximum values represented by this range. These
- values should be interpreted as follows:
-
- - If TYPE is VR_UNDEFINED or VR_VARYING then MIN and MAX must
- be NULL.
-
- - If TYPE == VR_RANGE then MIN holds the minimum value and
- MAX holds the maximum value of the range [MIN, MAX].
-
- - If TYPE == ANTI_RANGE the variable is known to NOT
- take any values in the range [MIN, MAX]. */
- tree min;
- tree max;
-
- /* Set of SSA names whose value ranges are equivalent to this one.
- This set is only valid when TYPE is VR_RANGE or VR_ANTI_RANGE. */
- bitmap equiv;
-};
-
-typedef struct value_range_d value_range_t;
-
-
/* Call-back functions used by the value propagation engine. */
typedef enum ssa_prop_result (*ssa_prop_visit_stmt_fn) (gimple, edge *, tree *);
typedef enum ssa_prop_result (*ssa_prop_visit_phi_fn) (gimple);
typedef bool (*ssa_prop_fold_stmt_fn) (gimple_stmt_iterator *gsi);
+typedef tree (*ssa_prop_get_value_fn) (tree);
/* In tree-ssa-propagate.c */
@@ -119,6 +74,6 @@ bool valid_gimple_rhs_p (tree);
void move_ssa_defining_stmt_for_defs (gimple, gimple);
bool update_call_from_tree (gimple_stmt_iterator *, tree);
bool stmt_makes_single_store (gimple);
-bool substitute_and_fold (prop_value_t *, ssa_prop_fold_stmt_fn, bool);
+bool substitute_and_fold (ssa_prop_get_value_fn, ssa_prop_fold_stmt_fn, bool);
#endif /* _TREE_SSA_PROPAGATE_H */