Commit c49eeac3 by Richard Biener Committed by Richard Biener

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
parent bdfac905
2018-11-12 Richard Biener <rguenther@suse.de> 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.
2018-11-12 Richard Biener <rguenther@suse.de>
* tree-vrp.c (set_value_range_to_nonnull): Clear equiv. * tree-vrp.c (set_value_range_to_nonnull): Clear equiv.
(set_value_range_to_null): Likewise. (set_value_range_to_null): Likewise.
* vr-values.c (vr_values::extract_range_from_comparison): * vr-values.c (vr_values::extract_range_from_comparison):
...@@ -252,7 +252,7 @@ evrp_range_analyzer::record_ranges_from_phis (basic_block bb) ...@@ -252,7 +252,7 @@ evrp_range_analyzer::record_ranges_from_phis (basic_block bb)
vr_values->extract_range_from_phi_node (phi, &vr_result); vr_values->extract_range_from_phi_node (phi, &vr_result);
else else
{ {
set_value_range_to_varying (&vr_result); vr_result.set_varying ();
/* When we have an unvisited executable predecessor we can't /* When we have an unvisited executable predecessor we can't
use PHI arg ranges which may be still UNDEFINED but have use PHI arg ranges which may be still UNDEFINED but have
to use VARYING for them. But we can still resort to to use VARYING for them. But we can still resort to
......
...@@ -522,7 +522,7 @@ ipcp_bits_lattice::print (FILE *f) ...@@ -522,7 +522,7 @@ ipcp_bits_lattice::print (FILE *f)
void void
ipcp_vr_lattice::print (FILE * f) ipcp_vr_lattice::print (FILE * f)
{ {
dump_value_range_base (f, &m_vr); dump_value_range (f, &m_vr);
} }
/* Print all ipcp_lattices of all functions to F. */ /* Print all ipcp_lattices of all functions to F. */
......
...@@ -183,7 +183,7 @@ record_temporary_equivalences_from_phis (edge e, ...@@ -183,7 +183,7 @@ record_temporary_equivalences_from_phis (edge e,
else if (TREE_CODE (src) == INTEGER_CST) else if (TREE_CODE (src) == INTEGER_CST)
set_value_range_to_value (new_vr, src, NULL); set_value_range_to_value (new_vr, src, NULL);
else else
set_value_range_to_varying (new_vr); new_vr->set_varying ();
/* This is a temporary range for DST, so push it. */ /* This is a temporary range for DST, so push it. */
evrp_range_analyzer->push_value_range (dst, new_vr); evrp_range_analyzer->push_value_range (dst, new_vr);
......
...@@ -49,22 +49,26 @@ public: ...@@ -49,22 +49,26 @@ public:
tree max () const; tree max () const;
/* Types of value ranges. */ /* Types of value ranges. */
bool symbolic_p () const;
bool constant_p () const;
bool undefined_p () const; bool undefined_p () const;
bool varying_p () const; bool varying_p () const;
void set_varying ();
void set_undefined ();
void union_ (const value_range_base *); void union_ (const value_range_base *);
bool ignore_equivs_equal_p (const value_range_base &) const; bool ignore_equivs_equal_p (const value_range_base &) const;
void set_varying ();
void set_undefined ();
/* Misc methods. */ /* Misc methods. */
tree type () const; tree type () const;
bool may_contain_p (tree) const; bool may_contain_p (tree) const;
void set_and_canonicalize (enum value_range_kind, tree, tree); 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 (FILE *) const;
void dump () const;
protected: protected:
void set (value_range_kind, tree, tree); void set (value_range_kind, tree, tree);
...@@ -100,8 +104,6 @@ class GTY((user)) value_range : public value_range_base ...@@ -100,8 +104,6 @@ class GTY((user)) value_range : public value_range_base
void union_ (const value_range *); void union_ (const value_range *);
/* Types of value ranges. */ /* Types of value ranges. */
bool symbolic_p () const;
bool constant_p () const;
void set_undefined (); void set_undefined ();
void set_varying (); void set_varying ();
...@@ -111,8 +113,6 @@ class GTY((user)) value_range : public value_range_base ...@@ -111,8 +113,6 @@ class GTY((user)) value_range : public value_range_base
void equiv_add (const_tree, const value_range *, bitmap_obstack * = NULL); void equiv_add (const_tree, const value_range *, bitmap_obstack * = NULL);
/* Misc methods. */ /* Misc methods. */
bool zero_p () const;
bool singleton_p (tree *result = NULL) const;
void deep_copy (const value_range *); void deep_copy (const value_range *);
void set_and_canonicalize (enum value_range_kind, tree, tree, bitmap); void set_and_canonicalize (enum value_range_kind, tree, tree, bitmap);
void dump (FILE *) const; void dump (FILE *) const;
...@@ -194,7 +194,7 @@ value_range_base::undefined_p () const ...@@ -194,7 +194,7 @@ value_range_base::undefined_p () const
/* Return TRUE if range is the constant zero. */ /* Return TRUE if range is the constant zero. */
inline bool inline bool
value_range::zero_p () const value_range_base::zero_p () const
{ {
return (m_kind == VR_RANGE return (m_kind == VR_RANGE
&& integer_zerop (m_min) && integer_zerop (m_min)
...@@ -202,16 +202,7 @@ value_range::zero_p () const ...@@ -202,16 +202,7 @@ value_range::zero_p () const
} }
extern void dump_value_range (FILE *, const value_range *); extern void dump_value_range (FILE *, const value_range *);
extern void dump_value_range_base (FILE *, const value_range_base *); extern void dump_value_range (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);
struct assert_info struct assert_info
{ {
...@@ -231,36 +222,51 @@ struct assert_info ...@@ -231,36 +222,51 @@ struct assert_info
extern void register_edge_assert_for (tree, edge, enum tree_code, extern void register_edge_assert_for (tree, edge, enum tree_code,
tree, tree, vec<assert_info> &); tree, tree, vec<assert_info> &);
extern bool stmt_interesting_for_vrp (gimple *); 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 range_includes_zero_p (const value_range_base *);
extern bool infer_value_range (gimple *, tree, tree_code *, tree *); 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_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, extern void set_value_range (value_range *, enum value_range_kind, tree,
tree, bitmap); tree, bitmap);
extern void set_value_range_to_value (value_range *, tree, bitmap);
extern bool vrp_bitmap_equal_p (const_bitmap, const_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 (tree, tree);
extern int compare_values_warnv (tree, tree, bool *); 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_min (const_tree);
extern bool vrp_val_is_max (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, extern void extract_range_from_binary_expr_1 (value_range *, enum tree_code,
tree, const value_range *, tree, const value_range *,
const value_range *); const value_range *);
extern tree vrp_val_min (const_tree);
extern tree vrp_val_max (const_tree); extern bool vrp_operand_equal_p (const_tree, const_tree);
extern void set_value_range_to_null (value_range *, tree); extern enum value_range_kind intersect_range_with_nonzero_bits
extern bool range_int_cst_p (const value_range *); (enum value_range_kind, wide_int *, wide_int *, const wide_int &, signop);
extern int operand_less_p (tree, tree); 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_range (gswitch *, tree, tree, size_t *, size_t *);
extern bool find_case_label_index (gswitch *, size_t, tree, 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 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 tree get_single_symbol (tree, bool *, tree *);
extern void maybe_set_nonzero_bits (edge, tree); extern void maybe_set_nonzero_bits (edge, tree);
extern value_range_kind determine_value_range (tree, wide_int *, wide_int *); extern value_range_kind determine_value_range (tree, wide_int *, wide_int *);
#endif /* GCC_TREE_VRP_H */ #endif /* GCC_TREE_VRP_H */
...@@ -64,7 +64,7 @@ static inline void ...@@ -64,7 +64,7 @@ static inline void
set_value_range_to_truthvalue (value_range *vr, tree type) set_value_range_to_truthvalue (value_range *vr, tree type)
{ {
if (TYPE_PRECISION (type) == 1) if (TYPE_PRECISION (type) == 1)
set_value_range_to_varying (vr); vr->set_varying ();
else else
vr->update (VR_RANGE, build_int_cst (type, 0), build_int_cst (type, 1)); vr->update (VR_RANGE, build_int_cst (type, 0), build_int_cst (type, 1));
} }
...@@ -126,7 +126,7 @@ vr_values::get_value_range (const_tree var) ...@@ -126,7 +126,7 @@ vr_values::get_value_range (const_tree var)
vr->set_varying (); vr->set_varying ();
} }
else else
set_value_range_to_varying (vr); vr->set_varying ();
} }
else if (TREE_CODE (sym) == RESULT_DECL else if (TREE_CODE (sym) == RESULT_DECL
&& DECL_BY_REFERENCE (sym)) && DECL_BY_REFERENCE (sym))
...@@ -148,7 +148,7 @@ vr_values::set_defs_to_varying (gimple *stmt) ...@@ -148,7 +148,7 @@ vr_values::set_defs_to_varying (gimple *stmt)
value_range *vr = get_value_range (def); value_range *vr = get_value_range (def);
/* Avoid writing to vr_const_varying get_value_range may return. */ /* Avoid writing to vr_const_varying get_value_range may return. */
if (!vr->varying_p ()) if (!vr->varying_p ())
set_value_range_to_varying (vr); vr->set_varying ();
} }
} }
...@@ -192,8 +192,8 @@ vr_values::update_value_range (const_tree var, value_range *new_vr) ...@@ -192,8 +192,8 @@ vr_values::update_value_range (const_tree var, value_range *new_vr)
called. */ called. */
if (new_vr->undefined_p ()) if (new_vr->undefined_p ())
{ {
set_value_range_to_varying (old_vr); old_vr->set_varying ();
set_value_range_to_varying (new_vr); new_vr->set_varying ();
return true; return true;
} }
else else
...@@ -387,7 +387,7 @@ vr_values::extract_range_for_var_from_comparison_expr (tree var, ...@@ -387,7 +387,7 @@ vr_values::extract_range_for_var_from_comparison_expr (tree var,
if ((POINTER_TYPE_P (type) && cond_code != NE_EXPR && cond_code != EQ_EXPR) if ((POINTER_TYPE_P (type) && cond_code != NE_EXPR && cond_code != EQ_EXPR)
|| limit == var) || limit == var)
{ {
set_value_range_to_varying (vr_p); vr_p->set_varying ();
return; return;
} }
...@@ -547,7 +547,7 @@ vr_values::extract_range_for_var_from_comparison_expr (tree var, ...@@ -547,7 +547,7 @@ vr_values::extract_range_for_var_from_comparison_expr (tree var,
all should be optimized away above us. */ all should be optimized away above us. */
if (cond_code == LT_EXPR if (cond_code == LT_EXPR
&& compare_values (max, min) == 0) && compare_values (max, min) == 0)
set_value_range_to_varying (vr_p); vr_p->set_varying ();
else else
{ {
/* For LT_EXPR, we create the range [MIN, MAX - 1]. */ /* For LT_EXPR, we create the range [MIN, MAX - 1]. */
...@@ -587,7 +587,7 @@ vr_values::extract_range_for_var_from_comparison_expr (tree var, ...@@ -587,7 +587,7 @@ vr_values::extract_range_for_var_from_comparison_expr (tree var,
all should be optimized away above us. */ all should be optimized away above us. */
if (cond_code == GT_EXPR if (cond_code == GT_EXPR
&& compare_values (min, max) == 0) && compare_values (min, max) == 0)
set_value_range_to_varying (vr_p); vr_p->set_varying ();
else else
{ {
/* For GT_EXPR, we create the range [MIN + 1, MAX]. */ /* For GT_EXPR, we create the range [MIN + 1, MAX]. */
...@@ -694,14 +694,14 @@ vr_values::extract_range_from_binary_expr (value_range *vr, ...@@ -694,14 +694,14 @@ vr_values::extract_range_from_binary_expr (value_range *vr,
else if (is_gimple_min_invariant (op0)) else if (is_gimple_min_invariant (op0))
set_value_range_to_value (&vr0, op0, NULL); set_value_range_to_value (&vr0, op0, NULL);
else else
set_value_range_to_varying (&vr0); vr0.set_varying ();
if (TREE_CODE (op1) == SSA_NAME) if (TREE_CODE (op1) == SSA_NAME)
vr1 = *(get_value_range (op1)); vr1 = *(get_value_range (op1));
else if (is_gimple_min_invariant (op1)) else if (is_gimple_min_invariant (op1))
set_value_range_to_value (&vr1, op1, NULL); set_value_range_to_value (&vr1, op1, NULL);
else else
set_value_range_to_varying (&vr1); vr1.set_varying ();
/* If one argument is varying, we can sometimes still deduce a /* If one argument is varying, we can sometimes still deduce a
range for the output: any + [3, +INF] is in [MIN+3, +INF]. */ range for the output: any + [3, +INF] is in [MIN+3, +INF]. */
...@@ -839,7 +839,7 @@ vr_values::extract_range_from_unary_expr (value_range *vr, enum tree_code code, ...@@ -839,7 +839,7 @@ vr_values::extract_range_from_unary_expr (value_range *vr, enum tree_code code,
else if (is_gimple_min_invariant (op0)) else if (is_gimple_min_invariant (op0))
set_value_range_to_value (&vr0, op0, NULL); set_value_range_to_value (&vr0, op0, NULL);
else else
set_value_range_to_varying (&vr0); vr0.set_varying ();
::extract_range_from_unary_expr (vr, code, type, &vr0, TREE_TYPE (op0)); ::extract_range_from_unary_expr (vr, code, type, &vr0, TREE_TYPE (op0));
} }
...@@ -860,7 +860,7 @@ vr_values::extract_range_from_cond_expr (value_range *vr, gassign *stmt) ...@@ -860,7 +860,7 @@ vr_values::extract_range_from_cond_expr (value_range *vr, gassign *stmt)
else if (is_gimple_min_invariant (op0)) else if (is_gimple_min_invariant (op0))
set_value_range_to_value (&vr0, op0, NULL); set_value_range_to_value (&vr0, op0, NULL);
else else
set_value_range_to_varying (&vr0); vr0.set_varying ();
tree op1 = gimple_assign_rhs3 (stmt); tree op1 = gimple_assign_rhs3 (stmt);
value_range vr1; value_range vr1;
...@@ -869,7 +869,7 @@ vr_values::extract_range_from_cond_expr (value_range *vr, gassign *stmt) ...@@ -869,7 +869,7 @@ vr_values::extract_range_from_cond_expr (value_range *vr, gassign *stmt)
else if (is_gimple_min_invariant (op1)) else if (is_gimple_min_invariant (op1))
set_value_range_to_value (&vr1, op1, NULL); set_value_range_to_value (&vr1, op1, NULL);
else else
set_value_range_to_varying (&vr1); vr1.set_varying ();
/* The resulting value range is the union of the operand ranges */ /* The resulting value range is the union of the operand ranges */
vr->deep_copy (&vr0); vr->deep_copy (&vr0);
...@@ -921,14 +921,14 @@ vr_values::check_for_binary_op_overflow (enum tree_code subcode, tree type, ...@@ -921,14 +921,14 @@ vr_values::check_for_binary_op_overflow (enum tree_code subcode, tree type,
else if (TREE_CODE (op0) == INTEGER_CST) else if (TREE_CODE (op0) == INTEGER_CST)
set_value_range_to_value (&vr0, op0, NULL); set_value_range_to_value (&vr0, op0, NULL);
else else
set_value_range_to_varying (&vr0); vr0.set_varying ();
if (TREE_CODE (op1) == SSA_NAME) if (TREE_CODE (op1) == SSA_NAME)
vr1 = *get_value_range (op1); vr1 = *get_value_range (op1);
else if (TREE_CODE (op1) == INTEGER_CST) else if (TREE_CODE (op1) == INTEGER_CST)
set_value_range_to_value (&vr1, op1, NULL); set_value_range_to_value (&vr1, op1, NULL);
else else
set_value_range_to_varying (&vr1); vr1.set_varying ();
tree vr0min = vr0.min (), vr0max = vr0.max (); tree vr0min = vr0.min (), vr0max = vr0.max ();
tree vr1min = vr1.min (), vr1max = vr1.max (); tree vr1min = vr1.min (), vr1max = vr1.max ();
...@@ -1256,7 +1256,7 @@ vr_values::extract_range_basic (value_range *vr, gimple *stmt) ...@@ -1256,7 +1256,7 @@ vr_values::extract_range_basic (value_range *vr, gimple *stmt)
if (vr->kind () == VR_RANGE if (vr->kind () == VR_RANGE
&& (vr->min () == vr->max () && (vr->min () == vr->max ()
|| operand_equal_p (vr->min (), vr->max (), 0))) || operand_equal_p (vr->min (), vr->max (), 0)))
set_value_range_to_varying (vr); vr->set_varying ();
return; return;
} }
} }
...@@ -1314,7 +1314,7 @@ vr_values::extract_range_basic (value_range *vr, gimple *stmt) ...@@ -1314,7 +1314,7 @@ vr_values::extract_range_basic (value_range *vr, gimple *stmt)
NULL); NULL);
else if (TYPE_PRECISION (type) == 1 else if (TYPE_PRECISION (type) == 1
&& !TYPE_UNSIGNED (type)) && !TYPE_UNSIGNED (type))
set_value_range_to_varying (vr); vr->set_varying ();
else else
set_value_range (vr, VR_RANGE, build_int_cst (type, 0), set_value_range (vr, VR_RANGE, build_int_cst (type, 0),
build_int_cst (type, 1), NULL); build_int_cst (type, 1), NULL);
...@@ -1356,7 +1356,7 @@ vr_values::extract_range_basic (value_range *vr, gimple *stmt) ...@@ -1356,7 +1356,7 @@ vr_values::extract_range_basic (value_range *vr, gimple *stmt)
else if (vrp_stmt_computes_nonzero (stmt)) else if (vrp_stmt_computes_nonzero (stmt))
set_value_range_to_nonnull (vr, type); set_value_range_to_nonnull (vr, type);
else else
set_value_range_to_varying (vr); vr->set_varying ();
} }
...@@ -1392,7 +1392,7 @@ vr_values::extract_range_from_assignment (value_range *vr, gassign *stmt) ...@@ -1392,7 +1392,7 @@ vr_values::extract_range_from_assignment (value_range *vr, gassign *stmt)
&& is_gimple_min_invariant (gimple_assign_rhs1 (stmt))) && is_gimple_min_invariant (gimple_assign_rhs1 (stmt)))
set_value_range_to_value (vr, gimple_assign_rhs1 (stmt), NULL); set_value_range_to_value (vr, gimple_assign_rhs1 (stmt), NULL);
else else
set_value_range_to_varying (vr); vr->set_varying ();
if (vr->varying_p ()) if (vr->varying_p ())
extract_range_basic (vr, stmt); extract_range_basic (vr, stmt);
...@@ -2875,7 +2875,7 @@ vr_values::extract_range_from_phi_node (gphi *phi, value_range *vr_result) ...@@ -2875,7 +2875,7 @@ vr_values::extract_range_from_phi_node (gphi *phi, value_range *vr_result)
goto update_range; goto update_range;
varying: varying:
set_value_range_to_varying (vr_result); vr_result->set_varying ();
scev_check: scev_check:
/* If this is a loop PHI node SCEV may known more about its value-range. /* If this is a loop PHI node SCEV may known more about its value-range.
...@@ -2896,7 +2896,7 @@ infinite_check: ...@@ -2896,7 +2896,7 @@ infinite_check:
|| compare_values (vr_result->min (), vr_result->max ()) > 0)) || compare_values (vr_result->min (), vr_result->max ()) > 0))
; ;
else else
set_value_range_to_varying (vr_result); vr_result->set_varying ();
/* If the new range is different than the previous value, keep /* If the new range is different than the previous value, keep
iterating. */ iterating. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment