[llvm] d9a29a6 - constify getUnderlyingObject implementation [nfc]
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 8 11:33:00 PST 2021
Author: Philip Reames
Date: 2021-03-08T11:32:54-08:00
New Revision: d9a29a67527fbabd0e0388aefa8e6aa9b19f3f03
URL: https://github.com/llvm/llvm-project/commit/d9a29a67527fbabd0e0388aefa8e6aa9b19f3f03
DIFF: https://github.com/llvm/llvm-project/commit/d9a29a67527fbabd0e0388aefa8e6aa9b19f3f03.diff
LOG: constify getUnderlyingObject implementation [nfc]
Added:
Modified:
llvm/include/llvm/Analysis/ValueTracking.h
llvm/lib/Analysis/ValueTracking.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/ValueTracking.h b/llvm/include/llvm/Analysis/ValueTracking.h
index fc5150c53de5..6020bbd97bae 100644
--- a/llvm/include/llvm/Analysis/ValueTracking.h
+++ b/llvm/include/llvm/Analysis/ValueTracking.h
@@ -370,10 +370,11 @@ constexpr unsigned MaxAnalysisRecursionDepth = 6;
/// that the returned value has pointer type if the specified value does. If
/// the MaxLookup value is non-zero, it limits the number of instructions to
/// be stripped off.
- Value *getUnderlyingObject(Value *V, unsigned MaxLookup = 6);
- inline const Value *getUnderlyingObject(const Value *V,
- unsigned MaxLookup = 6) {
- return getUnderlyingObject(const_cast<Value *>(V), MaxLookup);
+ const Value *getUnderlyingObject(const Value *V, unsigned MaxLookup = 6);
+ inline Value *getUnderlyingObject(Value *V, unsigned MaxLookup = 6) {
+ // Force const to avoid infinite recursion.
+ const Value *VConst = V;
+ return const_cast<Value *>(getUnderlyingObject(VConst, MaxLookup));
}
/// This method is similar to getUnderlyingObject except that it can
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 6437a4aa49b8..80f03d3379de 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -4162,18 +4162,18 @@ static bool isSameUnderlyingObjectInLoop(const PHINode *PN,
return true;
}
-Value *llvm::getUnderlyingObject(Value *V, unsigned MaxLookup) {
+const Value *llvm::getUnderlyingObject(const Value *V, unsigned MaxLookup) {
if (!V->getType()->isPointerTy())
return V;
for (unsigned Count = 0; MaxLookup == 0 || Count < MaxLookup; ++Count) {
- if (GEPOperator *GEP = dyn_cast<GEPOperator>(V)) {
+ if (auto *GEP = dyn_cast<GEPOperator>(V)) {
V = GEP->getPointerOperand();
} else if (Operator::getOpcode(V) == Instruction::BitCast ||
Operator::getOpcode(V) == Instruction::AddrSpaceCast) {
V = cast<Operator>(V)->getOperand(0);
if (!V->getType()->isPointerTy())
return V;
- } else if (GlobalAlias *GA = dyn_cast<GlobalAlias>(V)) {
+ } else if (auto *GA = dyn_cast<GlobalAlias>(V)) {
if (GA->isInterposable())
return V;
V = GA->getAliasee();
More information about the llvm-commits
mailing list