mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
When preselecting, favor things that have low depth to select first. This
is faster and uses less stack space. This reduces our stack requirement enough to compile sixtrack, and though it's a hack, should be enough until we switch to iterative isel llvm-svn: 23664
This commit is contained in:
parent
f8b0332dfc
commit
6809d07aa5
@ -123,6 +123,11 @@ void PPC32DAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
|
||||
SDOperand Node = Worklist.back();
|
||||
Worklist.pop_back();
|
||||
|
||||
// Chose from the least deep of the top two nodes.
|
||||
if (!Worklist.empty() &&
|
||||
Worklist.back().Val->getNodeDepth() < Node.Val->getNodeDepth())
|
||||
std::swap(Worklist.back(), Node);
|
||||
|
||||
if ((Node.Val->getOpcode() >= ISD::BUILTIN_OP_END &&
|
||||
Node.Val->getOpcode() < PPCISD::FIRST_NUMBER) ||
|
||||
CodeGenMap.count(Node)) continue;
|
||||
@ -1026,7 +1031,7 @@ SDOperand PPC32DAGToDAGISel::Select(SDOperand Op) {
|
||||
New = CurDAG->getNode(ISD::TokenFactor, MVT::Other, Ops);
|
||||
}
|
||||
|
||||
if (!N->hasOneUse()) CodeGenMap[Op] = New;
|
||||
CodeGenMap[Op] = New;
|
||||
return New;
|
||||
}
|
||||
case ISD::CopyFromReg: {
|
||||
@ -1042,7 +1047,7 @@ SDOperand PPC32DAGToDAGISel::Select(SDOperand Op) {
|
||||
SDOperand Val = Select(N->getOperand(2));
|
||||
SDOperand New = CurDAG->getNode(ISD::CopyToReg, MVT::Other,
|
||||
Chain, Reg, Val);
|
||||
if (!N->hasOneUse()) CodeGenMap[Op] = New;
|
||||
CodeGenMap[Op] = New;
|
||||
return New;
|
||||
}
|
||||
case ISD::UNDEF:
|
||||
@ -1354,7 +1359,6 @@ SDOperand PPC32DAGToDAGISel::Select(SDOperand Op) {
|
||||
Select(N->getOperand(0)));
|
||||
return SDOperand(N, 0);
|
||||
}
|
||||
|
||||
case ISD::LOAD:
|
||||
case ISD::EXTLOAD:
|
||||
case ISD::ZEXTLOAD:
|
||||
@ -1402,7 +1406,6 @@ SDOperand PPC32DAGToDAGISel::Select(SDOperand Op) {
|
||||
return Ext;
|
||||
}
|
||||
}
|
||||
|
||||
case ISD::TRUNCSTORE:
|
||||
case ISD::STORE: {
|
||||
SDOperand AddrOp1, AddrOp2;
|
||||
|
Loading…
Reference in New Issue
Block a user