Re: [kbuild-all] mipsel-linux-gnu-gcc: error: unrecognized command line option '-mcompact-branches=optimal'

From: Maciej W. Rozycki
Date: Fri Apr 22 2016 - 11:49:08 EST


On Fri, 22 Apr 2016, Paul Burton wrote:

> > In that case however it looks to me like these `-mcompact-branches='
> > options (all the three we support) need to be wrapped into `$(call
> > cc-option,...)'.
>
> An alternative that it could be argued better fits the principle of
> least surprise is to add an extra option to the Kconfig choice that
> simply leaves -mcompact-branches unspecified. I just submitted a patch
> to do so [1].

Hmm, good idea in principle, but given that -- as you say -- this is a
debug option I have a further suggestion I'll reply to your patch
submission with.

> > They do not affect any functionality and they are an
> > optimisation choice only anyway (and therefore I wonder why they've been
> > placed in arch/mips/Kconfig.debug rather than arch/mips/Kconfig).
>
> They're in Kconfig.debug because debug is exactly what they've been
> useful for - given that compact branches are new to R6 it's been useful
> in debugging systems, both hardware & simulators, to sometimes not use
> them. It's also been useful to force their use attempting to work around
> the compiler bug that [2] works around differently (bug 2179 on DMZ
> bugzilla). On the other hand I can't think of a reason we'd want to
> specify compact branch policy that isn't for debug - I'd expect for
> performance optimisation we're more likely to rely upon the toolchain
> using a sensible policy if the kernel is built for a specific CPU (eg.
> perhaps -mcpu=p6600 prefers non-compact branches & -mcpu=m6250 prefers
> all compact branches, or similar).

Good point, it should indeed be the compiler making the right choice for
the `-mtune=' setting selected with the default branch policy rather the
user fiddling with `-mcompact-branches=' manually unless, as you say, for
debugging.

Thanks for the patience to educate me.

Maciej