diff --git a/llvm/lib/Analysis/DependenceAnalysis.cpp b/llvm/lib/Analysis/DependenceAnalysis.cpp --- a/llvm/lib/Analysis/DependenceAnalysis.cpp +++ b/llvm/lib/Analysis/DependenceAnalysis.cpp @@ -3351,10 +3351,10 @@ Value *SrcBasePtr = SrcGEP->getOperand(0); Value *DstBasePtr = DstGEP->getOperand(0); - while (auto *PCast = dyn_cast(SrcBasePtr)) - SrcBasePtr = PCast->getOperand(0); - while (auto *PCast = dyn_cast(DstBasePtr)) - DstBasePtr = PCast->getOperand(0); + if (auto *PCast = dyn_cast(SrcBasePtr)) + SrcBasePtr = PCast->stripPointerCasts(); + if (auto *PCast = dyn_cast(DstBasePtr)) + DstBasePtr = PCast->stripPointerCasts(); // Check that for identical base pointers we do not miss index offsets // that have been added before this GEP is applied.