sparc: use arch_dependent mul/div lowering
[libfirm] / ir / be / sparc / sparc_transform.c
index 8eb5e85..b5599ad 100644 (file)
@@ -413,7 +413,7 @@ static ir_node *gen_Add(ir_node *node)
                ir_node *left = get_Add_left(node);
                /* is this simple address arithmetic? then we can let the linker do
                 * the calculation. */
-               if (is_SymConst(left)) {
+               if (is_SymConst(left) && get_irn_n_edges(left) == 1) {
                        dbg_info *dbgi  = get_irn_dbg_info(node);
                        ir_node  *block = be_transform_node(get_nodes_block(node));
                        address_t address;
@@ -726,7 +726,7 @@ static ir_node *gen_helper_bitop(ir_node *node,
        ir_node *op1 = get_binop_left(node);
        ir_node *op2 = get_binop_right(node);
        if (is_Not(op1)) {
-               return gen_helper_binop_args(node, get_Not_op(op1), op2,
+               return gen_helper_binop_args(node, op2, get_Not_op(op1),
                                             MATCH_MODE_NEUTRAL,
                                             new_not_reg, new_not_imm);
        }