On 30/09/14 12:51, Andreas Schwab wrote: > Richard Sandiford <richard.sandif...@arm.com> writes: > >> Andreas Schwab <sch...@suse.de> writes: >>> Richard Sandiford <richard.sandif...@arm.com> writes: >>> >>>> @@ -315,7 +318,7 @@ struct ira_allocno >>>> number (0, ...) - 2. Value -1 is used for allocnos spilled by the >>>> reload (at this point pseudo-register has only one allocno) which >>>> did not get stack slot yet. */ >>>> - short int hard_regno; >>>> + int hard_regno : 16; >>> >>> If you want negative numbers you need to make that explicitly signed. >> >> Are you sure? > > See C11, 6.7.2#5. > > Each of the comma-separated multisets designates the same type, > except that for bit-fields, it is implementation-defined whether the > specifier int designates the same type as signed int or the same > type as unsigned int. > > > Andreas. >
GCC is written in C++ these days, so technically, you need the C++ standard :-) GNU C defaults to signed bitfields (see trouble.texi). However, since GCC is supposed to bootstrap using a portable ISO C++ compiler, there's an argument for removing the ambiguity entirely by being explicit. We no-longer have to worry about compilers that don't support the signed keyword. R.