From 6e1bb38fb8dd64ece28ea5779a8bbf9b5ff7fb96 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Thu, 29 Jan 2009 05:27:31 +0000 Subject: [PATCH] - Add DebugLoc to getTargetNode(). - Modify TableGen to add the DebugLoc when calling getTargetNode. (The light-weight wrappers are only temporary. The non-DebugLoc version will be removed once the whole debug info stuff is finished with.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63273 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/SelectionDAG.h | 56 ++++------ lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 173 +++++++++++++----------------- utils/TableGen/DAGISelEmitter.cpp | 3 + 3 files changed, 97 insertions(+), 135 deletions(-) diff --git a/include/llvm/CodeGen/SelectionDAG.h b/include/llvm/CodeGen/SelectionDAG.h index a06158a39b2..86487cf4a41 100644 --- a/include/llvm/CodeGen/SelectionDAG.h +++ b/include/llvm/CodeGen/SelectionDAG.h @@ -699,72 +699,60 @@ public: /// node of the specified opcode and operands, it returns that node instead of /// the current one. SDNode *getTargetNode(unsigned Opcode, MVT VT); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT); - + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT); SDNode *getTargetNode(unsigned Opcode, MVT VT, SDValue Op1); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT, SDValue Op1); - + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT, SDValue Op1); SDNode *getTargetNode(unsigned Opcode, MVT VT, SDValue Op1, SDValue Op2); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT, SDValue Op1, - SDValue Op2); - + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT, + SDValue Op1, SDValue Op2); SDNode *getTargetNode(unsigned Opcode, MVT VT, SDValue Op1, SDValue Op2, SDValue Op3); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT, + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT, SDValue Op1, SDValue Op2, SDValue Op3); - SDNode *getTargetNode(unsigned Opcode, MVT VT, const SDValue *Ops, unsigned NumOps); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT, + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT, const SDValue *Ops, unsigned NumOps); - SDNode *getTargetNode(unsigned Opcode, MVT VT1, MVT VT2); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, MVT VT2); - + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2); SDNode *getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, SDValue Op1); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, MVT VT2, - SDValue Op1); - + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, + MVT VT2, SDValue Op1); SDNode *getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, SDValue Op1, SDValue Op2); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, SDValue Op1, SDValue Op2); - SDNode *getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, SDValue Op1, SDValue Op2, SDValue Op3); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, SDValue Op1, SDValue Op2, SDValue Op3); - SDNode *getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, const SDValue *Ops, unsigned NumOps); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, MVT VT2, + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, const SDValue *Ops, unsigned NumOps); - SDNode *getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, MVT VT3, SDValue Op1, SDValue Op2); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, MVT VT2, MVT VT3, + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, + MVT VT1, MVT VT2, MVT VT3, SDValue Op1, SDValue Op2); - SDNode *getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, MVT VT3, SDValue Op1, SDValue Op2, SDValue Op3); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, MVT VT2, MVT VT3, + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, MVT VT3, SDValue Op1, SDValue Op2, SDValue Op3); - SDNode *getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, MVT VT3, const SDValue *Ops, unsigned NumOps); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, MVT VT2, MVT VT3, + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, MVT VT3, const SDValue *Ops, unsigned NumOps); - SDNode *getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, MVT VT3, MVT VT4, const SDValue *Ops, unsigned NumOps); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, MVT VT2, MVT VT3, - MVT VT4, const SDValue *Ops, unsigned NumOps); - + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, + MVT VT1, MVT VT2, MVT VT3, MVT VT4, + const SDValue *Ops, unsigned NumOps); SDNode *getTargetNode(unsigned Opcode, const std::vector &ResultTys, const SDValue *Ops, unsigned NumOps); - SDNode *getTargetNode(unsigned Opcode, DebugLoc dl, - const std::vector &ResultTys, const SDValue *Ops, - unsigned NumOps); + SDNode *getTargetNode(unsigned Opcode, DebugLoc DL, + const std::vector &ResultTys, + const SDValue *Ops, unsigned NumOps); /// getNodeIfExists - Get the specified node if it's already available, or /// else return NULL. diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index ab2c8323002..52351888625 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -4747,169 +4747,142 @@ SDNode *SelectionDAG::MorphNodeTo(SDNode *N, unsigned Opc, /// node of the specified opcode and operands, it returns that node instead of /// the current one. SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT) { - return getNode(~Opcode, VT).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT) { - return getNode(~Opcode, dl, VT).getNode(); +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT) { + return getNode(~Opcode, DL, VT).getNode(); } - SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT, SDValue Op1) { - return getNode(~Opcode, VT, Op1).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT, Op1); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT, - SDValue Op1) { - return getNode(~Opcode, dl, VT, Op1).getNode(); +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, + MVT VT, SDValue Op1) { + return getNode(~Opcode, DL, VT, Op1).getNode(); } - SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT, SDValue Op1, SDValue Op2) { - return getNode(~Opcode, VT, Op1, Op2).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT, Op1, Op2); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT, SDValue Op1, SDValue Op2) { - return getNode(~Opcode, dl, VT, Op1, Op2).getNode(); + return getNode(~Opcode, DL, VT, Op1, Op2).getNode(); } - SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT, - SDValue Op1, SDValue Op2, - SDValue Op3) { - return getNode(~Opcode, VT, Op1, Op2, Op3).getNode(); + SDValue Op1, SDValue Op2, SDValue Op3) { + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT, Op1, Op2, Op3); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT, - SDValue Op1, SDValue Op2, - SDValue Op3) { - return getNode(~Opcode, dl, VT, Op1, Op2, Op3).getNode(); +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT, + SDValue Op1, SDValue Op2, SDValue Op3) { + return getNode(~Opcode, DL, VT, Op1, Op2, Op3).getNode(); } - SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT, const SDValue *Ops, unsigned NumOps) { - return getNode(~Opcode, VT, Ops, NumOps).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT, Ops, NumOps); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT, const SDValue *Ops, unsigned NumOps) { - return getNode(~Opcode, dl, VT, Ops, NumOps).getNode(); + return getNode(~Opcode, DL, VT, Ops, NumOps).getNode(); } - -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT1, MVT VT2) { - const MVT *VTs = getNodeValueTypes(VT1, VT2); - SDValue Op; - return getNode(~Opcode, VTs, 2, &Op, 0).getNode(); +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, + MVT VT1, MVT VT2) { + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT1, VT2); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2) { const MVT *VTs = getNodeValueTypes(VT1, VT2); SDValue Op; - return getNode(~Opcode, dl, VTs, 2, &Op, 0).getNode(); + return getNode(~Opcode, DL, VTs, 2, &Op, 0).getNode(); } - SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, SDValue Op1) { - const MVT *VTs = getNodeValueTypes(VT1, VT2); - return getNode(~Opcode, VTs, 2, &Op1, 1).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT1, VT2, Op1); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, SDValue Op1) { const MVT *VTs = getNodeValueTypes(VT1, VT2); - return getNode(~Opcode, dl, VTs, 2, &Op1, 1).getNode(); + return getNode(~Opcode, DL, VTs, 2, &Op1, 1).getNode(); } - SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT1, - MVT VT2, SDValue Op1, - SDValue Op2) { - const MVT *VTs = getNodeValueTypes(VT1, VT2); - SDValue Ops[] = { Op1, Op2 }; - return getNode(~Opcode, VTs, 2, Ops, 2).getNode(); + MVT VT2, SDValue Op1, SDValue Op2) { + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT1, VT2, Op1, Op2); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, - MVT VT2, SDValue Op1, - SDValue Op2) { +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, + MVT VT2, SDValue Op1, SDValue Op2) { const MVT *VTs = getNodeValueTypes(VT1, VT2); SDValue Ops[] = { Op1, Op2 }; - return getNode(~Opcode, dl, VTs, 2, Ops, 2).getNode(); + return getNode(~Opcode, DL, VTs, 2, Ops, 2).getNode(); } - SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, SDValue Op1, SDValue Op2, SDValue Op3) { - const MVT *VTs = getNodeValueTypes(VT1, VT2); - SDValue Ops[] = { Op1, Op2, Op3 }; - return getNode(~Opcode, VTs, 2, Ops, 3).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT1, VT2, + Op1, Op2, Op3); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, SDValue Op1, SDValue Op2, SDValue Op3) { const MVT *VTs = getNodeValueTypes(VT1, VT2); SDValue Ops[] = { Op1, Op2, Op3 }; - return getNode(~Opcode, dl, VTs, 2, Ops, 3).getNode(); + return getNode(~Opcode, DL, VTs, 2, Ops, 3).getNode(); } - -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, + MVT VT1, MVT VT2, const SDValue *Ops, unsigned NumOps) { - const MVT *VTs = getNodeValueTypes(VT1, VT2); - return getNode(~Opcode, VTs, 2, Ops, NumOps).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT1, VT2, + Ops, NumOps); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, const SDValue *Ops, unsigned NumOps) { const MVT *VTs = getNodeValueTypes(VT1, VT2); - return getNode(~Opcode, dl, VTs, 2, Ops, NumOps).getNode(); + return getNode(~Opcode, DL, VTs, 2, Ops, NumOps).getNode(); } - -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, MVT VT3, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, + MVT VT1, MVT VT2, MVT VT3, SDValue Op1, SDValue Op2) { - const MVT *VTs = getNodeValueTypes(VT1, VT2, VT3); - SDValue Ops[] = { Op1, Op2 }; - return getNode(~Opcode, VTs, 3, Ops, 2).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT1, VT2, VT3, + Op1, Op2); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, MVT VT3, SDValue Op1, SDValue Op2) { const MVT *VTs = getNodeValueTypes(VT1, VT2, VT3); SDValue Ops[] = { Op1, Op2 }; - return getNode(~Opcode, dl, VTs, 3, Ops, 2).getNode(); + return getNode(~Opcode, DL, VTs, 3, Ops, 2).getNode(); } - -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, MVT VT3, - SDValue Op1, SDValue Op2, - SDValue Op3) { - const MVT *VTs = getNodeValueTypes(VT1, VT2, VT3); - SDValue Ops[] = { Op1, Op2, Op3 }; - return getNode(~Opcode, VTs, 3, Ops, 3).getNode(); +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, + MVT VT1, MVT VT2, MVT VT3, + SDValue Op1, SDValue Op2, SDValue Op3) { + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT1, VT2, VT3, + Op1, Op2, Op3); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, MVT VT3, - SDValue Op1, SDValue Op2, - SDValue Op3) { + SDValue Op1, SDValue Op2, SDValue Op3) { const MVT *VTs = getNodeValueTypes(VT1, VT2, VT3); SDValue Ops[] = { Op1, Op2, Op3 }; - return getNode(~Opcode, dl, VTs, 3, Ops, 3).getNode(); + return getNode(~Opcode, DL, VTs, 3, Ops, 3).getNode(); } - -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT1, MVT VT2, MVT VT3, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, + MVT VT1, MVT VT2, MVT VT3, const SDValue *Ops, unsigned NumOps) { - const MVT *VTs = getNodeValueTypes(VT1, VT2, VT3); - return getNode(~Opcode, VTs, 3, Ops, NumOps).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), VT1, VT2, VT3, + Ops, NumOps); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, MVT VT1, MVT VT2, MVT VT3, const SDValue *Ops, unsigned NumOps) { const MVT *VTs = getNodeValueTypes(VT1, VT2, VT3); - return getNode(~Opcode, VTs, 3, Ops, NumOps).getNode(); + return getNode(~Opcode, DL, VTs, 3, Ops, NumOps).getNode(); } - -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT VT1, - MVT VT2, MVT VT3, MVT VT4, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, + MVT VT1, MVT VT2, MVT VT3, MVT VT4, const SDValue *Ops, unsigned NumOps) { - std::vector VTList; - VTList.push_back(VT1); - VTList.push_back(VT2); - VTList.push_back(VT3); - VTList.push_back(VT4); - const MVT *VTs = getNodeValueTypes(VTList); - return getNode(~Opcode, VTs, 4, Ops, NumOps).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), + VT1, VT2, VT3, VT4, Ops, NumOps); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, - MVT VT2, MVT VT3, MVT VT4, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, + MVT VT1, MVT VT2, MVT VT3, MVT VT4, const SDValue *Ops, unsigned NumOps) { std::vector VTList; VTList.push_back(VT1); @@ -4917,21 +4890,19 @@ SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, MVT VT1, VTList.push_back(VT3); VTList.push_back(VT4); const MVT *VTs = getNodeValueTypes(VTList); - return getNode(~Opcode, dl, VTs, 4, Ops, NumOps).getNode(); + return getNode(~Opcode, DL, VTs, 4, Ops, NumOps).getNode(); } - SDNode *SelectionDAG::getTargetNode(unsigned Opcode, const std::vector &ResultTys, const SDValue *Ops, unsigned NumOps) { - const MVT *VTs = getNodeValueTypes(ResultTys); - return getNode(~Opcode, VTs, ResultTys.size(), - Ops, NumOps).getNode(); + return getTargetNode(Opcode, DebugLoc::getUnknownLoc(), + ResultTys, Ops, NumOps); } -SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc dl, +SDNode *SelectionDAG::getTargetNode(unsigned Opcode, DebugLoc DL, const std::vector &ResultTys, const SDValue *Ops, unsigned NumOps) { const MVT *VTs = getNodeValueTypes(ResultTys); - return getNode(~Opcode, dl, VTs, ResultTys.size(), + return getNode(~Opcode, DL, VTs, ResultTys.size(), Ops, NumOps).getNode(); } diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index d6bcce2703f..ace15e5180d 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -1059,6 +1059,9 @@ public: std::string Code = "Opc" + utostr(OpcNo); + if (!isRoot || (InputHasChain && !NodeHasChain)) + Code += ", N.getDebugLoc()"; + emitOpcode(II.Namespace + "::" + II.TheDef->getName()); // Output order: results, chain, flags -- 2.11.0