diff options
author | Richard Biener <rguenther@suse.de> | 2018-11-12 11:59:32 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2018-11-12 11:59:32 +0000 |
commit | c49eeac355df85aa1250022aa9070e491a158f22 (patch) | |
tree | 43f8a48a66677e82b78b09705006724d94256ac0 /gcc/tree-vrp.h | |
parent | bdfac905dab78abf4ae4d652919fefc3b669eb52 (diff) | |
download | gcc-c49eeac355df85aa1250022aa9070e491a158f22.zip gcc-c49eeac355df85aa1250022aa9070e491a158f22.tar.gz gcc-c49eeac355df85aa1250022aa9070e491a158f22.tar.bz2 |
tree-vrp.h (value_range_base::symbolic_p, [...]): Move from value_range.
2018-11-12 Richard Biener <rguenther@suse.de>
* tree-vrp.h (value_range_base::symbolic_p,
value_range_base::constant_p, value_range_base::zero_p,
value_range_base::singleton_p): Move from value_range.
(value_range::dump): Add.
* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::record_ranges_from_phis): Use set_varying.
* ipa-cp.c (ipcp_vr_lattice::print): Use dump_value_range.
* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
Use set_varying.
* tree-vrp.c (value_range::symbolic_p): Move to value_range_base.
(value_range::constant_p): Likewise.
(value_range::singleton_p): Likewise.
(value_range_base::dump): Add.
(set_value_range_to_undefined): Remove.
(set_value_range_to_varying): Likewise.
(range_int_cst_p): Take value_range_base argument.
(range_int_cst_singleton_p): Likewise.
(value_range_constant_singleton): Likewise.
(vrp_set_zero_nonzero_bits): Likewise.
(extract_range_from_multiplicative_op): Use set_varying.
(extract_range_from_binary_expr_1): Likewise. Use set_undefined.
(extract_range_from_unary_expr): Likewise.
(dump_value_range_base): Change to overload of dump_value_range.
(vrp_prop::vrp_initialize): Use set_varying and set_undefined.
(vrp_prop::visit_stmt): Likewise.
(value_range::intersect_helper): Likewise.
(value_range::union_helper): Likewise.
(determine_value_range_1): Likewise.
From-SVN: r266028
Diffstat (limited to 'gcc/tree-vrp.h')
-rw-r--r-- | gcc/tree-vrp.h | 66 |
1 files changed, 36 insertions, 30 deletions
diff --git a/gcc/tree-vrp.h b/gcc/tree-vrp.h index 1e141c0..8130cb8 100644 --- a/gcc/tree-vrp.h +++ b/gcc/tree-vrp.h @@ -49,22 +49,26 @@ public: tree max () const; /* Types of value ranges. */ + bool symbolic_p () const; + bool constant_p () const; bool undefined_p () const; bool varying_p () const; + void set_varying (); + void set_undefined (); void union_ (const value_range_base *); bool ignore_equivs_equal_p (const value_range_base &) const; - void set_varying (); - void set_undefined (); - /* Misc methods. */ tree type () const; bool may_contain_p (tree) const; void set_and_canonicalize (enum value_range_kind, tree, tree); + bool zero_p () const; + bool singleton_p (tree *result = NULL) const; void dump (FILE *) const; + void dump () const; protected: void set (value_range_kind, tree, tree); @@ -100,8 +104,6 @@ class GTY((user)) value_range : public value_range_base void union_ (const value_range *); /* Types of value ranges. */ - bool symbolic_p () const; - bool constant_p () const; void set_undefined (); void set_varying (); @@ -111,8 +113,6 @@ class GTY((user)) value_range : public value_range_base void equiv_add (const_tree, const value_range *, bitmap_obstack * = NULL); /* Misc methods. */ - bool zero_p () const; - bool singleton_p (tree *result = NULL) const; void deep_copy (const value_range *); void set_and_canonicalize (enum value_range_kind, tree, tree, bitmap); void dump (FILE *) const; @@ -194,7 +194,7 @@ value_range_base::undefined_p () const /* Return TRUE if range is the constant zero. */ inline bool -value_range::zero_p () const +value_range_base::zero_p () const { return (m_kind == VR_RANGE && integer_zerop (m_min) @@ -202,16 +202,7 @@ value_range::zero_p () const } extern void dump_value_range (FILE *, const value_range *); -extern void dump_value_range_base (FILE *, const value_range_base *); -extern void extract_range_from_unary_expr (value_range *vr, - enum tree_code code, - tree type, - const value_range *vr0_, - tree op0_type); - -extern bool vrp_operand_equal_p (const_tree, const_tree); -extern enum value_range_kind intersect_range_with_nonzero_bits - (enum value_range_kind, wide_int *, wide_int *, const wide_int &, signop); +extern void dump_value_range (FILE *, const value_range_base *); struct assert_info { @@ -231,36 +222,51 @@ struct assert_info extern void register_edge_assert_for (tree, edge, enum tree_code, tree, tree, vec<assert_info> &); extern bool stmt_interesting_for_vrp (gimple *); -extern void set_value_range_to_varying (value_range *); extern bool range_includes_zero_p (const value_range_base *); extern bool infer_value_range (gimple *, tree, tree_code *, tree *); extern void set_value_range_to_nonnull (value_range *, tree); +extern void set_value_range_to_null (value_range *, tree); extern void set_value_range (value_range *, enum value_range_kind, tree, tree, bitmap); +extern void set_value_range_to_value (value_range *, tree, bitmap); + extern bool vrp_bitmap_equal_p (const_bitmap, const_bitmap); -extern tree value_range_constant_singleton (const value_range *); + +extern tree value_range_constant_singleton (const value_range_base *); +extern bool range_int_cst_p (const value_range_base *); +extern bool range_int_cst_singleton_p (const value_range_base *); + extern int compare_values (tree, tree); extern int compare_values_warnv (tree, tree, bool *); +extern int operand_less_p (tree, tree); extern bool vrp_val_is_min (const_tree); extern bool vrp_val_is_max (const_tree); -extern void set_value_range_to_value (value_range *, tree, bitmap); +extern int value_inside_range (tree, tree, tree); + +extern tree vrp_val_min (const_tree); +extern tree vrp_val_max (const_tree); + +extern void extract_range_from_unary_expr (value_range *vr, + enum tree_code code, + tree type, + const value_range *vr0_, + tree op0_type); extern void extract_range_from_binary_expr_1 (value_range *, enum tree_code, tree, const value_range *, const value_range *); -extern tree vrp_val_min (const_tree); -extern tree vrp_val_max (const_tree); -extern void set_value_range_to_null (value_range *, tree); -extern bool range_int_cst_p (const value_range *); -extern int operand_less_p (tree, tree); + +extern bool vrp_operand_equal_p (const_tree, const_tree); +extern enum value_range_kind intersect_range_with_nonzero_bits + (enum value_range_kind, wide_int *, wide_int *, const wide_int &, signop); +extern bool vrp_set_zero_nonzero_bits (const tree, const value_range_base *, + wide_int *, wide_int *); + extern bool find_case_label_range (gswitch *, tree, tree, size_t *, size_t *); extern bool find_case_label_index (gswitch *, size_t, tree, size_t *); -extern bool vrp_set_zero_nonzero_bits (const tree, const value_range *, - wide_int *, wide_int *); extern bool overflow_comparison_p (tree_code, tree, tree, bool, tree *); -extern bool range_int_cst_singleton_p (const value_range *); -extern int value_inside_range (tree, tree, tree); extern tree get_single_symbol (tree, bool *, tree *); extern void maybe_set_nonzero_bits (edge, tree); extern value_range_kind determine_value_range (tree, wide_int *, wide_int *); + #endif /* GCC_TREE_VRP_H */ |