mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-26 07:24:25 +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:
@ -862,7 +862,7 @@ public:
|
|||||||
/// MorphNodeTo - This *mutates* the specified node to have the specified
|
/// MorphNodeTo - This *mutates* the specified node to have the specified
|
||||||
/// return type, opcode, and operands.
|
/// return type, opcode, and operands.
|
||||||
SDNode *MorphNodeTo(SDNode *N, unsigned Opc, SDVTList VTs,
|
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
|
/// getMachineNode - These are used for target selectors to create a new node
|
||||||
/// with specified return type(s), MachineInstr opcode, and operands.
|
/// with specified return type(s), MachineInstr opcode, and operands.
|
||||||
|
@ -153,7 +153,7 @@ static void CloneNodeWithValues(SDNode *N, SelectionDAG *DAG,
|
|||||||
End = MN->memoperands_end();
|
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
|
// Reset the memory references
|
||||||
if (MN)
|
if (MN)
|
||||||
|
@ -5301,7 +5301,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
|||||||
|
|
||||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
|
||||||
SDVTList VTs,ArrayRef<SDValue> Ops) {
|
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.
|
// Reset the NodeID to -1.
|
||||||
N->setNodeId(-1);
|
N->setNodeId(-1);
|
||||||
return N;
|
return N;
|
||||||
@ -5338,13 +5338,13 @@ SDNode *SelectionDAG::UpdadeSDLocOnMergedSDNode(SDNode *N, SDLoc OLoc) {
|
|||||||
/// the node's users.
|
/// the node's users.
|
||||||
///
|
///
|
||||||
SDNode *SelectionDAG::MorphNodeTo(SDNode *N, unsigned Opc,
|
SDNode *SelectionDAG::MorphNodeTo(SDNode *N, unsigned Opc,
|
||||||
SDVTList VTs, const SDValue *Ops,
|
SDVTList VTs, ArrayRef<SDValue> Ops) {
|
||||||
unsigned NumOps) {
|
unsigned NumOps = Ops.size();
|
||||||
// If an identical node already exists, use it.
|
// If an identical node already exists, use it.
|
||||||
void *IP = nullptr;
|
void *IP = nullptr;
|
||||||
if (VTs.VTs[VTs.NumVTs-1] != MVT::Glue) {
|
if (VTs.VTs[VTs.NumVTs-1] != MVT::Glue) {
|
||||||
FoldingSetNodeID ID;
|
FoldingSetNodeID ID;
|
||||||
AddNodeIDNode(ID, Opc, VTs, Ops, NumOps);
|
AddNodeIDNode(ID, Opc, VTs, Ops.data(), NumOps);
|
||||||
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
||||||
return UpdadeSDLocOnMergedSDNode(ON, SDLoc(N));
|
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
|
// remainder of the current SelectionDAG iteration, so we can allocate
|
||||||
// the operands directly out of a pool with no recycling metadata.
|
// the operands directly out of a pool with no recycling metadata.
|
||||||
MN->InitOperands(OperandAllocator.Allocate<SDUse>(NumOps),
|
MN->InitOperands(OperandAllocator.Allocate<SDUse>(NumOps),
|
||||||
Ops, NumOps);
|
Ops.data(), NumOps);
|
||||||
else
|
else
|
||||||
MN->InitOperands(MN->LocalOperands, Ops, NumOps);
|
MN->InitOperands(MN->LocalOperands, Ops.data(), NumOps);
|
||||||
MN->OperandsNeedDelete = false;
|
MN->OperandsNeedDelete = false;
|
||||||
} else
|
} else
|
||||||
MN->InitOperands(MN->OperandList, Ops, NumOps);
|
MN->InitOperands(MN->OperandList, Ops.data(), NumOps);
|
||||||
} else {
|
} else {
|
||||||
// If NumOps is larger than the # of operands we currently have, reallocate
|
// If NumOps is larger than the # of operands we currently have, reallocate
|
||||||
// the operand list.
|
// the operand list.
|
||||||
if (NumOps > N->NumOperands) {
|
if (NumOps > N->NumOperands) {
|
||||||
if (N->OperandsNeedDelete)
|
if (N->OperandsNeedDelete)
|
||||||
delete[] N->OperandList;
|
delete[] N->OperandList;
|
||||||
N->InitOperands(new SDUse[NumOps], Ops, NumOps);
|
N->InitOperands(new SDUse[NumOps], Ops.data(), NumOps);
|
||||||
N->OperandsNeedDelete = true;
|
N->OperandsNeedDelete = true;
|
||||||
} else
|
} 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
|
// 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
|
// Call the underlying SelectionDAG routine to do the transmogrification. Note
|
||||||
// that this deletes operands of the old node that become dead.
|
// 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
|
// MorphNodeTo can operate in two ways: if an existing node with the
|
||||||
// specified operands exists, it can just return it. Otherwise, it
|
// specified operands exists, it can just return it. Otherwise, it
|
||||||
|
@ -488,7 +488,8 @@ static SDValue performANDCombine(SDNode *N, SelectionDAG &DAG,
|
|||||||
Log2 == ExtendTySize) {
|
Log2 == ExtendTySize) {
|
||||||
SDValue Ops[] = { Op0->getOperand(0), Op0->getOperand(1), Op0Op2 };
|
SDValue Ops[] = { Op0->getOperand(0), Op0->getOperand(1), Op0Op2 };
|
||||||
DAG.MorphNodeTo(Op0.getNode(), MipsISD::VEXTRACT_ZEXT_ELT,
|
DAG.MorphNodeTo(Op0.getNode(), MipsISD::VEXTRACT_ZEXT_ELT,
|
||||||
Op0->getVTList(), Ops, Op0->getNumOperands());
|
Op0->getVTList(),
|
||||||
|
ArrayRef<SDValue>(Ops, Op0->getNumOperands()));
|
||||||
return Op0;
|
return Op0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -832,7 +833,8 @@ static SDValue performSRACombine(SDNode *N, SelectionDAG &DAG,
|
|||||||
SDValue Ops[] = { Op0Op0->getOperand(0), Op0Op0->getOperand(1),
|
SDValue Ops[] = { Op0Op0->getOperand(0), Op0Op0->getOperand(1),
|
||||||
Op0Op0->getOperand(2) };
|
Op0Op0->getOperand(2) };
|
||||||
DAG.MorphNodeTo(Op0Op0.getNode(), MipsISD::VEXTRACT_SEXT_ELT,
|
DAG.MorphNodeTo(Op0Op0.getNode(), MipsISD::VEXTRACT_SEXT_ELT,
|
||||||
Op0Op0->getVTList(), Ops, Op0Op0->getNumOperands());
|
Op0Op0->getVTList(),
|
||||||
|
ArrayRef<SDValue>(Ops, Op0Op0->getNumOperands()));
|
||||||
return Op0Op0;
|
return Op0Op0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -751,7 +751,7 @@ SDValue SITargetLowering::LowerBRCOND(SDValue BRCOND,
|
|||||||
BR->getOperand(0),
|
BR->getOperand(0),
|
||||||
BRCOND.getOperand(2)
|
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);
|
SDValue Chain = SDValue(Result, Result->getNumValues() - 1);
|
||||||
|
Reference in New Issue
Block a user