From e47c101e35fd8d046f7d4fa296c17db508e8cdc2 Mon Sep 17 00:00:00 2001 From: Max Kazantsev Date: Mon, 18 May 2020 18:09:24 +0700 Subject: [PATCH] [InstCombine][NFC] Simplify check in sinking We just need to check that the only predecessor of user parent is BB, we don't need to iterate through BB's successors for it. --- .../InstCombine/InstructionCombining.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp index afdff9141e69..247bebd48932 100644 --- a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp +++ b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp @@ -3433,19 +3433,9 @@ bool InstCombiner::run() { UserParent = UserInst->getParent(); if (UserParent != BB) { - bool UserIsSuccessor = false; - // See if the user is one of our successors. - for (succ_iterator SI = succ_begin(BB), E = succ_end(BB); SI != E; - ++SI) - if (*SI == UserParent) { - UserIsSuccessor = true; - break; - } - - // If the user is one of our immediate successors, and if that - // successor only has us as a predecessors (we'd have to split the - // critical edge otherwise), we can keep going. - if (UserIsSuccessor && UserParent->getUniquePredecessor()) { + // See if the user is one of our successors that has only one + // predecessor, so that we don't have to split the critical edge. + if (UserParent->getUniquePredecessor() == BB) { // Okay, the CFG is simple enough, try to sink this instruction. if (TryToSinkInstruction(I, UserParent)) { LLVM_DEBUG(dbgs() << "IC: Sink: " << *I << '\n');