[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