aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/m68k/m68k.c
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2007-09-24 21:00:22 +0000
committerRoman Zippel <zippel@linux-m68k.org>2007-09-24 21:00:22 +0000
commit62a73a2f2787c19c6e1fe92b43ddee6c0e2f6eac (patch)
treeb12c268d3ca97c1c3fc26e082610c65867cd1276 /gcc/config/m68k/m68k.c
parent3beae013c95ac74840ea5272852acb93d58d270a (diff)
* config/m68k/m68k.c (notice_update_cc): Recognize fp compare
(moved from fp compare patterns). * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf): Cleanup predicates to relieve reload. (conditional_trap): Reject conditional trap with fp condition. * gcc/config/m68k/predicates.md (fp_src_operand): New, reject certain constants early. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@128727 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/m68k/m68k.c')
-rw-r--r--gcc/config/m68k/m68k.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index c8e5a6f4a05..1f6b4f9fde7 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -3513,6 +3513,13 @@ notice_update_cc (rtx exp, rtx insn)
if (((cc_status.value1 && FP_REG_P (cc_status.value1))
|| (cc_status.value2 && FP_REG_P (cc_status.value2))))
cc_status.flags = CC_IN_68881;
+ if (cc_status.value2 && GET_CODE (cc_status.value2) == COMPARE
+ && GET_MODE_CLASS (GET_MODE (XEXP (cc_status.value2, 0))) == MODE_FLOAT)
+ {
+ cc_status.flags = CC_IN_68881;
+ if (!FP_REG_P (XEXP (cc_status.value2, 0)))
+ cc_status.flags |= CC_REVERSED;
+ }
}
const char *