[llvm-branch-commits] [llvm-branch] r322558 - Merging r321789:

Hans Wennborg via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Jan 16 07:00:52 PST 2018


Author: hans
Date: Tue Jan 16 07:00:51 2018
New Revision: 322558

URL: http://llvm.org/viewvc/llvm-project?rev=322558&view=rev
Log:
Merging r321789:
------------------------------------------------------------------------
r321789 | hiraditya | 2018-01-03 23:47:24 -0800 (Wed, 03 Jan 2018) | 8 lines

[GVNHoist] Fix: PR35222 gvn-hoist incorrectly erases load in case of a loop

Reviewers:
    dberlin
    sebpop
    eli.friedman

Differential Revision: https://reviews.llvm.org/D41453
------------------------------------------------------------------------

Modified:
    llvm/branches/release_60/   (props changed)
    llvm/branches/release_60/lib/Transforms/Scalar/GVNHoist.cpp
    llvm/branches/release_60/test/Transforms/GVNHoist/pr35222-hoist-load.ll

Propchange: llvm/branches/release_60/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan 16 07:00:51 2018
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,322103
+/llvm/trunk:155241,321789,322103

Modified: llvm/branches/release_60/lib/Transforms/Scalar/GVNHoist.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_60/lib/Transforms/Scalar/GVNHoist.cpp?rev=322558&r1=322557&r2=322558&view=diff
==============================================================================
--- llvm/branches/release_60/lib/Transforms/Scalar/GVNHoist.cpp (original)
+++ llvm/branches/release_60/lib/Transforms/Scalar/GVNHoist.cpp Tue Jan 16 07:00:51 2018
@@ -648,7 +648,7 @@ private:
           // track in a CHI. In the PDom walk, there can be values in the
           // stack which are not control dependent e.g., nested loop.
           if (si != RenameStack.end() && si->second.size() &&
-              DT->dominates(Pred, si->second.back()->getParent())) {
+              DT->properlyDominates(Pred, si->second.back()->getParent())) {
             C.Dest = BB;                     // Assign the edge
             C.I = si->second.pop_back_val(); // Assign the argument
             DEBUG(dbgs() << "\nCHI Inserted in BB: " << C.Dest->getName()

Modified: llvm/branches/release_60/test/Transforms/GVNHoist/pr35222-hoist-load.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_60/test/Transforms/GVNHoist/pr35222-hoist-load.ll?rev=322558&r1=322557&r2=322558&view=diff
==============================================================================
--- llvm/branches/release_60/test/Transforms/GVNHoist/pr35222-hoist-load.ll (original)
+++ llvm/branches/release_60/test/Transforms/GVNHoist/pr35222-hoist-load.ll Tue Jan 16 07:00:51 2018
@@ -1,4 +1,5 @@
 ; RUN: opt -S -gvn-hoist < %s | FileCheck %s
+; CHECK-LABEL: build_tree
 ; CHECK: load
 ; CHECK: load
 ; Check that the load is not hoisted because the call can potentially
@@ -23,3 +24,47 @@ do.end:
 }
 
 declare i1 @pqdownheap(i32)
+
+ at i = external hidden unnamed_addr global i32, align 4
+ at j = external hidden unnamed_addr global [573 x i32], align 4
+ at v = external global i1
+
+; CHECK-LABEL: test
+; CHECK-LABEL: do.end
+; CHECK: load
+; Check that the load is not hoisted because the call can potentially
+; modify the global
+
+define i32 @test() {
+entry:
+  br label %for.cond
+
+for.cond:
+  %a3 = load volatile i1, i1* @v
+  br i1 %a3, label %for.body, label %while.end
+
+for.body:
+  br label %if.then
+
+if.then:
+  %tmp4 = load i32, i32* @i, align 4
+  br label %for.cond
+
+while.end:
+  br label %do.body
+
+do.body:
+  %tmp9 = load i32, i32* getelementptr inbounds ([573 x i32], [573 x i32]* @j,
+i32 0, i32 1), align 4
+  %tmp10 = load i32, i32* @i, align 4
+  call void @fn()
+  %a1 = load volatile i1, i1* @v
+  br i1 %a1, label %do.body, label %do.end
+
+do.end:
+  %tmp20 = load i32, i32* getelementptr inbounds ([573 x i32], [573 x i32]* @j,
+i32 0, i32 1), align 4
+  ret i32 %tmp20
+}
+
+declare void @fn()




More information about the llvm-branch-commits mailing list