[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