[LLVMdev] LLVM Inliner
Xinliang David Li
xinliangli at gmail.com
Tue Nov 30 14:58:14 PST 2010
On Tue, Nov 30, 2010 at 2:44 PM, Chris Lattner <clattner at apple.com> wrote:
>
> On Nov 30, 2010, at 2:36 PM, Xinliang David Li wrote:
>
> Yes, global growth limit may be good for size control, but is a hack for
>> control icache footprint. However, as I mentioned, the bottom up inline
>> scheme make it impossible to use any heuristics involving 'global limit'
>> which can be more complicated and fancier than the simple growth limit. For
>> instance, there is no restriction that only one global limit can be used ---
>> the compiler can partition the call graph into multiple locality regions,
>> and set icache limit for each region. The inlining order can be done on a
>> region by region basis. For each region, the region limit is applied and the
>> priority queue must be used.
>>
>>
>> Yes, I understand that. But why is a global limit useful? What problem
>> does it solve? If it is to cap "runaway inlining" there are better ways to
>> do it. You agree that it isn't for icache optimization, so what value does
>> it serve?
>>
>
> I am not trying to defend 'global growth limit' here :) -- I am arguing the
> usefulness/flexibility of using a priority based inline ordering. do we
> agree here?
>
>
> I think I'm missing something important. :)
>
> Can you explain the difference between priority based inlining and a global
> threshold? If you end up inlining everything in your priority queue,
>
For large applications, this will never happen.
> then order doesn't matter. If you only inline the high priority stuff,
> then you can handle this with a threshold. Can you give a scenario that
> can't be handled with bottom-up inlining and a sufficiently smart inlining
> cost evaluation?
>
It is doable in bottom up, but can be complicated. I guess you will also
need a priority queue as a side data structure, and you probably also need
multiple passes to exhaust the limit.
Another LLVM inliner limitation I won't to point out is that since inline
analysis and transformation are done together, any inline decisions can not
be undone.
Thanks,
David
>
> -Chris
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20101130/aa0b9ebd/attachment.html>
More information about the llvm-dev
mailing list