init2.C   [plain text]


// { dg-do run }

// Copyright (C) 2001 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 20 Dec 2001 <nathan@nathan@codesourcery.com>

// PR 160. Wrong code emitted for some reference initializers.

void Foo ()
{
}

int fail;

class C
{
  public:
  int m;
  int &r;
  
  C () ;
};

C::C ()
  : m (1), r ((Foo (), m))
{
  m = 10;
  
  if (r != m)
    fail = 1;
  else if (&m != &r)
    fail = 2;
}
int main ()
{
  int m (1);
  int &r ((Foo (),m));

  m = 10;
  if (r != m)
    fail = 3;
  else if (&r != &m)
    fail = 4;

  if (!fail)
    {
      C c;
    }
  return fail;
}