#include "error.h"
#include "debug.h"
-DEBUG_ONLY(static firm_dbg_module_t *dbg);
+DEBUG_ONLY(static firm_dbg_module_t *dbg;)
static void visit_entity(ir_entity *entity);
void garbage_collect_entities(void)
{
- size_t i, n;
+ size_t i;
ir_segment_t s;
FIRM_DBG_REGISTER(dbg, "firm.opt.garbagecollect");
/* start a type walk for all externally visible entities */
- irp_reserve_resources(irp, IR_RESOURCE_TYPE_VISITED);
+ irp_reserve_resources(irp, IRP_RESOURCE_TYPE_VISITED);
inc_master_type_visited();
inc_max_irg_visited();
/* remove graphs of non-visited functions
* (we have to count backwards so we can safely call remove_irp_irg
* while iterating) */
- for (i = 0, n = get_irp_n_irgs(); i < n; ++i) {
- ir_graph *irg = get_irp_irg(i);
+ for (i = get_irp_n_irgs(); i > 0;) {
+ ir_graph *irg = get_irp_irg(--i);
ir_entity *entity = get_irg_entity(irg);
if (entity_visited(entity))
ir_type *type = get_segment_type(s);
garbage_collect_in_segment(type);
}
- irp_free_resources(irp, IR_RESOURCE_TYPE_VISITED);
+ irp_free_resources(irp, IRP_RESOURCE_TYPE_VISITED);
}
ir_prog_pass_t *garbage_collect_entities_pass(const char *name)