[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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213202 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp

index b10ec360aa516a30adccd61ef29d1f8e6d713e0f..1e63d9207f73fbc6854e830f0c2e3538c0c99d22 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()), "");
       }