[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