projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
reindent escape_ana.c in firm style
[libfirm]
/
ir
/
opt
/
garbage_collect.c
diff --git
a/ir/opt/garbage_collect.c
b/ir/opt/garbage_collect.c
index
5e8c529
..
64c0a67
100644
(file)
--- a/
ir/opt/garbage_collect.c
+++ b/
ir/opt/garbage_collect.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C)
2010
University of Karlsruhe. All right reserved.
+ * Copyright (C)
1995-2011
University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*
* This file is part of libFirm.
*
@@
-45,12
+45,16
@@
static void visit_node(ir_node *node, void *env)
ir_entity *entity;
(void) env;
ir_entity *entity;
(void) env;
- if (!is_SymConst(node))
- return;
- if (!SYMCONST_HAS_ENT(get_SymConst_kind(node)))
+ if (is_SymConst(node)) {
+ if (!SYMCONST_HAS_ENT(get_SymConst_kind(node)))
+ return;
+ entity = get_SymConst_entity(node);
+ } else if (is_Sel(node)) {
+ entity = get_Sel_entity(node);
+ } else {
return;
return;
+ }
- entity = get_SymConst_entity(node);
visit_entity(entity);
}
visit_entity(entity);
}
@@
-61,7
+65,6
@@
static void start_visit_node(ir_node *node)
if (get_irg_visited(irg) < get_max_irg_visited()) {
set_irg_visited(irg, get_max_irg_visited());
}
if (get_irg_visited(irg) < get_max_irg_visited()) {
set_irg_visited(irg, get_max_irg_visited());
}
- current_ir_graph = irg;
irg_walk_2(node, visit_node, NULL, NULL);
}
irg_walk_2(node, visit_node, NULL, NULL);
}
@@
-77,7
+80,7
@@
static void visit_initializer(ir_initializer_t *initializer)
case IR_INITIALIZER_COMPOUND: {
size_t i;
case IR_INITIALIZER_COMPOUND: {
size_t i;
- for(i = 0; i < initializer->compound.n_initializers; ++i) {
+ for
(i = 0; i < initializer->compound.n_initializers; ++i) {
ir_initializer_t *subinitializer
= initializer->compound.initializers[i];
visit_initializer(subinitializer);
ir_initializer_t *subinitializer
= initializer->compound.initializers[i];
visit_initializer(subinitializer);
@@
-99,8
+102,8
@@
static void visit_entity(ir_entity *entity)
if (entity->initializer != NULL) {
visit_initializer(entity->initializer);
} else if (entity_has_compound_ent_values(entity)) {
if (entity->initializer != NULL) {
visit_initializer(entity->initializer);
} else if (entity_has_compound_ent_values(entity)) {
-
in
t i;
-
in
t n_members = get_compound_ent_n_values(entity);
+
size_
t i;
+
size_
t n_members = get_compound_ent_n_values(entity);
for (i = 0; i < n_members; ++i) {
ir_node *node = get_compound_ent_value(entity, i);
start_visit_node(node);
for (i = 0; i < n_members; ++i) {
ir_node *node = get_compound_ent_value(entity, i);
start_visit_node(node);
@@
-140,14
+143,13
@@
static void garbage_collect_in_segment(ir_type *segment)
DB((dbg, LEVEL_1, " removing entity %+F\n", entity));
DB((dbg, LEVEL_1, " removing entity %+F\n", entity));
- /* TODO: this is O(n^2) improve our interfaces! */
- remove_class_member(get_entity_owner(entity), entity);
+ free_entity(entity);
}
}
void garbage_collect_entities(void)
{
}
}
void garbage_collect_entities(void)
{
-
int
i;
+
size_t
i;
ir_segment_t s;
FIRM_DBG_REGISTER(dbg, "firm.opt.garbagecollect");
ir_segment_t s;
FIRM_DBG_REGISTER(dbg, "firm.opt.garbagecollect");
@@
-167,14
+169,14
@@
void garbage_collect_entities(void)
/* remove graphs of non-visited functions
* (we have to count backwards so we can safely call remove_irp_irg
* while iterating) */
/* remove graphs of non-visited functions
* (we have to count backwards so we can safely call remove_irp_irg
* while iterating) */
- for (i = get_irp_n_irgs()
-1; i >= 0; --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))
continue;
ir_entity *entity = get_irg_entity(irg);
if (entity_visited(entity))
continue;
- DB((dbg, LEVEL_1, " freeing method %+F\n",
entity));
+ DB((dbg, LEVEL_1, " freeing method %+F\n", entity));
remove_irp_irg(irg);
}
remove_irp_irg(irg);
}