mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-20 02:58:10 +00:00
Factor code that finalize PHI nodes, jump tables, etc. out of SelectBasicBlock. No functionality changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54438 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9200e81a18
commit
39fd6e81b1
@ -182,10 +182,15 @@ private:
|
||||
FunctionLoweringInfo &FuncInfo);
|
||||
void SelectBasicBlock(BasicBlock *BB, MachineFunction &MF,
|
||||
FunctionLoweringInfo &FuncInfo,
|
||||
std::vector<std::pair<MachineInstr*, unsigned> > &PHINodesToUpdate,
|
||||
NodeAllocatorType &NodeAllocator);
|
||||
void FinishBasicBlock(BasicBlock *BB, MachineFunction &MF,
|
||||
FunctionLoweringInfo &FuncInfo,
|
||||
std::vector<std::pair<MachineInstr*, unsigned> > &PHINodesToUpdate,
|
||||
NodeAllocatorType &NodeAllocator);
|
||||
|
||||
void BuildSelectionDAG(SelectionDAG &DAG, BasicBlock *LLVMBB,
|
||||
std::vector<std::pair<MachineInstr*, unsigned> > &PHINodesToUpdate,
|
||||
std::vector<std::pair<MachineInstr*, unsigned> > &PHINodesToUpdate,
|
||||
FunctionLoweringInfo &FuncInfo);
|
||||
void CodeGenAndEmitDAG(SelectionDAG &DAG);
|
||||
void LowerArguments(BasicBlock *BB, SelectionDAGLowering &SDL);
|
||||
|
@ -5441,29 +5441,38 @@ void SelectionDAGISel::SelectAllBasicBlocks(Function &Fn, MachineFunction &MF,
|
||||
// each basic block.
|
||||
NodeAllocatorType NodeAllocator;
|
||||
|
||||
for (Function::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I)
|
||||
SelectBasicBlock(I, MF, FuncInfo, NodeAllocator);
|
||||
std::vector<std::pair<MachineInstr*, unsigned> > PHINodesToUpdate;
|
||||
for (Function::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I) {
|
||||
BasicBlock *LLVMBB = &*I;
|
||||
PHINodesToUpdate.clear();
|
||||
SelectBasicBlock(LLVMBB, MF, FuncInfo, PHINodesToUpdate, NodeAllocator);
|
||||
FinishBasicBlock(LLVMBB, MF, FuncInfo, PHINodesToUpdate, NodeAllocator);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
SelectionDAGISel::SelectBasicBlock(BasicBlock *LLVMBB, MachineFunction &MF,
|
||||
FunctionLoweringInfo &FuncInfo,
|
||||
std::vector<std::pair<MachineInstr*, unsigned> > &PHINodesToUpdate,
|
||||
NodeAllocatorType &NodeAllocator) {
|
||||
std::vector<std::pair<MachineInstr*, unsigned> > PHINodesToUpdate;
|
||||
{
|
||||
SelectionDAG DAG(TLI, MF, FuncInfo,
|
||||
getAnalysisToUpdate<MachineModuleInfo>(),
|
||||
NodeAllocator);
|
||||
CurDAG = &DAG;
|
||||
SelectionDAG DAG(TLI, MF, FuncInfo,
|
||||
getAnalysisToUpdate<MachineModuleInfo>(),
|
||||
NodeAllocator);
|
||||
CurDAG = &DAG;
|
||||
|
||||
// First step, lower LLVM code to some DAG. This DAG may use operations and
|
||||
// types that are not supported by the target.
|
||||
BuildSelectionDAG(DAG, LLVMBB, PHINodesToUpdate, FuncInfo);
|
||||
// First step, lower LLVM code to some DAG. This DAG may use operations and
|
||||
// types that are not supported by the target.
|
||||
BuildSelectionDAG(DAG, LLVMBB, PHINodesToUpdate, FuncInfo);
|
||||
|
||||
// Second step, emit the lowered DAG as machine code.
|
||||
CodeGenAndEmitDAG(DAG);
|
||||
}
|
||||
// Second step, emit the lowered DAG as machine code.
|
||||
CodeGenAndEmitDAG(DAG);
|
||||
}
|
||||
|
||||
void
|
||||
SelectionDAGISel::FinishBasicBlock(BasicBlock *LLVMBB, MachineFunction &MF,
|
||||
FunctionLoweringInfo &FuncInfo,
|
||||
std::vector<std::pair<MachineInstr*, unsigned> > &PHINodesToUpdate,
|
||||
NodeAllocatorType &NodeAllocator) {
|
||||
DOUT << "Total amount of phi nodes to update: "
|
||||
<< PHINodesToUpdate.size() << "\n";
|
||||
DEBUG(for (unsigned i = 0, e = PHINodesToUpdate.size(); i != e; ++i)
|
||||
|
Loading…
Reference in New Issue
Block a user