Committing for dmalcolm.

 When looking at some ranger code, the terminology for  setting the range class for a value_range was confusing, so this helps clarify it.

value_range::set_type doesn't set the m_type of the underlying vrange; it merely sets m_vrange to use an appropriate vrange subclass for the given type.

Bootstrapped on x86_64-pc-linux-gnu with no regressions.  Pushed.

Andrew
From 064c232df26d574cecc4a04ea493cc2bf42ebf7d Mon Sep 17 00:00:00 2001
From: David Malcolm <[email protected]>
Date: Wed, 4 Feb 2026 19:04:52 -0500
Subject: [PATCH 6/6] Rename value_range::set_type to
 value_range::set_range_class

value_range::set_type doesn't set the m_type of the underlying
vrange; it merely sets m_vrange to use an appropriate vrange
subclass for the given type.

This confused me.  This patch renames it to avoid other people being
similarly confused.

No functional change intended.

	gcc/ChangeLog:
	* data-streamer-in.cc (streamer_read_value_range): Update for
	renaming of value_range::set_type to value_range::set_range_class.
	* gimple-range-gori.cc (gori_compute::compute_operand_range):
	Likewise.
	(gori_compute::compute_operand1_and_operand2_range): Likewise.
	(gori_stmt_info::gori_stmt_info): Likewise.
	(gori_calc_operands): Likewise.
	(gori_name_helper): Likewise.
	* ipa-cp.cc (ipcp_vr_lattice::set_to_bottom): Likewise.
	* ipa-cp.h (ipcp_vr_lattice::init): Likewise.
	* ipa-fnsummary.cc (evaluate_properties_for_edge): Likewise.
	* ipa-prop.cc (ipa_vr::get_vrange): Likewise.
	* range-op.h (range_cast): Likewise.
	* value-range.h (value_range::set_type): Rename to...
	(value_range::set_range_class): ...this, and add a note to the
	leading comment that it doesn't set the type of the underlying
	vrange.
	(value_range::init): Add a similar note to the leading comment.
	* analyzer/svalue.cc (binop_svalue::maybe_get_value_range): Update for
	renaming of value_range::set_type to value_range::set_range_class.
	(unaryop_svalue::maybe_get_value_range): Likewise.
---
 gcc/analyzer/svalue.cc   |  4 ++--
 gcc/data-streamer-in.cc  |  2 +-
 gcc/gimple-range-gori.cc | 18 +++++++++---------
 gcc/ipa-cp.cc            |  2 +-
 gcc/ipa-cp.h             |  2 +-
 gcc/ipa-fnsummary.cc     |  3 ++-
 gcc/ipa-prop.cc          |  2 +-
 gcc/range-op.h           |  2 +-
 gcc/value-range.h        | 12 +++++++-----
 9 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/gcc/analyzer/svalue.cc b/gcc/analyzer/svalue.cc
index 824da5df793..fe22ae73ddd 100644
--- a/gcc/analyzer/svalue.cc
+++ b/gcc/analyzer/svalue.cc
@@ -1594,7 +1594,7 @@ unaryop_svalue::maybe_get_value_range_1 (value_range &out) const
 	     a VARYING of the unknown value as the 2nd operand.  */
 	  value_range varying (type);
 	  varying.set_varying (type);
-	  out.set_type (type);
+	  out.set_range_class (type);
 	  if (handler.fold_range (out, type, arg_vr, varying))
 	    return true;
 	}
@@ -1742,7 +1742,7 @@ binop_svalue::maybe_get_value_range_1 (value_range &out) const
 	range_op_handler handler (m_op);
 	if (handler)
 	  {
-	    out.set_type (type);
+	    out.set_range_class (type);
 	    if (handler.fold_range (out, get_type (), lhs, rhs))
 	      return true;
 	  }
diff --git a/gcc/data-streamer-in.cc b/gcc/data-streamer-in.cc
index f2294260b5a..a4c2b0b6ba3 100644
--- a/gcc/data-streamer-in.cc
+++ b/gcc/data-streamer-in.cc
@@ -223,7 +223,7 @@ streamer_read_value_range (class lto_input_block *ib, data_in *data_in,
   tree type = stream_read_tree (ib, data_in);
 
   // Initialize the value_range to the correct type.
-  vr.set_type (type);
+  vr.set_range_class (type);
 
   if (is_a <irange> (vr))
     {
diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc
index 1c0a2b9f797..939798c9d71 100644
--- a/gcc/gimple-range-gori.cc
+++ b/gcc/gimple-range-gori.cc
@@ -772,7 +772,7 @@ gori_compute::compute_operand_range (vrange &r, gimple *stmt,
   gimple *src_stmt;
   if (op1_in_chain)
     {
-      vr.set_type (TREE_TYPE (op1));
+      vr.set_range_class (TREE_TYPE (op1));
       if (!compute_operand1_range (vr, handler, lhs, src, vrel_ptr))
 	return false;
       src_stmt = SSA_NAME_DEF_STMT (op1);
@@ -780,7 +780,7 @@ gori_compute::compute_operand_range (vrange &r, gimple *stmt,
   else
     {
       gcc_checking_assert (op2_in_chain);
-      vr.set_type (TREE_TYPE (op2));
+      vr.set_range_class (TREE_TYPE (op2));
       if (!compute_operand2_range (vr, handler, lhs, src, vrel_ptr))
 	return false;
       src_stmt = SSA_NAME_DEF_STMT (op2);
@@ -1318,7 +1318,7 @@ gori_compute::compute_operand1_and_operand2_range (vrange &r,
     return false;
 
   // Now get the range thru op1.
-  vr.set_type (TREE_TYPE (handler.operand1 ()));
+  vr.set_range_class (TREE_TYPE (handler.operand1 ()));
   if (!compute_operand1_range (vr, handler, lhs, src, rel))
     return false;
   src_stmt = SSA_NAME_DEF_STMT (handler.operand1 ());
@@ -1592,14 +1592,14 @@ gori_stmt_info::gori_stmt_info (vrange &lhs, gimple *stmt, range_query *q)
   fur_stmt src (stmt, q);
   if (op1)
     {
-      op1_range.set_type (TREE_TYPE (op1));
+      op1_range.set_range_class (TREE_TYPE (op1));
       src.get_operand (op1_range, op1);
     }
 
   // And satisfy the second operand for single op satements.
   if (op2)
     {
-      op2_range.set_type (TREE_TYPE (op2));
+      op2_range.set_range_class (TREE_TYPE (op2));
       src.get_operand (op2_range, op2);
     }
   else if (op1)
@@ -1625,7 +1625,7 @@ gori_calc_operands (vrange &lhs, gimple *stmt, ssa_cache &r, range_query *q)
   // If there was already a range, leave it and do no further evaluation.
   if (si.ssa1 && !r.has_range (si.ssa1))
     {
-      tmp.set_type (TREE_TYPE (si.ssa1));
+      tmp.set_range_class (TREE_TYPE (si.ssa1));
       if (si.calc_op1 (tmp, lhs, si.op2_range))
 	si.op1_range.intersect (tmp);
       if (!si.op1_range.varying_p ())
@@ -1640,7 +1640,7 @@ gori_calc_operands (vrange &lhs, gimple *stmt, ssa_cache &r, range_query *q)
 
   if (si.ssa2 && !r.has_range (si.ssa2))
     {
-      tmp.set_type (TREE_TYPE (si.ssa2));
+      tmp.set_range_class (TREE_TYPE (si.ssa2));
       if (si.calc_op2 (tmp, lhs, si.op1_range))
 	si.op2_range.intersect (tmp);
       if (!si.op2_range.varying_p ())
@@ -1697,7 +1697,7 @@ gori_name_helper (vrange &r, tree name, vrange &lhs, gimple *stmt,
   // If there was already a range, leave it and do no further evaluation.
   if (si.ssa1)
     {
-      tmp.set_type (TREE_TYPE (si.ssa1));
+      tmp.set_range_class (TREE_TYPE (si.ssa1));
       if (si.calc_op1 (tmp, lhs, si.op2_range))
 	si.op1_range.intersect (tmp);
       gimple *src = SSA_NAME_DEF_STMT (si.ssa1);
@@ -1709,7 +1709,7 @@ gori_name_helper (vrange &r, tree name, vrange &lhs, gimple *stmt,
 
   if (si.ssa2)
     {
-      tmp.set_type (TREE_TYPE (si.ssa2));
+      tmp.set_range_class (TREE_TYPE (si.ssa2));
       if (si.calc_op2 (tmp, lhs, si.op1_range))
 	si.op2_range.intersect (tmp);
       gimple *src = SSA_NAME_DEF_STMT (si.ssa2);
diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc
index 337fca71013..c1b1f6201fd 100644
--- a/gcc/ipa-cp.cc
+++ b/gcc/ipa-cp.cc
@@ -891,7 +891,7 @@ ipcp_vr_lattice::set_to_bottom ()
      but nothing else (union, intersect, etc).  This allows us to set
      bottoms on any ranges, and is safe as all users of the lattice
      check for bottom first.  */
-  m_vr.set_type (void_type_node);
+  m_vr.set_range_class (void_type_node);
   m_vr.set_varying (void_type_node);
 
   return true;
diff --git a/gcc/ipa-cp.h b/gcc/ipa-cp.h
index 8191aac5c5b..af1fe8f1e75 100644
--- a/gcc/ipa-cp.h
+++ b/gcc/ipa-cp.h
@@ -261,7 +261,7 @@ inline void
 ipcp_vr_lattice::init (tree type)
 {
   if (type)
-    m_vr.set_type (type);
+    m_vr.set_range_class (type);
 
   // Otherwise m_vr will default to unsupported_range.
   m_recipient_only = false;
diff --git a/gcc/ipa-fnsummary.cc b/gcc/ipa-fnsummary.cc
index e187231dfb6..ff181113078 100644
--- a/gcc/ipa-fnsummary.cc
+++ b/gcc/ipa-fnsummary.cc
@@ -693,7 +693,8 @@ evaluate_properties_for_edge (struct cgraph_edge *e, bool inline_p,
 			    avals->m_known_value_ranges.safe_grow_cleared (count,
 									   true);
 			    for (int i = 0; i < count; ++i)
-			      avals->m_known_value_ranges[i].set_type (void_type_node);
+			      avals->m_known_value_ranges[i].set_range_class
+				(void_type_node);
 			  }
 			avals->m_known_value_ranges[i] = vr;
 		      }
diff --git a/gcc/ipa-prop.cc b/gcc/ipa-prop.cc
index cb89934ee38..6675c2191fc 100644
--- a/gcc/ipa-prop.cc
+++ b/gcc/ipa-prop.cc
@@ -177,7 +177,7 @@ ipa_vr::equal_p (const ipa_vr &o) const
 void
 ipa_vr::get_vrange (value_range &r) const
 {
-  r.set_type (m_type);
+  r.set_range_class (m_type);
   m_storage->get_vrange (r, m_type);
 }
 
diff --git a/gcc/range-op.h b/gcc/range-op.h
index 5b80583e02c..1fd84ca0713 100644
--- a/gcc/range-op.h
+++ b/gcc/range-op.h
@@ -370,7 +370,7 @@ range_cast (value_range &r, tree type)
   varying.set_varying (type);
 
   // Ensure we are in the correct mode for the call to fold.
-  r.set_type (type);
+  r.set_range_class (type);
 
   // Call op_convert, if it fails, the result is varying.
   if (!range_op_handler (CONVERT_EXPR).fold_range (r, type, tmp, varying))
diff --git a/gcc/value-range.h b/gcc/value-range.h
index cb8e7fe2f26..d59c4283caa 100644
--- a/gcc/value-range.h
+++ b/gcc/value-range.h
@@ -767,13 +767,13 @@ public:
 //
 // Using any of the various constructors initializes the object
 // appropriately, but the default constructor is uninitialized and
-// must be initialized either with set_type() or by assigning into it.
+// must be initialized either with set_range_class() or by assigning into /it.
 //
 // Assigning between incompatible types is allowed.  For example if a
 // temporary holds an irange, you can assign an frange into it, and
 // all the right things will happen.  However, before passing this
 // object to a function accepting a vrange, the correct type must be
-// set.  If it isn't, you can do so with set_type().
+// set.  If it isn't, you can do so with set_range_class().
 
 class value_range
 {
@@ -784,7 +784,7 @@ public:
   value_range (tree, tree, value_range_kind kind = VR_RANGE);
   value_range (const value_range &);
   ~value_range ();
-  void set_type (tree type);
+  void set_range_class (tree type);
   vrange& operator= (const vrange &);
   value_range& operator= (const value_range &);
   bool operator== (const value_range &r) const;
@@ -832,7 +832,7 @@ private:
 };
 
 // The default constructor is uninitialized and must be initialized
-// with either set_type() or with an assignment into it.
+// with either set_range_class() or with an assignment into it.
 
 inline
 value_range::value_range ()
@@ -885,9 +885,10 @@ value_range::~value_range ()
 
 // Initialize object to an UNDEFINED range that can hold ranges of
 // TYPE.  Clean-up memory if there was a previous object.
+// Note that this does *not* set the type of the underlying vrange.
 
 inline void
-value_range::set_type (tree type)
+value_range::set_range_class (tree type)
 {
   if (m_vrange)
     m_vrange->~vrange ();
@@ -896,6 +897,7 @@ value_range::set_type (tree type)
 
 // Initialize object to an UNDEFINED range that can hold ranges of
 // TYPE.
+// Note that this does *not* set the type of the underlying vrange.
 
 inline void
 value_range::init (tree type)
-- 
2.45.0

Reply via email to