Give MachineMemOperand an operator<<, factoring out code from

two different places for printing MachineMemOperands.

Drop the virtual from Value::dump and instead give Value a
protected virtual hook that can be overridden by subclasses
to implement custom printing. This lets printing be more
consistent, and simplifies printing of PseudoSourceValue
values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82599 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman
2009-09-23 01:33:16 +00:00
parent 00133a7d52
commit cd26ec5f3c
7 changed files with 74 additions and 47 deletions

View File

@@ -1198,6 +1198,11 @@ static void WriteAsOperandInternal(raw_ostream &Out, const Value *V,
return;
}
if (V->getValueID() == Value::PseudoSourceValueVal) {
V->print(Out);
return;
}
char Prefix = '%';
int Slot;
if (Machine) {
@@ -2076,10 +2081,17 @@ void Value::print(raw_ostream &ROS, AssemblyAnnotationWriter *AAW) const {
} else if (isa<InlineAsm>(this)) {
WriteAsOperand(OS, this, true, 0);
} else {
llvm_unreachable("Unknown value to print out!");
// Otherwise we don't know what it is. Call the virtual function to
// allow a subclass to print itself.
printCustom(OS);
}
}
// Value::printCustom - subclasses should override this to implement printing.
void Value::printCustom(raw_ostream &OS) const {
llvm_unreachable("Unknown value to print out!");
}
// Value::dump - allow easy printing of Values from the debugger.
void Value::dump() const { print(errs()); errs() << '\n'; }