/*- ... and now the keep alives. -*/
/* First pick the not marked block nodes and walk them. We must pick these
first as else we will oversee blocks reachable from Phis. */
- irn_arity = get_irn_arity(oe);
+ irn_arity = get_End_n_keepalives(oe);
for (i = 0; i < irn_arity; i++) {
- ka = get_irn_intra_n(oe, i);
- if (is_Block(ka) &&
- (get_irn_visited(ka) <= vfl)) {
- /* We must keep the block alive and copy everything reachable */
- set_irg_visited(irg, vfl);
- irg_walk(ka, copy_node, copy_preds, INT_TO_PTR(copy_node_nr));
+ ka = get_End_keepalive(oe, i);
+ if (is_Block(ka)) {
+ if (get_irn_visited(ka) <= vfl) {
+ /* We must keep the block alive and copy everything reachable */
+ set_irg_visited(irg, vfl);
+ irg_walk(ka, copy_node, copy_preds, INT_TO_PTR(copy_node_nr));
+ }
add_End_keepalive(ne, get_new_node(ka));
}
}
/* Now pick other nodes. Here we will keep all! */
- irn_arity = get_irn_arity(oe);
+ irn_arity = get_End_n_keepalives(oe);
for (i = 0; i < irn_arity; i++) {
- ka = get_irn_intra_n(oe, i);
+ ka = get_End_keepalive(oe, i);
if (!is_Block(ka)) {
if (get_irn_visited(ka) <= vfl) {
/* We didn't copy the node yet. */
irg->value_table = new_identities();
/* Copy the graph from the old to the new obstack */
- copy_graph_env(1);
+ copy_graph_env(/*copy_node_nr=*/1);
/* Free memory from old unoptimized obstack */
obstack_free(graveyard_obst, 0); /* First empty the obstack ... */
ir_type *called_frame;
irg_inline_property prop = get_irg_inline_property(called_graph);
- if ( (prop != irg_inline_forced) &&
+ if ( (prop < irg_inline_forced) &&
(!get_opt_optimize() || !get_opt_inline() || (prop == irg_inline_forbidden))) return 0;
/* Do not inline variadic functions. */
ir_graph *callee;
callee = get_entity_irg(get_SymConst_entity(get_Call_ptr(env.calls[i])));
if (((_obstack_memory_used(callee->obst) - (int)obstack_room(callee->obst)) < size) ||
- (get_irg_inline_property(callee) == irg_inline_forced)) {
+ (get_irg_inline_property(callee) >= irg_inline_forced)) {
inline_method(env.calls[i], callee);
}
}
if (callee &&
((is_smaller(callee, size) && (env->n_nodes < maxsize)) || /* small function */
- (get_irg_inline_property(callee) == irg_inline_forced))) {
+ (get_irg_inline_property(callee) >= irg_inline_forced))) {
if (!phiproj_computed) {
phiproj_computed = 1;
collect_phiprojs(current_ir_graph);