diff --git a/include/llvm/ExecutionEngine/ExecutionEngine.h b/include/llvm/ExecutionEngine/ExecutionEngine.h index 1ee824177bb..327e9c6aa92 100644 --- a/include/llvm/ExecutionEngine/ExecutionEngine.h +++ b/include/llvm/ExecutionEngine/ExecutionEngine.h @@ -263,8 +263,9 @@ public: return LazyCompilationDisabled; } - /// DisableGVCompilation - If called, the JIT will abort if it's asked to allocate - /// space and populate a GlobalVariable. + /// DisableGVCompilation - If called, the JIT will abort if it's asked to + /// allocate space and populate a GlobalVariable that is not internal to + /// the module. void DisableGVCompilation(bool Disabled = true) { GVCompilationDisabled = Disabled; } diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp index 41b3ebcc6db..5d5ecc4fe77 100644 --- a/lib/ExecutionEngine/JIT/JIT.cpp +++ b/lib/ExecutionEngine/JIT/JIT.cpp @@ -553,8 +553,8 @@ void *JIT::getOrEmitGlobalVariable(const GlobalVariable *GV) { addGlobalMapping(GV, Ptr); } } else { - if (isGVCompilationDisabled()) { - cerr << "Compilation of GlobalVariable is disabled!\n"; + if (isGVCompilationDisabled() && !GV->hasInternalLinkage()) { + cerr << "Compilation of non-internal GlobalValue is disabled!\n"; abort(); } // If the global hasn't been emitted to memory yet, allocate space and