search for: analysisusage

Displaying 20 results from an estimated 338 matches for "analysisusage".

2012 Nov 09
0
[LLVMdev] Loop carried dependence analysis?
...Analysis->depends(instructions[src], instructions[dst], true); if (dependence) { unsigned direction = dependence->getDirection(nestingLevel); // Returns DVEntry::ALL if (const SCEV* scev = dependence->getDistance(nestingLevel)) // Returns null {...} } void ExtractFeatures::getAnalysisUsage(AnalysisUsage &analysisUsage) const { analysisUsage.addRequired<LoopInfo>(); analysisUsage.addPreserved<LoopInfo>(); analysisUsage.addRequired<ScalarEvolution>(); analysisUsage.addPreserved<ScalarEvolution>(); analysisUsage.addRequired<AliasAnalysi...
2002 Dec 01
1
[LLVMdev] PassManager error message hard to decipher
...ar PassManager error for what seem to be legal dependencies. Here is the situation. We have 5 passes, RegisterAllocator, FunctionLiveVarInfo, CoalesceCopies, DominanceForest, and UnionSSAVars, with dependencies as follows: class RegisterAllocator : public FunctionPass { . . . virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<FunctionLiveVarInfo>(); AU.addRequired<CoalesceCopies>(); } . . . }; class FunctionLiveVarInfo : public FunctionPass { . . . virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); } . . . }; class...
2010 Mar 31
2
[LLVMdev] AnalysisUsage: addRequired vs. addRequiredTransitive
Hi, I'm a bit confused about the distinction between addRequired and addRequiredTransitive in AnalysisUsage. From PassAnalysisSupport.h: "REQUIRES (must be available when the pass runs), REQUIRES TRANSITIVE (must be available throughout the lifetime of the pass)." The part that's confusing me is "must be available when the pass runs". I don't see how that's any diffe...
2012 Nov 06
1
[LLVMdev] Adding function attributes
...modified = true; } else { errs() << "AlwaysInline detected\n"; } } return modified; } virtual void getAnalysisUsage(AnalysisUsage &analysisUsage) const { analysisUsage.addRequired<LoopInfo>(); analysisUsage.addPreserved<LoopInfo>(); analysisUsage.addRequired<ScalarEvolution>(); analysisUsage.addPreserved<ScalarEv...
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 w...
2010 Mar 31
0
[LLVMdev] AnalysisUsage: addRequired vs. addRequiredTransitive
On Mar 31, 2010, at 2:53 PM, Trevor Harmon wrote: > I'm a bit confused about the distinction between addRequired and > addRequiredTransitive in AnalysisUsage. From PassAnalysisSupport.h: > > "REQUIRES (must be available when the pass runs), REQUIRES TRANSITIVE > (must be available throughout the lifetime of the pass)." > > The part that's confusing me is "must be available when the pass > runs". I don'...
2002 Oct 21
0
[LLVMdev] API Change: AnalysisUsage
This is just a note to mention that I just checked in this change (and fallout from it): http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20021021/000876.html Which renames: AnalysisUsage::preservesAll -> getPreservesAll AnalysisUsage::preservesCFG -> setPreservesCFG to be consistent with the already existing setPreservesAll method. This was a very confusing arrangement that Casey recently pointed out. I fixed all uses of these that are in the CVS repository. When these...
2012 Nov 05
0
[LLVMdev] Adding function attributes
Hi Arnaldo, On 05/11/12 10:02, Arnaldo wrote: > Hi Duncan, thanks for the quick answer. > > Yes I'm sure the runOnModule is being called, and when I dump the functions > before exiting the method I can see the AlwaysInline attribute. > > I'll check InlineAlways.cpp and will reimplement as last resource but I still > wonder why this is not working. if you want more
2006 Sep 18
3
[LLVMdev] Manipulate order of optimizations in llvm-ld
Hi, I've written a couple of passes, and I intend to use them using llvm-ld (loading works fine). However, I can't seem to figure out how to put them first, i.e. before all other optimizations (inlining, internalizing, ... should only kick in after my passes). Omitting AnalysisUsage::setPreservesAll() doesn't help and there is no AnalysisUsage::invalidateAll(). Does anybody know a workaround? Kind regards, Bram Adams GH-SEL, INTEC, Ghent University (Belgium)
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 &...
2017 Oct 03
1
About LLVM Pass dependency
Hi Hongbin I am not quite familiar with AnalysisUsage, let me correct question a bit. I have read Writing Pass <http://llvm.org/docs/WritingAnLLVMPass.html#specifying-interactions-between-passes>, All examples that i see here are based on collecting information .i.e Analysis Passes. I wonder if this applies to Transformation passes also. e.g. v...
2004 Jun 24
4
[LLVMdev] -Woverloaded-virtual
I've just had some fun, because I wanted to override FunctionPass::addAnalysisUsage, but forgot "const" after the method name -- so instead of overriding I've just created a new unrelated method. After spending some time on this, I've decided to add -Woverloaded-virtual option to compiler to catch such cases. However, it also gives some warnings on LLVM code:...
2012 Nov 05
2
[LLVMdev] Adding function attributes
Hi Duncan, thanks for the quick answer. Yes I'm sure the runOnModule is being called, and when I dump the functions before exiting the method I can see the AlwaysInline attribute. I'll check InlineAlways.cpp and will reimplement as last resource but I still wonder why this is not working. On Mon, Nov 5, 2012 at 5:03 PM, Duncan Sands <baldrick at free.fr> wrote: > Hi Arnaldo,
2009 Apr 09
3
[LLVMdev] Pass Manager Restriction?
...gerType): Assertion `!PMS.empty() && "Unable to find appropriate Pass Manager"' failed] ****** struct ModPass1 : public ModulePass { static char ID; ModPass1() : ModulePass((intptr_t)&ID) {} virtual bool runOnModule(Module &M) { return false; } virtual void getAnalysisUsage(AnalysisUsage &AU) const {} }; struct FunPass1 : public FunctionPass { static char ID; FunPass1() : FunctionPass((intptr_t)&ID) {} virtual bool runOnFunction(Function &F) {return false; } virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<ModPass...
2005 Sep 05
2
[LLVMdev] Pass is not automatically registered
...r> X("depana", "Dependence Analysis"); I traced into struct RegisterAnalysis ctor, but my pass doesn't appear. I put it in an anonymous namespace, it doesn't work too. The class definitions: class DependenceAnalyzer : public MachineFunctionPass { virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); AU.addRequired<LiveIntervals>(); AU.addRequired<LiveVariables>(); MachineFunctionPass::getAnalysisUsage(AU); } class RegAllocMultibank : public MachineFunctionPass { virtual void getAnalysisUsage(AnalysisUsa...
2009 Dec 08
2
[LLVMdev] getAnalysisIfAvailable<>(...)
Is it consistent to have a Pass instance's run method's implementation use getAnalysisIfAvailable<AnalysisType>() (vs just using getAnalysis< AnalysisType >) when that same instance's getAnalysisUsage(AnalysisUsage &au) implementation invokes au.addRequired<AnalysisType>()? For example in the implementation of SelectionDAGISel::runOnMachineFunction(...) (called from MachineFunctionPass::runOnFunction(...)): DwarfWriter *DW = getAnalysisIfAvailable<DwarfWriter>(); is used vs:...
2019 Apr 02
2
How can I use llvm::LoopInfo in the runOnModule method?
Hi all, I tried to have a LoopInfo object in a function pass, and add addRequired in getAnalysisUsage, and then use getAnalysis in runOnFunction(). It worked OK. Now I want to have a module pass to traverse the functions, and similarly, I want to have to loop information of the functions. When I did the above in runOnModule, and build the module pass, the following error popped out, and the compile...
2009 Mar 03
0
[LLVMdev] AnalysisUsage & Call Graph SCC Pass Manager
On Feb 26, 2009, at 6:01 PM, Julien Lerouge wrote: > Hello, > > I have the following sequence of passes (using --debug- > pass=Structure): > > ... > ModulePass Manager > FunctionPass Manager > Preliminary module verification > Dominator Tree Construction > Module Verifier > MyModulePass0 > MyAnalysis > Basic CallGraph
2010 Apr 01
0
[LLVMdev] AnalysisUsage: addRequired vs. addRequiredTransitive
...ure that, as long as MDA is alive and > > responding to queries, AA is alive as well. That is what > > addRequiredTransitive does. > > I'm not sure if I follow this. So let's say I'm writing a pass Foo, > and Foo depends on MDA. You're saying that Foo's getAnalysisUsage must > call addRequiredTransitive< MemoryDependenceAnalysis>, not > addRequired<MemoryDependenceAnalysis>, because otherwise the > dependencies of Foo's dependencies might be destroyed. Do I have that > right? Nope. If Foo depends on MDA, then Foo does addRequired<MD...
2005 Apr 29
2
[LLVMdev] about AnalysisUsage
Just noticed that quite a few passes like LoopSimplify are implemented in a single .cpp file ... this makes it impossible to specify LoopSimplify using the "addRequired" method. Was there any particular reason to do it this way? I wouldn't mind doing the splitting myself, though I am not using the CVS versions right now. Also, it would be nice to have support for some sort of a