aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/gimple-range.cc')
-rw-r--r--gcc/gimple-range.cc103
1 files changed, 0 insertions, 103 deletions
diff --git a/gcc/gimple-range.cc b/gcc/gimple-range.cc
index e351a84..b4dfaa9 100644
--- a/gcc/gimple-range.cc
+++ b/gcc/gimple-range.cc
@@ -1441,109 +1441,6 @@ trace_ranger::range_of_expr (irange &r, tree name, gimple *s)
return trailer (idx, "range_of_expr", res, name, r);
}
-// Return the legacy global range for NAME if it has one, otherwise
-// return VARYING.
-
-static void
-get_range_global (irange &r, tree name)
-{
- tree type = TREE_TYPE (name);
-
- if (SSA_NAME_IS_DEFAULT_DEF (name))
- {
- tree sym = SSA_NAME_VAR (name);
- // Adapted from vr_values::get_lattice_entry().
- // Use a range from an SSA_NAME's available range.
- if (TREE_CODE (sym) == PARM_DECL)
- {
- // Try to use the "nonnull" attribute to create ~[0, 0]
- // anti-ranges for pointers. Note that this is only valid with
- // default definitions of PARM_DECLs.
- if (POINTER_TYPE_P (type)
- && ((cfun && nonnull_arg_p (sym)) || get_ptr_nonnull (name)))
- r.set_nonzero (type);
- else if (INTEGRAL_TYPE_P (type))
- {
- get_range_info (name, r);
- if (r.undefined_p ())
- r.set_varying (type);
- }
- else
- r.set_varying (type);
- }
- // If this is a local automatic with no definition, use undefined.
- else if (TREE_CODE (sym) != RESULT_DECL)
- r.set_undefined ();
- else
- r.set_varying (type);
- }
- else if (!POINTER_TYPE_P (type) && SSA_NAME_RANGE_INFO (name))
- {
- get_range_info (name, r);
- if (r.undefined_p ())
- r.set_varying (type);
- }
- else if (POINTER_TYPE_P (type) && SSA_NAME_PTR_INFO (name))
- {
- if (get_ptr_nonnull (name))
- r.set_nonzero (type);
- else
- r.set_varying (type);
- }
- else
- r.set_varying (type);
-}
-
-// ?? Like above, but only for default definitions of NAME. This is
-// so VRP passes using ranger do not start with known ranges,
-// otherwise we'd eliminate builtin_unreachables too early because of
-// inlining.
-//
-// Without this restriction, the test in g++.dg/tree-ssa/pr61034.C has
-// all of its unreachable calls removed too early. We should
-// investigate whether we should just adjust the test above.
-
-value_range
-gimple_range_global (tree name)
-{
- gcc_checking_assert (gimple_range_ssa_p (name));
- tree type = TREE_TYPE (name);
-
- if (SSA_NAME_IS_DEFAULT_DEF (name))
- {
- value_range vr;
- get_range_global (vr, name);
- return vr;
- }
- return value_range (type);
-}
-
-// ----------------------------------------------
-// global_range_query implementation.
-
-global_range_query global_ranges;
-
-// Like get_range_query, but for accessing global ranges.
-
-range_query *
-get_global_range_query ()
-{
- return &global_ranges;
-}
-
-bool
-global_range_query::range_of_expr (irange &r, tree expr, gimple *)
-{
- tree type = TREE_TYPE (expr);
-
- if (!irange::supports_type_p (type) || !gimple_range_ssa_p (expr))
- return get_tree_range (r, expr);
-
- get_range_global (r, expr);
-
- return true;
-}
-
gimple_ranger *
enable_ranger (struct function *fun)
{