diff options
author | Fangrui Song <maskray@google.com> | 2019-12-23 22:20:29 -0800 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-12-23 22:41:05 -0800 |
commit | e0d855b39974bc40dee0f722884894098be6d420 (patch) | |
tree | cfe154ba5305b825c062fb97182ae4ae9ce8ee3e /llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp | |
parent | 01b98e6fd54f498018be4e298d98e711ab42b796 (diff) | |
download | bcm5719-llvm-e0d855b39974bc40dee0f722884894098be6d420.tar.gz bcm5719-llvm-e0d855b39974bc40dee0f722884894098be6d420.zip |
[SelectionDAG] Change SelectionDAGISel::{funcInfo,SDB} to use unique_ptr
CurDAG is referenced more than 2000 times and used in many gerated .cpp
files. Don't touch it for now.
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp index 36d0d926013..18760313f4c 100644 --- a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -512,13 +512,14 @@ static bool isInt64Immediate(SDValue N, uint64_t &Imm) { return isInt64Immediate(N.getNode(), Imm); } -static unsigned getBranchHint(unsigned PCC, FunctionLoweringInfo *FuncInfo, +static unsigned getBranchHint(unsigned PCC, + const FunctionLoweringInfo &FuncInfo, const SDValue &DestMBB) { assert(isa<BasicBlockSDNode>(DestMBB)); - if (!FuncInfo->BPI) return PPC::BR_NO_HINT; + if (!FuncInfo.BPI) return PPC::BR_NO_HINT; - const BasicBlock *BB = FuncInfo->MBB->getBasicBlock(); + const BasicBlock *BB = FuncInfo.MBB->getBasicBlock(); const Instruction *BBTerm = BB->getTerminator(); if (BBTerm->getNumSuccessors() != 2) return PPC::BR_NO_HINT; @@ -526,8 +527,8 @@ static unsigned getBranchHint(unsigned PCC, FunctionLoweringInfo *FuncInfo, const BasicBlock *TBB = BBTerm->getSuccessor(0); const BasicBlock *FBB = BBTerm->getSuccessor(1); - auto TProb = FuncInfo->BPI->getEdgeProbability(BB, TBB); - auto FProb = FuncInfo->BPI->getEdgeProbability(BB, FBB); + auto TProb = FuncInfo.BPI->getEdgeProbability(BB, TBB); + auto FProb = FuncInfo.BPI->getEdgeProbability(BB, FBB); // We only want to handle cases which are easy to predict at static time, e.g. // C++ throw statement, that is very likely not taken, or calling never @@ -547,7 +548,7 @@ static unsigned getBranchHint(unsigned PCC, FunctionLoweringInfo *FuncInfo, if (std::max(TProb, FProb) / Threshold < std::min(TProb, FProb)) return PPC::BR_NO_HINT; - LLVM_DEBUG(dbgs() << "Use branch hint for '" << FuncInfo->Fn->getName() + LLVM_DEBUG(dbgs() << "Use branch hint for '" << FuncInfo.Fn->getName() << "::" << BB->getName() << "'\n" << " -> " << TBB->getName() << ": " << TProb << "\n" << " -> " << FBB->getName() << ": " << FProb << "\n"); @@ -5002,7 +5003,7 @@ void PPCDAGToDAGISel::Select(SDNode *N) { // Prevent PPC::PRED_* from being selected into LI. unsigned PCC = cast<ConstantSDNode>(N->getOperand(1))->getZExtValue(); if (EnableBranchHint) - PCC |= getBranchHint(PCC, FuncInfo, N->getOperand(3)); + PCC |= getBranchHint(PCC, *FuncInfo, N->getOperand(3)); SDValue Pred = getI32Imm(PCC, dl); SDValue Ops[] = { Pred, N->getOperand(2), N->getOperand(3), @@ -5045,7 +5046,7 @@ void PPCDAGToDAGISel::Select(SDNode *N) { } if (EnableBranchHint) - PCC |= getBranchHint(PCC, FuncInfo, N->getOperand(4)); + PCC |= getBranchHint(PCC, *FuncInfo, N->getOperand(4)); SDValue CondCode = SelectCC(N->getOperand(2), N->getOperand(3), CC, dl); SDValue Ops[] = { getI32Imm(PCC, dl), CondCode, |