mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-19 01:48:34 +00:00
Halfway conversion from custom printing to GraphWriter printing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4146 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2576aef32b
commit
f6c52db371
@ -6,9 +6,11 @@
|
||||
|
||||
#include "llvm/Analysis/DataStructure.h"
|
||||
#include "llvm/Analysis/DSGraph.h"
|
||||
#include "llvm/Analysis/DSGraphTraits.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Assembly/Writer.h"
|
||||
#include "Support/CommandLine.h"
|
||||
#include "Support/GraphWriter.h"
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
using std::string;
|
||||
@ -165,6 +167,36 @@ void DSGraph::print(std::ostream &O) const {
|
||||
O << "}\n";
|
||||
}
|
||||
|
||||
template<>
|
||||
struct DOTGraphTraits<DSGraph*> : public DefaultDOTGraphTraits {
|
||||
static std::string getGraphName(DSGraph *G) {
|
||||
if (G->hasFunction())
|
||||
return "Function " + G->getFunction().getName();
|
||||
else
|
||||
return "Non-function graph";
|
||||
}
|
||||
|
||||
static const char *getGraphProperties(DSGraph *G) {
|
||||
return "\tnode [shape=Mrecord];\n"
|
||||
"\tedge [arrowtail=\"dot\"];\n"
|
||||
"\tsize=\"10,7.5\";\n"
|
||||
"\trotate=\"90\";\n";
|
||||
}
|
||||
|
||||
static std::string getNodeLabel(DSNode *Node, DSGraph *Graph) {
|
||||
return getCaption(Node, Graph);
|
||||
}
|
||||
|
||||
static std::string getNodeAttributes(DSNode *N) {
|
||||
return "";//fontname=Courier";
|
||||
}
|
||||
|
||||
//static int getEdgeSourceLabel(DSNode *Node, node_iterator I) {
|
||||
// return MergeMap[i];
|
||||
// }
|
||||
};
|
||||
|
||||
|
||||
|
||||
void DSGraph::writeGraphToFile(std::ostream &O, const string &GraphName) {
|
||||
string Filename = GraphName + ".dot";
|
||||
@ -172,6 +204,7 @@ void DSGraph::writeGraphToFile(std::ostream &O, const string &GraphName) {
|
||||
std::ofstream F(Filename.c_str());
|
||||
|
||||
if (F.good()) {
|
||||
WriteGraph(F, this);
|
||||
print(F);
|
||||
O << " [" << getGraphSize() << "+" << getFunctionCalls().size() << "]\n";
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user