mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
Twinify GraphWriter a little bit.
llvm-svn: 144647
This commit is contained in:
parent
7b29a27e02
commit
3eeef2e739
@ -18,6 +18,7 @@
|
||||
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/ADT/IntEqClasses.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
#include "llvm/CodeGen/MachineFunctionPass.h"
|
||||
|
||||
namespace llvm {
|
||||
@ -61,7 +62,7 @@ private:
|
||||
/// Specialize WriteGraph, the standard implementation won't work.
|
||||
raw_ostream &WriteGraph(raw_ostream &O, const EdgeBundles &G,
|
||||
bool ShortNames = false,
|
||||
const std::string &Title = "");
|
||||
const Twine &Title = "");
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
|
@ -296,26 +296,26 @@ public:
|
||||
template<typename GraphType>
|
||||
raw_ostream &WriteGraph(raw_ostream &O, const GraphType &G,
|
||||
bool ShortNames = false,
|
||||
const std::string &Title = "") {
|
||||
const Twine &Title = "") {
|
||||
// Start the graph emission process...
|
||||
GraphWriter<GraphType> W(O, G, ShortNames);
|
||||
|
||||
// Emit the graph.
|
||||
W.writeGraph(Title);
|
||||
W.writeGraph(Title.str());
|
||||
|
||||
return O;
|
||||
}
|
||||
|
||||
template<typename GraphType>
|
||||
sys::Path WriteGraph(const GraphType &G, const std::string &Name,
|
||||
bool ShortNames = false, const std::string &Title = "") {
|
||||
sys::Path WriteGraph(const GraphType &G, const Twine &Name,
|
||||
bool ShortNames = false, const Twine &Title = "") {
|
||||
std::string ErrMsg;
|
||||
sys::Path Filename = sys::Path::GetTemporaryDirectory(&ErrMsg);
|
||||
if (Filename.isEmpty()) {
|
||||
errs() << "Error: " << ErrMsg << "\n";
|
||||
return Filename;
|
||||
}
|
||||
Filename.appendComponent(Name + ".dot");
|
||||
Filename.appendComponent((Name + ".dot").str());
|
||||
if (Filename.makeUnique(true,&ErrMsg)) {
|
||||
errs() << "Error: " << ErrMsg << "\n";
|
||||
return sys::Path();
|
||||
@ -341,8 +341,8 @@ sys::Path WriteGraph(const GraphType &G, const std::string &Name,
|
||||
/// then cleanup. For use from the debugger.
|
||||
///
|
||||
template<typename GraphType>
|
||||
void ViewGraph(const GraphType &G, const std::string &Name,
|
||||
bool ShortNames = false, const std::string &Title = "",
|
||||
void ViewGraph(const GraphType &G, const Twine &Name,
|
||||
bool ShortNames = false, const Twine &Title = "",
|
||||
GraphProgram::Name Program = GraphProgram::DOT) {
|
||||
sys::Path Filename = llvm::WriteGraph(G, Name, ShortNames, Title);
|
||||
|
||||
|
@ -143,7 +143,7 @@ INITIALIZE_PASS(CFGOnlyPrinter, "dot-cfg-only",
|
||||
/// being a 'dot' and 'gv' program in your path.
|
||||
///
|
||||
void Function::viewCFG() const {
|
||||
ViewGraph(this, "cfg" + getNameStr());
|
||||
ViewGraph(this, "cfg" + getName());
|
||||
}
|
||||
|
||||
/// viewCFGOnly - This function is meant for use from the debugger. It works
|
||||
@ -152,7 +152,7 @@ void Function::viewCFG() const {
|
||||
/// his can make the graph smaller.
|
||||
///
|
||||
void Function::viewCFGOnly() const {
|
||||
ViewGraph(this, "cfg" + getNameStr(), true);
|
||||
ViewGraph(this, "cfg" + getName(), true);
|
||||
}
|
||||
|
||||
FunctionPass *llvm::createCFGPrinterPass () {
|
||||
|
@ -77,7 +77,7 @@ void EdgeBundles::view() const {
|
||||
/// Specialize WriteGraph, the standard implementation won't work.
|
||||
raw_ostream &llvm::WriteGraph(raw_ostream &O, const EdgeBundles &G,
|
||||
bool ShortNames,
|
||||
const std::string &Title) {
|
||||
const Twine &Title) {
|
||||
const MachineFunction *MF = G.getMachineFunction();
|
||||
|
||||
O << "digraph {\n";
|
||||
|
@ -368,7 +368,7 @@ namespace llvm {
|
||||
void MachineFunction::viewCFG() const
|
||||
{
|
||||
#ifndef NDEBUG
|
||||
ViewGraph(this, "mf" + getFunction()->getNameStr());
|
||||
ViewGraph(this, "mf" + getFunction()->getName());
|
||||
#else
|
||||
errs() << "MachineFunction::viewCFG is only available in debug builds on "
|
||||
<< "systems with Graphviz or gv!\n";
|
||||
@ -378,7 +378,7 @@ void MachineFunction::viewCFG() const
|
||||
void MachineFunction::viewCFGOnly() const
|
||||
{
|
||||
#ifndef NDEBUG
|
||||
ViewGraph(this, "mf" + getFunction()->getNameStr(), true);
|
||||
ViewGraph(this, "mf" + getFunction()->getName(), true);
|
||||
#else
|
||||
errs() << "MachineFunction::viewCFGOnly is only available in debug builds on "
|
||||
<< "systems with Graphviz or gv!\n";
|
||||
|
@ -86,12 +86,12 @@ void ScheduleDAG::viewGraph() {
|
||||
// This code is only for debugging!
|
||||
#ifndef NDEBUG
|
||||
if (BB->getBasicBlock())
|
||||
ViewGraph(this, "dag." + MF.getFunction()->getNameStr(), false,
|
||||
"Scheduling-Units Graph for " + MF.getFunction()->getNameStr() +
|
||||
":" + BB->getBasicBlock()->getNameStr());
|
||||
ViewGraph(this, "dag." + MF.getFunction()->getName(), false,
|
||||
"Scheduling-Units Graph for " + MF.getFunction()->getName() +
|
||||
":" + BB->getBasicBlock()->getName());
|
||||
else
|
||||
ViewGraph(this, "dag." + MF.getFunction()->getNameStr(), false,
|
||||
"Scheduling-Units Graph for " + MF.getFunction()->getNameStr());
|
||||
ViewGraph(this, "dag." + MF.getFunction()->getName(), false,
|
||||
"Scheduling-Units Graph for " + MF.getFunction()->getName());
|
||||
#else
|
||||
errs() << "ScheduleDAG::viewGraph is only available in debug builds on "
|
||||
<< "systems with Graphviz or gv!\n";
|
||||
|
@ -147,7 +147,7 @@ std::string DOTGraphTraits<SelectionDAG*>::getNodeLabel(const SDNode *Node,
|
||||
void SelectionDAG::viewGraph(const std::string &Title) {
|
||||
// This code is only for debugging!
|
||||
#ifndef NDEBUG
|
||||
ViewGraph(this, "dag." + getMachineFunction().getFunction()->getNameStr(),
|
||||
ViewGraph(this, "dag." + getMachineFunction().getFunction()->getName(),
|
||||
false, Title);
|
||||
#else
|
||||
errs() << "SelectionDAG::viewGraph is only available in debug builds on "
|
||||
|
Loading…
Reference in New Issue
Block a user