diff options
author | peter <peter@FreeBSD.org> | 1996-10-26 17:00:50 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1996-10-26 17:00:50 +0000 |
commit | 664237b984c18289c0002ec470b19333e03dbd67 (patch) | |
tree | f6ec62981131e52785e29ece7821735fdd41550b /contrib/gcc/config | |
parent | 20338edbdcfe8876581ff2cd98989fb2a634a663 (diff) | |
download | FreeBSD-src-664237b984c18289c0002ec470b19333e03dbd67.zip FreeBSD-src-664237b984c18289c0002ec470b19333e03dbd67.tar.gz |
Apparently this patch fixes the objc backend on the i386 platforms.
Without this, compiled programs die with FP errors.
This is originally credited to: jlemon@netcom.com (Jonathan Lemon), and
has been forwarded to me by quite a few of people.
Diffstat (limited to 'contrib/gcc/config')
-rw-r--r-- | contrib/gcc/config/i386/i386.md | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/contrib/gcc/config/i386/i386.md b/contrib/gcc/config/i386/i386.md index ff01196..090baa1 100644 --- a/contrib/gcc/config/i386/i386.md +++ b/contrib/gcc/config/i386/i386.md @@ -5312,10 +5312,17 @@ coprocessor registers as containing a possible return value, simply pretend the untyped call returns a complex long double value. */ +#if 1 + /* this may be part of (set (reg: ..) (call_insn ...)), and we can't + directly set a fp register from the call. so we revert to the + old behavior - jlemon@netcom.com (Jonathan Lemon) */ + emit_call_insn (gen_call (operands[0], const0_rtx, NULL, const0_rtx)); +#else emit_call_insn (TARGET_80387 ? gen_call_value (gen_rtx (REG, XCmode, FIRST_FLOAT_REG), operands[0], const0_rtx) : gen_call (operands[0], const0_rtx)); +#endif for (i = 0; i < XVECLEN (operands[2], 0); i++) { |