From 7529ac93b8c05abf91c607f259d5d5c4907cc6d4 Mon Sep 17 00:00:00 2001 From: Charles Hannum Date: Tue, 7 Jul 1992 02:14:24 +0000 Subject: [PATCH] entered into RCS From-SVN: r1496 --- gcc/emit-rtl.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 8af05c5c9d7..250eb816cc9 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -804,15 +804,19 @@ operand_subword (op, i, validate_address, mode) && GET_MODE_CLASS (mode) == MODE_FLOAT && GET_MODE_SIZE (mode) == 2 * UNITS_PER_WORD && GET_CODE (op) == CONST_DOUBLE) - return GEN_INT (i ^ (WORDS_BIG_ENDIAN != -/* The constant is stored in the host's word-ordering, - but we want to access it in the target's word-ordering. */ + { + /* The constant is stored in the host's word-ordering, + but we want to access it in the target's word-ordering. Some + compilers don't like a conditional inside macro args, so we have two + copies of the return. */ #ifdef HOST_WORDS_BIG_ENDIAN - 1 + return GEN_INT (i == WORDS_BIG_ENDIAN + ? CONST_DOUBLE_HIGH (op) : CONST_DOUBLE_LOW (op)); #else - 0 + return GEN_INT (i != WORDS_BIG_ENDIAN + ? CONST_DOUBLE_HIGH (op) : CONST_DOUBLE_LOW (op)); #endif - ) ? CONST_DOUBLE_HIGH (op) : CONST_DOUBLE_LOW (op)); + } /* Single word float is a little harder, since single- and double-word values often do not have the same high-order bits. We have already -- 2.30.2