X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fcombo.c;h=9d465de555b37081440c5348e75fcc266fbbd8d4;hb=3398ae4a8b3cbf66cb0b274ddcd85a2ea863ece1;hp=7a0e85614a67e33e8aea78989205600f697163be;hpb=a6e674f74ea93c3661f100088db520acb701571f;p=libfirm diff --git a/ir/opt/combo.c b/ir/opt/combo.c index 7a0e85614..9d465de55 100644 --- a/ir/opt/combo.c +++ b/ir/opt/combo.c @@ -105,7 +105,7 @@ typedef void (*compute_func)(node_t *node); * An opcode map key. */ struct opcode_key_t { - ir_opcode code; /**< The Firm opcode. */ + unsigned code; /**< The Firm opcode. */ ir_mode *mode; /**< The mode of all nodes in the partition. */ int arity; /**< The arity of this opcode (needed for Phi etc. */ union { @@ -138,7 +138,7 @@ typedef struct listmap_t { * have to use this union. */ typedef union { - tarval *tv; + ir_tarval *tv; symconst_symbol sym; } lattice_elem_t; @@ -230,7 +230,7 @@ DEBUG_ONLY(static const char *what_reason;) DEBUG_ONLY(static unsigned part_nr = 0); /** The tarval returned by Unknown nodes: set to either tarval_bad OR tarval_top. */ -static tarval *tarval_UNKNOWN; +static ir_tarval *tarval_UNKNOWN; /* forward */ static node_t *identity(node_t *node); @@ -534,8 +534,8 @@ static void verify_type(const lattice_elem_t old_type, node_t *node) */ static int listmap_cmp_ptr(const void *elt, const void *key, size_t size) { - const listmap_entry_t *e1 = elt; - const listmap_entry_t *e2 = key; + const listmap_entry_t *e1 = (listmap_entry_t*)elt; + const listmap_entry_t *e2 = (listmap_entry_t*)key; (void) size; return e1->id != e2->id; @@ -577,7 +577,7 @@ static listmap_entry_t *listmap_find(listmap_t *map, void *id) key.id = id; key.list = NULL; key.next = NULL; - entry = set_insert(map->map, &key, sizeof(key), HASH_PTR(id)); + entry = (listmap_entry_t*)set_insert(map->map, &key, sizeof(key), HASH_PTR(id)); if (entry->list == NULL) { /* a new entry, put into the list */ @@ -604,8 +604,8 @@ static unsigned opcode_hash(const opcode_key_t *entry) */ static int cmp_opcode(const void *elt, const void *key, size_t size) { - const opcode_key_t *o1 = elt; - const opcode_key_t *o2 = key; + const opcode_key_t *o1 = (opcode_key_t*)elt; + const opcode_key_t *o2 = (opcode_key_t*)key; (void) size; return o1->code != o2->code || o1->mode != o2->mode || @@ -620,8 +620,8 @@ static int cmp_opcode(const void *elt, const void *key, size_t size) */ static int cmp_def_use_edge(const void *a, const void *b) { - const ir_def_use_edge *ea = a; - const ir_def_use_edge *eb = b; + const ir_def_use_edge *ea = (const ir_def_use_edge*)a; + const ir_def_use_edge *eb = (const ir_def_use_edge*)b; /* no overrun, because range is [-1, MAXINT] */ return ea->pos - eb->pos; @@ -660,7 +660,7 @@ static inline lattice_elem_t get_node_type(const ir_node *irn) * * @return the associated type of this node */ -static inline tarval *get_node_tarval(const ir_node *irn) +static inline ir_tarval *get_node_tarval(const ir_node *irn) { lattice_elem_t type = get_node_type(irn); @@ -783,7 +783,7 @@ static node_t *create_partition_node(ir_node *irn, partition_t *part, environmen */ static void create_initial_partitions(ir_node *irn, void *ctx) { - environment_t *env = ctx; + environment_t *env = (environment_t*)ctx; partition_t *part = env->initial; node_t *node; @@ -1464,7 +1464,7 @@ static void collect_touched(list_head *list, int idx, environment_t *env) continue; if (is_constant_type(y->type)) { - ir_opcode code = get_irn_opcode(succ); + unsigned code = get_irn_opcode(succ); if (code == iro_Sub || code == iro_Cmp) add_to_cprop(y, env); } @@ -1517,7 +1517,7 @@ static void collect_commutative_touched(list_head *list, environment_t *env) y = get_irn_node(succ); if (is_constant_type(y->type)) { - ir_opcode code = get_irn_opcode(succ); + unsigned code = get_irn_opcode(succ); if (code == iro_Eor) add_to_cprop(y, env); } @@ -1763,7 +1763,7 @@ static void *lambda_opcode(const node_t *node, environment_t *env) break; } - entry = set_insert(env->opcode2id_map, &key, sizeof(key), opcode_hash(&key)); + entry = (opcode_key_t*)set_insert(env->opcode2id_map, &key, sizeof(key), opcode_hash(&key)); return entry; } /* lambda_opcode */ @@ -2213,7 +2213,7 @@ static void compute_Sub(node_t *node) node_t *r = get_irn_node(get_Sub_right(sub)); lattice_elem_t a = l->type; lattice_elem_t b = r->type; - tarval *tv; + ir_tarval *tv; if (a.tv == tarval_top || b.tv == tarval_top) { node->type.tv = tarval_top; @@ -2260,7 +2260,7 @@ static void compute_Eor(node_t *node) node_t *r = get_irn_node(get_Eor_right(eor)); lattice_elem_t a = l->type; lattice_elem_t b = r->type; - tarval *tv; + ir_tarval *tv; if (a.tv == tarval_top || b.tv == tarval_top) { node->type.tv = tarval_top; @@ -2334,8 +2334,8 @@ static void compute_Proj_Cmp(node_t *node, ir_node *cmp) node_t *r = get_irn_node(get_Cmp_right(cmp)); lattice_elem_t a = l->type; lattice_elem_t b = r->type; - pn_Cmp pnc = get_Proj_proj(proj); - tarval *tv; + pn_Cmp pnc = get_Proj_pn_cmp(proj); + ir_tarval *tv; if (a.tv == tarval_top || b.tv == tarval_top) { node->type.tv = tarval_undefined; @@ -2349,7 +2349,6 @@ static void compute_Proj_Cmp(node_t *node, ir_node *cmp) * consistent with compute_Cmp, so don't do anything for floats) */ } else if (r->part == l->part && !mode_is_float(get_irn_mode(l->node))) { - tv = pnc & pn_Cmp_Eq ? tarval_b_true : tarval_b_false; /* if the node was ONCE evaluated by all constants, but now @@ -2600,7 +2599,7 @@ static void compute(node_t *node) return; #endif - if (is_no_Block(irn)) { + if (!is_Block(irn)) { /* for pinned nodes, check its control input */ if (get_irn_pinned(skip_Proj(irn)) == op_pin_state_pinned) { node_t *block = get_irn_node(get_nodes_block(irn)); @@ -2660,11 +2659,11 @@ static node_t *identity_Phi(node_t *node) */ static node_t *identity_comm_zero_binop(node_t *node) { - ir_node *op = node->node; - node_t *a = get_irn_node(get_binop_left(op)); - node_t *b = get_irn_node(get_binop_right(op)); - ir_mode *mode = get_irn_mode(op); - tarval *zero; + ir_node *op = node->node; + node_t *a = get_irn_node(get_binop_left(op)); + node_t *b = get_irn_node(get_binop_right(op)); + ir_mode *mode = get_irn_mode(op); + ir_tarval *zero; /* for FP these optimizations are only allowed if fp_strict_algebraic is disabled */ if (mode_is_float(mode) && (get_irg_fp_model(current_ir_graph) & fp_strict_algebraic)) @@ -2685,10 +2684,10 @@ static node_t *identity_comm_zero_binop(node_t *node) */ static node_t *identity_shift(node_t *node) { - ir_node *op = node->node; - node_t *b = get_irn_node(get_binop_right(op)); - ir_mode *mode = get_irn_mode(b->node); - tarval *zero; + ir_node *op = node->node; + node_t *b = get_irn_node(get_binop_right(op)); + ir_mode *mode = get_irn_mode(b->node); + ir_tarval *zero; /* node: no input should be tarval_top, else the binop would be also * Top and not being split. */ @@ -2703,11 +2702,11 @@ static node_t *identity_shift(node_t *node) */ static node_t *identity_Mul(node_t *node) { - ir_node *op = node->node; - node_t *a = get_irn_node(get_Mul_left(op)); - node_t *b = get_irn_node(get_Mul_right(op)); - ir_mode *mode = get_irn_mode(op); - tarval *one; + ir_node *op = node->node; + node_t *a = get_irn_node(get_Mul_left(op)); + node_t *b = get_irn_node(get_Mul_right(op)); + ir_mode *mode = get_irn_mode(op); + ir_tarval *one; /* for FP these optimizations are only allowed if fp_strict_algebraic is disabled */ if (mode_is_float(mode) && (get_irg_fp_model(current_ir_graph) & fp_strict_algebraic)) @@ -2748,10 +2747,10 @@ static node_t *identity_Sub(node_t *node) */ static node_t *identity_And(node_t *node) { - ir_node *and = node->node; - node_t *a = get_irn_node(get_And_left(and)); - node_t *b = get_irn_node(get_And_right(and)); - tarval *neutral = get_mode_all_one(get_irn_mode(and)); + ir_node *andnode = node->node; + node_t *a = get_irn_node(get_And_left(andnode)); + node_t *b = get_irn_node(get_And_right(andnode)); + ir_tarval *neutral = get_mode_all_one(get_irn_mode(andnode)); /* node: no input should be tarval_top, else the And would be also * Top and not being split. */ @@ -3086,7 +3085,7 @@ static int can_exchange(ir_node *pred, ir_node *block) */ static void apply_cf(ir_node *block, void *ctx) { - environment_t *env = ctx; + environment_t *env = (environment_t*)ctx; node_t *node = get_irn_node(block); int i, j, k, n; ir_node **ins, **in_X; @@ -3185,8 +3184,8 @@ static void apply_cf(ir_node *block, void *ctx) next = get_Phi_next(phi); if (is_tarval(node->type.tv) && tarval_is_constant(node->type.tv)) { /* this Phi is replaced by a constant */ - tarval *tv = node->type.tv; - ir_node *c = new_Const(tv); + ir_tarval *tv = node->type.tv; + ir_node *c = new_r_Const(current_ir_graph, tv); set_irn_node(c, node); node->node = c; @@ -3295,7 +3294,7 @@ static int all_users_are_dead(const ir_node *irn) */ static void find_kept_memory(ir_node *irn, void *ctx) { - environment_t *env = ctx; + environment_t *env = (environment_t*)ctx; node_t *node, *block; if (get_irn_mode(irn) != mode_M) @@ -3321,7 +3320,7 @@ static void find_kept_memory(ir_node *irn, void *ctx) */ static void apply_result(ir_node *irn, void *ctx) { - environment_t *env = ctx; + environment_t *env = (environment_t*)ctx; node_t *node = get_irn_node(irn); if (is_Block(irn) || is_End(irn) || is_Bad(irn)) { @@ -3390,8 +3389,8 @@ static void apply_result(ir_node *irn, void *ctx) exchange(irn, jmp); env->modified = 1; } else { - node_t *sel = get_irn_node(get_Cond_selector(cond)); - tarval *tv = sel->type.tv; + node_t *sel = get_irn_node(get_Cond_selector(cond)); + ir_tarval *tv = sel->type.tv; if (is_tarval(tv) && tarval_is_constant(tv)) { /* The selector is a constant, but more @@ -3405,7 +3404,7 @@ static void apply_result(ir_node *irn, void *ctx) } else { /* normal data node */ if (is_tarval(node->type.tv) && tarval_is_constant(node->type.tv)) { - tarval *tv = node->type.tv; + ir_tarval *tv = node->type.tv; /* * Beware: never replace mode_T nodes by constants. Currently we must mark @@ -3413,7 +3412,7 @@ static void apply_result(ir_node *irn, void *ctx) */ if (! is_Const(irn) && get_irn_mode(irn) != mode_T) { /* can be replaced by a constant */ - ir_node *c = new_Const(tv); + ir_node *c = new_r_Const(current_ir_graph, tv); set_irn_node(c, node); node->node = c; DB((dbg, LEVEL_1, "%+F is replaced by %+F\n", irn, c));