From: Chris Lattner Date: Sun, 19 Dec 2010 05:51:54 +0000 (+0000) Subject: fix PR8602, a bug in an assertion: a volatile store *of* a pointer X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1c0af0ed251af3d2ef795903133513656e5c369d;p=oota-llvm.git 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 --- diff --git a/lib/Transforms/Scalar/LICM.cpp b/lib/Transforms/Scalar/LICM.cpp index 3a6604357d4..46fffccb3ac 100644 --- a/lib/Transforms/Scalar/LICM.cpp +++ b/lib/Transforms/Scalar/LICM.cpp @@ -691,8 +691,8 @@ void LICM::PromoteAliasSet(AliasSet &AS) { if (isa(Use)) assert(!cast(Use)->isVolatile() && "AST broken"); else if (isa(Use)) { - assert(!cast(Use)->isVolatile() && "AST broken"); if (Use->getOperand(0) == ASIV) return; + assert(!cast(Use)->isVolatile() && "AST broken"); } else return; // Not a load or store. diff --git a/test/Transforms/LICM/crash.ll b/test/Transforms/LICM/crash.ll index 88be5c41ccc..ff7fa0b19a8 100644 --- a/test/Transforms/LICM/crash.ll +++ b/test/Transforms/LICM/crash.ll @@ -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 + +;