while (GET_CODE (*pat) == SUBREG
|| GET_CODE (*pat) == FLOAT
|| GET_CODE (*pat) == FIX
- || GET_CODE (*pat) == FLOAT_EXTEND
- || GET_CODE (*pat) == FLOAT_TRUNCATE)
+ || GET_CODE (*pat) == FLOAT_EXTEND)
pat = & XEXP (*pat, 0);
return pat;
bzero (reg_used_as_output, sizeof (reg_used_as_output));
for (i = 0; i < n_outputs; i++)
if (STACK_REG_P (operands[i]))
- if (reg_class_size[operand_class[i]] != 1)
+ if (reg_class_size[(int) operand_class[i]] != 1)
{
error_for_asm
(insn, "Output constraint %d must specify a single register", i);
return;
}
+ if (sets_cc0_p (PATTERN (i1)))
+ link_cc0_insns (i1);
+
swap_rtx = gen_swapdf (FP_mode_reg[hard_regno][(int) DFmode],
FP_mode_reg[FIRST_STACK_REG][(int) DFmode]);
swap_insn = emit_insn_after (swap_rtx, i1);
{
rtx temp, next;
- temp = *src1;
- *src1 = *src2;
- *src2 = temp;
+ temp = XEXP (SET_SRC (pat), 0);
+ XEXP (SET_SRC (pat), 0) = XEXP (SET_SRC (pat), 1);
+ XEXP (SET_SRC (pat), 1) = temp;
+
+ src1 = get_true_reg (&XEXP (SET_SRC (pat), 0));
+ src2 = get_true_reg (&XEXP (SET_SRC (pat), 1));
next = next_cc0_user (insn);
if (next == NULL_RTX)
swap_rtx_condition (PATTERN (next));
INSN_CODE (next) = -1;
+ INSN_CODE (insn) = -1;
}
/* We will fix any death note later. */
/* Fall through. */
+ case FLOAT_TRUNCATE:
case SQRT:
case ABS:
case NEG: