[Bug c++/101480] [11/12 Regression] Miscompiled code involving operator new

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Oct 11 14:20:43 GMT 2021


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

--- Comment #19 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rguenth@gcc.gnu.org>:

https://gcc.gnu.org/g:09a0affdb0598a54835ac4bb0dd6b54122c12916

commit r12-4319-g09a0affdb0598a54835ac4bb0dd6b54122c12916
Author: Richard Biener <rguenther@suse.de>
Date:   Mon Oct 11 16:06:03 2021 +0200

    middle-end/101480 - overloaded global new/delete

    The following fixes the issue of ignoring side-effects on memory
    from overloaded global new/delete operators by not marking them
    as effectively 'const' apart from other explicitely specified
    side-effects.

    This will cause

    FAIL: g++.dg/warn/Warray-bounds-16.C  -std=gnu++1? (test for excess errors)

    because we now no longer statically see the initialization loop
    never executes because the call to operator new can now clobber 'a.m'.
    This seems to be an issue with the warning code and/or ranger so
    I'm leaving this FAIL to be addressed as followup.

    2021-10-11  Richard Biener  <rguenther@suse.de>

            PR middle-end/101480
            * gimple.c (gimple_call_fnspec): Do not mark operator new/delete
            as const.

            * g++.dg/torture/pr10148.C: New testcase.


More information about the Gcc-bugs mailing list