OSDN Git Service

Add an assert for hasLoopInvariantOperands
authorXin Tong <trent.xin.tong@gmail.com>
Tue, 10 Jan 2017 00:39:49 +0000 (00:39 +0000)
committerXin Tong <trent.xin.tong@gmail.com>
Tue, 10 Jan 2017 00:39:49 +0000 (00:39 +0000)
Summary: Add an assert for hasLoopInvariantOperands

Reviewers: danielcdh, sanjoy

Subscribers: mzolotukhin, llvm-commits

Differential Revision: https://reviews.llvm.org/D28501

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@291516 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopSink.cpp

index f643544..800a9b4 100644 (file)
@@ -283,6 +283,9 @@ static bool sinkLoopInvariantInstructions(Loop &L, AAResults &AA, LoopInfo &LI,
   // sinked.
   for (auto II = Preheader->rbegin(), E = Preheader->rend(); II != E;) {
     Instruction *I = &*II++;
+    // No need to check for instruction's operands are loop invariant.
+    assert(L.hasLoopInvariantOperands(I) &&
+           "Insts in a loop's preheader should have loop invariant operands!");
     if (!canSinkOrHoistInst(*I, &AA, &DT, &L, &CurAST, nullptr))
       continue;
     if (sinkInstruction(L, *I, ColdLoopBBs, LoopBlockNumber, LI, DT, BFI))