[llvm] [InferAddressSpaces] Infer pointer stored and then loaded from global variable (PR #159755)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 19 06:45:34 PST 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 (auto *SI = dyn_cast<StoreInst>(U))
+          PtrOps.push_back(const_cast<Value *>(SI->getValueOperand()));
----------------
arsenm wrote:

```suggestion
          PtrOps.push_back(SI->getValueOperand());
```

https://github.com/llvm/llvm-project/pull/159755


More information about the llvm-commits mailing list