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

            Bug ID: 81420
           Summary: When a reference is bound to a member in the base of a
                    temporary, lifetime of the temporary is not extended
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ryan.brown at ableton dot com
  Target Milestone: ---

This is a followup to bug #54293. The incorrect behavior can be seen by
modifying the test introduced for that bug [0] to use a base class:

int d;

struct A
{
  int i;
  ~A() { ++d; };
};

struct B : A {};

int main()
{
  {
    const int &r = B().i;
    if (d != 0)
      return 1;
  }
  if (d != 1)
    return 1;
}

This test passes for clang HEAD and fails for GCC HEAD.

[0]
https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/testsuite/g%2B%2B.dg/init/ref19.C?view=markup&pathrev=240819

Reply via email to