diff mbox series

[COMMITTED,23/23] Add prange entries in gimple-range-op.cc.

Message ID 20240504083056.139719-24-aldyh@redhat.com
State New
Headers show
Series prange: pointer ranges | expand

Commit Message

Aldy Hernandez May 4, 2024, 8:30 a.m. UTC
gcc/ChangeLog:

	* gimple-range-op.cc (class cfn_pass_through_arg1): Add overloads
	for prange operations.
	(cfn_strlen): Same.
---
 gcc/gimple-range-op.cc | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
diff mbox series

Patch

diff --git a/gcc/gimple-range-op.cc b/gcc/gimple-range-op.cc
index 587de186db2..55dfbb23ce2 100644
--- a/gcc/gimple-range-op.cc
+++ b/gcc/gimple-range-op.cc
@@ -311,12 +311,37 @@  public:
     r = lh;
     return true;
   }
+  virtual bool fold_range (prange &r, tree, const prange &lh,
+			   const prange &, relation_trio) const
+  {
+    r = lh;
+    return true;
+  }
   virtual bool op1_range (irange &r, tree, const irange &lhs,
 			  const irange &, relation_trio) const
   {
     r = lhs;
     return true;
   }
+  virtual bool op1_range (prange &r, tree, const prange &lhs,
+			  const prange &, relation_trio) const
+  {
+    r = lhs;
+    return true;
+  }
+  virtual bool pointers_handled_p (range_op_dispatch_type type,
+				   unsigned dispatch) const
+  {
+    switch (type)
+      {
+      case DISPATCH_FOLD_RANGE:
+	return dispatch == RO_PPP;
+      case DISPATCH_OP1_RANGE:
+	return dispatch == RO_PPP;
+      default:
+	return true;
+      }
+  }
 } op_cfn_pass_through_arg1;
 
 // Implement range operator for CFN_BUILT_IN_SIGNBIT.
@@ -1107,6 +1132,17 @@  public:
     r.set (type, wi::zero (TYPE_PRECISION (type)), max - 2);
     return true;
   }
+  virtual bool pointers_handled_p (range_op_dispatch_type type,
+				   unsigned dispatch) const
+  {
+    switch (type)
+      {
+      case DISPATCH_FOLD_RANGE:
+	return dispatch == RO_IPI;
+      default:
+	return true;
+      }
+  }
 } op_cfn_strlen;