[llvm] [InferAddressSpaces] Infer pointer stored and then loaded from global variable (PR #159755)
Wenju He via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 22 01:47:35 PDT 2025
================
@@ -373,6 +399,19 @@ getPointerOperands(const Value &V, const DataLayout &DL,
auto *P2I = cast<Operator>(Op.getOperand(0));
return {P2I->getOperand(0)};
}
+ case Instruction::Load: {
+ assert(V.getType()->isPtrOrPtrVectorTy());
+ if (const auto *GV = cast<GlobalVariable>(Op.getOperand(0))) {
+ assert(isLocallyAccessedBySimpleLoadsStores(
+ GV, cast<LoadInst>(&V)->getFunction()));
+ SmallVector<Value *, 2> PtrOps;
+ for (const auto *U : GV->users())
+ if (isa<StoreInst>(U))
+ PtrOps.push_back(cast<Operator>(U)->getOperand(0));
----------------
wenju-he wrote:
> Nitpick: you could use a `dyn_cast` to avoid the `isa + cast<>`. It also makes obvious which operand we're getting (I had to check if 0 was the value or the pointer).
done. I wasn't using this because this requires a const_cast
https://github.com/llvm/llvm-project/pull/159755
More information about the llvm-commits
mailing list