Added debugging support.

llvm-svn: 605
This commit is contained in:
Vikram S. Adve 2001-09-18 12:44:41 +00:00
parent 0d4a68f8aa
commit df6bbeb59c
1 changed files with 38 additions and 0 deletions

View File

@ -83,6 +83,44 @@ User *Value::use_remove(use_iterator &I) {
return i;
}
void
Value::dump() const
{
DebugValue(*this);
}
ostream&
operator<<(ostream &o, const Value& I)
{
switch (I.getValueType()) {
case Value::TypeVal: return o << I.castTypeAsserting();
case Value::ConstantVal: WriteToAssembly((const ConstPoolVal*)&I,o);break;
case Value::MethodArgumentVal: return o << I.getType() << " "<< I.getName();
case Value::InstructionVal:WriteToAssembly((const Instruction *)&I, o);break;
case Value::BasicBlockVal: WriteToAssembly((const BasicBlock *)&I, o);break;
case Value::MethodVal: WriteToAssembly((const Method *)&I, o);break;
case Value::GlobalVal: WriteToAssembly((const GlobalVariable*)&I,o);break;
case Value::ModuleVal: WriteToAssembly((const Module *)&I,o); break;
default: return o << "<unknown value type: " << I.getValueType() << ">";
}
return o;
}
void
DebugValue(const Value* V)
{
if (V)
cerr << *V << endl;
else
cerr << "<NULL value>" << endl;
}
void
DebugValue(const Value& V)
{
cerr << V << endl;
}
//===----------------------------------------------------------------------===//
// User Class