forked from OSchip/llvm-project
Use InstCombine's builder in foldSelectCttzCtlz instead of creating a new one.
Summary: As per title. This will add the instructiions we are interested in in the worklist. Reviewers: mehdi_amini, majnemer, andreadb Differential Revision: https://reviews.llvm.org/D29081 llvm-svn: 292957
This commit is contained in:
parent
22a56f2f5a
commit
d90f5f6698
|
@ -395,13 +395,12 @@ static Value *foldSelectCttzCtlz(ICmpInst *ICI, Value *TrueVal, Value *FalseVal,
|
|||
if (match(Count, m_Intrinsic<Intrinsic::cttz>(m_Specific(CmpLHS))) ||
|
||||
match(Count, m_Intrinsic<Intrinsic::ctlz>(m_Specific(CmpLHS)))) {
|
||||
IntrinsicInst *II = cast<IntrinsicInst>(Count);
|
||||
IRBuilder<> Builder(II);
|
||||
// Explicitly clear the 'undef_on_zero' flag.
|
||||
IntrinsicInst *NewI = cast<IntrinsicInst>(II->clone());
|
||||
Type *Ty = NewI->getArgOperand(1)->getType();
|
||||
NewI->setArgOperand(1, Constant::getNullValue(Ty));
|
||||
Builder.Insert(NewI);
|
||||
return Builder.CreateZExtOrTrunc(NewI, ValueOnZero->getType());
|
||||
Builder->Insert(NewI);
|
||||
return Builder->CreateZExtOrTrunc(NewI, ValueOnZero->getType());
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
|
|
Loading…
Reference in New Issue