svn commit: r257691 - head/gnu/lib/libgcc

Bruce Evans brde at optusnet.com.au
Wed Nov 6 04:30:53 UTC 2013


On Tue, 5 Nov 2013, Luigi Rizzo wrote:

> On Tue, Nov 05, 2013 at 07:37:35AM +0000, Dimitry Andric wrote:
>> Log:
>>   Fix libgcc build with gcc after r257645, by using -Wno-static-in-inline
>>   for clang only.

This still just breaks the warning.  See my previous reply.  (For gcc,
it is unclear if the missing warning is due too fewer warnings by
default or if it is because gcc's default for plain inline is different
from clang's so that the code is correct for gcc.).

> I wonder if it is worthwhile adding to the default rules some
> compiler-specific CFLAGS, say CFLAGS_CLANG and CFLAGS_GCC
>
> (there is only a handful of cases now so maybe it is overkill,
> and it harms readability; on the other hand, the Makefiles
> already make a lot of assumptions on variable names)

No, that would further simplify breaking warnings instead of fixing the
bugs exposed by warnings.  The code should be portable so that it works
with any compiler.  That is just not so easy for contrib'ed code unless
the vendor made it portable.

I checked that libgcc is compiled by default with -std=gnu99.  This
is just the default from bsd.sys.mk.  It is obviously wrong for libgcc,
since the plain inlines in it require gnu89.  gnu99 gives consistenly
broken C99 semantic for both gcc and clang.  Only clang warned about
this, and the warning has been broken.  Contribed code could easily
depend on either newer or older standards than the one is defaulted.
gcc should be more portable than most contribed code, especially in
parts required to bootstrap itself.  It seems to never use extern
inline, but that means that all of its uses of plain inline assume
gnu89 and are thus unportable to pre-c99 compilers other than itself
and to post-c99 compilers including itself.  Maybe its own autoconfigued
makefiles avoid this problem by forcing -std=gnu89 or by avoiding
-std=c99.  Or -Dinline= might work for bootstrapping.

Bruce


More information about the svn-src-head mailing list