Fix 64-bit negation.

This commit is contained in:
matt 2007-04-06 20:49:02 +00:00
parent bfc250f292
commit 4af7958221
1 changed files with 4 additions and 1 deletions

View File

@ -1430,8 +1430,11 @@ vax_output_int_subtract (rtx insn, rtx *operands, enum machine_mode mode)
gcc_assert (!CONSTANT_P (operands[2]) && !CONSTANT_P (low[2]));
if (operands[1] == const0_rtx && low[1] == const0_rtx)
{
/* Negation is tricky. It's basically complement and increment.
Negate hi, then lo, and subtract the carry back. */
output_asm_insn ("mnegl %2,%0", operands);
output_asm_insn ("mnegl %2,%0", low);
return "mnegl %2,%0";
return "sbwc $0,%0";
}
gcc_assert (rtx_equal_p (operands[0], operands[1]));
gcc_assert (rtx_equal_p (low[0], low[1]));