Skip to content

Commit 99dda10

Browse files
committed
Refine pattern matcher
1 parent d9953cf commit 99dda10

File tree

1 file changed

+4
-11
lines changed

1 file changed

+4
-11
lines changed

llvm/lib/Analysis/IVDescriptors.cpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -698,18 +698,11 @@ RecurrenceDescriptor::isFindLastIVPattern(PHINode *OrigPhi, Instruction *I,
698698
return InstDesc(false, I);
699699

700700
// TODO: Match selects with multi-use cmp conditions.
701-
CmpInst::Predicate Pred;
702-
Value *TrueVal, *FalseVal;
703-
if (!match(I, m_Select(m_OneUse(m_Cmp(Pred, m_Value(), m_Value())),
704-
m_Value(TrueVal), m_Value(FalseVal))))
705-
return InstDesc(false, I);
706-
707701
Value *NonRdxPhi = nullptr;
708-
if (OrigPhi == dyn_cast<PHINode>(TrueVal))
709-
NonRdxPhi = FalseVal;
710-
else if (OrigPhi == dyn_cast<PHINode>(FalseVal))
711-
NonRdxPhi = TrueVal;
712-
else
702+
if (!match(I, m_CombineOr(m_Select(m_OneUse(m_Cmp()), m_Value(NonRdxPhi),
703+
m_Specific(OrigPhi)),
704+
m_Select(m_OneUse(m_Cmp()), m_Specific(OrigPhi),
705+
m_Value(NonRdxPhi)))))
713706
return InstDesc(false, I);
714707

715708
auto IsIncreasingLoopInduction = [&](Value *V) {

0 commit comments

Comments
 (0)