X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbetranshlp.c;h=07e49911ec9531e5c7438c9d2cf812d8fe3b7c21;hb=53c6ff576ef14e36a2b42b69b2a6416fb0eab96a;hp=9a723544fc125d3c11e9fb19cdf8726203748143;hpb=43aca1df83b9862e00da7d604c09521a0aabe770;p=libfirm diff --git a/ir/be/betranshlp.c b/ir/be/betranshlp.c index 9a723544f..07e49911e 100644 --- a/ir/be/betranshlp.c +++ b/ir/be/betranshlp.c @@ -68,7 +68,7 @@ int be_is_transformed(const ir_node *node) static inline ir_node *be_get_transformed_node(ir_node *old_node) { if (irn_visited(old_node)) { - ir_node *new_node = get_irn_link(old_node); + ir_node *new_node = (ir_node*)get_irn_link(old_node); assert(new_node != NULL); return new_node; } @@ -211,7 +211,7 @@ static void fix_loops(ir_node *node) changed = 0; if (! is_Block(node)) { ir_node *block = get_nodes_block(node); - ir_node *new_block = get_irn_link(block); + ir_node *new_block = (ir_node*)get_irn_link(block); if (new_block != NULL) { set_nodes_block(node, new_block); @@ -225,7 +225,7 @@ static void fix_loops(ir_node *node) arity = get_irn_arity(node); for (i = 0; i < arity; ++i) { ir_node *in = get_irn_n(node, i); - ir_node *nw = get_irn_link(in); + ir_node *nw = (ir_node*)get_irn_link(in); if (nw != NULL && nw != in) { set_irn_n(node, i, nw); @@ -244,7 +244,7 @@ static void fix_loops(ir_node *node) arity = get_irn_deps(node); for (i = 0; i < arity; ++i) { ir_node *in = get_irn_dep(node, i); - ir_node *nw = get_irn_link(in); + ir_node *nw = (ir_node*)get_irn_link(in); if (nw != NULL && nw != in) { set_irn_dep(node, i, nw); @@ -292,7 +292,7 @@ static ir_node *new_be_Anchor(ir_graph *irg) /* Hack: some places in the code ask the Anchor for its register requirements */ - new_anchor = new_Anchor(irg); + new_anchor = new_r_Anchor(irg); info = be_get_info(new_anchor); info->out_infos = NEW_ARR_D(reg_out_info_t, obst, 1); memset(info->out_infos, 0, 1 * sizeof(info->out_infos[0])); @@ -345,7 +345,7 @@ static void transform_nodes(ir_graph *irg, arch_pretrans_nodes *pre_transform) /* process worklist (this should transform all nodes in the graph) */ while (! waitq_empty(env.worklist)) { - ir_node *node = waitq_get(env.worklist); + ir_node *node = (ir_node*)waitq_get(env.worklist); be_transform_node(node); } @@ -357,7 +357,7 @@ static void transform_nodes(ir_graph *irg, arch_pretrans_nodes *pre_transform) if (anchor == NULL) continue; - anchor = get_irn_link(anchor); + anchor = (ir_node*)get_irn_link(anchor); fix_loops(anchor); set_irn_n(new_anchor, i, anchor); } @@ -470,16 +470,12 @@ void be_transform_graph(ir_graph *irg, arch_pretrans_nodes *func) int be_mux_is_abs(ir_node *sel, ir_node *mux_true, ir_node *mux_false) { - ir_node *cmp_left; - ir_node *cmp_right; - ir_node *cmp; - ir_mode *mode; - pn_Cmp pnc; + ir_node *cmp_left; + ir_node *cmp_right; + ir_mode *mode; + ir_relation relation; - if (!is_Proj(sel)) - return 0; - cmp = get_Proj_pred(sel); - if (!is_Cmp(cmp)) + if (!is_Cmp(sel)) return 0; /** @@ -493,42 +489,31 @@ int be_mux_is_abs(ir_node *sel, ir_node *mux_true, ir_node *mux_false) return 0; /* must be <, <=, >=, > */ - pnc = get_Proj_proj(sel); - switch (pnc) { - case pn_Cmp_Ge: - case pn_Cmp_Gt: - case pn_Cmp_Le: - case pn_Cmp_Lt: - case pn_Cmp_Uge: - case pn_Cmp_Ug: - case pn_Cmp_Ul: - case pn_Cmp_Ule: - break; - default: + relation = get_Cmp_relation(sel); + if ((relation & ir_relation_less_greater) == 0) return 0; - } - if (!is_negated_value(mux_true, mux_false)) + if (!ir_is_negated_value(mux_true, mux_false)) return 0; /* must be x cmp 0 */ - cmp_right = get_Cmp_right(cmp); + cmp_right = get_Cmp_right(sel); if (!is_Const(cmp_right) || !is_Const_null(cmp_right)) return 0; - cmp_left = get_Cmp_left(cmp); + cmp_left = get_Cmp_left(sel); if (cmp_left == mux_false) { - if (pnc & pn_Cmp_Lt) { + if (relation & ir_relation_less) { return 1; } else { - assert(pnc & pn_Cmp_Gt); + assert(relation & ir_relation_greater); return -1; } } else if (cmp_left == mux_true) { - if (pnc & pn_Cmp_Lt) { + if (relation & ir_relation_less) { return -1; } else { - assert(pnc & pn_Cmp_Gt); + assert(relation & ir_relation_greater); return 1; } } @@ -538,7 +523,6 @@ int be_mux_is_abs(ir_node *sel, ir_node *mux_true, ir_node *mux_false) ir_node *be_get_abs_op(ir_node *sel) { - ir_node *cmp = get_Proj_pred(sel); - ir_node *cmp_left = get_Cmp_left(cmp); + ir_node *cmp_left = get_Cmp_left(sel); return cmp_left; }