From 88b1b955515cb787a2e4b08bc6ef646abe4d4db5 Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Fri, 9 Aug 1996 20:51:08 +0000 Subject: [PATCH] (untyped_call) Avoid SIGFPE. From-SVN: r12610 --- gcc/config/i386/i386.c | 13 ++++--------- gcc/config/i386/i386.md | 3 +++ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 8a84fe198fa..2eaee7d575e 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3562,7 +3562,6 @@ output_float_compare (insn, operands) rtx body = XVECEXP (PATTERN (insn), 0, 0); int unordered_compare = GET_MODE (SET_SRC (body)) == CCFPEQmode; int target_fcomi = TARGET_CMOVE && STACK_REG_P (operands[1]); - int target_fcomi = TARGET_CMOVE && STACK_REG_P (operands[1]); rtx tmp; if (! STACK_TOP_P (operands[0])) @@ -3612,18 +3611,14 @@ output_float_compare (insn, operands) strcat (buf, "p"); if (NON_STACK_REG_P (operands[1])) - else if (target_fcomi) - { - rtx xops[] = {operands[0], operands[1], operands[0]}; - - output_asm_insn (strcat (buf, AS2 (%z1,%y1,%2)), xops); - RET; - } output_op_from_reg (operands[1], strcat (buf, AS1 (%z0,%1))); else if (target_fcomi) { - rtx xops[] = {operands[0], operands[1], operands[0]}; + rtx xops[3]; + xops[0] = operands[0]; + xops[1] = operands[1]; + xops[2] = operands[0]; output_asm_insn (strcat (buf, AS2 (%z1,%y1,%2)), xops); RET; } diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index e9cc5d5cbdd..96bdac51bd6 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -5955,10 +5955,13 @@ coprocessor registers as containing a possible return value, simply pretend the untyped call returns a complex long double value. */ + /* 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)); + */ + emit_call_insn (gen_call (operands[0], const0_rtx, NULL, const0_rtx)); for (i = 0; i < XVECLEN (operands[2], 0); i++) { -- 2.30.2