- only Phi, Block and Keep nodes can be kept alive!
Workaround for beabi:
- beabi needs to keep a Proj(M) :-(
[r14005]
void
add_End_keepalive (ir_node *end, ir_node *ka) {
assert(end->op == op_End);
+ assert((is_Phi(ka) || is_Proj(ka) || is_Block(ka) || is_irn_keep(ka)) && "Only Phi, Block or Keep nodes can be kept alive!");
add_irn_n(end, ka);
}
if (! is_Block_dead(ka)) {
in[j++] = ka;
}
+ continue;
} else if (is_irn_pinned_in_irg(ka) && is_Block_dead(get_nodes_block(ka))) {
continue;
- } if (is_Phi(ka) || is_irn_keep(ka))
+ }
+ /* FIXME: beabi need to keep a Proj(M) */
+ if (is_Phi(ka) || is_irn_keep(ka) || is_Proj(ka))
in[j++] = ka;
}
if (j != n_keepalives)