#include "llvm/Analysis/DSGraph.h"
#include "llvm/Analysis/DSGraphTraits.h"
#include "llvm/Module.h"
+#include "llvm/Constants.h"
#include "llvm/Assembly/Writer.h"
#include "Support/CommandLine.h"
#include "Support/GraphWriter.h"
M = G->getReturnNodes().begin()->first->getParent();
if (N->isNodeCompletelyFolded())
- OS << "FOLDED";
+ OS << "COLLAPSED";
else {
WriteTypeSymbolic(OS, N->getType(), M);
if (N->isArray())
struct DOTGraphTraits<const DSGraph*> : public DefaultDOTGraphTraits {
static std::string getGraphName(const DSGraph *G) {
switch (G->getReturnNodes().size()) {
- case 0: return "Global graph";
- case 1: return "Function " + G->getReturnNodes().begin()->first->getName();
- default:
- std::string Return = "Functions: ";
- for (DSGraph::ReturnNodesTy::const_iterator I=G->getReturnNodes().begin();
- I != G->getReturnNodes().end(); ++I)
- Return += I->first->getName() + " ";
- return Return;
+ case 0: return G->getFunctionNames();
+ case 1: return "Function " + G->getFunctionNames();
+ default: return "Functions: " + G->getFunctionNames();
}
}
// Add scalar nodes to the graph...
const DSGraph::ScalarMapTy &VM = G->getScalarMap();
for (DSGraph::ScalarMapTy::const_iterator I = VM.begin(); I != VM.end();++I)
- if (!isa<GlobalValue>(I->first)) {
+ if (!isa<GlobalValue>(I->first) && !isa<ConstantPointerRef>(I->first)) {
std::stringstream OS;
WriteAsOperand(OS, I->first, false, true, CurMod);
GW.emitSimpleNode(I->first, "", OS.str());