mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-02 01:38:34 +00:00
Implement printing of instruction result values when debug info is turned
on. This helps to speed up the debugging time by showing computational results as the program executes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37095 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
93003b8cf2
commit
951418b7e9
@ -1338,6 +1338,20 @@ void Interpreter::callFunction(Function *F,
|
||||
StackFrame.VarArgs.assign(ArgVals.begin()+i, ArgVals.end());
|
||||
}
|
||||
|
||||
static void PrintGenericValue(const GenericValue &Val, const Type* Ty) {
|
||||
switch (Ty->getTypeID()) {
|
||||
default: assert(0 && "Invalid GenericValue Type");
|
||||
case Type::VoidTyID: DOUT << "void"; break;
|
||||
case Type::FloatTyID: DOUT << "float " << Val.FloatVal; break;
|
||||
case Type::DoubleTyID: DOUT << "double " << Val.DoubleVal; break;
|
||||
case Type::PointerTyID: DOUT << "void* " << unsigned(Val.PointerVal); break;
|
||||
case Type::IntegerTyID:
|
||||
DOUT << "i" << Val.IntVal.getBitWidth() << " " << Val.IntVal.toString(10)
|
||||
<< "\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Interpreter::run() {
|
||||
while (!ECStack.empty()) {
|
||||
// Interpret a single instruction & increment the "PC".
|
||||
@ -1349,5 +1363,12 @@ void Interpreter::run() {
|
||||
|
||||
DOUT << "About to interpret: " << I;
|
||||
visit(I); // Dispatch to one of the visit* methods...
|
||||
#ifndef NDEBUG
|
||||
if (!isa<CallInst>(I) && !isa<InvokeInst>(I) &&
|
||||
I.getType() != Type::VoidTy) {
|
||||
DOUT << " --> ";
|
||||
PrintGenericValue(SF.Values[&I], I.getType());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user