mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Cleanup in preparation for misched: Move DAG visualization logic.
Soon, ScheduleDAG will not refer to the BB. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152177 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8ceaa660bf
commit
56b94c52c9
@ -519,6 +519,7 @@ namespace llvm {
|
|||||||
/// viewGraph - Pop up a GraphViz/gv window with the ScheduleDAG rendered
|
/// viewGraph - Pop up a GraphViz/gv window with the ScheduleDAG rendered
|
||||||
/// using 'dot'.
|
/// using 'dot'.
|
||||||
///
|
///
|
||||||
|
void viewGraph(const Twine &Name, const Twine &Title);
|
||||||
void viewGraph();
|
void viewGraph();
|
||||||
|
|
||||||
/// EmitSchedule - Insert MachineInstrs into the MachineBasicBlock
|
/// EmitSchedule - Insert MachineInstrs into the MachineBasicBlock
|
||||||
@ -534,6 +535,9 @@ namespace llvm {
|
|||||||
/// of the ScheduleDAG.
|
/// of the ScheduleDAG.
|
||||||
virtual std::string getGraphNodeLabel(const SUnit *SU) const = 0;
|
virtual std::string getGraphNodeLabel(const SUnit *SU) const = 0;
|
||||||
|
|
||||||
|
/// getDAGLabel - Return a label for the region of code covered by the DAG.
|
||||||
|
virtual std::string getDAGName() const = 0;
|
||||||
|
|
||||||
/// addCustomGraphFeatures - Add custom features for a visualization of
|
/// addCustomGraphFeatures - Add custom features for a visualization of
|
||||||
/// the ScheduleDAG.
|
/// the ScheduleDAG.
|
||||||
virtual void addCustomGraphFeatures(GraphWriter<ScheduleDAG*> &) const {}
|
virtual void addCustomGraphFeatures(GraphWriter<ScheduleDAG*> &) const {}
|
||||||
|
@ -808,6 +808,12 @@ std::string ScheduleDAGInstrs::getGraphNodeLabel(const SUnit *SU) const {
|
|||||||
return oss.str();
|
return oss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return the basic block label. It is not necessarilly unique because a block
|
||||||
|
/// contains multiple scheduling regions. But it is fine for visualization.
|
||||||
|
std::string ScheduleDAGInstrs::getDAGName() const {
|
||||||
|
return "dag." + BB->getFullName();
|
||||||
|
}
|
||||||
|
|
||||||
// EmitSchedule - Emit the machine code in scheduled order.
|
// EmitSchedule - Emit the machine code in scheduled order.
|
||||||
MachineBasicBlock *ScheduleDAGInstrs::EmitSchedule() {
|
MachineBasicBlock *ScheduleDAGInstrs::EmitSchedule() {
|
||||||
Begin = InsertPos;
|
Begin = InsertPos;
|
||||||
|
@ -285,6 +285,8 @@ namespace llvm {
|
|||||||
|
|
||||||
virtual std::string getGraphNodeLabel(const SUnit *SU) const;
|
virtual std::string getGraphNodeLabel(const SUnit *SU) const;
|
||||||
|
|
||||||
|
virtual std::string getDAGName() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SUnit *getSUnit(MachineInstr *MI) const {
|
SUnit *getSUnit(MachineInstr *MI) const {
|
||||||
DenseMap<MachineInstr*, SUnit*>::const_iterator I = MISUnitMap.find(MI);
|
DenseMap<MachineInstr*, SUnit*>::const_iterator I = MISUnitMap.find(MI);
|
||||||
|
@ -81,18 +81,17 @@ std::string DOTGraphTraits<ScheduleDAG*>::getNodeLabel(const SUnit *SU,
|
|||||||
/// viewGraph - Pop up a ghostview window with the reachable parts of the DAG
|
/// viewGraph - Pop up a ghostview window with the reachable parts of the DAG
|
||||||
/// rendered using 'dot'.
|
/// rendered using 'dot'.
|
||||||
///
|
///
|
||||||
void ScheduleDAG::viewGraph() {
|
void ScheduleDAG::viewGraph(const Twine &Name, const Twine &Title) {
|
||||||
// This code is only for debugging!
|
// This code is only for debugging!
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (BB->getBasicBlock())
|
ViewGraph(this, Name, false, Title);
|
||||||
ViewGraph(this, "dag." + MF.getFunction()->getName(), false,
|
|
||||||
"Scheduling-Units Graph for " + MF.getFunction()->getName() +
|
|
||||||
":" + BB->getBasicBlock()->getName());
|
|
||||||
else
|
|
||||||
ViewGraph(this, "dag." + MF.getFunction()->getName(), false,
|
|
||||||
"Scheduling-Units Graph for " + MF.getFunction()->getName());
|
|
||||||
#else
|
#else
|
||||||
errs() << "ScheduleDAG::viewGraph is only available in debug builds on "
|
errs() << "ScheduleDAG::viewGraph is only available in debug builds on "
|
||||||
<< "systems with Graphviz or gv!\n";
|
<< "systems with Graphviz or gv!\n";
|
||||||
#endif // NDEBUG
|
#endif // NDEBUG
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Out-of-line implementation with no arguments is handy for gdb.
|
||||||
|
void ScheduleDAG::viewGraph() {
|
||||||
|
viewGraph(getDAGName(), "Scheduling-Units Graph for " + getDAGName());
|
||||||
|
}
|
||||||
|
@ -800,3 +800,8 @@ MachineBasicBlock *ScheduleDAGSDNodes::EmitSchedule() {
|
|||||||
InsertPos = Emitter.getInsertPos();
|
InsertPos = Emitter.getInsertPos();
|
||||||
return BB;
|
return BB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return the basic block label.
|
||||||
|
std::string ScheduleDAGSDNodes::getDAGName() const {
|
||||||
|
return "sunit-dag." + BB->getFullName();
|
||||||
|
}
|
||||||
|
@ -115,6 +115,8 @@ namespace llvm {
|
|||||||
|
|
||||||
virtual std::string getGraphNodeLabel(const SUnit *SU) const;
|
virtual std::string getGraphNodeLabel(const SUnit *SU) const;
|
||||||
|
|
||||||
|
virtual std::string getDAGName() const;
|
||||||
|
|
||||||
virtual void getCustomGraphFeatures(GraphWriter<ScheduleDAG*> &GW) const;
|
virtual void getCustomGraphFeatures(GraphWriter<ScheduleDAG*> &GW) const;
|
||||||
|
|
||||||
/// RegDefIter - In place iteration over the values defined by an
|
/// RegDefIter - In place iteration over the values defined by an
|
||||||
|
Loading…
Reference in New Issue
Block a user