[gcc r15-1179] scev query mismatch message

Andrew Macleod amacleod@gcc.gnu.org
Tue Jun 11 12:47:44 GMT 2024


https://gcc.gnu.org/g:2f0c09c00b8ccf41c27d4b7ba0cafdeb99242a29

commit r15-1179-g2f0c09c00b8ccf41c27d4b7ba0cafdeb99242a29
Author: Andrew MacLeod <amacleod@redhat.com>
Date:   Thu May 30 09:40:46 2024 -0400

    scev query mismatch message
    
    Add a message to the listing if SCEV is not invoked because of a
    range_query mismatch
    
            * gimple-range-fold.cc (range_of_ssa_name_with_loop_info): Issue a
            message if SCEV is not invoked due to a mismatch.

Diff:
---
 gcc/gimple-range-fold.cc | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/gcc/gimple-range-fold.cc b/gcc/gimple-range-fold.cc
index 98a4877ba18..6037c29ce11 100644
--- a/gcc/gimple-range-fold.cc
+++ b/gcc/gimple-range-fold.cc
@@ -1267,9 +1267,18 @@ fold_using_range::range_of_ssa_name_with_loop_info (vrange &r, tree name,
   // SCEV currently invokes get_range_query () for values.  If the query
   // being passed in is not the same SCEV will use, do not invoke SCEV.
   // This can be remove if/when SCEV uses a passed in range-query.
-  if (src.query () != get_range_query (cfun)
-      || !range_of_var_in_loop (r, name, l, phi, src.query ()))
-    r.set_varying (TREE_TYPE (name));
+  if (src.query () != get_range_query (cfun))
+    {
+      r.set_varying (TREE_TYPE (name));
+      // Report the msmatch if SRC is not the global query.  The cache
+      // uses a global query and would provide numerous false positives.
+      if (dump_file && (dump_flags & TDF_DETAILS)
+	  && src.query () != get_global_range_query ())
+	fprintf (dump_file,
+	  "fold_using-range:: SCEV not invoked due to mismatched queries\n");
+    }
+  else if (!range_of_var_in_loop (r, name, l, phi, src.query ()))
+      r.set_varying (TREE_TYPE (name));
 }
 
 // -----------------------------------------------------------------------


More information about the Gcc-cvs mailing list