mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-24 13:06:56 +00:00
Convert SelectionDAG::MorphNodeTo to use ArrayRef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207378 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1aa05f3844
commit
f564ea31f0
@ -862,7 +862,7 @@ public:
|
||||
/// MorphNodeTo - This *mutates* the specified node to have the specified
|
||||
/// return type, opcode, and operands.
|
||||
SDNode *MorphNodeTo(SDNode *N, unsigned Opc, SDVTList VTs,
|
||||
const SDValue *Ops, unsigned NumOps);
|
||||
ArrayRef<SDValue> Ops);
|
||||
|
||||
/// getMachineNode - These are used for target selectors to create a new node
|
||||
/// with specified return type(s), MachineInstr opcode, and operands.
|
||||
|
@ -153,7 +153,7 @@ static void CloneNodeWithValues(SDNode *N, SelectionDAG *DAG,
|
||||
End = MN->memoperands_end();
|
||||
}
|
||||
|
||||
DAG->MorphNodeTo(N, N->getOpcode(), VTList, &Ops[0], Ops.size());
|
||||
DAG->MorphNodeTo(N, N->getOpcode(), VTList, Ops);
|
||||
|
||||
// Reset the memory references
|
||||
if (MN)
|
||||
|
@ -5301,7 +5301,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
||||
|
||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
||||
SDVTList VTs,ArrayRef<SDValue> Ops) {
|
||||
N = MorphNodeTo(N, ~MachineOpc, VTs, Ops.data(), Ops.size());
|
||||
N = MorphNodeTo(N, ~MachineOpc, VTs, Ops);
|
||||
// Reset the NodeID to -1.
|
||||
N->setNodeId(-1);
|
||||
return N;
|
||||
@ -5338,13 +5338,13 @@ SDNode *SelectionDAG::UpdadeSDLocOnMergedSDNode(SDNode *N, SDLoc OLoc) {
|
||||
/// the node's users.
|
||||
///
|
||||
SDNode *SelectionDAG::MorphNodeTo(SDNode *N, unsigned Opc,
|
||||
SDVTList VTs, const SDValue *Ops,
|
||||
unsigned NumOps) {
|
||||
SDVTList VTs, ArrayRef<SDValue> Ops) {
|
||||
unsigned NumOps = Ops.size();
|
||||
// If an identical node already exists, use it.
|
||||
void *IP = nullptr;
|
||||
if (VTs.VTs[VTs.NumVTs-1] != MVT::Glue) {
|
||||
FoldingSetNodeID ID;
|
||||
AddNodeIDNode(ID, Opc, VTs, Ops, NumOps);
|
||||
AddNodeIDNode(ID, Opc, VTs, Ops.data(), NumOps);
|
||||
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
||||
return UpdadeSDLocOnMergedSDNode(ON, SDLoc(N));
|
||||
}
|
||||
@ -5381,22 +5381,22 @@ SDNode *SelectionDAG::MorphNodeTo(SDNode *N, unsigned Opc,
|
||||
// remainder of the current SelectionDAG iteration, so we can allocate
|
||||
// the operands directly out of a pool with no recycling metadata.
|
||||
MN->InitOperands(OperandAllocator.Allocate<SDUse>(NumOps),
|
||||
Ops, NumOps);
|
||||
Ops.data(), NumOps);
|
||||
else
|
||||
MN->InitOperands(MN->LocalOperands, Ops, NumOps);
|
||||
MN->InitOperands(MN->LocalOperands, Ops.data(), NumOps);
|
||||
MN->OperandsNeedDelete = false;
|
||||
} else
|
||||
MN->InitOperands(MN->OperandList, Ops, NumOps);
|
||||
MN->InitOperands(MN->OperandList, Ops.data(), NumOps);
|
||||
} else {
|
||||
// If NumOps is larger than the # of operands we currently have, reallocate
|
||||
// the operand list.
|
||||
if (NumOps > N->NumOperands) {
|
||||
if (N->OperandsNeedDelete)
|
||||
delete[] N->OperandList;
|
||||
N->InitOperands(new SDUse[NumOps], Ops, NumOps);
|
||||
N->InitOperands(new SDUse[NumOps], Ops.data(), NumOps);
|
||||
N->OperandsNeedDelete = true;
|
||||
} else
|
||||
N->InitOperands(N->OperandList, Ops, NumOps);
|
||||
N->InitOperands(N->OperandList, Ops.data(), NumOps);
|
||||
}
|
||||
|
||||
// Delete any nodes that are still dead after adding the uses for the
|
||||
|
@ -2106,7 +2106,8 @@ MorphNode(SDNode *Node, unsigned TargetOpc, SDVTList VTList,
|
||||
|
||||
// Call the underlying SelectionDAG routine to do the transmogrification. Note
|
||||
// that this deletes operands of the old node that become dead.
|
||||
SDNode *Res = CurDAG->MorphNodeTo(Node, ~TargetOpc, VTList, Ops, NumOps);
|
||||
SDNode *Res = CurDAG->MorphNodeTo(Node, ~TargetOpc, VTList,
|
||||
ArrayRef<SDValue>(Ops, NumOps));
|
||||
|
||||
// MorphNodeTo can operate in two ways: if an existing node with the
|
||||
// specified operands exists, it can just return it. Otherwise, it
|
||||
|
@ -488,7 +488,8 @@ static SDValue performANDCombine(SDNode *N, SelectionDAG &DAG,
|
||||
Log2 == ExtendTySize) {
|
||||
SDValue Ops[] = { Op0->getOperand(0), Op0->getOperand(1), Op0Op2 };
|
||||
DAG.MorphNodeTo(Op0.getNode(), MipsISD::VEXTRACT_ZEXT_ELT,
|
||||
Op0->getVTList(), Ops, Op0->getNumOperands());
|
||||
Op0->getVTList(),
|
||||
ArrayRef<SDValue>(Ops, Op0->getNumOperands()));
|
||||
return Op0;
|
||||
}
|
||||
}
|
||||
@ -832,7 +833,8 @@ static SDValue performSRACombine(SDNode *N, SelectionDAG &DAG,
|
||||
SDValue Ops[] = { Op0Op0->getOperand(0), Op0Op0->getOperand(1),
|
||||
Op0Op0->getOperand(2) };
|
||||
DAG.MorphNodeTo(Op0Op0.getNode(), MipsISD::VEXTRACT_SEXT_ELT,
|
||||
Op0Op0->getVTList(), Ops, Op0Op0->getNumOperands());
|
||||
Op0Op0->getVTList(),
|
||||
ArrayRef<SDValue>(Ops, Op0Op0->getNumOperands()));
|
||||
return Op0Op0;
|
||||
}
|
||||
}
|
||||
|
@ -751,7 +751,7 @@ SDValue SITargetLowering::LowerBRCOND(SDValue BRCOND,
|
||||
BR->getOperand(0),
|
||||
BRCOND.getOperand(2)
|
||||
};
|
||||
DAG.MorphNodeTo(BR, ISD::BR, BR->getVTList(), Ops, 2);
|
||||
DAG.MorphNodeTo(BR, ISD::BR, BR->getVTList(), Ops);
|
||||
}
|
||||
|
||||
SDValue Chain = SDValue(Result, Result->getNumValues() - 1);
|
||||
|
Loading…
Reference in New Issue
Block a user