re PR middle-end/44769 (warning for split_double when HOST_BITS_PER_WIDE_INT < BITS_P...
authorJoern Rennecke <amylaar@spamcop.net>
Fri, 12 Nov 2010 17:24:16 +0000 (17:24 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Fri, 12 Nov 2010 17:24:16 +0000 (17:24 +0000)
PR middle-end/44769
* final.c (split_double): Don't use BITS_PER_WORD directly in
shift count.

From-SVN: r166662

gcc/ChangeLog
gcc/final.c

index 537635f8c0ef9dbbb0e7d4bfcee413121349615f..76452e286b5d9e17583762272449a60c964d04b6 100644 (file)
        (bfin_expand_builtin): Likewise.
        Set tmode before use.
 
+       PR middle-end/44769
+       * final.c (split_double): Don't use BITS_PER_WORD directly in
+       shift count.
+
 2010-11-12  Eric Botcazou  <ebotcazou@adacore.com>
 
        PR debug/46375
index 060a24532c5d35b992d20d8850ff12ab337eecf6..c4278ae49227f5fc2a519851b08cde605e6838e3 100644 (file)
@@ -3807,10 +3807,11 @@ split_double (rtx value, rtx *first, rtx *second)
             Sign extend each half to HOST_WIDE_INT.  */
          unsigned HOST_WIDE_INT low, high;
          unsigned HOST_WIDE_INT mask, sign_bit, sign_extend;
+         unsigned bits_per_word = BITS_PER_WORD;
 
          /* Set sign_bit to the most significant bit of a word.  */
          sign_bit = 1;
-         sign_bit <<= BITS_PER_WORD - 1;
+         sign_bit <<= bits_per_word - 1;
 
          /* Set mask so that all bits of the word are set.  We could
             have used 1 << BITS_PER_WORD instead of basing the
@@ -3833,7 +3834,7 @@ split_double (rtx value, rtx *first, rtx *second)
          /* Pick the higher word, shifted to the least significant
             bits, and sign-extend it.  */
          high = INTVAL (value);
-         high >>= BITS_PER_WORD - 1;
+         high >>= bits_per_word - 1;
          high >>= 1;
          high &= mask;
          if (high & sign_bit)