[LLVMdev] LLVM Inliner
Devang Patel
dpatel at apple.com
Mon Nov 29 17:01:32 PST 2010
On Nov 29, 2010, at 1:17 AM, Duncan Sands wrote:
> Hi David,
>
>> Interesting -- LLVM does perform on the fly cleanups during inlining
>> transformation -- this will make summary update precise. One thing I notice from
>> the debug pass dump is that the 'deduce function attribute' pass happens before
>> the clean up -- Is it intended?
>
> you are correct. This is due to a limitation of the pass manager: it would
> clearly be better to run the function attributes pass after the per-function
> passes that follow the inliner, but currently if you try what happens is that
> first the inliner and on the fly cleanups get run on every function, and only
> when they have finished the function attributes pass gets run on every
> function. That means that function attributes of callees will not have been
> calculated when the inliner (and the subsequent function passes) process a
> function, which is bad. I think the pass manager should be fixed to not do
> this, at which point the function attributes pass could be moved later.
I am not sure I understand this. Here is what I am seeing when I run
'opt -inline -instcombine -functionattrs'
Target Data Layout
No Alias Analysis (always returns 'may' alias)
ModulePass Manager
Basic CallGraph Construction
Call Graph SCC Pass Manager
Function Integration/Inlining
FunctionPass Manager
Combine redundant instructions
Basic CallGraph Construction
Call Graph SCC Pass Manager
Deduce function attributes
FunctionPass Manager
Preliminary module verification
Dominator Tree Construction
Module Verifier
Is this not what you expect ?
-
Devang
More information about the llvm-dev
mailing list