aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Cox <coxs@gnu.org>1996-08-09 20:51:08 +0000
committerStan Cox <coxs@gnu.org>1996-08-09 20:51:08 +0000
commit88b1b955515cb787a2e4b08bc6ef646abe4d4db5 (patch)
tree5f5eee7840492c44219197db08848f3e81f7bddb
parent66050251ac75220c6a7fe0eb7f003bc979e6f261 (diff)
downloadgcc-88b1b955515cb787a2e4b08bc6ef646abe4d4db5.zip
gcc-88b1b955515cb787a2e4b08bc6ef646abe4d4db5.tar.gz
gcc-88b1b955515cb787a2e4b08bc6ef646abe4d4db5.tar.bz2
(untyped_call) Avoid SIGFPE.
From-SVN: r12610
-rw-r--r--gcc/config/i386/i386.c13
-rw-r--r--gcc/config/i386/i386.md3
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++)
{