| /* PR tree-optimization/32772 */ |
| |
| struct S |
| { |
| unsigned long bits[1]; |
| }; |
| |
| void f1 (int, unsigned long *); |
| int f2 (void); |
| int f3 (int, unsigned long *); |
| int f4 (int, unsigned long *); |
| |
| static inline __attribute__ ((always_inline)) |
| void baz (int x, volatile struct S *y) |
| { |
| f1 (x, y->bits); |
| } |
| |
| static int |
| bar (int x, struct S *y) |
| { |
| int n; |
| if (__builtin_constant_p (x) ? f3 (x, y->bits) : f4 (x, y->bits)) |
| baz (x, y); |
| for (n = f2 (); n < 8; n = f2 ()) |
| f3 (n, y->bits); |
| } |
| |
| void |
| foo (int x, int y) |
| { |
| struct S m; |
| while ((y = bar (x, &m)) >= 0); |
| } |