]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[committed] Stop forcing unsigned bitfields on mcore
authorJeff Law <jlaw@ventanamicro.com>
Wed, 20 Dec 2023 04:05:25 +0000 (21:05 -0700)
committerJeff Law <jlaw@ventanamicro.com>
Wed, 20 Dec 2023 04:24:31 +0000 (21:24 -0700)
The GCC manual has a whole section on signedness of bitfields with the ultimate
conclusion that the property really isn't an ABI issue, but instead a C dialect
issue (agreed).  Furthermore it concludes that all targets should behave the
same by default.

So it was a mistake for the mcore port to force bitfields to be unsigned and
that never should have been included.  This patch rectifies that problem.

I should have remembered this -- I went down this path once in the 90s.  I
don't recall which port anymore, but once Joseph mentioned this policy bits and
pieces did start to come back to me.

Restoring the proper default happens to also fix 170 tests in the GCC
testsuite, some of which would go into infinite loops when bitfields were
treated as signed values (pr88621 for example).  Essentially the testing time
cuts in half, which was actually the point of digging into pr88621 to begin
with.

gcc/
* config/mcore/mcore.h (CC1_SPEC): Do not set -funsigned-bitfields.

gcc/config/mcore/mcore.h

index 3de4f0b336afe9ef2a1b0858f43250ed3a9a05f9..c732dc014c6114b7bc10212a3d46e30329b50aa2 100644 (file)
@@ -81,9 +81,6 @@
 
 extern char * mcore_current_function_name;
  
-/* The MCore ABI says that bitfields are unsigned by default.  */
-#define CC1_SPEC "-funsigned-bitfields"
-
 /* Target machine storage Layout.  */
 
 #define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE)      \