[MCJIT] Improve a RuntimeDyldChecker diagnostic.
authorLang Hames <lhames@gmail.com>
Wed, 16 Jul 2014 22:02:20 +0000 (22:02 +0000)
committerLang Hames <lhames@gmail.com>
Wed, 16 Jul 2014 22:02:20 +0000 (22:02 +0000)
When a RuntimeDyldChecker test requests an invalid operand for an instruction,
print the decoded instruction to aid diagnosis.

llvm-svn: 213202

llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp

index b10ec36..1e63d92 100644 (file)
@@ -233,9 +233,13 @@ namespace llvm {
         std::string ErrMsg;
         raw_string_ostream ErrMsgStream(ErrMsg);
         ErrMsgStream << "Invalid operand index '" << format("%i", OpIdx)
-                     << " for instruction '" << Symbol
-                     << ". Instruction has only "
-                     << format("%i", Inst.getNumOperands()) << " operands.";
+                     << "' for instruction '" << Symbol
+                     << "'. Instruction has only "
+                     << format("%i", Inst.getNumOperands())
+                     << " operands.\nInstruction is:\n  ";
+        Inst.dump_pretty(ErrMsgStream,
+                         Checker.Disassembler->getContext().getAsmInfo(),
+                         Checker.InstPrinter);
         return std::make_pair(EvalResult(ErrMsgStream.str()), "");
       }