Commit 31d398d7 authored by Bill Wendling's avatar Bill Wendling
Browse files

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
parent 4217ff2d
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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)
+14 −0
Original line number Diff line number Diff line
@@ -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
}