]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Ranger_cache::range_of_expr should handle no context.
authorAndrew MacLeod <amacleod@redhat.com>
Tue, 16 Dec 2025 18:44:45 +0000 (13:44 -0500)
committerAndrew MacLeod <amacleod@redhat.com>
Mon, 4 May 2026 15:45:31 +0000 (11:45 -0400)
range_of_expr is suppose to return a global value if there is no context
and instead it was crashing.

* gimple-range-cache.cc (ranger_cache::range_of_expr): Handle
NULL statement.

gcc/gimple-range-cache.cc

index 02af482838deb9e077de41b9f3b92d92e042236e..f3aa256acb0fb1f7589a27a7d97282b3bfa8f969 100644 (file)
@@ -1274,19 +1274,21 @@ bool
 ranger_cache::range_of_expr (vrange &r, tree name, gimple *stmt)
 {
   if (!gimple_range_ssa_p (name))
+    get_tree_range (r, name, stmt);
+  /* If no context is provided, pick up the global value.  */
+  else if (!stmt)
+    get_global_range (r, name);
+  else
     {
-      get_tree_range (r, name, stmt);
-      return true;
-    }
-
-  basic_block bb = gimple_bb (stmt);
-  gimple *def_stmt = SSA_NAME_DEF_STMT (name);
-  basic_block def_bb = gimple_bb (def_stmt);
+      basic_block bb = gimple_bb (stmt);
+      gimple *def_stmt = SSA_NAME_DEF_STMT (name);
+      basic_block def_bb = gimple_bb (def_stmt);
 
-  if (bb == def_bb)
-    range_of_def (r, name, bb);
-  else
-    entry_range (r, name, bb, RFD_NONE);
+      if (bb == def_bb)
+       range_of_def (r, name, bb);
+      else
+       entry_range (r, name, bb, RFD_NONE);
+    }
   return true;
 }