[LAA] Turn aggregate type check into assertion (NFCI).
authorFlorian Hahn <flo@fhahn.com>
Tue, 23 Nov 2021 17:37:12 +0000 (17:37 +0000)
committerFlorian Hahn <flo@fhahn.com>
Tue, 23 Nov 2021 17:37:30 +0000 (17:37 +0000)
getPtrStride should not be called with aggregate access types. There's
also an old TODO.

Turn the check into an assertion.

llvm/lib/Analysis/LoopAccessAnalysis.cpp

index f9bd716..66826e2 100644 (file)
@@ -1032,15 +1032,7 @@ int64_t llvm::getPtrStride(PredicatedScalarEvolution &PSE, Type *AccessTy,
                            bool ShouldCheckWrap) {
   Type *Ty = Ptr->getType();
   assert(Ty->isPointerTy() && "Unexpected non-ptr");
-  unsigned AddrSpace = Ty->getPointerAddressSpace();
-
-  // Make sure we're not accessing an aggregate type.
-  // TODO: Why? This doesn't make any sense.
-  if (AccessTy->isAggregateType()) {
-    LLVM_DEBUG(dbgs() << "LAA: Bad stride - Not a pointer to a scalar type"
-                      << *Ptr << "\n");
-    return 0;
-  }
+  assert(!AccessTy->isAggregateType() && "Bad stride - Not a pointer to a scalar type");
 
   const SCEV *PtrScev = replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr);
 
@@ -1068,6 +1060,7 @@ int64_t llvm::getPtrStride(PredicatedScalarEvolution &PSE, Type *AccessTy,
   // An getelementptr without an inbounds attribute and unit stride would have
   // to access the pointer value "0" which is undefined behavior in address
   // space 0, therefore we can also vectorize this case.
+  unsigned AddrSpace = Ty->getPointerAddressSpace();
   bool IsInBoundsGEP = isInBoundsGep(Ptr);
   bool IsNoWrapAddRec = !ShouldCheckWrap ||
     PSE.hasNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW) ||