removed GNU extension: void * are not allowed in arithmetic
[libfirm] / ir / lower / lower_dw.c
index cd42ecb..4555529 100644 (file)
@@ -1428,7 +1428,8 @@ static void lower_Conv_to_Ls(ir_node *node, lower_env_t *env) {
                        env->entries[idx]->low_word  = op;
 
                        if (mode_is_signed(imode)) {
-                               env->entries[idx]->high_word = new_rd_Shrs(dbg, irg, block, op,
+                               ir_node *op_conv = new_rd_Conv(dbg, irg, block, op, dst_mode_h);
+                               env->entries[idx]->high_word = new_rd_Shrs(dbg, irg, block, op_conv,
                                        new_Const_long(mode_Iu, get_mode_size_bits(dst_mode_h) - 1), dst_mode_h);
                        } else {
                                env->entries[idx]->high_word = new_Const(dst_mode_h, get_mode_null(dst_mode_h));
@@ -2220,7 +2221,7 @@ static void lower_ops(ir_node *node, void *env)
        int          idx = get_irn_idx(node);
        ir_mode      *mode = get_irn_mode(node);
 
-       if (mode == mode_b || get_irn_op(node) == op_Psi) {
+       if (mode == mode_b || is_Psi(node)) {
                int i;
 
                for (i = get_irn_arity(node) - 1; i >= 0; --i) {