diff options
Diffstat (limited to 'include/llvm/ExecutionEngine/MCJIT.h')
| -rw-r--r-- | include/llvm/ExecutionEngine/MCJIT.h | 38 | 
1 files changed, 38 insertions, 0 deletions
diff --git a/include/llvm/ExecutionEngine/MCJIT.h b/include/llvm/ExecutionEngine/MCJIT.h new file mode 100644 index 000000000000..f956a5029b17 --- /dev/null +++ b/include/llvm/ExecutionEngine/MCJIT.h @@ -0,0 +1,38 @@ +//===-- MCJIT.h - MC-Based Just-In-Time Execution Engine --------*- C++ -*-===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file forces the MCJIT to link in on certain operating systems. +// (Windows). +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_EXECUTION_ENGINE_MCJIT_H +#define LLVM_EXECUTION_ENGINE_MCJIT_H + +#include "llvm/ExecutionEngine/ExecutionEngine.h" +#include <cstdlib> + +extern "C" void LLVMLinkInMCJIT(); + +namespace { +  struct ForceMCJITLinking { +    ForceMCJITLinking() { +      // We must reference the passes in such a way that compilers will not +      // delete it all as dead code, even with whole program optimization, +      // yet is effectively a NO-OP. As the compiler isn't smart enough +      // to know that getenv() never returns -1, this will do the job. +      if (std::getenv("bar") != (char*) -1) +        return; + +      LLVMLinkInMCJIT(); +    } +  } ForceMCJITLinking; +} + +#endif  | 
