[llvm-commits] [llvm] r167759 - in /llvm/trunk: include/llvm/PassManagers.h lib/VMCore/PassManager.cpp

Evan Cheng evan.cheng at apple.com
Tue Nov 13 09:09:29 PST 2012


One thing we have found  that it is currently impossible to reuse module passes. There is no API to reset module pass internals so we are forced to tear down and rebuild the entire pass manager for every module. We will be proposing changes to make this possible. 

Evan

On Nov 12, 2012, at 10:45 PM, Chris Lattner <clattner at apple.com> wrote:

> On Nov 12, 2012, at 7:10 PM, Chandler Carruth <chandlerc at google.com> wrote:
>>> OTOH, the call to size() is inside a virtual function, and I don't think that any of the calls to it can be devirtualized. I'd expect the lack of inlining and the indirect call to be a lot slower than the arithmetic in size(). However, it looks like getNumContainedPasses() isn't overridden anywhere so maybe we should just make it non-virtual if it's popping up in profiles?
>> 
>> As I've also been looking at both compile time and the pass managers,
>> I'd also love to know the rough scenario which causes this to show up
>> in profiles so I have a better idea of what might be important to
>> profile in making any changes here.
> 
> The two scenarios that the passmanager shows up in are:
> 
> 1) scenario where you want to quickly jit stuff, so you cons up a module (usually small) then run it through the passmanager.  This pushes the initialization cleanup of the passmanager itself (and really wants a reusable passmanager).
> 2) a large module with tons of tiny functions (e.g. empty bodies).  This presses on the mechanics of running through the pass list.
> 
> -Chris
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list