search for: scalarevolutionaliasanalysis

Displaying 12 results from an estimated 12 matches for "scalarevolutionaliasanalysis".

2013 Oct 31
3
[LLVMdev] LICM and SCEV AA?
...see several possible solutions: 1. Add yet-another hack to BasicAA to catch this case. 2. Let LICM use SE directly. Instead of bailing out on hoisting a loop-invariant value in an alias set with non-invariant values, use SE to check independence with the other values in the alias set. 3. Use ScalarEvolutionAliasAnalysis; scheduling SCEV AA prior to running LICM fixes this problem. Using #3 seems like the simplest, and most natural, way to fix this issue. I recall someone tell me (maybe at the developers' meeting) that SCEV AA was 'fundamentally flawed', and now I'm wondering what was meant by that...
2012 Oct 19
2
[LLVMdev] Choosing an alias analyzer
...TypeBasedAliasAnalysis before BasicAliasAnalysis so that // BasicAliasAnalysis wins if they disagree. This is intended to help // support "obvious" type-punning idioms. PM.add(createTypeBasedAliasAnalysisPass()); PM.add(createBasicAliasAnalysisPass()); } ------ My goal is to use ScalarEvolutionAliasAnalysis in MemoryDependenceAnalysis. When I do, getPassName in MemoryDependenceAnalysis (by stepping into getAnalysisUsage), I get $39 = 0x399f778 "Basic Alias Analysis (stateless AA impl)" To switch to ScalarEvolutionAnalysis, I changed lib/Transforms/IPO/PassManagerBuilder.cpp: addInitialAli...
2019 Jun 11
3
[RFC][SCEV] Behavior of AddRec in CompareSCEVComplexity
...mit-llvm -S ptr_test.c -o ptr_test.O1.ll` Crashed Command `opt -S -disable-output -basicaa -scev-aa -aa-eval -print-no-aliases ptr_test.O1.ll` The core dump message is also in the attachments. Investigations 1. SCEV-AA try to ‘minus' the SCEV expressions of the given two pointers(lib/Analysis/ScalarEvolutionAliasAnalysis.cpp:64) 2. ScalarEvolution::getMinusSCEV will boil down into ScalarEvolution::getAddExpr. On line 2383 of lib/Analysis/ScalarEvolution.cpp, GroupByComplexity is invoked. 3. CompareSCEVComplexity is eventually called to give a partial order between two SCEV expression. 4. If there are two SCEVAddExp...
2013 Nov 02
0
[LLVMdev] LICM and SCEV AA?
...ions: > > 1. Add yet-another hack to BasicAA to catch this case. > > 2. Let LICM use SE directly. Instead of bailing out on hoisting a loop-invariant value in an alias set with non-invariant values, use SE to check independence with the other values in the alias set. > > 3. Use ScalarEvolutionAliasAnalysis; scheduling SCEV AA prior to running LICM fixes this problem. > > Using #3 seems like the simplest, and most natural, way to fix this issue. I recall someone tell me (maybe at the developers' meeting) that SCEV AA was 'fundamentally flawed', and now I'm wondering what was mea...
2013 Nov 02
1
[LLVMdev] LICM and SCEV AA?
...1. Add yet-another hack to BasicAA to catch this case. >> >> 2. Let LICM use SE directly. Instead of bailing out on hoisting a loop-invariant value in an alias set with non-invariant values, use SE to check independence with the other values in the alias set. >> >> 3. Use ScalarEvolutionAliasAnalysis; scheduling SCEV AA prior to running LICM fixes this problem. >> >> Using #3 seems like the simplest, and most natural, way to fix this issue. I recall someone tell me (maybe at the developers' meeting) that SCEV AA was 'fundamentally flawed', and now I'm wondering what...
2014 Aug 13
2
[LLVMdev] Alias Analysis Semantics
...do not change, but that "a and b" are pointer equal > always. > > > What I describe is how, AFAICT, it is implemented in all of the alias > passes. > For example, SCEVAA, which actually computes the recurrences for these > loop expressions, has this: > // This is ScalarEvolutionAliasAnalysis. Get the SCEVs! > const SCEV *AS = SE->getSCEV(const_cast<Value *>(LocA.Ptr)); > const SCEV *BS = SE->getSCEV(const_cast<Value *>(LocB.Ptr)); > > // If they evaluate to the same expression, it's a MustAlias. > if (AS == BS) return MustAlias; > &gt...
2019 Jun 12
2
[RFC][SCEV] Behavior of AddRec in CompareSCEVComplexity
...> > `opt -S -disable-output -basicaa -scev-aa -aa-eval -print-no-aliases > ptr_test.O1.ll` > > The core dump message is also in the attachments. > > > > Investigations > > 1. SCEV-AA try to ‘minus' the SCEV expressions of the given two > pointers(lib/Analysis/ScalarEvolutionAliasAnalysis.cpp:64) > > 2. ScalarEvolution::getMinusSCEV will boil down into > ScalarEvolution::getAddExpr. On line 2383 of > lib/Analysis/ScalarEvolution.cpp, GroupByComplexity is invoked. > > 3. CompareSCEVComplexity is eventually called to give a partial order > between two SCEV express...
2014 Aug 13
2
[LLVMdev] Alias Analysis Semantics
Hello all, I've read the documentation on alias analysis, and I think I understand it literally, but I just want to be sure, because it seems a bit strange. As it says on this web page <http://llvm.org/docs/AliasAnalysis.html>, The MayAlias response is used whenever the two pointers might refer to the > same object. > > The PartialAlias response is used when the two memory
2012 Oct 20
0
[LLVMdev] Choosing an alias analyzer
...alysis so that > // BasicAliasAnalysis wins if they disagree. This is intended to help > // support "obvious" type-punning idioms. > PM.add(createTypeBasedAliasAnalysisPass()); > PM.add(createBasicAliasAnalysisPass()); > } > ------ > > My goal is to use ScalarEvolutionAliasAnalysis in MemoryDependenceAnalysis. > When I do, getPassName in MemoryDependenceAnalysis (by stepping into > getAnalysisUsage), I get > $39 = 0x399f778 "Basic Alias Analysis (stateless AA impl)" > > To switch to ScalarEvolutionAnalysis, I changed > lib/Transforms/IPO/PassManag...
2013 Nov 02
2
[LLVMdev] LICM and SCEV AA?
...A to catch this case. > > > > 2. Let LICM use SE directly. Instead of bailing out on hoisting a > > loop-invariant value in an alias set with non-invariant values, > > use SE to check independence with the other values in the alias > > set. > > > > 3. Use ScalarEvolutionAliasAnalysis; scheduling SCEV AA prior to > > running LICM fixes this problem. > > > > Using #3 seems like the simplest, and most natural, way to fix this > > issue. I recall someone tell me (maybe at the developers' meeting) > > that SCEV AA was 'fundamentally flawed'...
2014 Aug 14
2
[LLVMdev] Alias Analysis Semantics
...gt; always. > >> > >> > >> What I describe is how, AFAICT, it is implemented in all of the alias > >> passes. > >> For example, SCEVAA, which actually computes the recurrences for these > >> loop expressions, has this: > >> // This is ScalarEvolutionAliasAnalysis. Get the SCEVs! > >> const SCEV *AS = SE->getSCEV(const_cast<Value *>(LocA.Ptr)); > >> const SCEV *BS = SE->getSCEV(const_cast<Value *>(LocB.Ptr)); > >> > >> // If they evaluate to the same expression, it's a MustAlias. > >&gt...
2015 Jul 29
1
[LLVMdev] Error when i am using command make -j4 command in cygwin to compile safecode
...ease+Asserts build llvm[3]: Compiling X86ISelDAGToDAG.cpp for Release+Asserts build llvm[3]: Compiling DeadStoreElimination.cpp for Release+Asserts build llvm[3]: Compiling EarlyCSE.cpp for Release+Asserts build llvm[3]: Compiling SelectionDAGPrinter.cpp for Release+Asserts build llvm[2]: Compiling ScalarEvolutionAliasAnalysis.cpp for Release+Asserts build llvm[3]: Compiling FlattenCFGPass.cpp for Release+Asserts build llvm[3]: Compiling StatepointLowering.cpp for Release+Asserts build llvm[2]: Compiling ScalarEvolutionExpander.cpp for Release+Asserts build llvm[3]: Compiling X86ISelLowering.cpp for Release+Asserts build...