diff options
author | Roman Zippel <zippel@linux-m68k.org> | 2007-09-24 21:00:22 +0000 |
---|---|---|
committer | Roman Zippel <zippel@linux-m68k.org> | 2007-09-24 21:00:22 +0000 |
commit | 62a73a2f2787c19c6e1fe92b43ddee6c0e2f6eac (patch) | |
tree | b12c268d3ca97c1c3fc26e082610c65867cd1276 /gcc/config/m68k/m68k.c | |
parent | 3beae013c95ac74840ea5272852acb93d58d270a (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.c | 7 |
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 * |