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

Tim Lange <tlange at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2022-07-21
     Ever confirmed|0                           |1

--- Comment #1 from Tim Lange <tlange at gcc dot gnu.org> ---
I've noticed earlier that I produced a different behavior for structs and other
types, i.e. for struct I check for 'alloc_size >= pointee_size' while for other
types I check for 'alloc_size % pointee_size == 0'. I already had it fixed in
the first draft patch I sent for PR106181.

Long story short, it is a simple fix and regression tests are running. I'll
post the fix to the gcc-patches mailing list when the regression tests passed.

[...]
--- a/gcc/analyzer/region-model.cc
+++ b/gcc/analyzer/region-model.cc
@@ -2956,7 +2956,7 @@ capacity_compatible_with_type (tree cst, tree
pointee_size_tree,
   unsigned HOST_WIDE_INT alloc_size = TREE_INT_CST_LOW (cst);

   if (is_struct)
-    return alloc_size >= pointee_size;
+    return alloc_size == 0 || alloc_size >= pointee_size;
   return alloc_size % pointee_size == 0;
 }
[...]

Reply via email to