softfloat: fix for C99

Submitted by Avi Kivity on Dec. 27, 2011, 3:11 p.m.

Details

Message ID 1324998680-16003-1-git-send-email-avi@redhat.com
State New
Headers show

Commit Message

Avi Kivity Dec. 27, 2011, 3:11 p.m.
C99 appears to consider compound literals as non-constants, and complains
when they are used in static initializers.  Switch to ordinary initializer
syntax.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 fpu/softfloat-specialize.h |    8 ++++----
 fpu/softfloat.h            |    2 ++
 2 files changed, 6 insertions(+), 4 deletions(-)

Comments

Andreas Färber Dec. 27, 2011, 4:15 p.m.
Am 27.12.2011 16:11, schrieb Avi Kivity:
> C99 appears to consider compound literals as non-constants, and complains
> when they are used in static initializers.  Switch to ordinary initializer
> syntax.
> 
> Signed-off-by: Avi Kivity <avi@redhat.com>

Acked-by: Andreas Färber <afaerber@suse.de>

For the record, tested with --extra-cflags=-std=gnu99.

> diff --git a/fpu/softfloat-specialize.h b/fpu/softfloat-specialize.h
> index c5e2dab..4902450 100644
> --- a/fpu/softfloat-specialize.h
> +++ b/fpu/softfloat-specialize.h
> @@ -89,8 +89,8 @@ const float64 float64_default_nan = const_float64(LIT64( 0xFFF8000000000000 ));
>  #define floatx80_default_nan_low  LIT64( 0xC000000000000000 )
>  #endif
>  
> -const floatx80 floatx80_default_nan = make_floatx80(floatx80_default_nan_high,
> -                                                    floatx80_default_nan_low);
> +const floatx80 floatx80_default_nan
> +    = make_floatx80_init(floatx80_default_nan_high, floatx80_default_nan_low);

Calling it init_floatx80 would avoid the line break, but I'm okay with
it either way.

Thanks,
Andreas


$ gcc --version
gcc (SUSE Linux) 4.6.2
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Andreas Färber Feb. 9, 2012, 4:20 p.m.
Am 27.12.2011 17:15, schrieb Andreas Färber:
> Am 27.12.2011 16:11, schrieb Avi Kivity:
>> C99 appears to consider compound literals as non-constants, and complains
>> when they are used in static initializers.  Switch to ordinary initializer
>> syntax.
>>

Reported-by: Andreas Färber <andreas.faerber@web.de>

>> Signed-off-by: Avi Kivity <avi@redhat.com>
> 
> Acked-by: Andreas Färber <afaerber@suse.de>
> 
> For the record, tested with --extra-cflags=-std=gnu99.
> 
>> diff --git a/fpu/softfloat-specialize.h b/fpu/softfloat-specialize.h
>> index c5e2dab..4902450 100644
>> --- a/fpu/softfloat-specialize.h
>> +++ b/fpu/softfloat-specialize.h
>> @@ -89,8 +89,8 @@ const float64 float64_default_nan = const_float64(LIT64( 0xFFF8000000000000 ));
>>  #define floatx80_default_nan_low  LIT64( 0xC000000000000000 )
>>  #endif
>>  
>> -const floatx80 floatx80_default_nan = make_floatx80(floatx80_default_nan_high,
>> -                                                    floatx80_default_nan_low);
>> +const floatx80 floatx80_default_nan
>> +    = make_floatx80_init(floatx80_default_nan_high, floatx80_default_nan_low);
> 
> Calling it init_floatx80 would avoid the line break, but I'm okay with
> it either way.

Ping! Avi, you didn't indicate whether you were going to simplify this
patch or whether you're waiting for someone to apply it as is?

Regards,
Andreas

> 
> Thanks,
> Andreas
> 
> 
> $ gcc --version
> gcc (SUSE Linux) 4.6.2
> Copyright (C) 2011 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Avi Kivity Feb. 9, 2012, 4:38 p.m.
On 02/09/2012 06:20 PM, Andreas Färber wrote:
> Am 27.12.2011 17:15, schrieb Andreas Färber:
> > Am 27.12.2011 16:11, schrieb Avi Kivity:
> >> C99 appears to consider compound literals as non-constants, and complains
> >> when they are used in static initializers.  Switch to ordinary initializer
> >> syntax.
> >>
>
> Reported-by: Andreas Färber <andreas.faerber@web.de>
>
> >> Signed-off-by: Avi Kivity <avi@redhat.com>
> > 
> > Acked-by: Andreas Färber <afaerber@suse.de>
> > 
> > For the record, tested with --extra-cflags=-std=gnu99.
> > 
> >> diff --git a/fpu/softfloat-specialize.h b/fpu/softfloat-specialize.h
> >> index c5e2dab..4902450 100644
> >> --- a/fpu/softfloat-specialize.h
> >> +++ b/fpu/softfloat-specialize.h
> >> @@ -89,8 +89,8 @@ const float64 float64_default_nan = const_float64(LIT64( 0xFFF8000000000000 ));
> >>  #define floatx80_default_nan_low  LIT64( 0xC000000000000000 )
> >>  #endif
> >>  
> >> -const floatx80 floatx80_default_nan = make_floatx80(floatx80_default_nan_high,
> >> -                                                    floatx80_default_nan_low);
> >> +const floatx80 floatx80_default_nan
> >> +    = make_floatx80_init(floatx80_default_nan_high, floatx80_default_nan_low);
> > 
> > Calling it init_floatx80 would avoid the line break, but I'm okay with
> > it either way.
>
> Ping! Avi, you didn't indicate whether you were going to simplify this
> patch or whether you're waiting for someone to apply it as is?
>

Actually I forgot all about it.  If everyone's okay with it as is I'd
like it to be applied, otherwise I'll respin.  Copying some maintainers
completely at random.
Andreas Färber March 16, 2012, 10:01 a.m.
Am 09.02.2012 17:38, schrieb Avi Kivity:
> On 02/09/2012 06:20 PM, Andreas Färber wrote:
>> Am 27.12.2011 17:15, schrieb Andreas Färber:
>>> Am 27.12.2011 16:11, schrieb Avi Kivity:
>>>> C99 appears to consider compound literals as non-constants, and complains
>>>> when they are used in static initializers.  Switch to ordinary initializer
>>>> syntax.
>>>>
>>
>> Reported-by: Andreas Färber <andreas.faerber@web.de>
>>
>>>> Signed-off-by: Avi Kivity <avi@redhat.com>
>>>
>>> Acked-by: Andreas Färber <afaerber@suse.de>
>>>
>>> For the record, tested with --extra-cflags=-std=gnu99.
>>>
>>>> diff --git a/fpu/softfloat-specialize.h b/fpu/softfloat-specialize.h
>>>> index c5e2dab..4902450 100644
>>>> --- a/fpu/softfloat-specialize.h
>>>> +++ b/fpu/softfloat-specialize.h
>>>> @@ -89,8 +89,8 @@ const float64 float64_default_nan = const_float64(LIT64( 0xFFF8000000000000 ));
>>>>  #define floatx80_default_nan_low  LIT64( 0xC000000000000000 )
>>>>  #endif
>>>>  
>>>> -const floatx80 floatx80_default_nan = make_floatx80(floatx80_default_nan_high,
>>>> -                                                    floatx80_default_nan_low);
>>>> +const floatx80 floatx80_default_nan
>>>> +    = make_floatx80_init(floatx80_default_nan_high, floatx80_default_nan_low);
>>>
>>> Calling it init_floatx80 would avoid the line break, but I'm okay with
>>> it either way.
>>
>> Ping! Avi, you didn't indicate whether you were going to simplify this
>> patch or whether you're waiting for someone to apply it as is?
>>
> 
> Actually I forgot all about it.  If everyone's okay with it as is I'd
> like it to be applied, otherwise I'll respin.  Copying some maintainers
> completely at random.

Ping?

Andreas
Blue Swirl March 17, 2012, 4:24 p.m.
Thanks, applied.

On Tue, Dec 27, 2011 at 15:11, Avi Kivity <avi@redhat.com> wrote:
> C99 appears to consider compound literals as non-constants, and complains
> when they are used in static initializers.  Switch to ordinary initializer
> syntax.
>
> Signed-off-by: Avi Kivity <avi@redhat.com>
> ---
>  fpu/softfloat-specialize.h |    8 ++++----
>  fpu/softfloat.h            |    2 ++
>  2 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/fpu/softfloat-specialize.h b/fpu/softfloat-specialize.h
> index c5e2dab..4902450 100644
> --- a/fpu/softfloat-specialize.h
> +++ b/fpu/softfloat-specialize.h
> @@ -89,8 +89,8 @@ const float64 float64_default_nan = const_float64(LIT64( 0xFFF8000000000000 ));
>  #define floatx80_default_nan_low  LIT64( 0xC000000000000000 )
>  #endif
>
> -const floatx80 floatx80_default_nan = make_floatx80(floatx80_default_nan_high,
> -                                                    floatx80_default_nan_low);
> +const floatx80 floatx80_default_nan
> +    = make_floatx80_init(floatx80_default_nan_high, floatx80_default_nan_low);
>
>  /*----------------------------------------------------------------------------
>  | The pattern for a default generated quadruple-precision NaN.  The `high' and
> @@ -104,8 +104,8 @@ const floatx80 floatx80_default_nan = make_floatx80(floatx80_default_nan_high,
>  #define float128_default_nan_low  LIT64( 0x0000000000000000 )
>  #endif
>
> -const float128 float128_default_nan = make_float128(float128_default_nan_high,
> -                                                    float128_default_nan_low);
> +const float128 float128_default_nan
> +    = make_float128_init(float128_default_nan_high, float128_default_nan_low);
>
>  /*----------------------------------------------------------------------------
>  | Raises the exceptions specified by `flags'.  Floating-point traps can be
> diff --git a/fpu/softfloat.h b/fpu/softfloat.h
> index 07c2929..2ce4110 100644
> --- a/fpu/softfloat.h
> +++ b/fpu/softfloat.h
> @@ -129,6 +129,7 @@ typedef struct {
>     uint16_t high;
>  } floatx80;
>  #define make_floatx80(exp, mant) ((floatx80) { mant, exp })
> +#define make_floatx80_init(exp, mant) { .low = mant, .high = exp }
>  typedef struct {
>  #ifdef HOST_WORDS_BIGENDIAN
>     uint64_t high, low;
> @@ -137,6 +138,7 @@ typedef struct {
>  #endif
>  } float128;
>  #define make_float128(high_, low_) ((float128) { .high = high_, .low = low_ })
> +#define make_float128_init(high_, low_) { .high = high_, .low = low_ }
>
>  /*----------------------------------------------------------------------------
>  | Software IEC/IEEE floating-point underflow tininess-detection mode.
> --
> 1.7.7.1
>
>

Patch hide | download patch | download mbox

diff --git a/fpu/softfloat-specialize.h b/fpu/softfloat-specialize.h
index c5e2dab..4902450 100644
--- a/fpu/softfloat-specialize.h
+++ b/fpu/softfloat-specialize.h
@@ -89,8 +89,8 @@  const float64 float64_default_nan = const_float64(LIT64( 0xFFF8000000000000 ));
 #define floatx80_default_nan_low  LIT64( 0xC000000000000000 )
 #endif
 
-const floatx80 floatx80_default_nan = make_floatx80(floatx80_default_nan_high,
-                                                    floatx80_default_nan_low);
+const floatx80 floatx80_default_nan
+    = make_floatx80_init(floatx80_default_nan_high, floatx80_default_nan_low);
 
 /*----------------------------------------------------------------------------
 | The pattern for a default generated quadruple-precision NaN.  The `high' and
@@ -104,8 +104,8 @@  const floatx80 floatx80_default_nan = make_floatx80(floatx80_default_nan_high,
 #define float128_default_nan_low  LIT64( 0x0000000000000000 )
 #endif
 
-const float128 float128_default_nan = make_float128(float128_default_nan_high,
-                                                    float128_default_nan_low);
+const float128 float128_default_nan
+    = make_float128_init(float128_default_nan_high, float128_default_nan_low);
 
 /*----------------------------------------------------------------------------
 | Raises the exceptions specified by `flags'.  Floating-point traps can be
diff --git a/fpu/softfloat.h b/fpu/softfloat.h
index 07c2929..2ce4110 100644
--- a/fpu/softfloat.h
+++ b/fpu/softfloat.h
@@ -129,6 +129,7 @@  typedef struct {
     uint16_t high;
 } floatx80;
 #define make_floatx80(exp, mant) ((floatx80) { mant, exp })
+#define make_floatx80_init(exp, mant) { .low = mant, .high = exp }
 typedef struct {
 #ifdef HOST_WORDS_BIGENDIAN
     uint64_t high, low;
@@ -137,6 +138,7 @@  typedef struct {
 #endif
 } float128;
 #define make_float128(high_, low_) ((float128) { .high = high_, .low = low_ })
+#define make_float128_init(high_, low_) { .high = high_, .low = low_ }
 
 /*----------------------------------------------------------------------------
 | Software IEC/IEEE floating-point underflow tininess-detection mode.