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;
}
|