mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 23:32:27 +00:00
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:
parent
96ba57fdda
commit
1c0af0ed25
@ -691,8 +691,8 @@ void LICM::PromoteAliasSet(AliasSet &AS) {
|
|||||||
if (isa<LoadInst>(Use))
|
if (isa<LoadInst>(Use))
|
||||||
assert(!cast<LoadInst>(Use)->isVolatile() && "AST broken");
|
assert(!cast<LoadInst>(Use)->isVolatile() && "AST broken");
|
||||||
else if (isa<StoreInst>(Use)) {
|
else if (isa<StoreInst>(Use)) {
|
||||||
assert(!cast<StoreInst>(Use)->isVolatile() && "AST broken");
|
|
||||||
if (Use->getOperand(0) == ASIV) return;
|
if (Use->getOperand(0) == ASIV) return;
|
||||||
|
assert(!cast<StoreInst>(Use)->isVolatile() && "AST broken");
|
||||||
} else
|
} else
|
||||||
return; // Not a load or store.
|
return; // Not a load or store.
|
||||||
|
|
||||||
|
@ -59,3 +59,16 @@ for.end: ; preds = %for.cond, %entry
|
|||||||
}
|
}
|
||||||
|
|
||||||
declare i32* @test3helper(i32*)
|
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
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user