use "unpredictable" metadata in fast-isel when splitting compares
This patch uses the metadata defined in D12341 to avoid creating an unpredictable branch. Differential Revision: http://reviews.llvm.org/D12342 llvm-svn: 246692
This commit is contained in:
@@ -4667,6 +4667,10 @@ bool CodeGenPrepare::splitBranchCondition(Function &F) {
|
||||
if (!match(BB.getTerminator(), m_Br(m_OneUse(m_BinOp(LogicOp)), TBB, FBB)))
|
||||
continue;
|
||||
|
||||
auto *Br1 = cast<BranchInst>(BB.getTerminator());
|
||||
if (Br1->getMetadata(LLVMContext::MD_unpredictable))
|
||||
continue;
|
||||
|
||||
unsigned Opc;
|
||||
Value *Cond1, *Cond2;
|
||||
if (match(LogicOp, m_And(m_OneUse(m_Value(Cond1)),
|
||||
@@ -4693,7 +4697,6 @@ bool CodeGenPrepare::splitBranchCondition(Function &F) {
|
||||
|
||||
// Update original basic block by using the first condition directly by the
|
||||
// branch instruction and removing the no longer needed and/or instruction.
|
||||
auto *Br1 = cast<BranchInst>(BB.getTerminator());
|
||||
Br1->setCondition(Cond1);
|
||||
LogicOp->eraseFromParent();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user