From 21302ab094a6a3ce9bd628e959a32add07d83c16 Mon Sep 17 00:00:00 2001 From: Torbjorn Granlund Date: Wed, 1 Feb 1995 00:21:49 +0000 Subject: [PATCH] (singlemove_string): Make case with SFmode CONST_DOUBLE abort. (print_operand): #ifdef out CONST_DOUBLE cases. From-SVN: r8847 --- gcc/config/pa/pa.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 72a86b5142c..15054c51549 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -1046,6 +1046,11 @@ singlemove_string (operands) else if (GET_CODE (operands[1]) == CONST_DOUBLE && GET_MODE (operands[1]) == SFmode) { + abort (); +#if 0 + /* Switched off since it is wrong, and should never really be used + anyway. If we want to switch this on again, we have to make it use + the REAL_ARITHMETIC stuff. */ int i; union real_extract u; union float_extract { float f; int i; } v; @@ -1072,6 +1077,7 @@ singlemove_string (operands) } else return "ldil L'%1,%0\n\tldo R'%1(%0),%0"; +#endif } else if (GET_CODE (operands[1]) == CONST_INT) @@ -3091,6 +3097,12 @@ print_operand (file, x, code) break; } } +#if 0 + /* The code here is completely wrong. It attempts to extract parts of + a CONST_DOUBLE which is wrong since REAL_ARITHMETIC is defined, and it + extracts the wrong indices (0 instead of 2 and 1 instead of 3) using + the wrong macro (XINT instead of XWINT). + Just disable it for now, since the code will never be used anyway! */ else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) == SFmode) { union { double d; int i[2]; } u; @@ -3108,6 +3120,7 @@ print_operand (file, x, code) u.i[0] = XINT (x, 0); u.i[1] = XINT (x, 1); fprintf (file, "0r%.20g", u.d); } +#endif else output_addr_const (file, x); } -- 2.30.2