[PATCH] D133396: [MemorySSA] Don't do addr phi translation if addr value is not a loop invariant

luxufan via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 6 19:44:45 PDT 2022


StephenFan created this revision.
StephenFan added reviewers: nikic, asbirlea, fhahn.
Herald added a subscriber: george.burgess.iv.
Herald added a project: All.
StephenFan requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D133396

Files:
  llvm/include/llvm/Analysis/MemorySSA.h


Index: llvm/include/llvm/Analysis/MemorySSA.h
===================================================================
--- llvm/include/llvm/Analysis/MemorySSA.h
+++ llvm/include/llvm/Analysis/MemorySSA.h
@@ -1255,24 +1255,21 @@
       if (!IsGuaranteedLoopInvariant(const_cast<Value *>(Location.Ptr)))
         CurrentPair.second =
             Location.getWithNewSize(LocationSize::beforeOrAfterPointer());
-      PHITransAddr Translator(
-          const_cast<Value *>(Location.Ptr),
-          OriginalAccess->getBlock()->getModule()->getDataLayout(), nullptr);
-
-      if (!Translator.PHITranslateValue(OriginalAccess->getBlock(),
-                                        DefIterator.getPhiArgBlock(), DT,
-                                        true)) {
-        Value *TransAddr = Translator.getAddr();
-        if (TransAddr != Location.Ptr) {
-          CurrentPair.second = CurrentPair.second.getWithNewPtr(TransAddr);
-
-          if (TransAddr &&
-              !IsGuaranteedLoopInvariant(const_cast<Value *>(TransAddr)))
-            CurrentPair.second = CurrentPair.second.getWithNewSize(
-                LocationSize::beforeOrAfterPointer());
-
-          if (PerformedPhiTranslation)
-            *PerformedPhiTranslation = true;
+      else {
+        PHITransAddr Translator(
+            const_cast<Value *>(Location.Ptr),
+            OriginalAccess->getBlock()->getModule()->getDataLayout(), nullptr);
+
+        if (!Translator.PHITranslateValue(OriginalAccess->getBlock(),
+                                          DefIterator.getPhiArgBlock(), DT,
+                                          true)) {
+          Value *TransAddr = Translator.getAddr();
+          if (TransAddr != Location.Ptr) {
+            CurrentPair.second = CurrentPair.second.getWithNewPtr(TransAddr);
+
+            if (PerformedPhiTranslation)
+              *PerformedPhiTranslation = true;
+          }
         }
       }
     }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133396.458350.patch
Type: text/x-patch
Size: 1930 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220907/e97857da/attachment.bin>


More information about the llvm-commits mailing list