diff --git a/llvm/include/llvm/Analysis/MemorySSA.h b/llvm/include/llvm/Analysis/MemorySSA.h --- a/llvm/include/llvm/Analysis/MemorySSA.h +++ b/llvm/include/llvm/Analysis/MemorySSA.h @@ -1241,7 +1241,7 @@ /// Returns true if \p Ptr is guaranteed to be loop invariant for any possible /// loop. In particular, this guarantees that it only references a single /// MemoryLocation during execution of the containing function. - bool IsGuaranteedLoopInvariant(Value *Ptr) const; + bool IsGuaranteedLoopInvariant(const Value *Ptr) const; void fillInCurrentPair() { CurrentPair.first = *DefIterator; @@ -1252,7 +1252,7 @@ // to unknown guarantees that any memory accesses that access locations // after the pointer are considered as clobbers, which is important to // catch loop carried dependences. - if (!IsGuaranteedLoopInvariant(const_cast(Location.Ptr))) + if (!IsGuaranteedLoopInvariant(Location.Ptr)) CurrentPair.second = Location.getWithNewSize(LocationSize::beforeOrAfterPointer()); PHITransAddr Translator( @@ -1267,7 +1267,7 @@ CurrentPair.second = CurrentPair.second.getWithNewPtr(TransAddr); if (TransAddr && - !IsGuaranteedLoopInvariant(const_cast(TransAddr))) + !IsGuaranteedLoopInvariant(TransAddr)) CurrentPair.second = CurrentPair.second.getWithNewSize( LocationSize::beforeOrAfterPointer()); diff --git a/llvm/lib/Analysis/MemorySSA.cpp b/llvm/lib/Analysis/MemorySSA.cpp --- a/llvm/lib/Analysis/MemorySSA.cpp +++ b/llvm/lib/Analysis/MemorySSA.cpp @@ -2638,8 +2638,8 @@ delete static_cast(Self); } -bool upward_defs_iterator::IsGuaranteedLoopInvariant(Value *Ptr) const { - auto IsGuaranteedLoopInvariantBase = [](Value *Ptr) { +bool upward_defs_iterator::IsGuaranteedLoopInvariant(const Value *Ptr) const { + auto IsGuaranteedLoopInvariantBase = [](const Value *Ptr) { Ptr = Ptr->stripPointerCasts(); if (!isa(Ptr)) return true;