[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Reid Spencer
rspencer at reidspencer.com
Fri Aug 25 23:18:37 PDT 2006
Evan,
Something in this patch or the subsequent ones has broken all builds.
Can you fix before the nightly testers all die?
Reid.
On Sat, 2006-08-26 at 00:30 -0500, Evan Cheng wrote:
>
> Changes in directory llvm/utils/TableGen:
>
> DAGISelEmitter.cpp updated: 1.248 -> 1.249
> ---
> Log message:
>
> Select() no longer require Result operand by reference.
>
> ---
> Diffs of the changes: (+18 -44)
>
> DAGISelEmitter.cpp | 62 +++++++++++++++--------------------------------------
> 1 files changed, 18 insertions(+), 44 deletions(-)
>
>
> Index: llvm/utils/TableGen/DAGISelEmitter.cpp
> diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.248 llvm/utils/TableGen/DAGISelEmitter.cpp:1.249
> --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.248 Fri Aug 25 20:34:15 2006
> +++ llvm/utils/TableGen/DAGISelEmitter.cpp Sat Aug 26 00:29:57 2006
> @@ -2517,7 +2517,6 @@
> emitCode("AddToISelQueue(" + Val + ");");
> if (isRoot && N->isLeaf()) {
> emitCode("ReplaceUses(N, " + Val + ");");
> - emitCode("Result = " + Val + ";");
> emitCode("return NULL;");
> }
> }
> @@ -2768,43 +2767,26 @@
>
> // User does not expect the instruction would produce a chain!
> if ((!InputHasChain && NodeHasChain) && NodeHasOutFlag) {
> - if (PatResults == 0) {
> - emitCode("Result = SDOperand(ResNode, N.ResNo+1);");
> - } else {
> - assert(PatResults == 1);
> - emitCode("Result = (N.ResNo == 0) ? SDOperand(ResNode, 0) :"
> - " SDOperand(ResNode, 1);");
> - }
> + ;
> } else if (InputHasChain && !NodeHasChain) {
> // One of the inner node produces a chain.
> - if (NodeHasOutFlag) {
> - emitCode("Result = (N.ResNo < " + utostr(PatResults) +
> - ") ? SDOperand(ResNode, N.ResNo) : " +
> - "(N.ResNo > " + utostr(PatResults) + ") ? " +
> - "SDOperand(ResNode, N.ResNo-1) : " + ChainName + "));");
> + if (NodeHasOutFlag)
> emitCode("ReplaceUses(SDOperand(N.Val, " + utostr(PatResults+1) +
> "), SDOperand(ResNode, N.ResNo-1));");
> - } else {
> - emitCode("Result = (N.ResNo < " + utostr(PatResults) +
> - ") ? SDOperand(ResNode, N.ResNo) : " +
> - ChainName + ";");
> - }
> for (unsigned i = 0; i < PatResults; ++i)
> emitCode("ReplaceUses(SDOperand(N.Val, " + utostr(i) +
> "), SDOperand(ResNode, " + utostr(i) + "));");
> emitCode("ReplaceUses(SDOperand(N.Val, " + utostr(PatResults) +
> "), " + ChainName + ");");
> RetSelected = false;
> - } else {
> - emitCode("Result = SDOperand(ResNode, N.ResNo);");
> }
>
> if (RetSelected)
> - emitCode("return Result.Val;");
> + emitCode("return ResNode;");
> else
> emitCode("return NULL;");
> } else {
> - std::string Code = "Result = CurDAG->SelectNodeTo(N.Val, Opc" +
> + std::string Code = "return CurDAG->SelectNodeTo(N.Val, Opc" +
> utostr(OpcNo);
> if (N->getTypeNum(0) != MVT::isVoid)
> Code += ", VT" + utostr(VTNo);
> @@ -2814,8 +2796,7 @@
> Code += ", " + AllOps[i];
> if (NodeHasInFlag || HasImpInputs)
> Code += ", InFlag";
> - emitCode(Code + ");");
> - emitCode("return Result.Val;");
> + emitCode(Code + ").Val;");
> emitOpcode(II.Namespace + "::" + II.TheDef->getName());
> if (N->getTypeNum(0) != MVT::isVoid)
> emitVT(getEnumName(N->getTypeNum(0)));
> @@ -2833,10 +2814,8 @@
> emitCode("SDOperand Tmp" + utostr(ResNo) + " = Transform_" + Op->getName()
> + "(" + Ops.back() + ".Val);");
> NodeOps.push_back("Tmp" + utostr(ResNo));
> - if (isRoot) {
> - emitCode("Result = Tmp" + utostr(ResNo) + ";");
> - emitCode("return Result.Val;");
> - }
> + if (isRoot)
> + emitCode("return Tmp" + utostr(ResNo) + ".Val;");
> return NodeOps;
> } else {
> N->dump();
> @@ -3328,8 +3307,8 @@
> AddedInits.push_back(GeneratedCode[j].second);
> }
>
> - std::string CalleeCode = "(SDOperand &Result, const SDOperand &N";
> - std::string CallerCode = "(Result, N";
> + std::string CalleeCode = "(const SDOperand &N";
> + std::string CallerCode = "(N";
> for (unsigned j = 0, e = TargetOpcodes.size(); j != e; ++j) {
> CalleeCode += ", unsigned Opc" + utostr(j);
> CallerCode += ", " + TargetOpcodes[j];
> @@ -3392,7 +3371,7 @@
> OpVTI->second.push_back(OpVTStr);
>
> OS << "SDNode *Select_" << OpName << (OpVTStr != "" ? "_" : "")
> - << OpVTStr << "(SDOperand &Result, const SDOperand &N) {\n";
> + << OpVTStr << "(const SDOperand &N) {\n";
>
> // Loop through and reverse all of the CodeList vectors, as we will be
> // accessing them from their logical front, but accessing the end of a
> @@ -3431,7 +3410,7 @@
> }
>
> // Emit boilerplate.
> - OS << "SDNode *Select_INLINEASM(SDOperand& Result, SDOperand N) {\n"
> + OS << "SDNode *Select_INLINEASM(SDOperand N) {\n"
> << " std::vector<SDOperand> Ops(N.Val->op_begin(), N.Val->op_end());\n"
> << " AddToISelQueue(N.getOperand(0)); // Select the chain.\n\n"
> << " // Select the flag operand.\n"
> @@ -3443,16 +3422,14 @@
> << " VTs.push_back(MVT::Flag);\n"
> << " SDOperand New = CurDAG->getNode(ISD::INLINEASM, VTs, &Ops[0], "
> "Ops.size());\n"
> - << " Result = New.getValue(N.ResNo);\n"
> - << " return Result.Val;\n"
> + << " return New.Val;\n"
> << "}\n\n";
>
> OS << "// The main instruction selector code.\n"
> - << "SDNode *SelectCode(SDOperand &Result, SDOperand N) {\n"
> + << "SDNode *SelectCode(SDOperand N) {\n"
> << " if (N.getOpcode() >= ISD::BUILTIN_OP_END &&\n"
> << " N.getOpcode() < (ISD::BUILTIN_OP_END+" << InstNS
> << "INSTRUCTION_LIST_END)) {\n"
> - << " Result = N;\n"
> << " return NULL; // Already selected.\n"
> << " }\n\n"
> << " switch (N.getOpcode()) {\n"
> @@ -3466,7 +3443,6 @@
> << " case ISD::TargetFrameIndex:\n"
> << " case ISD::TargetJumpTable:\n"
> << " case ISD::TargetGlobalAddress: {\n"
> - << " Result = N;\n"
> << " return NULL;\n"
> << " }\n"
> << " case ISD::AssertSext:\n"
> @@ -3480,10 +3456,9 @@
> << " case ISD::CopyToReg: {\n"
> << " for (unsigned i = 0, e = N.getNumOperands(); i != e; ++i)\n"
> << " AddToISelQueue(N.getOperand(i));\n"
> - << " Result = N;\n"
> << " return NULL;\n"
> << " }\n"
> - << " case ISD::INLINEASM: return Select_INLINEASM(Result, N);\n";
> + << " case ISD::INLINEASM: return Select_INLINEASM(N);\n";
>
>
> // Loop over all of the case statements, emiting a call to each method we
> @@ -3503,7 +3478,7 @@
> if (OpVTs.size() == 1) {
> std::string &VTStr = OpVTs[0];
> OS << " return Select_" << OpName
> - << (VTStr != "" ? "_" : "") << VTStr << "(Result, N);\n";
> + << (VTStr != "" ? "_" : "") << VTStr << "(N);\n";
> } else {
> if (OpcodeInfo.getNumResults())
> OS << " MVT::ValueType NVT = N.Val->getValueType(0);\n";
> @@ -3523,11 +3498,11 @@
> }
> OS << " case MVT::" << VTStr << ":\n"
> << " return Select_" << OpName
> - << "_" << VTStr << "(Result, N);\n";
> + << "_" << VTStr << "(N);\n";
> }
> OS << " default:\n";
> if (Default != -1)
> - OS << " return Select_" << OpName << "(Result, N);\n";
> + OS << " return Select_" << OpName << "(N);\n";
> else
> OS << " break;\n";
> OS << " }\n";
> @@ -3647,12 +3622,11 @@
> << " HandleSDNode Dummy(CurDAG->getRoot());\n"
> << " ISelQueue.push_back(CurDAG->getRoot().Val);\n";
> OS << " while (!ISelQueue.empty()) {\n";
> - OS << " SDOperand Tmp;\n";
> OS << " SDNode *Node = ISelQueue.front();\n";
> OS << " std::pop_heap(ISelQueue.begin(), ISelQueue.end(), isel_sort());\n";
> OS << " ISelQueue.pop_back();\n";
> OS << " if (!isSelected(Node->getNodeId())) {\n";
> - OS << " SDNode *ResNode = Select(Tmp, SDOperand(Node, 0));\n";
> + OS << " SDNode *ResNode = Select(SDOperand(Node, 0));\n";
> OS << " if (ResNode && ResNode != Node) ReplaceUses(Node, ResNode);\n";
> OS << " }\n";
> OS << " }\n";
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list