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

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |marxin at gcc dot gnu.org

--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
So running:

$ g++ pr77745.C -O2 -flto -fno-use-linker-plugin -m32 -fpic -mtune=native

for:

$ cat pr77745.C
// { dg-do run }
//
#include <new>
#include <stdio.h>

//inline void* operator new(__SIZE_TYPE__, void* __p) noexcept { return __p; }

long
__attribute__((noinline))
foo(char *c1, char *c2)
{
  long *p1 = new (c1) long;
  *p1 = 100;
  long long *p2 = new (c2) long long;
  *p2 = 200;
  long *p3 = new (c2) long;
  *p3 = 200;
  return *p1;
}
int main()
{
  union {
      char c;
      long l;
      long long ll;
  } c;
  if (foo(&c.c, &c.c) != 200)
  {
    fprintf (stderr, "aborting\n");
    __builtin_abort();
  }
}

Aborts for all GCC releases I have (4.5.0+).

Reply via email to