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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Ugh, the
  for (tree amats = DECL_ATTRIBUTES (alloc_decl),
         rmats = DECL_ATTRIBUTES (dealloc_decl);
       (amats = lookup_attribute ("malloc", amats))
         || (rmats = lookup_attribute ("malloc", rmats));
       amats = amats ? TREE_CHAIN (amats) : NULL_TREE,
         rmats = rmats ? TREE_CHAIN (rmats) : NULL_TREE)
mess.  If the first lookup_attribute returns non-NULL, then the second isn't
done at all and so rmats will be just some random attribute, not necessarily
malloc.
Unfortunately the obvious fix
--- gimple-ssa-warn-access.cc.jj2       2024-12-07 11:35:49.467439817 +0100
+++ gimple-ssa-warn-access.cc   2024-12-13 11:59:10.056161729 +0100
@@ -1936,11 +1936,12 @@ matching_alloc_calls_p (tree alloc_decl,
      With AMATS set to the Allocator's Malloc ATtributes,
      and  RMATS set to Reallocator's Malloc ATtributes...  */
   for (tree amats = DECL_ATTRIBUTES (alloc_decl),
-        rmats = DECL_ATTRIBUTES (dealloc_decl);
-       (amats = lookup_attribute ("malloc", amats))
-        || (rmats = lookup_attribute ("malloc", rmats));
+           rmats = DECL_ATTRIBUTES (dealloc_decl);
+       ((amats = lookup_attribute ("malloc", amats)),
+       (rmats = lookup_attribute ("malloc", rmats)),
+       (amats || rmats));
        amats = amats ? TREE_CHAIN (amats) : NULL_TREE,
-        rmats = rmats ? TREE_CHAIN (rmats) : NULL_TREE)
+       rmats = rmats ? TREE_CHAIN (rmats) : NULL_TREE)
     {
       if (tree args = amats ? TREE_VALUE (amats) : NULL_TREE)
        if (tree adealloc = TREE_VALUE (args))
regresses
FAIL: gcc.dg/Wmismatched-dealloc-2.c (test for excess errors)
FAIL: gcc.dg/Wmismatched-dealloc-3.c (test for excess errors)

Reply via email to