i386 fix
Jan Hubicka
jh@suse.cz
Sat Jan 6 13:53:00 GMT 2001
Hi
The i386.c attempts to always use reverse_condition on comparison
codes sometimes resulting in UNKNOWN causing it to crash few
function later.
So led 6 22:32:32 CET 2001 Jan Hubicka <jh@suse.cz>
* i386.c (ix86_expand_int_movcc): Take care to reverse fp conditions
properly.
*** /p1/gcc/config/i386/i386.c Sat Jan 6 17:04:11 2001
--- i386.c Sat Jan 6 22:25:04 2001
*************** ix86_expand_int_movcc (operands)
*** 5395,5402 ****
HOST_WIDE_INT tmp;
tmp = ct, ct = cf, cf = tmp;
diff = -diff;
! compare_code = reverse_condition (compare_code);
! code = reverse_condition (code);
}
if (diff == 1 || diff == 2 || diff == 4 || diff == 8
|| diff == 3 || diff == 5 || diff == 9)
--- 5395,5410 ----
HOST_WIDE_INT tmp;
tmp = ct, ct = cf, cf = tmp;
diff = -diff;
! if (FLOAT_MODE_P (GET_MODE (ix86_compare_op0)))
! {
! compare_code = reverse_condition_maybe_unordered (compare_code);
! code = reverse_condition_maybe_unordered (code);
! }
! else
! {
! compare_code = reverse_condition (compare_code);
! code = reverse_condition (code);
! }
}
if (diff == 1 || diff == 2 || diff == 4 || diff == 8
|| diff == 3 || diff == 5 || diff == 9)
*************** ix86_expand_int_movcc (operands)
*** 5485,5492 ****
{
ct = cf;
cf = 0;
! compare_code = reverse_condition (compare_code);
! code = reverse_condition (code);
}
out = emit_store_flag (out, code, ix86_compare_op0,
--- 5493,5508 ----
{
ct = cf;
cf = 0;
! if (FLOAT_MODE_P (GET_MODE (ix86_compare_op0)))
! {
! compare_code = reverse_condition_maybe_unordered (compare_code);
! code = reverse_condition_maybe_unordered (code);
! }
! else
! {
! compare_code = reverse_condition (compare_code);
! code = reverse_condition (code);
! }
}
out = emit_store_flag (out, code, ix86_compare_op0,
More information about the Gcc-patches
mailing list