https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106900

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |pinskia at gcc dot 
gnu.org
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2023-05-16

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I am just going to test:
diff --git a/gcc/tree-ssa-forwprop.cc b/gcc/tree-ssa-forwprop.cc
index 06f19868ade..0326e6733e8 100644
--- a/gcc/tree-ssa-forwprop.cc
+++ b/gcc/tree-ssa-forwprop.cc
@@ -1231,14 +1231,14 @@ simplify_builtin_call (gimple_stmt_iterator *gsi_p,
tree callee2)
          tree size = gimple_call_arg (stmt2, 2);
          /* Size must be a constant which is <= UNITS_PER_WORD and
             <= the string length.  */
-         if (TREE_CODE (size) != INTEGER_CST || integer_zerop (size))
+         if (TREE_CODE (size) != INTEGER_CST)
            break;

          if (!tree_fits_uhwi_p (size))
            break;

          unsigned HOST_WIDE_INT sz = tree_to_uhwi (size);
-         if (sz > UNITS_PER_WORD || sz >= slen)
+         if (sz == 0 || sz > UNITS_PER_WORD || sz >= slen)
            break;

          tree ch = gimple_call_arg (stmt2, 1);


This does not change the behavior of the code at all, just makes it obvious sz
cannot be 0 and therefore isize won't be 0 either.

Reply via email to