Patchwork target-mips: Fix compiler warnings caused by very large constants

login
register
mail settings
Submitter Stefan Weil
Date Nov. 4, 2012, 8:29 p.m.
Message ID <1352060975-18646-1-git-send-email-sw@weilnetz.de>
Download mbox | patch
Permalink /patch/197094/
State Superseded
Headers show

Comments

Stefan Weil - Nov. 4, 2012, 8:29 p.m.
Those constants are larger than 32 bits and need a suffix to avoid
warnings from some versions of gcc.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
 target-mips/dsp_helper.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Aurelien Jarno - Nov. 5, 2012, 7:03 a.m.
On Sun, Nov 04, 2012 at 09:29:35PM +0100, Stefan Weil wrote:
> Those constants are larger than 32 bits and need a suffix to avoid
> warnings from some versions of gcc.
> 
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
>  target-mips/dsp_helper.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/target-mips/dsp_helper.c b/target-mips/dsp_helper.c
> index b59133e..2ab9956 100644
> --- a/target-mips/dsp_helper.c
> +++ b/target-mips/dsp_helper.c
> @@ -3553,7 +3553,7 @@ target_ulong helper_dextr_rs_w(target_ulong ac, target_ulong shift,
>          if (temp128 == 0) {
>              temp[0] = 0x0FFFFFFFF;
>          } else {
> -            temp[0] = 0x0100000000;
> +            temp[0] = 0x0100000000ULL;
>          }
>          set_DSPControl_overflow_flag(1, 23, env);
>      }
> @@ -3653,7 +3653,7 @@ target_ulong helper_extr_s_h(target_ulong ac, target_ulong shift,
>      if (temp > (int64_t)0x7FFF) {
>          temp = 0x00007FFF;
>          set_DSPControl_overflow_flag(1, 23, env);
> -    } else if (temp < (int64_t)0xFFFFFFFFFFFF8000) {
> +    } else if (temp < (int64_t)0xFFFFFFFFFFFF8000LL) {
>          temp = 0xFFFF8000;
>          set_DSPControl_overflow_flag(1, 23, env);
>      }

Blue Swirl proposed the same patch a bit earlier then you, and I have
just applied it.
Eric Blake - Nov. 5, 2012, 6:41 p.m.
On 11/05/2012 12:03 AM, Aurelien Jarno wrote:
> On Sun, Nov 04, 2012 at 09:29:35PM +0100, Stefan Weil wrote:
>> Those constants are larger than 32 bits and need a suffix to avoid
>> warnings from some versions of gcc.
>>
>> Signed-off-by: Stefan Weil <sw@weilnetz.de>

>> @@ -3653,7 +3653,7 @@ target_ulong helper_extr_s_h(target_ulong ac, target_ulong shift,
>>      if (temp > (int64_t)0x7FFF) {
>>          temp = 0x00007FFF;
>>          set_DSPControl_overflow_flag(1, 23, env);
>> -    } else if (temp < (int64_t)0xFFFFFFFFFFFF8000) {
>> +    } else if (temp < (int64_t)0xFFFFFFFFFFFF8000LL) {

Instead of using both a suffix and a cast to int64_t, shouldn't we
instead be writing '(temp < INT64_C(0xFFFFFFFFFFFF8000))'?

> 
> Blue Swirl proposed the same patch a bit earlier then you, and I have
> just applied it.

But since I've seldom seen code using the *_C() macros from <stdint.h>,
it doesn't bother me enough to pursue it any further now that the
immediate concern of compiler warnings has been silenced.

Patch

diff --git a/target-mips/dsp_helper.c b/target-mips/dsp_helper.c
index b59133e..2ab9956 100644
--- a/target-mips/dsp_helper.c
+++ b/target-mips/dsp_helper.c
@@ -3553,7 +3553,7 @@  target_ulong helper_dextr_rs_w(target_ulong ac, target_ulong shift,
         if (temp128 == 0) {
             temp[0] = 0x0FFFFFFFF;
         } else {
-            temp[0] = 0x0100000000;
+            temp[0] = 0x0100000000ULL;
         }
         set_DSPControl_overflow_flag(1, 23, env);
     }
@@ -3653,7 +3653,7 @@  target_ulong helper_extr_s_h(target_ulong ac, target_ulong shift,
     if (temp > (int64_t)0x7FFF) {
         temp = 0x00007FFF;
         set_DSPControl_overflow_flag(1, 23, env);
-    } else if (temp < (int64_t)0xFFFFFFFFFFFF8000) {
+    } else if (temp < (int64_t)0xFFFFFFFFFFFF8000LL) {
         temp = 0xFFFF8000;
         set_DSPControl_overflow_flag(1, 23, env);
     }