[llvm-commits] [llvm] r63736 - in /llvm/trunk: include/llvm/CodeGen/SelectionDAGNodes.h lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Evan Cheng evan.cheng at apple.com
Wed Feb 4 11:17:09 PST 2009


This looks like it's longer than 80 col. :-)

+static void DumpNodesr(raw_ostream &OS, const SDNode *N, unsigned  
indent, const SelectionDAG *G, VisitedSDNodeSet &once) {

Evan

On Feb 4, 2009, at 8:46 AM, Stuart Hastings wrote:

> Author: stuart
> Date: Wed Feb  4 10:46:19 2009
> New Revision: 63736
>
> URL: http://llvm.org/viewvc/llvm-project?rev=63736&view=rev
> Log:
> Since I'm obliged to work with a development OS that currently doesn't
> support GraphViz, I've been using the foo->dump() facility.  This
> patch is a minor rewrite to the SelectionDAG dump() stuff to make it a
> little more helpful.  The existing foo->dump() functionality does not
> change; this patch adds foo->dumpr().  All of this is only useful when
> running LLVM under a debugger.
>
> Modified:
>    llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h
>    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
>
> Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h?rev=63736&r1=63735&r2=63736&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Wed Feb  4  
> 10:46:19 2009
> @@ -1329,8 +1329,12 @@
>   ///
>   std::string getOperationName(const SelectionDAG *G = 0) const;
>   static const char* getIndexedModeName(ISD::MemIndexedMode AM);
> +  void print_types(raw_ostream &OS, const SelectionDAG *G) const;
> +  void print_details(raw_ostream &OS, const SelectionDAG *G) const;
>   void print(raw_ostream &OS, const SelectionDAG *G = 0) const;
> +  void printr(raw_ostream &OS, const SelectionDAG *G = 0) const;
>   void dump() const;
> +  void dumpr() const;
>   void dump(const SelectionDAG *G) const;
>
>   static bool classof(const SDNode *) { return true; }
>
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=63736&r1=63735&r2=63736&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Wed Feb  4  
> 10:46:19 2009
> @@ -5638,7 +5638,7 @@
>   errs().flush();
> }
>
> -void SDNode::print(raw_ostream &OS, const SelectionDAG *G) const {
> +void SDNode::print_types(raw_ostream &OS, const SelectionDAG *G)  
> const {
>   OS << (void*)this << ": ";
>
>   for (unsigned i = 0, e = getNumValues(); i != e; ++i) {
> @@ -5649,15 +5649,9 @@
>       OS << getValueType(i).getMVTString();
>   }
>   OS << " = " << getOperationName(G);
> +}
>
> -  OS << " ";
> -  for (unsigned i = 0, e = getNumOperands(); i != e; ++i) {
> -    if (i) OS << ", ";
> -    OS << (void*)getOperand(i).getNode();
> -    if (unsigned RN = getOperand(i).getResNo())
> -      OS << ":" << RN;
> -  }
> -
> +void SDNode::print_details(raw_ostream &OS, const SelectionDAG *G)  
> const {
>   if (!isTargetOpcode() && getOpcode() == ISD::VECTOR_SHUFFLE) {
>     SDNode *Mask = getOperand(2).getNode();
>     OS << "<";
> @@ -5798,6 +5792,18 @@
>   }
> }
>
> +void SDNode::print(raw_ostream &OS, const SelectionDAG *G) const {
> +  print_types(OS, G);
> +  OS << " ";
> +  for (unsigned i = 0, e = getNumOperands(); i != e; ++i) {
> +    if (i) OS << ", ";
> +    OS << (void*)getOperand(i).getNode();
> +    if (unsigned RN = getOperand(i).getResNo())
> +      OS << ":" << RN;
> +  }
> +  print_details(OS, G);
> +}
> +
> static void DumpNodes(const SDNode *N, unsigned indent, const  
> SelectionDAG *G) {
>   for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i)
>     if (N->getOperand(i).getNode()->hasOneUse())
> @@ -5826,6 +5832,47 @@
>   cerr << "\n\n";
> }
>
> +void SDNode::printr(raw_ostream &OS, const SelectionDAG *G) const {
> +  print_types(OS, G);
> +  print_details(OS, G);
> +}
> +
> +typedef SmallPtrSet<const SDNode *, 128> VisitedSDNodeSet;
> +static void DumpNodesr(raw_ostream &OS, const SDNode *N, unsigned  
> indent, const SelectionDAG *G, VisitedSDNodeSet &once) {
> +  if (!once.insert(N))	// If we've been here before, return now.
> +    return;
> +  // Dump the current SDNode, but don't end the line yet.
> +  OS << std::string(indent, ' ');
> +  N->printr(OS, G);
> +  // Having printed this SDNode, walk the children:
> +  for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) {
> +    const SDNode *child = N->getOperand(i).getNode();
> +    if (i) OS << ",";
> +    OS << " ";
> +    if (child->getNumOperands() == 0) {
> +      // This child has no grandchildren; print it inline right here.
> +      child->printr(OS, G);
> +      once.insert(child);
> +    } else {	// Just the address.  FIXME: also print the child's  
> opcode
> +      OS << (void*)child;
> +      if (unsigned RN = N->getOperand(i).getResNo())
> +	OS << ":" << RN;
> +    }
> +  }
> +  OS << "\n";
> +  // Dump children that have grandchildren on their own line(s).
> +  for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) {
> +    const SDNode *child = N->getOperand(i).getNode();
> +    DumpNodesr(OS, child, indent+2, G, once);
> +  }
> +}
> +
> +void SDNode::dumpr() const {
> +  VisitedSDNodeSet once;
> +  DumpNodesr(errs(), this, 0, 0, once);
> +  errs().flush();
> +}
> +
> const Type *ConstantPoolSDNode::getType() const {
>   if (isMachineConstantPoolEntry())
>     return Val.MachineCPVal->getType();
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20090204/83fb6121/attachment.html>


More information about the llvm-commits mailing list