mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-19 19:31:50 +00:00
simplify MorphNodeTo to take a VTList operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33868 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
67612a1188
commit
48b8592652
@ -970,10 +970,10 @@ protected:
|
||||
/// MorphNodeTo - This clears the return value and operands list, and sets the
|
||||
/// opcode of the node to the specified value. This should only be used by
|
||||
/// the SelectionDAG class.
|
||||
void MorphNodeTo(unsigned Opc) {
|
||||
void MorphNodeTo(unsigned Opc, SDVTList L) {
|
||||
NodeType = Opc;
|
||||
ValueList = 0;
|
||||
NumValues = 0;
|
||||
ValueList = L.VTs;
|
||||
NumValues = L.NumVTs;
|
||||
|
||||
// Clear the operands list, updating used nodes to remove this from their
|
||||
// use list.
|
||||
@ -1058,10 +1058,7 @@ class HandleSDNode : public SDNode {
|
||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
||||
public:
|
||||
HandleSDNode(SDOperand X) : SDNode(ISD::HANDLENODE, X) {}
|
||||
~HandleSDNode() {
|
||||
MorphNodeTo(ISD::HANDLENODE); // Drops operand uses.
|
||||
}
|
||||
|
||||
~HandleSDNode();
|
||||
SDOperand getValue() const { return getOperand(0); }
|
||||
};
|
||||
|
||||
|
@ -2085,8 +2085,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
||||
|
||||
RemoveNodeFromCSEMaps(N);
|
||||
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
||||
N->setValueTypes(VTs);
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
||||
|
||||
CSEMap.InsertNode(N, IP);
|
||||
return N;
|
||||
@ -2105,8 +2104,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
||||
RemoveNodeFromCSEMaps(N);
|
||||
SDOperand OperandList[] = { Op1 };
|
||||
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
||||
N->setValueTypes(VTs);
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
||||
N->setOperands(OperandList, 1);
|
||||
CSEMap.InsertNode(N, IP);
|
||||
return N;
|
||||
@ -2127,8 +2125,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
||||
|
||||
SDOperand OperandList[] = { Op1, Op2 };
|
||||
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
||||
N->setValueTypes(VTs);
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
||||
N->setOperands(OperandList, 2);
|
||||
|
||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
||||
@ -2149,8 +2146,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
||||
RemoveNodeFromCSEMaps(N);
|
||||
|
||||
SDOperand OperandList[] = { Op1, Op2, Op3 };
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
||||
N->setValueTypes(VTs);
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
||||
N->setOperands(OperandList, 3);
|
||||
|
||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
||||
@ -2169,8 +2165,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
||||
return ON;
|
||||
|
||||
RemoveNodeFromCSEMaps(N);
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
||||
N->setValueTypes(VTs);
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
||||
N->setOperands(Ops, NumOps);
|
||||
|
||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
||||
@ -2190,8 +2185,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
||||
RemoveNodeFromCSEMaps(N);
|
||||
|
||||
SDOperand OperandList[] = { Op1, Op2 };
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
||||
N->setValueTypes(VTs);
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
||||
N->setOperands(OperandList, 2);
|
||||
|
||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
||||
@ -2213,8 +2207,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
||||
RemoveNodeFromCSEMaps(N);
|
||||
|
||||
SDOperand OperandList[] = { Op1, Op2, Op3 };
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
||||
N->setValueTypes(VTs);
|
||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
||||
N->setOperands(OperandList, 3);
|
||||
|
||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
||||
@ -2547,6 +2540,12 @@ void VTSDNode::ANCHOR() {}
|
||||
void LoadSDNode::ANCHOR() {}
|
||||
void StoreSDNode::ANCHOR() {}
|
||||
|
||||
HandleSDNode::~HandleSDNode() {
|
||||
SDVTList VTs = { 0, 0 };
|
||||
MorphNodeTo(ISD::HANDLENODE, VTs); // Drops operand uses.
|
||||
}
|
||||
|
||||
|
||||
/// Profile - Gather unique data for the node.
|
||||
///
|
||||
void SDNode::Profile(FoldingSetNodeID &ID) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user