diff options
author | Michael Meissner <meissner@cygnus.com> | 1998-04-27 06:20:13 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 1998-04-27 06:20:13 +0000 |
commit | 563c063f761d5f25fe0cb3821f36f9635b9832b3 (patch) | |
tree | c941c311bb1b787707048344d0cef9b76c86c327 /gcc/final.c | |
parent | 14bf4a33ecf517434a0fb0c09f99b0f9589a0143 (diff) | |
download | gcc-563c063f761d5f25fe0cb3821f36f9635b9832b3.zip gcc-563c063f761d5f25fe0cb3821f36f9635b9832b3.tar.gz gcc-563c063f761d5f25fe0cb3821f36f9635b9832b3.tar.bz2 |
Fix a warning
From-SVN: r19422
Diffstat (limited to 'gcc/final.c')
-rw-r--r-- | gcc/final.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/final.c b/gcc/final.c index 393da70..37dc89d 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; |