From 563c063f761d5f25fe0cb3821f36f9635b9832b3 Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Mon, 27 Apr 1998 06:20:13 +0000 Subject: Fix a warning From-SVN: r19422 --- gcc/ChangeLog | 3 +++ gcc/final.c | 12 +++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ce90d349861..77848d63196 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Mon Apr 27 08:55:23 1998 Michael Meissner + * 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. diff --git a/gcc/final.c b/gcc/final.c index 393da70adeb..37dc89dc6a4 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; -- cgit v1.2.1