https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98130
Bug ID: 98130 Summary: [11 regression] placement new fails on webkit-gtk-2.28.4 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: slyfox at gcc dot gnu.org Target Milestone: --- Initial problem is observed on liferea crash at startup against webkit-gtk-2.28.4 built with gcc-11. If I reduced original source correctly here is minimized version of the crash: //$ cat a.cc /* $ g++-10.2.0 -O1 -fno-strict-aliasing a.cc -o a-10 && ./a-10 &a=0x7ffc83475894 $ g++-11.0.0 -O1 -fno-strict-aliasing a.cc -o a-11 && ./a-11 Illegal instruction (core dumped) ./a-11 */ #if 0 # include <memory> #else inline void* operator new(unsigned long, void* __p) { return __p; } #endif #include <stdio.h> typedef int* T; static T storage; static T* p = &storage; // '__attribute__((__always_inline__))' seems to be the trigger static inline __attribute__((__always_inline__)) void append(T value) { new (p) T(value); } int main() { int a; append(&a); if (!*p) __builtin_trap(); fprintf(stderr, "&a=%p\n", *p); }