X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Fcgana.c;h=afa74dd7aa2c9dbb79c2225a82cde2f544f3348a;hb=d2dc2564b47d9c113d7e6e598574e9733627fcca;hp=2f014e0ffae09f76d130e8a3b47460feaaa102e0;hpb=11a3f35d9a69ef4d60263154bcc9ea19eb8228f9;p=libfirm diff --git a/ir/ana/cgana.c b/ir/ana/cgana.c index 2f014e0ff..afa74dd7a 100644 --- a/ir/ana/cgana.c +++ b/ir/ana/cgana.c @@ -646,6 +646,11 @@ static void callee_ana_node(ir_node * node, eset * methods) { set_irn_link(node, MARK); switch (get_irn_opcode(node)) { + case iro_Const: + /* A direct address call. We tread this as an external + call and ignore it completely. */ + eset_insert(methods, MARK); /* free method -> unknown */ + break; case iro_SymConst: if (get_SymConst_kind(node) == symconst_addr_ent) { entity * ent = get_SymConst_entity(node); @@ -767,8 +772,9 @@ static void callee_ana(void) { int i; /* Alle Graphen analysieren. */ for (i = get_irp_n_irgs() - 1; i >= 0; --i) { - irg_walk_graph(get_irp_irg(i), callee_walker, remove_Tuples, NULL); - set_irg_callee_info_state(get_irp_irg(i), irg_callee_info_consistent); + ir_graph *irg = get_irp_irg(i); + irg_walk_graph(irg, callee_walker, remove_Tuples, NULL); + set_irg_callee_info_state(irg, irg_callee_info_consistent); } set_irp_callee_info_state(irg_callee_info_consistent); }