Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] loadable passes with dependencies?"
2011 Nov 08
0
[LLVMdev] loadable passes with dependencies?
On 11/08/2011 03:20 AM, ret val wrote:
> I'm writing a Pass that I would like to remain loadable by opt. The
> pass also requires DominatorTree(for PromoteMemToReg).
>
> Looking for examples the only way I found to require a dependecny is
> by doing something like this:
> char Hello::ID = 0;
> namespace llvm { void
2011 Nov 08
2
[LLVMdev] loadable passes with dependencies?
I'm confused by your code. StaticInitializer seems to exist so you can
create InitializeEverything, which doesn't get used.
Do I need to do something along the lines of:
static void registerPollyPasses(const llvm::PassManagerBuilder &Builder,
llvm::PassManagerBase &PM) {
PM.add(llvm::createPromoteMemoryToRegisterPass());
2011 Nov 08
2
[LLVMdev] loadable passes with dependencies?
Sorry to keep dragging this out on you. Im now getting: Assertion
failed: (ResultPass && "getAnalysis*() called on an analysis that was
not " "'required' by pass!"), function getAnalysisID
But I already have:
void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequired<DominatorTree>();
}
And changed the bottom of my pass too:
char Hello::ID =
2011 Nov 08
0
[LLVMdev] loadable passes with dependencies?
On 11/08/2011 03:40 PM, ret val wrote:
> I'm confused by your code. StaticInitializer seems to exist so you can
> create InitializeEverything, which doesn't get used.
>
> Do I need to do something along the lines of:
> static void registerPollyPasses(const llvm::PassManagerBuilder&Builder,
>
2011 Nov 08
4
[LLVMdev] loadable passes with dependencies?
Just shows me what I expect
void getAnalysisUsage(AnalysisUsage &AU) const {
DominatorTree *dt = &getAnalysis<DominatorTree>();
So I'm only using it for DominatorTree(so I can use PromoteMemToReg).
Thanks
On Tue, Nov 8, 2011 at 2:28 PM, Tobias Grosser <tobias at grosser.es> wrote:
> On 11/08/2011 07:33 PM, ret val wrote:
>>
>> Sorry to keep dragging
2011 Nov 08
2
[LLVMdev] loadable passes with dependencies?
I still have the addRequired:
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequired<DominatorTree>();
}
The other line
DominatorTree *dt = &getAnalysis<DominatorTree>();
Is for later use when I try to use PromoteMemToReg
On Tue, Nov 8, 2011 at 4:22 PM, Michael Ilseman <michael at lunarg.com> wrote:
> Something's
2011 Nov 08
0
[LLVMdev] loadable passes with dependencies?
Something's different here, earlier in the thread you said you had:
void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequired<DominatorTree>();
}
Now you have:
void getAnalysisUsage(AnalysisUsage &AU) const {
DominatorTree *dt = &getAnalysis<DominatorTree>();
I'm sort of confused, why did this change happen? I think the
2011 Nov 08
0
[LLVMdev] loadable passes with dependencies?
On 11/8/11 4:34 PM, ret val wrote:
> I still have the addRequired:
> virtual void getAnalysisUsage(AnalysisUsage&AU) const {
> AU.addRequired<DominatorTree>();
> }
>
> The other line
> DominatorTree *dt =&getAnalysis<DominatorTree>();
> Is for later use when I try to use PromoteMemToReg
Isn't DominatorTree a
2011 Nov 08
0
[LLVMdev] loadable passes with dependencies?
On 11/08/2011 07:33 PM, ret val wrote:
> Sorry to keep dragging this out on you. Im now getting: Assertion
> failed: (ResultPass&& "getAnalysis*() called on an analysis that was
> not " "'required' by pass!"), function getAnalysisID
>
> But I already have:
> void getAnalysisUsage(AnalysisUsage&AU) const {
>
2011 Nov 09
1
[LLVMdev] loadable passes with dependencies?
Awesome, that let me get far enough to trip:
Assertion failed: (ResultPass && "Unable to find requested analysis
info"), function getAnalysisID
Is there something else I forgot?
On Tue, Nov 8, 2011 at 5:47 PM, John Criswell <criswell at illinois.edu> wrote:
> On 11/8/11 4:34 PM, ret val wrote:
>>
>> I still have the addRequired:
>> virtual
2011 May 03
4
[LLVMdev] 2.9 segfault when requesting for both LoopInfo and DominatorTree analyses.
When migrating my project to 2.9, I've encountered a strange segfault
where if a ModulePass's getAnalysisUsage adds LoopInfo and
DominatorTree, then llvm::PMTopLevelManager::findAnalysisUsage will
segfault. What's odd is that if I rearrange this (add required for
DominatorTree before LoopInfo), it does not segfault. I realize that
LoopInfo requires and preserves DominatorTree, but this
2011 Nov 08
0
[LLVMdev] loadable passes with dependencies?
On 11/08/2011 08:50 PM, ret val wrote:
> Just shows me what I expect
> void getAnalysisUsage(AnalysisUsage&AU) const {
> DominatorTree *dt =&getAnalysis<DominatorTree>();
>
> So I'm only using it for DominatorTree(so I can use PromoteMemToReg).
Interesting. Is the same assert triggered when you use RegisterPass to
register the pass? Is getAnalysisUsage()
2011 Aug 22
1
[LLVMdev] Infinite loop when adding a new analysis pass
I am trying to add an analysis pass as a FunctionPass, and let LICM
(LoopPass) depends upon it. So in LICM.cpp, I have the following:
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesCFG();
AU.addRequired<DominatorTree>();
AU.addRequired<LoopInfo>();
AU.addRequiredID(LoopSimplifyID);
AU.addRequired<AliasAnalysis>();
2011 May 04
0
[LLVMdev] 2.9 segfault when requesting for both LoopInfo and DominatorTree analyses.
Hi Michael,
> When migrating my project to 2.9, I've encountered a strange segfault
> where if a ModulePass's getAnalysisUsage adds LoopInfo and
> DominatorTree, then llvm::PMTopLevelManager::findAnalysisUsage will
> segfault.
I suggest you build LLVM with assertions enabled - then you should get a
helpful error message rather than a segfault. I think you are not allowed
to
2011 May 04
2
[LLVMdev] 2.9 segfault when requesting for both LoopInfo and DominatorTree analyses.
Thanks for the response. I do have assertions enabled, and none of
them are getting hit. I did do a search of the mailing list for the
past year (approximately) before writing my email, and what I found
was that you should be allowed to use LoopInfo and other analysis
function passes from a module pass, with the only difference being
that getAnalysis is passed the function. The example code I
2011 Dec 14
2
[LLVMdev] Adding dependency on MemoryDependenceAnalysis pass to LICM causes opt to get stuck in addPass
I'm attempting to add some support for hoisting/sinking of memory-using
intrinsics in loops, and so I want to use MemoryDependenceAnalysis in
LICM, but when I modify getAnalysisUsge to include this :
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesCFG();
AU.addRequired<DominatorTree>();
AU.addRequired<LoopInfo>();
2012 Oct 30
1
[LLVMdev] Error when trying to chain two llvm transform passes
On Oct 30, 2012, at 3:15 PM, Krzysztof Parzyszek <kparzysz at codeaurora.org> wrote:
> On 10/30/2012 4:10 PM, Ashwin kumar wrote:
>>
>> Assertion failed: (PI && "Expected required passes to be initialized"),
>> function schedulePass, file PassManager.cpp, line 597.
>>
>>
>> I register the passes using RegisterPass function call.
2011 May 04
0
[LLVMdev] 2.9 segfault when requesting for both LoopInfo and DominatorTree analyses.
Hi Michael, hi Duncan,
yesterday I stumbled over something that might be related.
At least I could also just be doing some initialization wrong or
something in this direction...
In my case, I hit a segfault in PassInfo::isAnalysisGroup() after
PassManager.add(myModulePass) is called.
My setup seems fairly simple, the attached code should reproduce the error.
Compile with
g++ test.cpp
2011 May 04
1
[LLVMdev] 2.9 segfault when requesting for both LoopInfo and DominatorTree analyses.
Your constructor is not calling initializeTestMPPass(), and you're
using RegisterPass which I think was deprecated in favor of
INITIALIZE_PASS. You can look at, for example,
lib/Transforms/Scalar/IndVarSimplify.cpp for examples of how to
initialize, e.g. having "INITIALIZE_PASS_DEPENDENCY(LoopInfo)"
sandwiched between BEGIN and END. Note that you'll want a forward
declaration of
2004 Nov 29
2
[LLVMdev] Running specific passes
On Friday 26 November 2004 19:56, Chris Lattner wrote:
> On Fri, 26 Nov 2004, Vladimir Prus wrote:
> > in the implementation of some analysis, I need to change the program and
> > then invoke Mem2Reg pass. That pass, in turn, requires other analysis, so
> > I must
>
> Usually you want to do this at a higher level, why not just use 'opt
> -yourpass -mem2reg'?