aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.h
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2019-06-13 09:46:00 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2019-06-13 09:46:00 +0000
commitfa8ba8b84cf4f1caf581b09d808d6e57b1ff2843 (patch)
tree974fdf46b52abb2f7b4de4981329e8f625215904 /gcc/tree-vrp.h
parenta7b183bf22c7c57fc0d8851f84db6fff694ba5f8 (diff)
downloadgcc-fa8ba8b84cf4f1caf581b09d808d6e57b1ff2843.zip
gcc-fa8ba8b84cf4f1caf581b09d808d6e57b1ff2843.tar.gz
gcc-fa8ba8b84cf4f1caf581b09d808d6e57b1ff2843.tar.bz2
Revamp value_range::may_contain_p.
From-SVN: r272238
Diffstat (limited to 'gcc/tree-vrp.h')
-rw-r--r--gcc/tree-vrp.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/tree-vrp.h b/gcc/tree-vrp.h
index 62d7286..4ec974f 100644
--- a/gcc/tree-vrp.h
+++ b/gcc/tree-vrp.h
@@ -97,6 +97,9 @@ protected:
friend void gt_ggc_mx (value_range_base *&);
friend void gt_pch_nx (value_range_base &);
friend void gt_pch_nx (value_range_base *, gt_pointer_operator, void *);
+
+private:
+ int value_inside_range (tree) const;
};
/* Note value_range cannot currently be used with GC memory, only
@@ -254,7 +257,6 @@ 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 bool range_includes_p (const value_range_base *, HOST_WIDE_INT);
extern bool infer_value_range (gimple *, tree, tree_code *, tree *);
extern bool vrp_bitmap_equal_p (const_bitmap, const_bitmap);
@@ -267,7 +269,6 @@ 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 int value_inside_range (tree, tree, tree);
extern tree vrp_val_min (const_tree);
extern tree vrp_val_max (const_tree);
@@ -300,7 +301,13 @@ extern value_range_kind determine_value_range (tree, wide_int *, wide_int *);
inline bool
range_includes_zero_p (const value_range_base *vr)
{
- return range_includes_p (vr, 0);
+ if (vr->undefined_p ())
+ return false;
+
+ if (vr->varying_p ())
+ return true;
+
+ return vr->may_contain_p (build_zero_cst (vr->type ()));
}
#endif /* GCC_TREE_VRP_H */