From f3757f24632ca48a611dec83e3624ac5b336c472 Mon Sep 17 00:00:00 2001 From: Max Kazantsev Date: Thu, 14 Feb 2019 09:04:12 +0000 Subject: [PATCH] [NFC] Refactor LICM code for better readability git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354013 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/LICM.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/Transforms/Scalar/LICM.cpp b/lib/Transforms/Scalar/LICM.cpp index 7384ea0b0a3..6d43afaa193 100644 --- a/lib/Transforms/Scalar/LICM.cpp +++ b/lib/Transforms/Scalar/LICM.cpp @@ -856,13 +856,18 @@ bool llvm::hoistRegion(DomTreeNode *N, AliasAnalysis *AA, LoopInfo *LI, continue; } - using namespace PatternMatch; - if (((I.use_empty() && - match(&I, m_Intrinsic())) || - isGuard(&I)) && + auto IsInvariantStart = [&](Instruction &I) { + using namespace PatternMatch; + return I.use_empty() && + match(&I, m_Intrinsic()); + }; + auto MustExecuteWithoutWritesBefore = [&](Instruction &I) { + return SafetyInfo->isGuaranteedToExecute(I, DT, CurLoop) && + SafetyInfo->doesNotWriteMemoryBefore(I, CurLoop); + }; + if ((IsInvariantStart(I) || isGuard(&I)) && CurLoop->hasLoopInvariantOperands(&I) && - SafetyInfo->isGuaranteedToExecute(I, DT, CurLoop) && - SafetyInfo->doesNotWriteMemoryBefore(I, CurLoop)) { + MustExecuteWithoutWritesBefore(I)) { hoist(I, DT, CurLoop, CFH.getOrCreateHoistedBlock(BB), SafetyInfo, MSSAU, ORE); HoistedInstructions.push_back(&I); -- 2.40.0