summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYaron Keren <yaron.keren@gmail.com>2014-06-04 17:35:28 +0000
committerYaron Keren <yaron.keren@gmail.com>2014-06-04 17:35:28 +0000
commitc45bee91b8e5770501ab8a55f9c7069038b560f5 (patch)
tree275d7f4424c229e550b352389feab289e83d7841 /lib
parent024b693ca7313c963b73b4b8e5c51954794b5415 (diff)
downloadllvm-c45bee91b8e5770501ab8a55f9c7069038b560f5.tar.gz
llvm-c45bee91b8e5770501ab8a55f9c7069038b560f5.tar.bz2
llvm-c45bee91b8e5770501ab8a55f9c7069038b560f5.tar.xz
Two small enhancements for the JIT.
When JITting a large project such as Boost it's quite hard to figure out the problematic inline asm without debug location. This patch provides debug location printout before the JIT aborts due to inline asm. printDebugLoc() was exposed from MachineInstr.cpp and reused here. If the JIT run with debug info, don't bomb on DBG_VALUE but ignore them. http://reviews.llvm.org/D3416 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210201 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/X86/X86CodeEmitter.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/Target/X86/X86CodeEmitter.cpp b/lib/Target/X86/X86CodeEmitter.cpp
index 76718d0b68..b275a9cc3e 100644
--- a/lib/Target/X86/X86CodeEmitter.cpp
+++ b/lib/Target/X86/X86CodeEmitter.cpp
@@ -1113,9 +1113,14 @@ void Emitter<CodeEmitter>::emitInstruction(MachineInstr &MI,
case TargetOpcode::INLINEASM:
// We allow inline assembler nodes with empty bodies - they can
// implicitly define registers, which is ok for JIT.
- if (MI.getOperand(0).getSymbolName()[0])
+ if (MI.getOperand(0).getSymbolName()[0]) {
+ DebugLoc DL = MI.getDebugLoc();
+ DL.print(MI.getParent()->getParent()->getFunction()->getContext(),
+ llvm::errs());
report_fatal_error("JIT does not support inline asm!");
+ }
break;
+ case TargetOpcode::DBG_VALUE:
case TargetOpcode::CFI_INSTRUCTION:
break;
case TargetOpcode::GC_LABEL: