blob: 6439527e89c06177095a291b51482cc6a1d6217f [file] [log] [blame]
/* This testcase caused infinite loop in life info computation
after if conversion on IA-64. Conditional register dead for
pseudo holding sign-extended k was improperly computed,
resulting in this pseudo beeing live at start of bb if it was
dead at the end and vice versa; as it was a bb which had edge
to itself, this resulted in alternative propagating this basic
block forever. */
typedef struct {
unsigned char a;
unsigned char b;
} S0;
typedef struct {
S0 *c;
int d;
unsigned int e;
unsigned char *f[3];
void *g;
} S1;
int bar (int, void *);
int foo (S1 *x, float y)
{
S0 *h;
int i, j, k, l, m;
float n, o, p;
unsigned char *q, *r[3];
h = x->c;
m = h->a;
l = h->b;
n = y;
o = 0.0;
if (x->d == 8)
for (j = 0; j < x->e; j++)
for (k = 0; k < 3; k++)
{
n = y;
o = 0.0;
if (m)
q = x->f[k] + x->e - 1 - j;
else
q = x->f[k] + j;
p = (*q - o) * y / (n - o);
p = 0.0 > p ? 0.0 : p;
p = y < p ? y : p;
if (l)
p = r[k][(int) p];
bar (p, x->g);
}
return 1;
}