Checks now the Load_mode
[libfirm] / ir / ir / ircgopt.c
index cf1bd51..9d26200 100644 (file)
@@ -83,13 +83,13 @@ void gc_irgs(int n_keep, entity ** keep_arr) {
   /* clean */
   for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
     ir_graph * irg = get_irp_irg(i);
-    entity * ent = get_irg_ent(irg);
+    entity * ent = get_irg_entity(irg);
     /* Removing any graph invalidates all interprocedural loop trees. */
     if (get_irg_loopinfo_state(irg) == loopinfo_ip_consistent ||
         get_irg_loopinfo_state(irg) == loopinfo_ip_inconsistent) {
       free_loop_information(irg);
     }
-    if (get_entity_link(ent) != MARK) {
+    if ((get_entity_visibility(ent) == visibility_local) && (get_entity_link(ent) != MARK)) {
       remove_irp_irg(irg);
       set_entity_peculiarity(ent, peculiarity_description);
       if (get_opt_dead_method_elimination_verbose()) {