[Bug tree-optimization/101042] Bogus -Wstringop-overread with 11.1.0 and -O1 because of a call to printf _after_ assertions

msebor at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jun 15 00:46:12 GMT 2021


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

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2021-06-15
           Keywords|                            |missed-optimization
                 CC|                            |msebor at gcc dot gnu.org
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
printf being treated as a possible clobber is one problem.  Another is GCC not
implementing the same optimization for calloc as for malloc/bzero (I opened PR 
101074 to track that separately).  The warning disappears when the printf call
is removed and then reappears when the second assert (assert(field->type ==
FIELD.type);) is removed.

Other than that, the warning is based on the IL below:

  <bb 7> [local count: 548457796]:
<L6>:
  _3 = field_7->D.3115.string;
  _4 = strcmp (_3, 1B);
  if (_4 == 0)
    goto <bb 9>; [99.96%]
  else
    goto <bb 8>; [0.04%]

The integer constant in the call to strcmp() is not a valid pointer (PR 99578
comment 1 explains the rationale).


More information about the Gcc-bugs mailing list