From ae77ff7a0325f4aa208402092ce58cac989fc0c7 Mon Sep 17 00:00:00 2001 From: Joern Rennecke Date: Fri, 12 Nov 2010 17:24:16 +0000 Subject: [PATCH] re PR middle-end/44769 (warning for split_double when HOST_BITS_PER_WIDE_INT < BITS_PER_WORD) PR middle-end/44769 * final.c (split_double): Don't use BITS_PER_WORD directly in shift count. From-SVN: r166662 --- gcc/ChangeLog | 4 ++++ gcc/final.c | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 537635f8c0e..76452e286b5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -67,6 +67,10 @@ (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 PR debug/46375 diff --git a/gcc/final.c b/gcc/final.c index 060a24532c5..c4278ae4922 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -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)