summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Meissner <meissner@cygnus.com>1998-04-27 06:20:13 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1998-04-27 06:20:13 +0000
commit563c063f761d5f25fe0cb3821f36f9635b9832b3 (patch)
treec941c311bb1b787707048344d0cef9b76c86c327 /gcc
parent14bf4a33ecf517434a0fb0c09f99b0f9589a0143 (diff)
downloadgcc-563c063f761d5f25fe0cb3821f36f9635b9832b3.tar.gz
Fix a warning
From-SVN: r19422
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/final.c12
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ce90d349861..77848d63196 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
Mon Apr 27 08:55:23 1998 Michael Meissner <meissner@cygnus.com>
+ * final.c (split_double): Avoid a compiler warning if
+ BITS_PER_WORD is less than or equal to HOST_BIT_PER_WIDE_INT.
+
* rtl.h (JUMP_{CROSS_JUMP,NOOP_MOVES,AFTER_REGSCAN}): New macros
for calling jump_optimize.
diff --git a/gcc/final.c b/gcc/final.c
index 393da70adeb..37dc89dc6a4 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -3680,9 +3680,15 @@ split_double (value, first, second)
Extract the bits from it into two word-sized pieces.
Sign extend each half to HOST_WIDE_INT. */
rtx low, high;
-
- low = GEN_INT (INTVAL (value) << (HOST_BITS_PER_WIDE_INT - BITS_PER_WORD) >> (HOST_BITS_PER_WIDE_INT - BITS_PER_WORD));
- high = GEN_INT (INTVAL (value) << (HOST_BITS_PER_WIDE_INT - 2 * BITS_PER_WORD) >> (HOST_BITS_PER_WIDE_INT - BITS_PER_WORD));
+ /* On machines where HOST_BITS_PER_WIDE_INT == BITS_PER_WORD
+ the shift below will cause a compiler warning, even though
+ this code won't be executed. So put the shift amounts in
+ variables to avoid the warning. */
+ int rshift = HOST_BITS_PER_WIDE_INT - BITS_PER_WORD;
+ int lshift = HOST_BITS_PER_WIDE_INT - 2 * BITS_PER_WORD;
+
+ low = GEN_INT ((INTVAL (value) << rshift) >> rshift);
+ high = GEN_INT ((INTVAL (value) << lshift) >> rshift);
if (WORDS_BIG_ENDIAN)
{
*first = high;