fix PR8602, a bug in an assertion: a volatile store *of* a pointer

does not make the alias set for that pointer volatile, just stores
*to* the pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122171 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-12-19 05:51:54 +00:00
parent 96ba57fdda
commit 1c0af0ed25
2 changed files with 14 additions and 1 deletions

View File

@ -691,8 +691,8 @@ void LICM::PromoteAliasSet(AliasSet &AS) {
if (isa<LoadInst>(Use))
assert(!cast<LoadInst>(Use)->isVolatile() && "AST broken");
else if (isa<StoreInst>(Use)) {
assert(!cast<StoreInst>(Use)->isVolatile() && "AST broken");
if (Use->getOperand(0) == ASIV) return;
assert(!cast<StoreInst>(Use)->isVolatile() && "AST broken");
} else
return; // Not a load or store.

View File

@ -59,3 +59,16 @@ for.end: ; preds = %for.cond, %entry
}
declare i32* @test3helper(i32*)
; PR8602
@g_47 = external global i32, align 4
define void @test4() noreturn nounwind {
br label %1
; <label>:1 ; preds = %1, %0
volatile store i32* @g_47, i32** undef, align 8
store i32 undef, i32* @g_47, align 4
br label %1
}