From: hubicka Date: Mon, 8 Jan 2001 12:47:15 +0000 (+0000) Subject: * i386.c (ix86_expand_int_movcc): Take care to reverse fp conditions X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1d8bbe953337a90571836ba03d9c0e3469ff8df1;p=thirdparty%2Fgcc.git * i386.c (ix86_expand_int_movcc): Take care to reverse fp conditions properly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38799 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 362a7679fa19..52bb93d1bfad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Mon Jan 8 13:46:02 MET 2001 Jan Hubicka + + * i386.c (ix86_expand_int_movcc): Take care to reverse fp conditions + properly. + Sun Jan 7 18:37:43 2001 Mark P Mitchell * ggc-page.c (max_alignment): New structure. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 3afc75cd29fb..53e33d4cbd63 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -5399,8 +5399,20 @@ ix86_expand_int_movcc (operands) HOST_WIDE_INT tmp; tmp = ct, ct = cf, cf = tmp; diff = -diff; - compare_code = reverse_condition (compare_code); - code = reverse_condition (code); + if (FLOAT_MODE_P (GET_MODE (ix86_compare_op0))) + { + /* We may be reversing unordered compare to normal compare, that + is not valid in general (we may convert non-trapping condition + to trapping one), however on i386 we currently emit all + comparisons unordered. */ + 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) @@ -5489,8 +5501,20 @@ ix86_expand_int_movcc (operands) { ct = cf; cf = 0; - compare_code = reverse_condition (compare_code); - code = reverse_condition (code); + if (FLOAT_MODE_P (GET_MODE (ix86_compare_op0))) + { + /* We may be reversing unordered compare to normal compare, + that is not valid in general (we may convert non-trapping + condition to trapping one), however on i386 we currently + emit all comparisons unordered. */ + 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,