]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Only add inferred ranges if they change the value.
authorAndrew MacLeod <amacleod@redhat.com>
Sat, 23 Nov 2024 19:05:54 +0000 (14:05 -0500)
committerAndrew MacLeod <amacleod@redhat.com>
Fri, 6 Dec 2024 21:41:19 +0000 (16:41 -0500)
Do not add an inferred range if it is already incorprated in the
current range of an SSA_NAME.

PR tree-optimization/117467
* gimple-range-infer.cc (infer_range_manager::add_ranges): Check
range_of_expr to see if the inferred range is needed.

gcc/gimple-range-infer.cc

index aba5c3d9bfcb47d32588c06bce0e98770c7658b4..94613cba098aa8770fd14cd1aa35d3fef0ebcfbf 100644 (file)
@@ -400,7 +400,14 @@ void
 infer_range_manager::add_ranges (gimple *s, gimple_infer_range &infer)
 {
   for (unsigned x = 0; x < infer.num (); x++)
-    add_range (infer.name (x), s, infer.range (x));
+    {
+      tree arg = infer.name (x);
+      value_range r (TREE_TYPE (arg));
+      m_query->range_of_expr (r, arg, s);
+      // Only add the inferred range if it changes the current range.
+      if (r.intersect (infer.range (x)))
+       add_range (arg, s, infer.range (x));
+    }
 }
 
 // Add range R as an inferred range for NAME on stmt S.