https://issues.dlang.org/show_bug.cgi?id=17461

--- Comment #1 from Manu <[email protected]> ---
For clarity; the high-level flow of the disassembly is:

void t()
{
  B __tmpfordtor1804 = u1();

  B __tmpfordtor1805 = void; // uninitialised

  if (__tmpfordtor1804)
  {
    __tmpfordtor1805 = u1(); // initialised here

    A(__tmpfordtor1805);
  }
  else
  {
    A(u2);
  }

  // __tmpfordtor1805 destructs, may not have been initialised!
  __tmpfordtor1805.~this();

  // __tmpfordtor1804 destructs, no problem
  __tmpfordtor1804.~this();
}

--

Reply via email to