X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbetranshlp.c;h=09d65fd9070328c13d8e686b8ed9916d9820047a;hb=7e4c680661ca3e15ae8d58fb50b4e8e9c10d5f4c;hp=16e516e1e46b21b8bf78f78da107fe7fe6c4ed19;hpb=1a3b7d363474ab544c13093a2f0b578718d37c7a;p=libfirm diff --git a/ir/be/betranshlp.c b/ir/be/betranshlp.c index 16e516e1e..09d65fd90 100644 --- a/ir/be/betranshlp.c +++ b/ir/be/betranshlp.c @@ -350,7 +350,6 @@ static void transform_nodes(ir_graph *irg, arch_pretrans_nodes *pre_transform) /* pre transform some anchors (so they are available in the other transform * functions) */ - pre_transform_anchor(irg, anchor_bad); pre_transform_anchor(irg, anchor_no_mem); pre_transform_anchor(irg, anchor_end_block); pre_transform_anchor(irg, anchor_end); @@ -367,10 +366,6 @@ static void transform_nodes(ir_graph *irg, arch_pretrans_nodes *pre_transform) be_transform_node(node); } - /* let beabi grab new nodes */ - be_abi_transform_fixup(irg); - assert(waitq_empty(env.worklist)); // let's hope this didn't trigger new transforms - /* fix loops and set new anchors*/ inc_irg_visited(irg); for (i = get_irg_n_anchors(irg) - 1; i >= 0; --i) { @@ -438,62 +433,3 @@ void be_transform_graph(ir_graph *irg, arch_pretrans_nodes *func) edges_deactivate(irg); edges_activate(irg); } - -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_mode *mode; - ir_relation relation; - - if (!is_Cmp(sel)) - return 0; - - /** - * Note further that these optimization work even for floating point - * with NaN's because -NaN == NaN. - * However, if +0 and -0 is handled differently, we cannot use the Abs/-Abs - * transformations. - */ - mode = get_irn_mode(mux_true); - if (mode_honor_signed_zeros(mode)) - return 0; - - /* must be <, <=, >=, > */ - relation = get_Cmp_relation(sel); - if ((relation & ir_relation_less_greater) == 0) - return 0; - - if (!ir_is_negated_value(mux_true, mux_false)) - return 0; - - /* must be x cmp 0 */ - cmp_right = get_Cmp_right(sel); - if (!is_Const(cmp_right) || !is_Const_null(cmp_right)) - return 0; - - cmp_left = get_Cmp_left(sel); - if (cmp_left == mux_false) { - if (relation & ir_relation_less) { - return 1; - } else { - assert(relation & ir_relation_greater); - return -1; - } - } else if (cmp_left == mux_true) { - if (relation & ir_relation_less) { - return -1; - } else { - assert(relation & ir_relation_greater); - return 1; - } - } - - return 0; -} - -ir_node *be_get_abs_op(ir_node *sel) -{ - ir_node *cmp_left = get_Cmp_left(sel); - return cmp_left; -}