aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Analysis/Delinearization.cpp
diff options
context:
space:
mode:
authorSebastian Pop <spop@codeaurora.org>2013-11-13 22:37:58 +0000
committerSebastian Pop <spop@codeaurora.org>2013-11-13 22:37:58 +0000
commitf44941d81dc30cfd357c12292059721c9644a27f (patch)
treeb081d48e5604ff534147a37cac531f512268522c /lib/Analysis/Delinearization.cpp
parentc9024c6ebcea89746e01207195eeb52c60c3c3bb (diff)
downloadexternal_llvm-f44941d81dc30cfd357c12292059721c9644a27f.zip
external_llvm-f44941d81dc30cfd357c12292059721c9644a27f.tar.gz
external_llvm-f44941d81dc30cfd357c12292059721c9644a27f.tar.bz2
add more comments around the delinearization of arrays
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194612 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/Delinearization.cpp')
-rw-r--r--lib/Analysis/Delinearization.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/Analysis/Delinearization.cpp b/lib/Analysis/Delinearization.cpp
index 6cc27b6..3ed0609 100644
--- a/lib/Analysis/Delinearization.cpp
+++ b/lib/Analysis/Delinearization.cpp
@@ -83,6 +83,8 @@ void Delinearization::print(raw_ostream &O, const Module *) const {
O << "Delinearization on function " << F->getName() << ":\n";
for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I) {
Instruction *Inst = &(*I);
+
+ // Only analyze loads and stores.
if (!isa<StoreInst>(Inst) && !isa<LoadInst>(Inst) &&
!isa<GetElementPtrInst>(Inst))
continue;
@@ -93,6 +95,8 @@ void Delinearization::print(raw_ostream &O, const Module *) const {
for (Loop *L = LI->getLoopFor(BB); L != NULL; L = L->getParentLoop()) {
const SCEV *AccessFn = SE->getSCEVAtScope(getPointerOperand(*Inst), L);
const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(AccessFn);
+
+ // Do not try to delinearize memory accesses that are not AddRecs.
if (!AR)
break;