- /* 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 */
- ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK);
- irg_walk_graph(irg, firm_clear_link, collect_call, node);
-
- /* iterate calls */
- for (node = get_irn_link(node); node; node = get_irn_link(node)) {
- int i;
- assert(is_Call(node));
-
- for (i = get_Call_n_callees(node) - 1; i >= 0; --i) {
- ir_entity *ent = get_Call_callee(node, i);
-
- if (get_entity_irg(ent) && get_entity_link(ent) != MARK) {
- set_entity_link(ent, MARK);
- ARR_APP1(ir_entity *, marked, ent);
-
- DB((dbg, LEVEL_1, " method %+F can be called from Call %+F: kept alive.\n",
- ent, node));
- }
+ ir_graph *irg = get_entity_irg(marked[i]);
+ ir_node *node;
+
+ if (irg == NULL)
+ continue;
+
+ node = get_irg_end(irg);
+
+ /* collect calls */
+ ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK);
+ irg_walk_graph(irg, firm_clear_link, collect_call, node);
+
+ /* iterate calls */
+ for (node = get_irn_link(node); node; node = get_irn_link(node)) {
+ int i;
+ assert(is_Call(node));
+
+ for (i = get_Call_n_callees(node) - 1; i >= 0; --i) {
+ ir_entity *ent = get_Call_callee(node, i);
+
+ if (get_entity_irg(ent) && get_entity_link(ent) != MARK) {
+ set_entity_link(ent, MARK);
+ ARR_APP1(ir_entity *, marked, ent);
+
+ DB((dbg, LEVEL_1, " method %+F can be called from Call %+F: kept alive.\n",
+ ent, node));