- /* not called? check methods in superclass(es) */
- n_over = get_entity_n_overwrittenby ((entity*) method);
- for (i = 0; !is_target && (i < n_over); i ++) {
- entity *over = get_entity_overwrittenby ((entity*) method, i);
- is_target |= is_call_target (over);
- }
+ /* init_tables has added main_irg to _live_graphs */
+
+ /* Need to take care of graphs that are externally
+ visible or sticky. Pretend that they are called: */
+ for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
+ ir_graph *graph = get_irp_irg(i);
+ ir_entity *ent = get_irg_entity(graph);
+ ir_linkage linkage = get_entity_linkage(ent);
+
+ if (entity_is_externally_visible(ent)
+ || (linkage & IR_LINKAGE_HIDDEN_USER)) {
+ eset_insert(_live_graphs, graph);
+ }
+ }
+
+ while (rerun) {
+ ir_graph *graph;
+
+ /* start off new */
+ eset *live_graphs = _live_graphs;
+ _live_graphs = eset_create();
+
+ DB((dbg, LEVEL_2, "RTA: RUN %i\n", n_runs));
+
+ /* collect what we have found previously */
+ eset_insert_all(_live_graphs, live_graphs);
+
+ rerun = FALSE;
+ for (graph = eset_first(live_graphs);
+ graph != NULL;
+ graph = eset_next(live_graphs)) {
+ DB((dbg, LEVEL_2, "RTA: RUN %i: considering graph of %+F\n", n_runs, graph));
+ rerun |= rta_fill_graph(graph);
+ }
+ eset_destroy(live_graphs);
+ ++n_runs;
+ }
+
+#ifdef INTERPROCEDURAL_VIEW
+ set_interprocedural_view(old_ip_view); /* cover up our traces */
+#endif