]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Make irange dependency explicit for range_of_ssa_name_with_loop_info.
authorAldy Hernandez <aldyh@redhat.com>
Sun, 31 Jul 2022 21:02:14 +0000 (23:02 +0200)
committerAldy Hernandez <aldyh@redhat.com>
Mon, 1 Aug 2022 06:16:03 +0000 (08:16 +0200)
Even though ranger is type agnostic, SCEV seems to only work with
integers.  This patch removes some FIXME notes making it explicit that
bounds_of_var_in_loop only works with iranges.

Tested on x86-64 Linux.

gcc/ChangeLog:

* gimple-range-fold.cc (fold_using_range::range_of_phi): Only
query SCEV for integers.
(fold_using_range::range_of_ssa_name_with_loop_info): Remove
irange check.

gcc/gimple-range-fold.cc

index 6f907df5bf55f6073cd7e1ef5d0a2003a3c639f6..7665c954f2be10a45683500491eddc8422ff60b7 100644 (file)
@@ -853,12 +853,14 @@ fold_using_range::range_of_phi (vrange &r, gphi *phi, fur_source &src)
       }
 
   // If SCEV is available, query if this PHI has any knonwn values.
-  if (scev_initialized_p () && !POINTER_TYPE_P (TREE_TYPE (phi_def)))
+  if (scev_initialized_p ()
+      && !POINTER_TYPE_P (TREE_TYPE (phi_def))
+      && irange::supports_p (TREE_TYPE (phi_def)))
     {
-      value_range loop_range;
       class loop *l = loop_containing_stmt (phi);
       if (l && loop_outer (l))
        {
+         int_range_max loop_range;
          range_of_ssa_name_with_loop_info (loop_range, phi_def, l, phi, src);
          if (!loop_range.varying_p ())
            {
@@ -1337,9 +1339,7 @@ fold_using_range::range_of_ssa_name_with_loop_info (irange &r, tree name,
 {
   gcc_checking_assert (TREE_CODE (name) == SSA_NAME);
   tree min, max, type = TREE_TYPE (name);
-  // FIXME: Remove the supports_p() once all this can handle floats, etc.
-  if (irange::supports_p (type)
-      && bounds_of_var_in_loop (&min, &max, src.query (), l, phi, name))
+  if (bounds_of_var_in_loop (&min, &max, src.query (), l, phi, name))
     {
       if (TREE_CODE (min) != INTEGER_CST)
        {