view gcc/testsuite/g++.old-deja/g++.jason/groff1.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

// { dg-do run  }
// PRMS Id: 3744
// Bug: unswitching a COND_EXPR initializer fails to set SIDE_EFFECTS on the
// result, so expand_expr ignores it.

extern "C" {
  int printf(const char *,...);
  void exit(int);
}

struct A {
  int x;
  int y;

  A() : x(0), y(0) { }
};

struct S {
  S() : flags(0) { }
  unsigned flags;
  A from;
  void foo(const A &pos);
};

void S::foo(const A &pos)
{
  A a = flags ? from : pos;
  printf("%d %d\n", a.x, a.y);
  if (a.x != 17 || a.y != 12)
    exit (1);
}

int main()
{
  A pos;
  pos.x = 17;
  pos.y = 12;
  S s;
  s.foo(pos);
  return 0;
}