blob: 7358a8a63ec86b90920cd5b7f1a4e1cc01ffbef0 [file] [log] [blame]
/* { dg-do compile { target ia32 } } */
/* { dg-require-effective-target nonpic } */
/* { dg-options "-O2" } */
typedef void *ira_loop_tree_node_t;
extern int end (int);
extern int doo (int);
void
ira_traverse_loop_tree (int bb_p, ira_loop_tree_node_t loop_node,
void (*preorder_func) (ira_loop_tree_node_t),
void (*postorder_func) (ira_loop_tree_node_t))
{
int l, r = 0x1, h = 0, j = 0;
if (preorder_func)
(*preorder_func) (loop_node);
if (bb_p)
{
for (l = 0; l < end (l); l++)
{
r += doo (l);
h += (l + 1) * 3;
h %= (l + 1);
r -= doo (h);
j += (l + 1) * 7;
j %= (l + 1);
r += doo (j);
}
}
if (postorder_func)
(*postorder_func) (loop_node);
}
/* { dg-final { scan-assembler "jmp\[ \t\]*.%eax" } } */