mips: math-emu: Fix compilation error ieee754.c
ieee754dp has bitfield member in struct without name. And this cause compilation error. This patch removes struct in ieee754dp declaration. So compilation error is fixed.
--- arch/mips/math-emu/ieee754.h | 20 ++++++++------------ 1 files changed, 8 insertions(+), 12 deletions(-)
arch/mips/math-emu/ieee754.h +8 -12
@@ -32,22 +32,18 @@#include <asm/bitfield.h> union ieee754dp { - struct { - __BITFIELD_FIELD(unsigned int sign:1, - __BITFIELD_FIELD(unsigned int bexp:11, - __BITFIELD_FIELD(u64 mant:52, - ;))) - }; + __BITFIELD_FIELD(unsigned int sign:1, + __BITFIELD_FIELD(unsigned int bexp:11, + __BITFIELD_FIELD(u64 mant:52, + ;))) u64 bits; };union ieee754sp { - struct { - __BITFIELD_FIELD(unsigned sign:1, - __BITFIELD_FIELD(unsigned bexp:8, - __BITFIELD_FIELD(unsigned mant:23, - ;))) - }; + __BITFIELD_FIELD(unsigned sign:1, + __BITFIELD_FIELD(unsigned bexp:8, + __BITFIELD_FIELD(unsigned mant:23, + ;))) u32 bits; };
Signature · 1 line
1.7.0.1�淸�{.n�+돴윯돪�+%듚�깁負쪐w��{.n�+돴쪐{깸G쳺��{ay����,j�f"톒쉹��묎�z_溫(�쉸듶줷"얎�m����G쳺�◀?솳鈺�&x�~뤳턨O뺞촾퇉v�^�m����띠�◀?뻀�Quoted 4 lines · Eunbong Song
ieee754dp has bitfield member in struct without name. And this cause compilation error. This patch removes struct in ieee754dp declaration. So compilation error is fixed.
Signed-off-by Eunbong Song <[email protected]>
What gcc version are you using?
Ralf
Quoted 9 lines · Ralf Baechle
Quoted 4 lines · Eunbong Song
ieee754dp has bitfield member in struct without name. And this cause compilation error. This patch removes struct in ieee754dp declaration. So compilation error is fixed.
Signed-off-by Eunbong Song <[email protected]>What gcc version are you using?
make arch/mips/math-emu/ieee754.o for mips defconfig triggers the following on linux-next 30 times:
arch/mips/math-emu/ieee754.c:45:2: error: unknown field 'sign' specified in initializer arch/mips/math-emu/ieee754.c:45:2: warning: missing braces around initializer arch/mips/math-emu/ieee754.c:45:2: warning: (near initialization for '__ieee754dp_spcvals[0].<anonymous>') arch/mips/math-emu/ieee754.c:45:2: error: unknown field 'bexp' specified in initializer arch/mips/math-emu/ieee754.c:45:2: warning: excess elements in union initializer arch/mips/math-emu/ieee754.c:45:2: warning: (near initialization for '__ieee754dp_spcvals[0]') arch/mips/math-emu/ieee754.c:45:2: error: unknown field 'mant' specified in initializer arch/mips/math-emu/ieee754.c:45:2: warning: excess elements in union initializer arch/mips/math-emu/ieee754.c:45:2: warning: (near initialization for '__ieee754dp_spcvals[0]')
I'm using gcc 4.5.1 for mips. The patch makes all members part of the union so it's probably not what you want to fix it, though.
GCC version requirement (was: Re: mips: math-emu: Fix compilation error ieee754.c)
Quoted 21 lines · David Rientjes
Quoted 7 lines
Quoted 4 lines
ieee754dp has bitfield member in struct without name. And this cause compilation error. This patch removes struct in ieee754dp declaration. So compilation error is fixed.
Signed-off-by Eunbong Song <[email protected]>What gcc version are you using?
make
arch/mips/math-emu/ieee754.ofor mips defconfig triggers the following on linux-next 30 times:
arch/mips/math-emu/ieee754.c:45:2: error: unknown field 'sign' specified in initializerarch/mips/math-emu/ieee754.c:45:2: warning: missing braces around initializerarch/mips/math-emu/ieee754.c:45:2: warning: (near initialization for '__ieee754dp_spcvals[0].<anonymous>')arch/mips/math-emu/ieee754.c:45:2: error: unknown field 'bexp' specified in initializerarch/mips/math-emu/ieee754.c:45:2: warning: excess elements in union initializerarch/mips/math-emu/ieee754.c:45:2: warning: (near initialization for '__ieee754dp_spcvals[0]')arch/mips/math-emu/ieee754.c:45:2: error: unknown field 'mant' specified in initializerarch/mips/math-emu/ieee754.c:45:2: warning: excess elements in union initializerarch/mips/math-emu/ieee754.c:45:2: warning: (near initialization for '__ieee754dp_spcvals[0]')
Quoted 2 lines
I'm using gcc 4.5.1 for mips. The patch makes all members part of the union so it's probably not what you want to fix it, though.
There's more recent breakage like this, e.g.:
mm/page_io.c: In function '__swap_writepage':mm/page_io.c:277: error: unknown field 'bvec' specified in initializer mm/page_io.c:278: warning: excess elements in struct initializer mm/page_io.c:278: warning: (near initialization for 'from')
introduced with "bio_vec-backed iov_iter" (GCC 4.1.2 here). We still in principle support GCC versions back to 3.2:
$ grep 'Gnu C' Documentation/Changes o Gnu C 3.2 # gcc --version $
so either this breakage has to be cleaned up or the requirement for the minimum GCC version revisited.
This is a semi-standard language extension BTW, citing from the GCC
manual:
--------------------------------------------------------------------------
6 Extensions to the C Language Family
*************************************
GNU C provides several language features not found in ISO standard C. (The -pedantic' option directs GCC to print a warning message if any of these features is used.) To test for the availability of these features in conditional compilation, check for a predefined macro __GNUC__', which is always defined under GCC.
6.59 Unnamed struct/union fields within structs/unions
======================================================
As permitted by ISO C11 and for compatibility with other compilers, GCC allows you to define a structure or union that contains, as fields, structures and unions without names.
--------------------------------------------------------------------------
-- note the term "permitted" rather than "required".
We do make use of a few GCC language extensions, most notably inline
assembly, however in this case we merely save a couple of characters here and there and this is IMO not worth breaking people's development environments.
Maciej