mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-21 03:05:26 -04:00
[NewGVN] Use m_Br to simplify code a bit. (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@374744 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -89,6 +89,7 @@
|
||||
#include "llvm/IR/IntrinsicInst.h"
|
||||
#include "llvm/IR/Intrinsics.h"
|
||||
#include "llvm/IR/LLVMContext.h"
|
||||
#include "llvm/IR/PatternMatch.h"
|
||||
#include "llvm/IR/Type.h"
|
||||
#include "llvm/IR/Use.h"
|
||||
#include "llvm/IR/User.h"
|
||||
@@ -122,6 +123,7 @@
|
||||
using namespace llvm;
|
||||
using namespace llvm::GVNExpression;
|
||||
using namespace llvm::VNCoercion;
|
||||
using namespace llvm::PatternMatch;
|
||||
|
||||
#define DEBUG_TYPE "newgvn"
|
||||
|
||||
@@ -2464,9 +2466,9 @@ Value *NewGVN::findConditionEquivalence(Value *Cond) const {
|
||||
// Process the outgoing edges of a block for reachability.
|
||||
void NewGVN::processOutgoingEdges(Instruction *TI, BasicBlock *B) {
|
||||
// Evaluate reachability of terminator instruction.
|
||||
BranchInst *BR;
|
||||
if ((BR = dyn_cast<BranchInst>(TI)) && BR->isConditional()) {
|
||||
Value *Cond = BR->getCondition();
|
||||
Value *Cond;
|
||||
BasicBlock *TrueSucc, *FalseSucc;
|
||||
if (match(TI, m_Br(m_Value(Cond), TrueSucc, FalseSucc))) {
|
||||
Value *CondEvaluated = findConditionEquivalence(Cond);
|
||||
if (!CondEvaluated) {
|
||||
if (auto *I = dyn_cast<Instruction>(Cond)) {
|
||||
@@ -2479,8 +2481,6 @@ void NewGVN::processOutgoingEdges(Instruction *TI, BasicBlock *B) {
|
||||
}
|
||||
}
|
||||
ConstantInt *CI;
|
||||
BasicBlock *TrueSucc = BR->getSuccessor(0);
|
||||
BasicBlock *FalseSucc = BR->getSuccessor(1);
|
||||
if (CondEvaluated && (CI = dyn_cast<ConstantInt>(CondEvaluated))) {
|
||||
if (CI->isOne()) {
|
||||
LLVM_DEBUG(dbgs() << "Condition for Terminator " << *TI
|
||||
|
||||
Reference in New Issue
Block a user