From 9fac8496eae809c288096037d7a3f5a1a3d04c7a Mon Sep 17 00:00:00 2001 From: Max Kazantsev Date: Mon, 1 Mar 2021 13:22:42 +0700 Subject: [PATCH] [NFC] Detect IV increment expressed as uadd_with_overflow and usub_with_overflow Current callers do not call it with such argument, so this is NFC. But for further changes, it can be very useful to detect such cases. --- llvm/lib/CodeGen/CodeGenPrepare.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 2c2f667b..d87d500 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -1293,6 +1293,12 @@ getIVIncrement(const PHINode *PN, const LoopInfo *LI) { return std::make_pair(IVInc, ConstantExpr::getNeg(Step)); if (match(IVInc, m_Add(m_Specific(PN), m_Constant(Step)))) return std::make_pair(IVInc, Step); + if (match(IVInc, m_ExtractValue<0>(m_Intrinsic( + m_Specific(PN), m_Constant(Step))))) + return std::make_pair(IVInc, ConstantExpr::getNeg(Step)); + if (match(IVInc, m_ExtractValue<0>(m_Intrinsic( + m_Specific(PN), m_Constant(Step))))) + return std::make_pair(IVInc, Step); return None; } -- 2.7.4