mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-11 00:39:36 +00:00
Add more debug output to MachineTraceMetrics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160905 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0271a5fa29
commit
08f6ef6a78
@ -590,6 +590,7 @@ void EarlyIfConverter::invalidateTraces() {
|
||||
Traces->invalidate(IfConv.Tail);
|
||||
Traces->invalidate(IfConv.TBB);
|
||||
Traces->invalidate(IfConv.FBB);
|
||||
DEBUG(if (MinInstr) MinInstr->print(dbgs()));
|
||||
}
|
||||
|
||||
/// Apply cost model and heuristics to the if-conversion in IfConv.
|
||||
@ -598,7 +599,10 @@ void EarlyIfConverter::invalidateTraces() {
|
||||
bool EarlyIfConverter::shouldConvertIf() {
|
||||
if (!MinInstr)
|
||||
MinInstr = Traces->getEnsemble(MachineTraceMetrics::TS_MinInstrCount);
|
||||
DEBUG(dbgs() << MinInstr->getTrace(IfConv.Head));
|
||||
DEBUG({
|
||||
dbgs() << MinInstr->getTrace(IfConv.Head);
|
||||
MinInstr->print(dbgs());
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -211,7 +211,7 @@ getHeightResources(const MachineBasicBlock *MBB) const {
|
||||
// instructions.
|
||||
namespace {
|
||||
class MinInstrCountEnsemble : public MachineTraceMetrics::Ensemble {
|
||||
const char *getName() { return "MinInstr"; }
|
||||
const char *getName() const { return "MinInstr"; }
|
||||
const MachineBasicBlock *pickTracePred(const MachineBasicBlock*);
|
||||
const MachineBasicBlock *pickTraceSucc(const MachineBasicBlock*);
|
||||
|
||||
@ -458,6 +458,37 @@ MachineTraceMetrics::Ensemble::getTrace(const MachineBasicBlock *MBB) {
|
||||
return Trace(*this, BlockInfo[MBB->getNumber()]);
|
||||
}
|
||||
|
||||
void MachineTraceMetrics::Ensemble::print(raw_ostream &OS) const {
|
||||
OS << getName() << " ensemble:\n";
|
||||
for (unsigned i = 0, e = BlockInfo.size(); i != e; ++i) {
|
||||
OS << " BB#" << i << '\t';
|
||||
BlockInfo[i].print(OS);
|
||||
OS << '\n';
|
||||
}
|
||||
}
|
||||
|
||||
void MachineTraceMetrics::TraceBlockInfo::print(raw_ostream &OS) const {
|
||||
if (hasValidDepth()) {
|
||||
OS << "depth=" << InstrDepth;
|
||||
if (Pred)
|
||||
OS << " pred=BB#" << Pred->getNumber();
|
||||
else
|
||||
OS << " pred=null";
|
||||
OS << " head=BB#" << Head;
|
||||
} else
|
||||
OS << "depth invalid";
|
||||
OS << ", ";
|
||||
if (hasValidHeight()) {
|
||||
OS << "height=" << InstrHeight;
|
||||
if (Succ)
|
||||
OS << " succ=BB#" << Succ->getNumber();
|
||||
else
|
||||
OS << " succ=null";
|
||||
OS << " tail=BB#" << Tail;
|
||||
} else
|
||||
OS << "height invalid";
|
||||
}
|
||||
|
||||
void MachineTraceMetrics::Trace::print(raw_ostream &OS) const {
|
||||
unsigned MBBNum = &TBI - &TE.BlockInfo[0];
|
||||
|
||||
|
@ -105,9 +105,11 @@ public:
|
||||
/// block in a trace ensemble.
|
||||
struct TraceBlockInfo {
|
||||
/// Trace predecessor, or NULL for the first block in the trace.
|
||||
/// Valid when hasValidDepth().
|
||||
const MachineBasicBlock *Pred;
|
||||
|
||||
/// Trace successor, or NULL for the last block in the trace.
|
||||
/// Valid when hasValidHeight().
|
||||
const MachineBasicBlock *Succ;
|
||||
|
||||
/// The block number of the head of the trace. (When hasValidDepth()).
|
||||
@ -139,6 +141,8 @@ public:
|
||||
|
||||
/// Invalidate height resources when a block below this one has changed.
|
||||
void invalidateHeight() { InstrHeight = ~0u; }
|
||||
|
||||
void print(raw_ostream&) const;
|
||||
};
|
||||
|
||||
/// A trace represents a plausible sequence of executed basic blocks that
|
||||
@ -180,7 +184,8 @@ public:
|
||||
|
||||
public:
|
||||
virtual ~Ensemble();
|
||||
virtual const char *getName() =0;
|
||||
virtual const char *getName() const =0;
|
||||
void print(raw_ostream&) const;
|
||||
void invalidate(const MachineBasicBlock *MBB);
|
||||
|
||||
/// Get the trace that passes through MBB.
|
||||
@ -219,6 +224,11 @@ inline raw_ostream &operator<<(raw_ostream &OS,
|
||||
return OS;
|
||||
}
|
||||
|
||||
inline raw_ostream &operator<<(raw_ostream &OS,
|
||||
const MachineTraceMetrics::Ensemble &En) {
|
||||
En.print(OS);
|
||||
return OS;
|
||||
}
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user