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;
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);
}