[U-Boot] [PATCH] initcall: Move to inline function

Simon Glass sjg at chromium.org
Fri Feb 8 04:11:49 UTC 2019


Hi Alex,

On Sat, 2 Feb 2019 at 09:07, Alexander Graf <agraf at suse.de> wrote:
>
>
>
> > Am 02.02.2019 um 15:13 schrieb Simon Glass <sjg at chromium.org>:
> >
> > Hi Alex,
> >
> >> On Thu, 31 Jan 2019 at 08:06, Alexander Graf <agraf at suse.de> wrote:
> >>
> >> The board_r init function was complaining that we are looping through
> >> an array, calling all our tiny init stubs sequentially via indirect
> >> function calls (which can't be speculated, so they are slow).
> >
> > Is this a compiler warning? Could you let me know what this is?
>
> It's the code comment I'm removing with this patch :).
>
> >
> >>
> >> The solution to that is pretty easy though. All we need to do is inline
> >> the function that loops through the functions and the compiler will
> >> automatically convert almost all indirect calls into direct inlined code.
> >
> > You mean it calls the functions one after the other without a
> > function-table array?
>
> Exactly. Magical, eh? It even inlines them!

Yes it is surprising. I am also surprised that it reduces code size,
but I suppose that is why it does it. Presumably the inlining is what
does that.

But what happens if we #define DEBUG?

Regards,
Simon


More information about the U-Boot mailing list