https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109365
Benjamin Priour <vultkayn at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vultkayn at gcc dot gnu.org
--- Comment #3 from Benjamin Priour <vultkayn at gcc dot gnu.org> ---
Changing the second delete expression into a direct call to "operator delete"
results in the correct warning Wanalyzer-double-free being emitted.
This is due to delete expression first calling the destructor and performing
extra operations, whose one of them is a dereference.
"delete expression" compiled with -O0 results on my x86_64-linux-gnu
to analyzer ipa:
if (a.0_11 != 0B)
goto <bb 3>; [INV]
else
goto <bb 4>; [INV]
<bb 3> :
*a.0_11 ={v} {CLOBBER};
operator delete (a.0_11, 8);
<bb 4> :
_14 = 0;
Entry statement of bb3 is the one actually detected as -Wanalyzer-double-free.