aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2010-09-06 09:15:29 +0000
committerBill Wendling <isanbard@gmail.com>2010-09-06 09:15:29 +0000
commit31d398d78c3b9b6cb8912648e7307871cb013052 (patch)
treecc2e03ea3c5f07179850487afefeea17e656c1d7
parent4217ff2da5168c500f3dc1e696baad1d10edb9f9 (diff)
downloadllvm-31d398d78c3b9b6cb8912648e7307871cb013052.zip
llvm-31d398d78c3b9b6cb8912648e7307871cb013052.tar.gz
llvm-31d398d78c3b9b6cb8912648e7307871cb013052.tar.bz2
Approved by Chris:
$ svn merge -c 113146 https://llvm.org/svn/llvm-project/llvm/trunk --- Merging r113146 into '.': U test/Transforms/LICM/crash.ll U lib/Transforms/Scalar/LICM.cpp Log: fix PR8067, an over-aggressive assertion in LICM. llvm-svn: 113152
-rw-r--r--llvm/lib/Transforms/Scalar/LICM.cpp8
-rw-r--r--llvm/test/Transforms/LICM/crash.ll14
2 files changed, 18 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Scalar/LICM.cpp b/llvm/lib/Transforms/Scalar/LICM.cpp
index 0399329..6cb4845 100644
--- a/llvm/lib/Transforms/Scalar/LICM.cpp
+++ b/llvm/lib/Transforms/Scalar/LICM.cpp
@@ -696,10 +696,10 @@ void LICM::PromoteAliasSet(AliasSet &AS) {
// 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)
diff --git a/llvm/test/Transforms/LICM/crash.ll b/llvm/test/Transforms/LICM/crash.ll
index 325f250..d0b6d78 100644
--- a/llvm/test/Transforms/LICM/crash.ll
+++ b/llvm/test/Transforms/LICM/crash.ll
@@ -25,3 +25,17 @@ for.cond.for.end10_crit_edge: ; preds = %for.cond
for.end10: ; preds = %for.cond.for.end10_crit_edge, %entry
ret void
}
+
+; PR8067
+@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
+}