[PATCH] D120004: [SCEVExpander][OpaquePtr] Check GEP source type when finding identical GEP
Arthur Eubanks via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 17 08:51:15 PST 2022
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG129af4daa7ce: [SCEVExpander][OpaquePtr] Check GEP source type when finding identical GEP (authored by aeubanks).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D120004/new/
https://reviews.llvm.org/D120004
Files:
llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
llvm/test/Transforms/IndVarSimplify/opaque-ptr.ll
Index: llvm/test/Transforms/IndVarSimplify/opaque-ptr.ll
===================================================================
--- llvm/test/Transforms/IndVarSimplify/opaque-ptr.ll
+++ llvm/test/Transforms/IndVarSimplify/opaque-ptr.ll
@@ -8,12 +8,13 @@
; CHECK-NEXT: entry:
; CHECK-NEXT: [[O:%.*]] = getelementptr ptr, ptr [[ARG:%.*]], i64 16
; CHECK-NEXT: call void @c(ptr [[O]])
+; CHECK-NEXT: [[UGLYGEP:%.*]] = getelementptr i8, ptr [[ARG]], i64 16
; CHECK-NEXT: br label [[LOOP:%.*]]
; CHECK: loop:
; CHECK-NEXT: [[IDX:%.*]] = phi i32 [ 1, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[LOOP]] ]
; CHECK-NEXT: [[INC]] = add nuw nsw i32 [[IDX]], 1
; CHECK-NEXT: [[C:%.*]] = icmp ne i32 [[INC]], 16
-; CHECK-NEXT: call void @c(ptr [[O]])
+; CHECK-NEXT: call void @c(ptr [[UGLYGEP]])
; CHECK-NEXT: br i1 [[C]], label [[LOOP]], label [[END:%.*]]
; CHECK: end:
; CHECK-NEXT: ret void
Index: llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
===================================================================
--- llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
+++ llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
@@ -591,7 +591,9 @@
if (isa<DbgInfoIntrinsic>(IP))
ScanLimit++;
if (IP->getOpcode() == Instruction::GetElementPtr &&
- IP->getOperand(0) == V && IP->getOperand(1) == Idx)
+ IP->getOperand(0) == V && IP->getOperand(1) == Idx &&
+ cast<GEPOperator>(&*IP)->getSourceElementType() ==
+ Type::getInt8Ty(Ty->getContext()))
return &*IP;
if (IP == BlockBegin) break;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D120004.409677.patch
Type: text/x-patch
Size: 1635 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220217/184fbb82/attachment.bin>
More information about the llvm-commits
mailing list