summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.jason/groff1.C
blob: 636317956fbe801834a8b4187d97c6b63e472c6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// { 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;
}