From 60da4369a1cc65685922f2eed7cfb73f0f4b96e7 Mon Sep 17 00:00:00 2001 From: Max Kazantsev Date: Mon, 15 Jun 2020 13:58:54 +0700 Subject: [PATCH] [NFC] Bail early simplifying unconditional branches --- llvm/lib/Transforms/InstCombine/InstructionCombining.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp index c13f8ba8e8fe..442efdbcaf71 100644 --- a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp +++ b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp @@ -2737,6 +2737,10 @@ Instruction *InstCombiner::visitReturnInst(ReturnInst &RI) { } Instruction *InstCombiner::visitBranchInst(BranchInst &BI) { + // Nothing to do about unconditional branches. + if (BI.isUnconditional()) + return nullptr; + // Change br (not X), label True, label False to: br X, label False, True Value *X = nullptr; if (match(&BI, m_Br(m_Not(m_Value(X)), m_BasicBlock(), m_BasicBlock())) && @@ -2748,7 +2752,7 @@ Instruction *InstCombiner::visitBranchInst(BranchInst &BI) { // If the condition is irrelevant, remove the use so that other // transforms on the condition become more effective. - if (BI.isConditional() && !isa(BI.getCondition()) && + if (!isa(BI.getCondition()) && BI.getSuccessor(0) == BI.getSuccessor(1)) return replaceOperand( BI, 0, ConstantInt::getFalse(BI.getCondition()->getType()));