Index: lib/Analysis/ScopDetection.cpp =================================================================== --- lib/Analysis/ScopDetection.cpp +++ lib/Analysis/ScopDetection.cpp @@ -515,11 +515,19 @@ Context.ElementSize[BasePointer]); if (!AllowNonAffine) - for (const SCEV *DelinearizedSize : Shape->DelinearizedSizes) - if (hasScalarDepsInsideRegion(DelinearizedSize, &CurRegion)) + for (const SCEV *DelinearizedSize : Shape->DelinearizedSizes){ + if (auto *Unknown = dyn_cast(DelinearizedSize)){ + auto *value = dyn_cast(Unknown->getValue()); + if (isa(value)) + invalid(Context, /*Assert=*/true, + Context.Accesses[BasePointer].front().first, BaseValue); + return false; + } + if (hasScalarDepsInsideRegion(DelinearizedSize, &CurRegion)) invalid( Context, /*Assert=*/true, DelinearizedSize, Context.Accesses[BasePointer].front().first, BaseValue); + } // No array shape derived. if (Shape->DelinearizedSizes.empty()) {