* construction.
*/
typedef struct scc_info {
- bool in_stack; /**< Marks whether node is on the stack. */
+ int in_stack; /**< Marks whether node is on the stack. */
int dfn; /**< Depth first search number. */
int uplink; /**< dfn number of ancestor. */
} scc_info;
static INLINE void
mark_irn_in_stack (ir_node *n) {
scc_info *info = get_irn_link(n);
- info->in_stack = true;
+ info->in_stack = 1;
}
/**
static INLINE void
mark_irn_not_in_stack (ir_node *n) {
scc_info *info = get_irn_link(n);
- info->in_stack = false;
+ info->in_stack = 0;
}
/**
* Returns whether node n is on the stack.
*/
-static INLINE bool
+static INLINE int
irn_is_in_stack (ir_node *n) {
scc_info *info = get_irn_link(n);
return info->in_stack;
/**
* Initializes the scc algorithm for the intraprocedural case.
+ * Add scc info to every block node.
*/
static INLINE void
init_scc (ir_graph *irg) {
* Condition for breaking the recursion: n is the block
* that gets the initial control flow from the Start node.
*/
-static bool is_outermost_StartBlock(ir_node *n) {
+static int is_outermost_StartBlock(ir_node *n) {
/* Test whether this is the outermost Start node. If so
recursion must end. */
assert(is_Block(n));
if ((get_Block_n_cfgpreds(n) == 1) &&
(get_irn_op(skip_Proj(get_Block_cfgpred(n, 0))) == op_Start) &&
(get_nodes_block(skip_Proj(get_Block_cfgpred(n, 0))) == n)) {
- return true;
+ return 1;
}
- return false;
+ return 0;
}
-/** Returns true if n is a loop header, i.e., it is a Block node
+/** Returns non-zero if n is a loop header, i.e., it is a Block node
* and has predecessors within the cfloop and out of the cfloop.
*
* @param n the block node to check
* @param root only needed for assertion.
*/
-static bool
+static int
is_head (ir_node *n, ir_node *root)
{
int i, arity;
/**
- * Returns true if n is possible loop head of an endless loop.
+ * Returns non-zero if n is possible loop head of an endless loop.
* I.e., it is a Block, Phi or Filter node and has only predecessors
* within the loop.
*
* @param n the block node to check
* @param root only needed for assertion.
*/
-static bool
+static int
is_endless_head (ir_node *n, ir_node *root)
{
int i, arity;
current_loop = NULL;
new_loop(); /* sets current_loop */
- set_interprocedural_view(true);
+ set_interprocedural_view(1);
inc_max_irg_visited();
for (i = 0; i < get_irp_n_irgs(); i++)
int rem = get_interprocedural_view();
assert(is_Block(block));
- set_interprocedural_view(true);
+ set_interprocedural_view(1);
clear_backedges(block);
- set_interprocedural_view(false);
+ set_interprocedural_view(0);
clear_backedges(block);
set_interprocedural_view(rem);
}
if (get_irg_loop(irg))
loop_reset_backedges(get_irg_loop(irg));
set_irg_loop(irg, NULL);
- set_irg_loopinfo_state(current_ir_graph, loopinfo_none);
+ set_irg_loopinfo_state(irg, loopinfo_none);
/* We cannot free the cfloop nodes, they are on the obstack. */
}
void free_all_cfloop_information (void) {
int i;
int rem = get_interprocedural_view();
- set_interprocedural_view(true); /* To visit all filter nodes */
- for (i = 0; i < get_irp_n_irgs(); i++) {
+ set_interprocedural_view(1); /* To visit all filter nodes */
+ for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
free_cfloop_information(get_irp_irg(i));
}
set_interprocedural_view(rem);