]> gcc.gnu.org Git - gcc.git/commitdiff
Range_on_edge in ranger_cache should return true for all ranges.
authorAndrew MacLeod <amacleod@redhat.com>
Wed, 16 Jun 2021 15:14:36 +0000 (11:14 -0400)
committerAndrew MacLeod <amacleod@redhat.com>
Thu, 17 Jun 2021 00:07:40 +0000 (20:07 -0400)
Range_on_edge was implemented in the cache to always return a range, but
only returned true when the edge actally changed the range.
Return true with any range that can be calculated.

* gimple-range-cache.cc (ranger_cache::range_on_edge): Always return
true when a range can be calculated.
* gimple-range.cc (gimple_ranger::dump_bb): Check has_edge_range_p.

gcc/gimple-range-cache.cc
gcc/gimple-range.cc

index 37e2acb19f9d1b190d4e5277d5b4b5de9fde380a..cc2b7092dadd87d76ac15d7611ac012e18822ed1 100644 (file)
@@ -978,8 +978,7 @@ ranger_cache::range_of_expr (irange &r, tree name, gimple *stmt)
 }
 
 
-// Implement range_on_edge. Return TRUE if the edge generates a range,
-// otherwise false.. but still return a range.
+// Implement range_on_edge.  Always return the best available range.
 
  bool
  ranger_cache::range_on_edge (irange &r, edge e, tree expr)
@@ -989,14 +988,11 @@ ranger_cache::range_of_expr (irange &r, tree name, gimple *stmt)
       exit_range (r, expr, e->src);
       int_range_max edge_range;
       if (m_gori.outgoing_edge_range_p (edge_range, e, expr, *this))
-       {
-         r.intersect (edge_range);
-         return true;
-       }
+       r.intersect (edge_range);
+      return true;
     }
-  else
-    get_tree_range (r, expr, NULL);
-  return false;
+
+  return get_tree_range (r, expr, NULL);
 }
 
 
index 481b89b2b80cfbe32d5367670a39113d113215ca..efb919f159554b68a0e8c980cef17afe70bf3844 100644 (file)
@@ -1394,7 +1394,8 @@ gimple_ranger::dump_bb (FILE *f, basic_block bb)
       for (x = 1; x < num_ssa_names; x++)
        {
          tree name = gimple_range_ssa_p (ssa_name (x));
-         if (name && m_cache.range_on_edge (range, e, name))
+         if (name && gori ().has_edge_range_p (name, e)
+             && m_cache.range_on_edge (range, e, name))
            {
              gimple *s = SSA_NAME_DEF_STMT (name);
              // Only print the range if this is the def block, or
This page took 0.065778 seconds and 5 git commands to generate.