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@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits