19 return match(U, m_Intrinsic<Intrinsic::experimental_guard>());
23 Value *Condition, *WidenableCondition;
30 Value *Condition, *WidenableCondition;
35 for (
auto &Insn : *DeoptBB) {
36 if (
match(&Insn, m_Intrinsic<Intrinsic::experimental_deoptimize>()))
38 if (Insn.mayHaveSideEffects())
45 Value *&WidenableCondition,
54 WidenableCondition = WC->get();
63 auto *BI = dyn_cast<BranchInst>(U);
64 if (!BI || !BI->isConditional())
66 auto *
Cond = BI->getCondition();
67 if (!
Cond->hasOneUse())
70 IfTrueBB = BI->getSuccessor(0);
71 IfFalseBB = BI->getSuccessor(1);
73 if (
match(
Cond, m_Intrinsic<Intrinsic::experimental_widenable_condition>())) {
74 WC = &BI->getOperandUse(0);
87 auto *
And = dyn_cast<Instruction>(
Cond);
92 if (
match(A, m_Intrinsic<Intrinsic::experimental_widenable_condition>()) &&
94 WC = &
And->getOperandUse(0);
95 C = &
And->getOperandUse(1);
99 if (
match(
B, m_Intrinsic<Intrinsic::experimental_widenable_condition>()) &&
101 WC = &
And->getOperandUse(1);
102 C = &
And->getOperandUse(0);