public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/111773] New: Inconsistent optimization of replaced operator new()
@ 2023-10-11 15:59 vlad at solidsands dot nl
  2023-10-11 16:05 ` [Bug c++/111773] " pinskia at gcc dot gnu.org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: vlad at solidsands dot nl @ 2023-10-11 15:59 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 111773
           Summary: Inconsistent optimization of replaced operator new()
           Product: gcc
           Version: 13.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vlad at solidsands dot nl
  Target Milestone: ---

#include <new>
#include <cstdint>
#include <cstdio>

int a[10];
void* operator new(std::size_t) {
    return a;
}

int main() {
    int* p = static_cast<int*>(::operator new(sizeof(int)));

    std::ptrdiff_t x = a - p;

    printf("%ld %d", x, x == 0);

    return 0;
}


Here, GCC with -O1 optimizes 'x' to 0 and 'x == 0' to false at the same time.

Compiler explorer link: https://godbolt.org/z/4Y3eeY56r

---
Also, possibly related:

#include <new>

void* operator new(std::size_t sz)
{
    throw std::bad_alloc{};
}

int main()
{
    int* p1 = static_cast<int*>(::operator new(sizeof(int)));

    return 10;
}

Here, again with -O1, terminate is not called, and the program returned
successfully. However, the program returned 0 instead of 10.

Compiler explorer link: https://godbolt.org/z/9oczTzP7s

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-10-19  6:16 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-11 15:59 [Bug c++/111773] New: Inconsistent optimization of replaced operator new() vlad at solidsands dot nl
2023-10-11 16:05 ` [Bug c++/111773] " pinskia at gcc dot gnu.org
2023-10-12  8:15 ` [Bug ipa/111773] " rguenth at gcc dot gnu.org
2023-10-12  8:48 ` sjames at gcc dot gnu.org
2023-10-13  6:34 ` cvs-commit at gcc dot gnu.org
2023-10-13  6:43 ` rguenth at gcc dot gnu.org
2023-10-18 14:09 ` vlad at solidsands dot nl
2023-10-19  6:16 ` rguenth at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).