Fix a warning
authormeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 27 Apr 1998 06:20:13 +0000 (06:20 +0000)
committermeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 27 Apr 1998 06:20:13 +0000 (06:20 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19422 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/final.c

index ce90d34..77848d6 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 393da70..37dc89d 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;