diff options
Diffstat (limited to 'llvm/lib/ExecutionEngine/Interpreter/Execution.cpp')
| -rw-r--r-- | llvm/lib/ExecutionEngine/Interpreter/Execution.cpp | 32 | 
1 files changed, 17 insertions, 15 deletions
diff --git a/llvm/lib/ExecutionEngine/Interpreter/Execution.cpp b/llvm/lib/ExecutionEngine/Interpreter/Execution.cpp index 53df544..95e2143 100644 --- a/llvm/lib/ExecutionEngine/Interpreter/Execution.cpp +++ b/llvm/lib/ExecutionEngine/Interpreter/Execution.cpp @@ -1338,20 +1338,6 @@ 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* " << intptr_t(Val.PointerVal); break; -    case Type::IntegerTyID:  -      DOUT << "i" << Val.IntVal.getBitWidth() << " " -           << Val.IntVal.toStringUnsigned(10) -           << " (0x" << Val.IntVal.toStringUnsigned(16) << ")\n"; -      break; -  } -}  void Interpreter::run() {    while (!ECStack.empty()) { @@ -1364,12 +1350,28 @@ void Interpreter::run() {      DOUT << "About to interpret: " << I;      visit(I);   // Dispatch to one of the visit* methods... +#if 0 +    // This is not safe, as visiting the instruction could lower it and free I.  #ifndef NDEBUG      if (!isa<CallInst>(I) && !isa<InvokeInst>(I) &&           I.getType() != Type::VoidTy) {        DOUT << "  --> "; -      PrintGenericValue(SF.Values[&I], I.getType()); +      const GenericValue &Val = SF.Values[&I]; +      switch (I.getType()->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* " << intptr_t(Val.PointerVal); +        break; +      case Type::IntegerTyID:  +        DOUT << "i" << Val.IntVal.getBitWidth() << " " +        << Val.IntVal.toStringUnsigned(10) +        << " (0x" << Val.IntVal.toStringUnsigned(16) << ")\n"; +        break; +      }      }  #endif +#endif    }  }  | 
