[PATCH] D20789: Consecutive memory access in Loop Vectorizer - fixed and simplified

Elena Demikhovsky via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 1 05:56:56 PDT 2016


delena added a comment.

> This is done in AccessAnalysis::canCheckPtrAtRT (and implicitly in AccessAnalysis::processMemAccesses).




  AccessAnalysis::canCheckPtrAtRT() returns true and  DependentAccesses has these 2 accesses.
  
  CanVecMem = DepChecker->areDepsSafe() returns true without checking anything

This is the code:

  bool CanDoRTIfNeeded = Accesses.canCheckPtrAtRT(*PtrRtChecking, PSE->getSE(),
                                                  TheLoop, SymbolicStrides);
  if (!CanDoRTIfNeeded) {
    emitAnalysis(LoopAccessReport() << "cannot identify array bounds");
    DEBUG(dbgs() << "LAA: We can't vectorize because we can't find "
                 << "the array bounds.\n");
    CanVecMem = false;
    return;
  }
  
  DEBUG(dbgs() << "LAA: We can perform a memory runtime check if needed.\n");
  
  CanVecMem = true;
  if (Accesses.isDependencyCheckNeeded()) {
    DEBUG(dbgs() << "LAA: Checking memory dependencies\n");
    CanVecMem = DepChecker->areDepsSafe(
        DependentAccesses, Accesses.getDependenciesToCheck(), SymbolicStrides);


Repository:
  rL LLVM

https://reviews.llvm.org/D20789





More information about the llvm-commits mailing list