diff options
author | Stan Cox <coxs@gnu.org> | 1996-08-09 20:51:08 +0000 |
---|---|---|
committer | Stan Cox <coxs@gnu.org> | 1996-08-09 20:51:08 +0000 |
commit | 88b1b955515cb787a2e4b08bc6ef646abe4d4db5 (patch) | |
tree | 5f5eee7840492c44219197db08848f3e81f7bddb | |
parent | 66050251ac75220c6a7fe0eb7f003bc979e6f261 (diff) | |
download | gcc-88b1b955515cb787a2e4b08bc6ef646abe4d4db5.zip gcc-88b1b955515cb787a2e4b08bc6ef646abe4d4db5.tar.gz gcc-88b1b955515cb787a2e4b08bc6ef646abe4d4db5.tar.bz2 |
(untyped_call) Avoid SIGFPE.
From-SVN: r12610
-rw-r--r-- | gcc/config/i386/i386.c | 13 | ||||
-rw-r--r-- | 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 8a84fe1..2eaee7d 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 e9cc5d5..96bdac5 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++) { |