From 3619d43beb322bc550e0a9d17a0d6037490410a2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=B6tz=20Lindenmaier?= Date: Mon, 5 Jul 2004 15:18:08 +0000 Subject: [PATCH] loop boudary test optimized freeing of types optimized in irprog [r3307] --- ir/ir/ircgcons.c | 4 ++-- ir/ir/irgmod.c | 7 ++++--- ir/ir/irnode.c | 6 +++--- ir/ir/iropt_t.h | 3 +++ ir/ir/irprog.c | 4 ++++ 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ir/ir/ircgcons.c b/ir/ir/ircgcons.c index c6011ea48..0b2afb026 100644 --- a/ir/ir/ircgcons.c +++ b/ir/ir/ircgcons.c @@ -418,10 +418,10 @@ static void move_phis(ir_node * from_block, ir_node * to_block) { * "from_block" nach "to_block" verschieben. * Verschiebe ebenfalls die Projs aus diesen Operationen. */ static void move_nodes(ir_node * from_block, ir_node * to_block, ir_node * node) { - int i; + int i, arity = get_irn_arity(node); ir_node *proj; - for (i = get_irn_arity(node) - 1; i >= 0; --i) { + for (i = arity - 1; i >= 0; --i) { ir_node * pred = get_irn_n(node, i); if (get_nodes_Block(pred) == from_block) { move_nodes(from_block, to_block, pred); diff --git a/ir/ir/irgmod.c b/ir/ir/irgmod.c index ed8c3ff2e..9a5392e89 100644 --- a/ir/ir/irgmod.c +++ b/ir/ir/irgmod.c @@ -118,7 +118,7 @@ void collect_phiprojs(ir_graph *irg) { * Does not move predecessors of Phi nodes (or block nodes). */ static void move (ir_node *node, ir_node *from_bl, ir_node *to_bl) { - int i; + int i, arity; ir_node *proj, *pred; /* move this node */ @@ -129,7 +129,7 @@ static void move (ir_node *node, ir_node *from_bl, ir_node *to_bl) { proj = get_irn_link(node); while (proj) { if (get_nodes_Block(proj) == from_bl) - set_nodes_Block(proj, to_bl); + set_nodes_Block(proj, to_bl); proj = get_irn_link(proj); } } @@ -137,7 +137,8 @@ static void move (ir_node *node, ir_node *from_bl, ir_node *to_bl) { /* recursion ... */ if (get_irn_op(node) == op_Phi) return; - for (i = 0; i < get_irn_arity(node); i++) { + arity = get_irn_arity(node); + for (i = 0; i < arity; i++) { pred = get_irn_n(node, i); if (get_nodes_Block(pred) == from_bl) move(pred, from_bl, to_bl); diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index 21d5c1c7b..57ab55f07 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -498,7 +498,7 @@ get_Block_cfgpred_arr (ir_node *node) int get_Block_n_cfgpreds (ir_node *node) { assert ((node->op == op_Block)); - return (get_irn_arity(node)); + return get_irn_arity(node); } ir_node * @@ -2016,7 +2016,7 @@ ir_node *get_fragile_op_mem(ir_node *node) { #ifdef DEBUG_libfirm void dump_irn (ir_node *n) { - int i; + int i, arity = get_irn_arity(n); printf("%s%s: %ld (%p)\n", get_irn_opname(n), get_mode_name(get_irn_mode(n)), get_irn_node_nr(n), (void *)n); if (!is_Block(n)) { ir_node *pred = get_irn_n(n, -1); @@ -2024,7 +2024,7 @@ void dump_irn (ir_node *n) { get_irn_node_nr(pred), (void *)pred); } printf(" preds: \n"); - for (i = 0; i < get_irn_arity(n); ++i) { + for (i = 0; i < arity; ++i) { ir_node *pred = get_irn_n(n, i); printf(" %d: %s%s: %ld (%p)\n", i, get_irn_opname(pred), get_mode_name(get_irn_mode(pred)), get_irn_node_nr(pred), (void *)pred); diff --git a/ir/ir/iropt_t.h b/ir/ir/iropt_t.h index 996c336a9..5c7a7a70d 100644 --- a/ir/ir/iropt_t.h +++ b/ir/ir/iropt_t.h @@ -38,5 +38,8 @@ ir_node *optimize_node (ir_node *n); ir_node *optimize_in_place_2 (ir_node *n); +/* Calculate a hash value of a node. */ +unsigned ir_node_hash (ir_node *node); + # endif /* _IROPT_T_H_ */ diff --git a/ir/ir/irprog.c b/ir/ir/irprog.c index 0200998a1..372e45633 100644 --- a/ir/ir/irprog.c +++ b/ir/ir/irprog.c @@ -36,7 +36,11 @@ void init_irprog(void) { INLINE void remove_irp_type_from_list (type *typ) { int i; assert(typ); +#if 0 for (i = 1; i < (ARR_LEN (irp->types)); i++) { +#else + for (i = ARR_LEN (irp->types) -1; i >= 0; i--) { +#endif if (irp->types[i] == typ) { for(; i < (ARR_LEN (irp->types)) - 1; i++) { irp->types[i] = irp->types[i+1]; -- 2.20.1