/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*/
static bool add_implementing_graphs(ir_entity *method)
{
- int i;
- int n_over = get_entity_n_overwrittenby(method);
+ size_t i;
+ size_t n_over = get_entity_n_overwrittenby(method);
ir_graph *graph = get_entity_irg(method);
bool change = false;
static void rta_act(ir_node *node, void *env)
{
bool *change = (bool*)env;
- ir_opcode op = get_irn_opcode(node);
+ unsigned op = get_irn_opcode(node);
if (iro_Call == op) { /* CALL */
ir_entity *ent = NULL;
*/
static int rta_fill_incremental(void)
{
- int i;
+ size_t i, n;
int n_runs = 0;
bool rerun = true;
/* 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) {
+ for (i = 0, n = get_irp_n_irgs(); i < n; ++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)) {
+ if ((linkage & IR_LINKAGE_HIDDEN_USER) || entity_is_externally_visible(ent))
pset_new_insert(_live_graphs, graph);
- }
}
while (rerun) {
DB((dbg, LEVEL_2, "RTA: RUN %i\n", n_runs));
/* collect what we have found previously */
- foreach_pset_new(live_graphs, graph, iter) {
+ foreach_pset_new(live_graphs, ir_graph*, graph, iter) {
pset_new_insert(_live_graphs, graph);
}
rerun = false;
- foreach_pset_new(live_graphs, graph, iter) {
+ foreach_pset_new(live_graphs, ir_graph*, graph, iter) {
DB((dbg, LEVEL_2, "RTA: RUN %i: considering graph of %+F\n", n_runs, graph));
rerun |= rta_fill_graph(graph);
}
/**
* Count the number of graphs that we have found to be live.
*/
-static int stats(void)
+static size_t stats(void)
{
- int i;
- int n_live_graphs = 0;
+ size_t i, n;
+ size_t n_live_graphs = 0;
- for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
+ for (i = 0, n = get_irp_n_irgs(); i < n; ++i) {
ir_graph *graph = get_irp_irg(i);
if (rta_is_alive_graph(graph))
*/
static void init_tables(void)
{
- ir_type *tp;
- int i, n;
- ir_graph *irg;
+ ir_graph *irg;
+ ir_segment_t segment;
_live_classes = XMALLOC(pset_new_t);
pset_new_init(_live_classes);
pset_new_insert(_live_graphs, irg);
}
- /* Find static allocated classes */
- tp = get_glob_type();
- n = get_class_n_members(tp);
- for (i = 0; i < n; ++i) {
- ir_type *member_type = get_entity_type(get_class_member(tp, i));
- if (is_Class_type(member_type))
- pset_new_insert(_live_classes, member_type);
- }
+ /* Find static allocated classes in all segments */
+ for (segment = IR_SEGMENT_FIRST; segment <= IR_SEGMENT_LAST; ++segment) {
+ ir_type *tp = get_segment_type(segment);
+ size_t n = get_compound_n_members(tp);
+ size_t i;
- tp = get_tls_type();
- n = get_struct_n_members(tp);
- for (i = 0; i < n; ++i) {
- ir_type *member_type = get_entity_type(get_struct_member(tp, i));
- if (is_Class_type(member_type))
- pset_new_insert(_live_classes, member_type);
+ for (i = 0; i < n; ++i) {
+ ir_type *member_type = get_entity_type(get_compound_member(tp, i));
+ if (is_Class_type(member_type))
+ pset_new_insert(_live_classes, member_type);
+ }
}
-
- /** @FIXME: add constructors/destructors */
}
/*
# ifdef DEBUG_libfirm
{
- int i;
- for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
- irg_verify(get_irp_irg(i), 0);
+ size_t i;
+ for (i = get_irp_n_irgs(); i > 0;) {
+ irg_verify(get_irp_irg(--i), 0);
}
tr_verify();
}
n_runs = rta_fill_incremental();
- DB((dbg, LEVEL_1, "RTA: n_graphs = %i\n", get_irp_n_irgs()));
- DB((dbg, LEVEL_1, "RTA: n_live_graphs = %i\n", stats()));
+ DB((dbg, LEVEL_1, "RTA: n_graphs = %zu\n", get_irp_n_irgs()));
+ DB((dbg, LEVEL_1, "RTA: n_live_graphs = %zu\n", stats()));
DB((dbg, LEVEL_1, "RTA: n_runs = %i\n", n_runs));
# ifdef DEBUG_libfirm
{
- int i;
+ size_t i;
- for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
- irg_verify(get_irp_irg(i), 0);
+ for (i = get_irp_n_irgs(); i > 0;) {
+ irg_verify(get_irp_irg(--i), 0);
}
tr_verify();
}
*/
void rta_delete_dead_graphs(void)
{
- int i, n_dead_irgs, n_graphs = get_irp_n_irgs();
+ size_t i, n_dead_irgs, n_graphs = get_irp_n_irgs();
ir_graph *irg, *next_irg, *dead_irgs;
irp_reserve_resources(irp, IR_RESOURCE_IRG_LINK);
n_dead_irgs = 0;
dead_irgs = NULL;
- for (i = n_graphs - 1; i >= 0; --i) {
- irg = get_irp_irg(i);
+ for (i = n_graphs; i > 0;) {
+ irg = get_irp_irg(--i);
if (! rta_is_alive_graph(irg)) {
set_irg_link(irg, dead_irgs);
/* Hmm, probably we need to run this only if dead_irgs is non-NULL */
type_walk(make_entity_to_description, NULL, NULL);
for (irg = dead_irgs; irg != NULL; irg = next_irg) {
- next_irg = get_irg_link(irg);
+ next_irg = (ir_graph*) get_irg_link(irg);
remove_irp_irg(irg);
}
- DB((dbg, LEVEL_1, "RTA: dead methods = %i\n", n_dead_irgs));
+ DB((dbg, LEVEL_1, "RTA: dead methods = %zu\n", n_dead_irgs));
irp_free_resources(irp, IR_RESOURCE_IRG_LINK);
}
void rta_cleanup(void)
{
# ifdef DEBUG_libfirm
- int i;
- for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
- irg_verify(get_irp_irg(i), 0);
+ size_t i;
+ for (i = get_irp_n_irgs(); i > 0;) {
+ irg_verify(get_irp_irg(--i), 0);
}
tr_verify();
# endif /* defined DEBUG_libfirm */
/* dump our opinion */
void rta_report(void)
{
- int i, n;
+ size_t i, n;
n = get_irp_n_types();
for (i = 0; i < n; ++i) {