diff --git a/lib/Transforms/Scalar/GuardWidening.cpp b/lib/Transforms/Scalar/GuardWidening.cpp index 055fcbc8436..534a1317c4c 100644 --- a/lib/Transforms/Scalar/GuardWidening.cpp +++ b/lib/Transforms/Scalar/GuardWidening.cpp @@ -66,6 +66,33 @@ STATISTIC(GuardsEliminated, "Number of eliminated guards"); namespace { +static Value *getGuardCondition(Instruction *GuardInst) { + IntrinsicInst *GI = cast(GuardInst); + assert(GI->getIntrinsicID() == Intrinsic::experimental_guard && + "Bad guard intrinsic?"); + return GI->getArgOperand(0); +} + +// Set the condition for \p GuardInst to \p NewCond. +static void setGuardCondition(Instruction *GuardInst, Value *NewCond) { + IntrinsicInst *GI = cast(GuardInst); + assert(GI->getIntrinsicID() == Intrinsic::experimental_guard && + "Bad guard intrinsic?"); + GI->setArgOperand(0, NewCond); +} + +// Whether or not the particular instruction \p I is a guard. +static bool isGuard(const Instruction *I) { + using namespace llvm::PatternMatch; + return match(I, m_Intrinsic()); +} + +// Eliminates the guard instruction properly. +static void eliminateGuard(Instruction *GuardInst) { + GuardInst->eraseFromParent(); + ++GuardsEliminated; +} + class GuardWideningImpl { DominatorTree &DT; PostDominatorTree *PDT; @@ -93,18 +120,6 @@ class GuardWideningImpl { const DenseMap> & GuardsPerBlock); - // Get the condition from \p GuardInst. - Value *getGuardCondition(Instruction *GuardInst); - - // Set the condition for \p GuardInst. - void setGuardCondition(Instruction *GuardInst, Value *NewCond); - - // Whether or not the particular instruction is a guard. - bool isGuard(const Instruction *I); - - // Eliminates the guard instruction properly. - void eliminateGuard(Instruction *GuardInst); - /// Used to keep track of which widening potential is more effective. enum WideningScore { /// Don't widen. @@ -343,31 +358,6 @@ bool GuardWideningImpl::eliminateGuardViaWidening( return true; } -Value *GuardWideningImpl::getGuardCondition(Instruction *GuardInst) { - IntrinsicInst *GI = cast(GuardInst); - assert(GI->getIntrinsicID() == Intrinsic::experimental_guard && - "Bad guard intrinsic?"); - return GI->getArgOperand(0); -} - -void GuardWideningImpl::setGuardCondition(Instruction *GuardInst, - Value *NewCond) { - IntrinsicInst *GI = cast(GuardInst); - assert(GI->getIntrinsicID() == Intrinsic::experimental_guard && - "Bad guard intrinsic?"); - GI->setArgOperand(0, NewCond); -} - -bool GuardWideningImpl::isGuard(const Instruction* I) { - using namespace llvm::PatternMatch; - return match(I, m_Intrinsic()); -} - -void GuardWideningImpl::eliminateGuard(Instruction *GuardInst) { - GuardInst->eraseFromParent(); - ++GuardsEliminated; -} - GuardWideningImpl::WideningScore GuardWideningImpl::computeWideningScore( Instruction *DominatedGuard, Loop *DominatedGuardLoop, Instruction *DominatingGuard, Loop *DominatingGuardLoop) {