similar to: Polly Dependency Analysis in MyPass

Displaying 20 results from an estimated 300 matches similar to: "Polly Dependency Analysis in MyPass"

2018 Jan 29
0
Polly Dependency Analysis in MyPass
How do you compile the code? Within the Polly subdirectory using CMake? How do you run your pass. Using "opt -mypass inputfile.ll"? Michael 2018-01-28 9:30 GMT-06:00 hameeza ahmed via llvm-dev <llvm-dev at lists.llvm.org>: > Hello, > > I need to analyze dependencies in my llvm ir by using polly. i created a new > pass called mypass there i added polly dependency
2018 Jan 28
0
Polly Dependency Analysis in MyPass
I have modified the code as follows; now i am using both scopdetection and scopinformation before dependency check but i think link is missing... virtual bool runOnFunction(Function &F) { std::unique_ptr<ScopInfo> Result; std::unique_ptr<ScopDetection> Result2; //polly::ScopDetection pl; auto &LI = getAnalysis<LoopInfoWrapperPass>().getLoopInfo(); auto
2018 Jan 28
1
Polly Dependency Analysis in MyPass
HI Hameeza, what do mean by link is still missing? Currently it is not possible to use polyhedral information from within in-tree LLVM passes. This is because Polly is not currently part of the LLVM tree, and is only linked into the tools as an external project. I.e., you can't depend on Polly passes in an in-tree pass. What you can do, though, is use Polly from an out-of-tree context. If
2018 Jan 29
1
Polly Dependency Analysis in MyPass
Thank You. Actually i pass polly canonaclize IR to my new created polly pass called "mypass". Mypass should first detect scops then find depedndencies as the mechanism conventional approach. Now i know how to write llvm pass here i am writing pass as loadable module first afterwards i will integrate it with opt in the end. I tried writing following code. Could you please help me on
2018 Aug 11
3
ScalarEvolution in a ModulePass
Hey LLVMDev, I'm working on a ModulePass that uses ScalarEvolution along with several other analyses. After some debugging, it looks to me like ScalarEvolutionWrapperPass does not handle memory correctly for this case. Here's my current understanding of the problem. ScalarEvolutionWrapperPass maintains a unique_ptr to a ScalarEvolution. Calling getSE() dereferences this pointer.
2016 Jun 20
2
[GSoC 2016] Polly as an Analysis pass - Midterm report
Dear Community, I would like to summarize my work till date for GSoC 2016. Till the current phase of my project, I have mostly focused on developing the necessary infrastructure to use analysis results from Polly in LLVM. Initial plan as mentioned in the proposal: For the first month:- 1. Decouple ScopInfo pass from Polly’s pass chain and provide capability to create SCoP(Static
2019 Mar 26
2
On-the-fly passes
I'm seeing some very unexpected behavior in a ModulePass I've created. To support both the legacy and new pass managers, I've abstracted away the code to get the passes it depends on: bool MyPass::runOnModule(Module &M) override { auto DominatorGetter = [this] (Function &F) -> DominatorTree & { return
2019 Mar 31
2
Unable to find requested analysis info (Interesting Assertion Failture for Specific Target Source Code)
Dear all, Hi! I encounter an interesting assertion failure when implementing my Pass, which is defined with the member functions shown below: ======================My Pass====================================== bool MYPass::runOnModule(Module &M) { for (auto &F : M) { SE = &getAnalysis<ScalarEvolutionWrapperPass>(F).getSE(); ......
2019 Jan 31
4
Confusing ERROR with LoopAccessLegacyAnalysis: Pass 'Unnamed pass: implement Pass::getPassName()' is not initialized.
Dear all, I write a new LoopPass which wants to use passes including LoopInfoWrapperPass, ScalarEvolutionWrapperPass and LoopAccessLegacyAnalysis. Therefore, I implement the following code based on LLVM 9.0.0: ===================================================================== bool LoopInformationCollect::runOnLoop(Loop *L, LPPassManager &) { auto &SE =
2010 Apr 01
2
[LLVMdev] AnalysisUsage: addRequired vs. addRequiredTransitive
On Mar 31, 2010, at 3:13 PM, Owen Anderson wrote: > Some analyses, like Andersen's AA, do all their computation in their > runOnFunction(). Therefore, anything they depended on can be > destroyed after the runOnFunction() returns. What about AA itself? Would addRequired<AliasAnalysis> keep AliasAnalysis alive (but allow AliasAnalysis's dependencies to die)? >
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
2006 Oct 21
1
[LLVMdev] addRequired vs addRequiredTransitive
I am having a hard time figuring out the difference between addRequired and addRequiredTransitive. Could someone please clarify the difference? Let's say I have a function pass P1 that relies on a function pass P2. P1 computes some sort of analysis on a function F and P2 uses that analysis when it processes F. Does that mean that I should use addRequiredTransitive? Thanks, Ryan
2014 Apr 18
3
[LLVMdev] PassManager Woes
Ok, I've been struggling with this for two days and hopefully someone can help me out. I have a set of passes, analysis passes A, B, C, D and transformation passes E and F. Pass C depends on pass A and pass D depends on pass B. Pass E depends on C and D and does not preserve any analysis pass. Pass F depeds on pass A and pass C. Pass F runs after pass E. Graphically the dependency graph
2010 Apr 01
0
[LLVMdev] AnalysisUsage: addRequired vs. addRequiredTransitive
On Fri Apr 02 00:37:03 +0200 2010, Trevor Harmon wrote: > On Mar 31, 2010, at 3:13 PM, Owen Anderson wrote: > > Others, like MemoryDependenceAnalysis, are "lazy." MDA > > specifically does NOT compute results in its runOnFunction(), > > instead computing results on-demand when a user queries it. Because > > MDA depends on AA, we must ensure that, as long as
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
2019 Oct 30
2
How to make ScalarEvolution recompute SCEV values?
Hello all, I’m pretty new to LLVM. I'm writing a pass for loop optimization. I clone and rearrange loops, setting the cloned loop as the original loop’s parent. This can be done multiple times, until there is no more work to do. The trouble is, after the first time I do this, the cloned loop's SCEVs become unknown types when they should be AddRecExpr. If I re-run the whole pass on the
2016 Aug 03
3
Extracting the names of the variables that creates loop-carried dependencies
Hi, I would like to know if it is possible to extract the source level names of variables that create loop-carried dependencies. For example, for the following code: for (int i = 0; i < A_ROW; i++) { for (int j = 1; j < B_COL; j++) { a_matrix[i][j] = a_matrix[i][j - 1]; } } I get the following AST: #pragma omp parallel for
2012 Mar 07
3
[LLVMdev] Alias analysis result
Hello everyone, I am trying to find the alias between a store instruction's pointer operand and function arguments. This is the code, virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequiredTransitive<AliasAnalysis>(); AU.addPreserved<AliasAnalysis>(); } virtual bool runOnFunction(Function &F) { AliasAnalysis &AA =
2012 Apr 13
2
[LLVMdev] Incorrect result in LLVM Alias Analysis
It contains the bitcode file(without any optimization) of the below program, void map(int *a) { *a=20; } int main(){ int *a=(int *)malloc(sizeof(int)); *a=15; map(a); return 0; } I want to check if the pointer operand of each store instruction aliases with the function's arguments. I have used below code for this, virtual void getAnalysisUsage(AnalysisUsage &AU) const {
2018 Apr 26
0
Aliasing of pointers from different address spaces
Hi, Elena, You're correct. We do assume that pointers in different address spaces can alias. Targets can add their own AA pass into the AA query chain, and one of the things such analysis passes can do account for target-specific knowledge of address-space semantics. For example, see lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp  -Hal On 04/26/2018 07:56 AM, Demikhovsky, Elena via llvm-dev