diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-09-06 05:11:24 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-09-06 05:11:24 +0000 |
| commit | be9019090e1d189fd51377f25d04b45309d64e2a (patch) | |
| tree | 396e7dbd1c651fb427159cb90a67c0ca4789cf72 | |
| parent | 07b332f0a0d4dd21962d2b19e4f3b80682afdecd (diff) | |
| download | bcm5719-llvm-be9019090e1d189fd51377f25d04b45309d64e2a.tar.gz bcm5719-llvm-be9019090e1d189fd51377f25d04b45309d64e2a.zip | |
fix PR8067, an over-aggressive assertion in LICM.
llvm-svn: 113146
| -rw-r--r-- | llvm/lib/Transforms/Scalar/LICM.cpp | 8 | ||||
| -rw-r--r-- | llvm/test/Transforms/LICM/crash.ll | 14 |
2 files changed, 18 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Scalar/LICM.cpp b/llvm/lib/Transforms/Scalar/LICM.cpp index 4cab33b30dc..0db7ba771b4 100644 --- a/llvm/lib/Transforms/Scalar/LICM.cpp +++ b/llvm/lib/Transforms/Scalar/LICM.cpp @@ -681,10 +681,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 325f250bd58..d0b6d78db1a 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 +} |

