Fix a warning
authorMichael Meissner <meissner@cygnus.com>
Mon, 27 Apr 1998 06:20:13 +0000 (06:20 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Mon, 27 Apr 1998 06:20:13 +0000 (06:20 +0000)
From-SVN: r19422

gcc/ChangeLog
gcc/final.c

index ce90d34986111e09d6ddaed03a851075334ddf17..77848d6319604694e31c316275d0f886ff583e5f 100644 (file)
@@ -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.
 
index 393da70adebf83aaff338f80ca53c8349387d06b..37dc89dc6a48803391199d8098ab9697aede6ee4 100644 (file)
@@ -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;