[llvm-commits] [PATCH] Dump with LI Indices
David Greene
dag at cray.com
Wed Aug 5 14:32:33 PDT 2009
On Wednesday 05 August 2009 15:23, Chris Lattner wrote:
> Yes. It is better because live-intervals specific code is specific to
> live intervals. The code to loop over the mbbs and instructions in an
> mbb is only a few lines.
Uh, no it isn't:
void MachineBasicBlock::print(raw_ostream &OS,
const PrefixPrinter &prefix) const {
const MachineFunction *MF = getParent();
if(!MF) {
OS << "Can't print out MachineBasicBlock because parent MachineFunction"
<< " is null\n";
return;
}
const BasicBlock *LBB = getBasicBlock();
OS << "\n";
if (LBB) OS << LBB->getName() << ": ";
OS << (const void*)this
<< ", LLVM BB @" << (const void*) LBB << ", ID#" << getNumber();
if (Alignment) OS << ", Alignment " << Alignment;
if (isLandingPad()) OS << ", EH LANDING PAD";
OS << ":\n";
const TargetRegisterInfo *TRI = MF->getTarget().getRegisterInfo();
if (!livein_empty()) {
OS << "Live Ins:";
for (const_livein_iterator I = livein_begin(),E = livein_end(); I != E;
++I)
OutputReg(OS, *I, TRI);
OS << "\n";
}
// Print the preds of this block according to the CFG.
if (!pred_empty()) {
OS << " Predecessors according to CFG:";
for (const_pred_iterator PI = pred_begin(), E = pred_end(); PI != E; ++PI)
OS << " " << *PI << " (#" << (*PI)->getNumber() << ")";
OS << "\n";
}
for (const_iterator I = begin(); I != end(); ++I) {
prefix(OS, *I) << "\t";
I->print(OS, &getParent()->getTarget());
}
// Print the successors of this block according to the CFG.
if (!succ_empty()) {
OS << " Successors according to CFG:";
for (const_succ_iterator SI = succ_begin(), E = succ_end(); SI != E; ++SI)
OS << " " << *SI << " (#" << (*SI)->getNumber() << ")";
OS << "\n";
}
}
You really want all this duplicated?
-Dave
More information about the llvm-commits
mailing list