35 lines
560 B
C
35 lines
560 B
C
/* 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);
|
|
}
|