[polly] e1616dc - [ScopBuilder] Avoid pointer element type access
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 20 02:52:43 PDT 2022
Author: Nikita Popov
Date: 2022-04-20T11:52:36+02:00
New Revision: e1616dc59e6cc2da32866d9451b42e9f65f33a0d
URL: https://github.com/llvm/llvm-project/commit/e1616dc59e6cc2da32866d9451b42e9f65f33a0d
DIFF: https://github.com/llvm/llvm-project/commit/e1616dc59e6cc2da32866d9451b42e9f65f33a0d.diff
LOG: [ScopBuilder] Avoid pointer element type access
Rather than checking the bitcast pointer element types, compare
the element type of the access and the GEP result type.
The entire code is dubious due to the inspection of GEP structure,
but this at least preserves the spirit of the existing code.
Added:
Modified:
polly/lib/Analysis/ScopBuilder.cpp
Removed:
################################################################################
diff --git a/polly/lib/Analysis/ScopBuilder.cpp b/polly/lib/Analysis/ScopBuilder.cpp
index e5c12f16b8e6b..6a5b6bd7b7513 100644
--- a/polly/lib/Analysis/ScopBuilder.cpp
+++ b/polly/lib/Analysis/ScopBuilder.cpp
@@ -1451,23 +1451,12 @@ bool ScopBuilder::buildAccessMultiDimFixed(MemAccInst Inst, ScopStmt *Stmt) {
enum MemoryAccess::AccessType AccType =
isa<LoadInst>(Inst) ? MemoryAccess::READ : MemoryAccess::MUST_WRITE;
- if (auto *BitCast = dyn_cast<BitCastInst>(Address)) {
- auto *Src = BitCast->getOperand(0);
- auto *SrcTy = Src->getType();
- auto *DstTy = BitCast->getType();
- // Do not try to delinearize non-sized (opaque) pointers.
- if ((SrcTy->isPointerTy() && !SrcTy->getPointerElementType()->isSized()) ||
- (DstTy->isPointerTy() && !DstTy->getPointerElementType()->isSized())) {
- return false;
- }
- if (SrcTy->isPointerTy() && DstTy->isPointerTy() &&
- DL.getTypeAllocSize(SrcTy->getPointerElementType()) ==
- DL.getTypeAllocSize(DstTy->getPointerElementType()))
- Address = Src;
- }
+ if (auto *BitCast = dyn_cast<BitCastInst>(Address))
+ Address = BitCast->getOperand(0);
auto *GEP = dyn_cast<GetElementPtrInst>(Address);
- if (!GEP)
+ if (!GEP || DL.getTypeAllocSize(GEP->getResultElementType()) !=
+ DL.getTypeAllocSize(ElementType))
return false;
SmallVector<const SCEV *, 4> Subscripts;
More information about the llvm-commits
mailing list