svn commit: r316132 - head/sys/boot/i386/boot2

Warner Losh imp at bsdimp.com
Thu Mar 30 06:38:49 UTC 2017


On Thu, Mar 30, 2017 at 12:23 AM, Bruce Evans <brde at optusnet.com.au> wrote:
> I doubt that gcc-6.3 is very broken.  Did its CFLAGS even have -Os?

Yes. boot2 doesn't use the kernel CFLAGS.

> Kernel CFLAGS are still broken even for gcc-4.2, by sprinkling inline
> parameter magic that was more needed for gcc-3.3.  The magic isn't
> really right for gcc-4.2, and breaks -Os for kernels.

There is different magic for boot2.

>The magic might
> be wronger for gcc-6.3, though it would be a compiler bug to not
> just ignore it if it is nonsense.  clang doesn't provide any control
> over inlining AFAIK, but ignores gcc directive to limit it and does
> too much.

Yes. It does. Hence my glowing review of 6.3 :) But you are right. I'm
likely being overly harsh without commanding enough facts to get past
my preconceived notions... I don't know if this is a simple compiler
bug, lack of proper options, or a need to do things differently.
Latter day versions of gcc have many more knobs to turn here. I don't
know yet if turning any of them will be helpful. I'm looking to
automate the knob turning so that we can at least see which optimizer
options have an effect on the size. I doubt more than half a dozen
have any useful effect on the size, and finding the right combination
likely will suffice. Or we wait for gcc 7 and hope for the best...

But this is nothing new. gcc 5.4.0 has -504 bytes free. gcc 4.9.4 has
the same. 4.8.5 has -472, etc. It's clear that the magic sweet spot
we're in with the in-tree 4.2.1 compiler isn't the sweet spot for
these compilers... Then again, clang generated bloated like this until
we got boot2 into their test suit, and now we have 100 bytes to spare
there.

Warner


More information about the svn-src-all mailing list