set_entity_link(marked[i], MARK);
}
for (i = 0; i < ARR_LEN(marked); ++i) {
- ir_graph * irg = get_entity_irg(marked[i]);
- ir_node * node = get_irg_end(irg);
- /* collect calls */
- irg_walk_graph(irg, clear_link, (irg_walk_func *) collect_call, node);
- /* iterate calls */
- for (node = get_irn_link(node); node; node = get_irn_link(node)) {
- int i;
- assert(get_irn_op(node) == op_Call);
- for (i = get_Call_n_callees(node) - 1; i >= 0; --i) {
- entity * ent = get_Call_callee(node, i);
- if (ent && get_entity_irg(ent) && get_entity_link(ent) != MARK) {
- set_entity_link(ent, MARK);
- ARR_APP1(entity *, marked, ent);
+ /* check for extern methods, these don't have an IRG */
+ if (get_entity_visibility(marked[i]) != visibility_external_allocated) {
+ ir_graph * irg = get_entity_irg(marked[i]);
+ ir_node * node = get_irg_end(irg);
+ /* collect calls */
+ irg_walk_graph(irg, clear_link, (irg_walk_func *) collect_call, node);
+ /* iterate calls */
+ for (node = get_irn_link(node); node; node = get_irn_link(node)) {
+ int i;
+ assert(get_irn_op(node) == op_Call);
+ for (i = get_Call_n_callees(node) - 1; i >= 0; --i) {
+ entity * ent = get_Call_callee(node, i);
+ if (ent && get_entity_irg(ent) && get_entity_link(ent) != MARK) {
+ set_entity_link(ent, MARK);
+ ARR_APP1(entity *, marked, ent);
+ }
}
}
}