[PATCH] MemoryDependenceAnalysis always depends on DominatorTree

Matt Arsenault Matthew.Arsenault at amd.com
Mon Apr 1 15:13:37 PDT 2013


  Change to checking if DT is null instead of requiring its pass

Hi nlewycky,

http://llvm-reviews.chandlerc.com/D583

CHANGE SINCE LAST DIFF
  http://llvm-reviews.chandlerc.com/D583?vs=1450&id=1472#toc

Files:
  lib/Analysis/MemoryDependenceAnalysis.cpp
  test/Analysis/MemoryDependenceAnalysis/lit.local.cfg
  test/Analysis/MemoryDependenceAnalysis/memdep_requires_dominator_tree.ll

Index: lib/Analysis/MemoryDependenceAnalysis.cpp
===================================================================
--- lib/Analysis/MemoryDependenceAnalysis.cpp
+++ lib/Analysis/MemoryDependenceAnalysis.cpp
@@ -1001,7 +1001,7 @@
     for (NonLocalDepInfo::iterator I = Cache->begin(), E = Cache->end();
          I != E; ++I) {
       Visited.insert(std::make_pair(I->getBB(), Addr));
-      if (!I->getResult().isNonLocal() && DT->isReachableFromEntry(I->getBB()))
+      if (!I->getResult().isNonLocal() && (!DT || DT->isReachableFromEntry(I->getBB())))
         Result.push_back(NonLocalDepResult(I->getBB(), I->getResult(), Addr));
     }
     ++NumCacheCompleteNonLocalPtr;
@@ -1047,7 +1047,7 @@
                                                  NumSortedEntries);
 
       // If we got a Def or Clobber, add this to the list of results.
-      if (!Dep.isNonLocal() && DT->isReachableFromEntry(BB)) {
+      if (!Dep.isNonLocal() && (!DT || DT->isReachableFromEntry(BB))) {
         Result.push_back(NonLocalDepResult(BB, Dep, Pointer.getAddr()));
         continue;
       }
Index: test/Analysis/MemoryDependenceAnalysis/lit.local.cfg
===================================================================
--- /dev/null
+++ test/Analysis/MemoryDependenceAnalysis/lit.local.cfg
@@ -0,0 +1 @@
+config.suffixes = ['.ll']
Index: test/Analysis/MemoryDependenceAnalysis/memdep_requires_dominator_tree.ll
===================================================================
--- /dev/null
+++ test/Analysis/MemoryDependenceAnalysis/memdep_requires_dominator_tree.ll
@@ -0,0 +1,19 @@
+; RUN: opt -memdep -gvn < %s
+
+define void @__memdep_requires_dominator_tree(i32* nocapture %bufUInt, i32* nocapture %pattern) nounwind {
+entry:
+  br label %for.body
+
+for.exit:                                         ; preds = %for.body
+  ret void
+
+for.body:                                         ; preds = %for.body, %entry
+  %i.01 = phi i32 [ 0, %entry ], [ %tmp8.7, %for.body ]
+  %arrayidx = getelementptr i32* %bufUInt, i32 %i.01
+  %arrayidx5 = getelementptr i32* %pattern, i32 %i.01
+  %tmp6 = load i32* %arrayidx5, align 4
+  store i32 %tmp6, i32* %arrayidx, align 4
+  %tmp8.7 = add i32 %i.01, 8
+  %cmp.7 = icmp ult i32 %tmp8.7, 1024
+  br i1 %cmp.7, label %for.body, label %for.exit
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D583.3.patch
Type: text/x-patch
Size: 2289 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130401/30c46734/attachment.bin>


More information about the llvm-commits mailing list