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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-12-14
                 CC|                            |jakub at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r230365 aka merge of the delayed folding branch.

struct B { int &b; };
constexpr B foo (int &x) { return { x }; }
struct C { int c; };
constexpr B bar (C &y) { return foo (y.c); }

int
main ()
{
  C a { 42 };
  if (&foo (a.c).b == nullptr) __builtin_abort ();
  if (&a.c != &foo (a.c).b) __builtin_abort ();
  if (&bar (a).b == nullptr) __builtin_abort ();
  if (&a.c != &bar (a).b) __builtin_abort ();
}

shows IMHO better what's going on, already in *.original dump the PARM_DECL y
leaks into the main function (supposedly it should have been replaced by &a.

Reply via email to