Re: [patch 00/2] improve .text size on gcc 4.0 and newer compilers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Wed, 28 Dec 2005, Ingo Molnar wrote:
>
> this patchset (for the 2.6.16 tree) consists of two patches:
> 
>   gcc-no-forced-inlining.patch
>   gcc-unit-at-a-time.patch

Why do you mix the two up? I'd assume they are independent, and if they 
aren't, please explain why?

The forced inlining is not just a good idea. Several versions of gcc would 
NOT COMPILE the kernel without it. The fact that it works with your 
configurations and your particular compiler version has absolutely ZERO 
relevance.

Gcc has had horrible mistakes in inlining functions. Inlining too much, 
and quite often, not inlining things that absolutely _have_ to be inlined. 
Trivial things that inline to an instruction or two, but that look 
complicated because they have a big switch-statement that just happens to 
be known at compile-time.

And not inlining them not only results in horribly bad code (dynamic tests 
for something that should be static), but also results in link errors when 
cases that should be statically unreachable suddenly become reachable 
after all.

So the fact that your gcc-4.x version happens to get things right for your 
case in no way means that you can do this in general.

Also, the inlining patch apparently makes code larger in some cases, so 
it's not even a unconditional win.

What's the effect of _just_ the "unit-at-a-time" thing which we can (and 
you did) much more easily make gcc-version-dependent?

			Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux