Suboptimal code generated for _Bool

Jim Wilson wilson@specifixinc.com
Sat Jun 26 03:03:00 GMT 2004


Marcin 'Qrczak' Kowalczyk wrote:
> The movzbl is completely unnecessary. It's inserted even if the called
> function is inline.

This is an issue that has come up several times before already.  The 
culprit is a bit of code near the end of c-decl.c start_function that 
always promotes return types to int if they are integer types smaller 
than int.  This code has been present since gcc-1.x, and serves no 
apparent purpose, at least for an ISO C compiler.  All it does is make 
the resulting code run slower.

However, there is some risk that we will introduce silent ABI changes to 
some ports that were accidentally relying on this bogus code.  But if 
so, those ports should be fixed.

It is possible that there is already a patch in the gcc-patches queue 
for this.  I am way behind on my gcc-patches reading.

Incidentally, there is similar code in the C++ front end in 
gcc/cp/decl.c, start_preparsed_function.  Just search for 
c_promoting_integer_type_p and whack it.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



More information about the Gcc mailing list