X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Firtypeinfo.c;h=4205fe44891845f0546628ac7aa82026b5b61d58;hb=6ccff2965d94c272f71df2a1655336af47bb7753;hp=4c20305b11be08d9fba89edd4d829393a1e856d7;hpb=60a271b605cd365033e0a4df54f3cc53ac831957;p=libfirm diff --git a/ir/ana/irtypeinfo.c b/ir/ana/irtypeinfo.c index 4c20305b1..4205fe448 100644 --- a/ir/ana/irtypeinfo.c +++ b/ir/ana/irtypeinfo.c @@ -1,5 +1,5 @@ /* - * 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. * @@ -22,7 +22,6 @@ * @brief Data structure to hold type information for nodes. * @author Goetz Lindenmaier * @date 28.8.2003 - * @version $Id$ * @brief * Data structure to hold type information for nodes. * @@ -67,8 +66,9 @@ ir_type *initial_type = NULL; * Calling set/get_irn_type is invalid before calling init. Requires memory * in the order of MIN(, #irnodes). */ -void init_irtypeinfo(void) { - int i; +void init_irtypeinfo(void) +{ + size_t i, n; if (initial_type == NULL) initial_type = new_type_class(new_id_from_str("initial_type")); @@ -78,12 +78,13 @@ void init_irtypeinfo(void) { pmap_destroy(type_node_map); type_node_map = pmap_create(); - for (i = get_irp_n_irgs() - 1; i >= 0; --i) + for (i = 0, n = get_irp_n_irgs(); i < n; ++i) set_irg_typeinfo_state(get_irp_irg(i), ir_typeinfo_none); } -void free_irtypeinfo(void) { - int i; +void free_irtypeinfo(void) +{ + size_t i, n; if (initial_type != NULL) { free_type(initial_type); @@ -95,14 +96,15 @@ void free_irtypeinfo(void) { type_node_map = NULL; } - for (i = get_irp_n_irgs() - 1; i >= 0; --i) + for (i = 0, n = get_irp_n_irgs(); i < n; ++i) set_irg_typeinfo_state(get_irp_irg(i), ir_typeinfo_none); } /* ------------ Irgraph state handling. ------------------------------- */ -void set_irg_typeinfo_state(ir_graph *irg, ir_typeinfo_state s) { +void set_irg_typeinfo_state(ir_graph *irg, ir_typeinfo_state s) +{ assert(is_ir_graph(irg)); irg->typeinfo_state = s; if ((irg->typeinfo_state == ir_typeinfo_consistent) && @@ -111,7 +113,8 @@ void set_irg_typeinfo_state(ir_graph *irg, ir_typeinfo_state s) { irp->typeinfo_state = ir_typeinfo_inconsistent; } -ir_typeinfo_state get_irg_typeinfo_state(const ir_graph *irg) { +ir_typeinfo_state get_irg_typeinfo_state(const ir_graph *irg) +{ assert(is_ir_graph(irg)); return irg->typeinfo_state; } @@ -123,14 +126,17 @@ ir_typeinfo_state get_irg_typeinfo_state(const ir_graph *irg) { * consistent. Returns ir_typeinfo_inconsistent if at least one irg has inconsistent * or no type information. Returns ir_typeinfo_none if no irg contains type information. */ -ir_typeinfo_state get_irp_typeinfo_state(void) { +ir_typeinfo_state get_irp_typeinfo_state(void) +{ return irp->typeinfo_state; } -void set_irp_typeinfo_state(ir_typeinfo_state s) { +void set_irp_typeinfo_state(ir_typeinfo_state s) +{ irp->typeinfo_state = s; } /* If typeinfo is consistent, sets it to inconsistent. */ -void set_irp_typeinfo_inconsistent(void) { +void set_irp_typeinfo_inconsistent(void) +{ if (irp->typeinfo_state == ir_typeinfo_consistent) irp->typeinfo_state = ir_typeinfo_inconsistent; } @@ -142,7 +148,8 @@ void set_irp_typeinfo_inconsistent(void) { * ir_typeinfo_consistent or ir_typeinfo_inconsistent. They * assume current_ir_graph set properly. */ -ir_type *get_irn_typeinfo_type(const ir_node *n) { +ir_type *get_irn_typeinfo_type(const ir_node *n) +{ ir_type *res = initial_type; pmap_entry *entry; @@ -150,12 +157,13 @@ ir_type *get_irn_typeinfo_type(const ir_node *n) { entry = pmap_find(type_node_map, n); if (entry != NULL) - res = entry->value; + res = (ir_type*) entry->value; return res; } -void set_irn_typeinfo_type(ir_node *n, ir_type *tp) { +void set_irn_typeinfo_type(ir_node *n, ir_type *tp) +{ assert(get_irg_typeinfo_state(current_ir_graph) != ir_typeinfo_none); pmap_insert(type_node_map, (void *)n, (void *)tp);