diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp b/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp index 058612149a94..aaf586173e44 100644 --- a/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp +++ b/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp @@ -99,12 +99,11 @@ struct StoreToLoadForwardingCandidate { Loop *L) const { Value *LoadPtr = Load->getPointerOperand(); Value *StorePtr = Store->getPointerOperand(); - Type *LoadPtrType = LoadPtr->getType(); - Type *LoadType = LoadPtrType->getPointerElementType(); + Type *LoadType = getLoadStoreType(Load); - assert(LoadPtrType->getPointerAddressSpace() == + assert(LoadPtr->getType()->getPointerAddressSpace() == StorePtr->getType()->getPointerAddressSpace() && - LoadType == StorePtr->getType()->getPointerElementType() && + LoadType == getLoadStoreType(Store) && "Should be a known dependence"); // Currently we only support accesses with unit stride. FIXME: we should be @@ -664,10 +663,11 @@ public: auto *BFI = (PSI && PSI->hasProfileSummary()) ? &getAnalysis<LazyBlockFrequencyInfoPass>().getBFI() : nullptr; + auto *SE = &getAnalysis<ScalarEvolutionWrapperPass>().getSE(); // Process each loop nest in the function. return eliminateLoadsAcrossLoops( - F, LI, DT, BFI, PSI, /*SE*/ nullptr, /*AC*/ nullptr, + F, LI, DT, BFI, PSI, SE, /*AC*/ nullptr, [&LAA](Loop &L) -> const LoopAccessInfo & { return LAA.getInfo(&L); }); } |
