aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2008-07-17 21:12:16 +0000
committerDan Gohman <gohman@apple.com>2008-07-17 21:12:16 +0000
commitdc5f936bf898a945b7b5a823d00ef9b336f2dc6a (patch)
treebc369bb079b17db0cab0ae67c8a82c1bf2aa6b21
parentf7d3ecf0912b8ce083536f4df5677b540ee9592b (diff)
When printing MemOperand nodes, only use print() for
PseudoSourceValue values, which never have names. Use getName() for all other values, because we want to print just a short summary of the value, not the entire instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53738 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
index cdfdf6f9a2..a9b07afc90 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
@@ -19,6 +19,7 @@
#include "llvm/CodeGen/MachineConstantPool.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
+#include "llvm/CodeGen/PseudoSourceValue.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Support/GraphWriter.h"
@@ -155,13 +156,19 @@ std::string DOTGraphTraits<SelectionDAG*>::getNodeLabel(const SDNode *Node,
else
Op += "<null>";
} else if (const MemOperandSDNode *M = dyn_cast<MemOperandSDNode>(Node)) {
- if (M->MO.getValue()) {
+ const Value *V = M->MO.getValue();
+ Op += '<';
+ if (!V) {
+ Op += "(unknown)";
+ } else if (const PseudoSourceValue *PSV = dyn_cast<PseudoSourceValue>(V)) {
+ // PseudoSourceValues don't have names, so use their print method.
std::ostringstream SS;
M->MO.getValue()->print(SS);
- Op += "<" + SS.str() + "+" + itostr(M->MO.getOffset()) + ">";
+ Op += SS.str();
} else {
- Op += "<(unknown)+" + itostr(M->MO.getOffset()) + ">";
+ Op += V->getName();
}
+ Op += '+' + itostr(M->MO.getOffset()) + '>';
} else if (const ARG_FLAGSSDNode *N = dyn_cast<ARG_FLAGSSDNode>(Node)) {
Op = Op + " AF=" + N->getArgFlags().getArgFlagsString();
} else if (const VTSDNode *N = dyn_cast<VTSDNode>(Node)) {