[llvm-commits] [llvm] r113146 - in /llvm/trunk: lib/Transforms/Scalar/LICM.cpp test/Transforms/LICM/crash.ll
Chris Lattner
sabre at nondot.org
Sun Sep 5 22:11:24 PDT 2010
Author: lattner
Date: Mon Sep 6 00:11:24 2010
New Revision: 113146
URL: http://llvm.org/viewvc/llvm-project?rev=113146&view=rev
Log:
fix PR8067, an over-aggressive assertion in LICM.
Modified:
llvm/trunk/lib/Transforms/Scalar/LICM.cpp
llvm/trunk/test/Transforms/LICM/crash.ll
Modified: llvm/trunk/lib/Transforms/Scalar/LICM.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LICM.cpp?rev=113146&r1=113145&r2=113146&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/LICM.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/LICM.cpp Mon Sep 6 00:11:24 2010
@@ -681,10 +681,10 @@
// it.
if (isa<LoadInst>(Use))
assert(!cast<LoadInst>(Use)->isVolatile() && "AST broken");
- else if (isa<StoreInst>(Use))
- assert(!cast<StoreInst>(Use)->isVolatile() &&
- Use->getOperand(0) != ASIV && "AST broken");
- else
+ else if (isa<StoreInst>(Use)) {
+ assert(!cast<StoreInst>(Use)->isVolatile() && "AST broken");
+ if (Use->getOperand(0) == ASIV) return;
+ } else
return; // Not a load or store.
if (!GuaranteedToExecute)
Modified: llvm/trunk/test/Transforms/LICM/crash.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LICM/crash.ll?rev=113146&r1=113145&r2=113146&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/LICM/crash.ll (original)
+++ llvm/trunk/test/Transforms/LICM/crash.ll Mon Sep 6 00:11:24 2010
@@ -25,3 +25,17 @@
for.end10: ; preds = %for.cond.for.end10_crit_edge, %entry
ret void
}
+
+; PR8067
+ at g_8 = external global i32, align 4
+
+define void @test2() noreturn nounwind ssp {
+entry:
+ br label %for.body
+
+for.body: ; preds = %for.body, %entry
+ %tmp7 = load i32* @g_8, align 4
+ store i32* @g_8, i32** undef, align 16
+ store i32 undef, i32* @g_8, align 4
+ br label %for.body
+}
More information about the llvm-commits
mailing list