From 8b205306892ea701978a2b789f6eafe4277648a7 Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Wed, 16 Jul 2014 22:02:20 +0000 Subject: [PATCH] [MCJIT] Improve a RuntimeDyldChecker diagnostic. When a RuntimeDyldChecker test requests an invalid operand for an instruction, print the decoded instruction to aid diagnosis. llvm-svn: 213202 --- .../ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp index b10ec360aa51..1e63d9207f73 100644 --- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp @@ -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()), ""); }