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