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

            Bug ID: 94537
           Summary: Possibly wrong code with mandatory copy elision and
                    'this' pointer arithmetic inside an NSDMI
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ppalka at gcc dot gnu.org
  Target Milestone: ---

$ cat testcase.C
struct A { A *p = this-1; int n = p->n; };

constexpr A
foo()
{
  return {};
}

A a[2] = { {nullptr, 5}, foo() };

int
main()
{
  if (a[1].n != 5)
    __builtin_abort ();
}

$ g++ testcase.C
$ ./a.out
zsh: abort      ./a.out

Reply via email to