diff options
author | Chris Lattner <sabre@nondot.org> | 2005-01-14 22:37:20 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-01-14 22:37:20 +0000 |
commit | 60e4878f9414227a92fec423d5fc39f0d00a2478 (patch) | |
tree | 408e88be5d401a96f883e20ae2d73d57c83fe8fc /include/llvm/CodeGen | |
parent | 2ee743ff9be43c350075a2fa15d11a79bff36775 (diff) | |
download | external_llvm-60e4878f9414227a92fec423d5fc39f0d00a2478.zip external_llvm-60e4878f9414227a92fec423d5fc39f0d00a2478.tar.gz external_llvm-60e4878f9414227a92fec423d5fc39f0d00a2478.tar.bz2 |
Change CopyFromReg to take and produce a chain node, allowing it to be used
with physregs that are not live across the entire block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19560 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen')
-rw-r--r-- | include/llvm/CodeGen/SelectionDAG.h | 11 | ||||
-rw-r--r-- | include/llvm/CodeGen/SelectionDAGNodes.h | 18 |
2 files changed, 12 insertions, 17 deletions
diff --git a/include/llvm/CodeGen/SelectionDAG.h b/include/llvm/CodeGen/SelectionDAG.h index 5c55005..4feaf90 100644 --- a/include/llvm/CodeGen/SelectionDAG.h +++ b/include/llvm/CodeGen/SelectionDAG.h @@ -99,21 +99,24 @@ public: SDOperand getCopyToReg(SDOperand Chain, SDOperand N, unsigned Reg) { // Note: these are auto-CSE'd because the caller doesn't make requests that // could cause duplicates to occur. - SDNode *NN = new RegSDNode(ISD::CopyToReg, MVT::Other, Chain, N, Reg); + SDNode *NN = new RegSDNode(ISD::CopyToReg, Chain, N, Reg); + NN->setValueTypes(MVT::Other); AllNodes.push_back(NN); return SDOperand(NN, 0); } - SDOperand getCopyFromReg(unsigned Reg, MVT::ValueType VT) { + SDOperand getCopyFromReg(unsigned Reg, MVT::ValueType VT, SDOperand Chain) { // Note: These nodes are auto-CSE'd by the caller of this method. - SDNode *NN = new RegSDNode(ISD::CopyFromReg, VT, Reg); + SDNode *NN = new RegSDNode(ISD::CopyFromReg, Chain, Reg); + NN->setValueTypes(VT, MVT::Other); AllNodes.push_back(NN); return SDOperand(NN, 0); } SDOperand getImplicitDef(SDOperand Chain, unsigned Reg) { // Note: These nodes are auto-CSE'd by the caller of this method. - SDNode *NN = new RegSDNode(ISD::ImplicitDef, MVT::Other, Chain, Reg); + SDNode *NN = new RegSDNode(ISD::ImplicitDef, Chain, Reg); + NN->setValueTypes(MVT::Other); AllNodes.push_back(NN); return SDOperand(NN, 0); } diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h index c9a7df9..b82671e 100644 --- a/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/include/llvm/CodeGen/SelectionDAGNodes.h @@ -648,19 +648,11 @@ class RegSDNode : public SDNode { unsigned Reg; protected: friend class SelectionDAG; - RegSDNode(unsigned Opc, MVT::ValueType VT, SDOperand Chain, - SDOperand Src, unsigned reg) + RegSDNode(unsigned Opc, SDOperand Chain, SDOperand Src, unsigned reg) : SDNode(Opc, Chain, Src), Reg(reg) { - setValueTypes(VT); - } - RegSDNode(unsigned Opc, MVT::ValueType VT, SDOperand Chain, - unsigned reg) - : SDNode(Opc, Chain), Reg(reg) { - setValueTypes(VT); - } - RegSDNode(unsigned Opc, MVT::ValueType VT, unsigned reg) - : SDNode(Opc, VT), Reg(reg) { } + RegSDNode(unsigned Opc, SDOperand Chain, unsigned reg) + : SDNode(Opc, Chain), Reg(reg) {} public: unsigned getReg() const { return Reg; } @@ -714,10 +706,10 @@ class MVTSDNode : public SDNode { MVT::ValueType ExtraValueType; protected: friend class SelectionDAG; - MVTSDNode(unsigned Opc, MVT::ValueType VT, + MVTSDNode(unsigned Opc, MVT::ValueType VT1, MVT::ValueType VT2, SDOperand Op0, SDOperand Op1, MVT::ValueType EVT) : SDNode(Opc, Op0, Op1), ExtraValueType(EVT) { - setValueTypes(VT); + setValueTypes(VT1, VT2); } MVTSDNode(unsigned Opc, MVT::ValueType VT, SDOperand Op0, SDOperand Op1, SDOperand Op2, MVT::ValueType EVT) |