mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Move the stuff that fixes the size, orientation & fonts of graphs to
the debugging functions that call "dot". These fixed settings have various problems: for example, the fixed size that is set in the graph traits classes is not appropriate for turning the dot file into a PNG, and if TrueType font rendering is being used, the 'Courier' TrueType font may not be installed. It seems easy enough to specify these things on the command line, anyhow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13366 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -33,11 +33,10 @@ struct DefaultDOTGraphTraits {
|
|||||||
static std::string getGraphName(const void *Graph) { return ""; }
|
static std::string getGraphName(const void *Graph) { return ""; }
|
||||||
|
|
||||||
/// getGraphProperties - Return any custom properties that should be included
|
/// getGraphProperties - Return any custom properties that should be included
|
||||||
/// in the top level graph structure for dot. By default, we resize the graph
|
/// in the top level graph structure for dot.
|
||||||
/// to fit on a letter size page.
|
|
||||||
///
|
///
|
||||||
static std::string getGraphProperties(const void *Graph) {
|
static std::string getGraphProperties(const void *Graph) {
|
||||||
return "\tsize=\"7.5,10\";\n"; // Size to fit on a page
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getNodeLabel - Given a node and a pointer to the top level graph, return
|
/// getNodeLabel - Given a node and a pointer to the top level graph, return
|
||||||
|
@@ -33,11 +33,10 @@ struct DefaultDOTGraphTraits {
|
|||||||
static std::string getGraphName(const void *Graph) { return ""; }
|
static std::string getGraphName(const void *Graph) { return ""; }
|
||||||
|
|
||||||
/// getGraphProperties - Return any custom properties that should be included
|
/// getGraphProperties - Return any custom properties that should be included
|
||||||
/// in the top level graph structure for dot. By default, we resize the graph
|
/// in the top level graph structure for dot.
|
||||||
/// to fit on a letter size page.
|
|
||||||
///
|
///
|
||||||
static std::string getGraphProperties(const void *Graph) {
|
static std::string getGraphProperties(const void *Graph) {
|
||||||
return "\tsize=\"7.5,10\";\n"; // Size to fit on a page
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getNodeLabel - Given a node and a pointer to the top level graph, return
|
/// getNodeLabel - Given a node and a pointer to the top level graph, return
|
||||||
|
@@ -75,10 +75,6 @@ struct DOTGraphTraits<const Function*> : public DefaultDOTGraphTraits {
|
|||||||
return OutStr;
|
return OutStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string getNodeAttributes(const BasicBlock *N) {
|
|
||||||
return "fontname=Courier";
|
|
||||||
}
|
|
||||||
|
|
||||||
static std::string getEdgeSourceLabel(const BasicBlock *Node,
|
static std::string getEdgeSourceLabel(const BasicBlock *Node,
|
||||||
succ_const_iterator I) {
|
succ_const_iterator I) {
|
||||||
// Label source of conditional branches with "T" or "F"
|
// Label source of conditional branches with "T" or "F"
|
||||||
@@ -155,7 +151,8 @@ void Function::viewCFG() const {
|
|||||||
std::cerr << "\n";
|
std::cerr << "\n";
|
||||||
|
|
||||||
std::cerr << "Running 'dot' program... " << std::flush;
|
std::cerr << "Running 'dot' program... " << std::flush;
|
||||||
if (system(("dot -Tps " + Filename + " > /tmp/cfg.tempgraph.ps").c_str())) {
|
if (system(("dot -Tps -Nfontname=Courier -Gsize=7.5,10 " + Filename
|
||||||
|
+ " > /tmp/cfg.tempgraph.ps").c_str())) {
|
||||||
std::cerr << "Error running dot: 'dot' not in path?\n";
|
std::cerr << "Error running dot: 'dot' not in path?\n";
|
||||||
} else {
|
} else {
|
||||||
std::cerr << "\n";
|
std::cerr << "\n";
|
||||||
|
@@ -93,17 +93,12 @@ struct DOTGraphTraits<const DSGraph*> : public DefaultDOTGraphTraits {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *getGraphProperties(const DSGraph *G) {
|
|
||||||
return "\tsize=\"10,7.5\";\n"
|
|
||||||
"\trotate=\"90\";\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
static std::string getNodeLabel(const DSNode *Node, const DSGraph *Graph) {
|
static std::string getNodeLabel(const DSNode *Node, const DSGraph *Graph) {
|
||||||
return getCaption(Node, Graph);
|
return getCaption(Node, Graph);
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string getNodeAttributes(const DSNode *N) {
|
static std::string getNodeAttributes(const DSNode *N) {
|
||||||
return "shape=Mrecord";//fontname=Courier";
|
return "shape=Mrecord";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// addCustomGraphFeatures - Use this graph writing hook to emit call nodes
|
/// addCustomGraphFeatures - Use this graph writing hook to emit call nodes
|
||||||
@@ -234,7 +229,7 @@ void DSGraph::viewGraph() const {
|
|||||||
}
|
}
|
||||||
print(F);
|
print(F);
|
||||||
F.close();
|
F.close();
|
||||||
if (system("dot -Tps /tmp/tempgraph.dot > /tmp/tempgraph.ps"))
|
if (system("dot -Tps -Gsize=10,7.5 -Grotate=90 /tmp/tempgraph.dot > /tmp/tempgraph.ps"))
|
||||||
std::cerr << "Error running dot: 'dot' not in path?\n";
|
std::cerr << "Error running dot: 'dot' not in path?\n";
|
||||||
system("gv /tmp/tempgraph.ps");
|
system("gv /tmp/tempgraph.ps");
|
||||||
system("rm /tmp/tempgraph.dot /tmp/tempgraph.ps");
|
system("rm /tmp/tempgraph.dot /tmp/tempgraph.ps");
|
||||||
|
Reference in New Issue
Block a user