Use Doug's new LLVM_NATIVE_ARCH macro in config.h to link in the native

target so that the JIT works in LLI, not just the interpreter.

llvm-svn: 73595
This commit is contained in:
Chris Lattner 2009-06-17 02:15:40 +00:00
parent 473789f75a
commit 90f1ab8c92

View File

@ -28,6 +28,7 @@
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/System/Process.h"
#include "llvm/System/Signals.h"
#include "llvm/Config/config.h"
#include <iostream>
#include <cerrno>
using namespace llvm;
@ -84,6 +85,16 @@ static void do_shutdown() {
llvm_shutdown();
}
#ifdef LLVM_NATIVE_ARCH
namespace llvm {
#define Declare2(TARG, MOD) void Initialize ## TARG ## MOD()
#define Declare(T, M) Declare2(T, M)
Declare(LLVM_NATIVE_ARCH, Target);
#undef Declare
#undef Declare2
}
#endif
//===----------------------------------------------------------------------===//
// main Driver function
//
@ -137,6 +148,16 @@ int main(int argc, char **argv, char * const *envp) {
case '2': OLvl = CodeGenOpt::Default; break;
case '3': OLvl = CodeGenOpt::Aggressive; break;
}
// If we have a native target, initialize it to ensure it is linked in.
#ifdef LLVM_NATIVE_ARCH
#define DoInit2(TARG, MOD) llvm::Initialize ## TARG ## MOD()
#define DoInit(T, M) DoInit2(T, M)
DoInit(LLVM_NATIVE_ARCH, Target);
#undef DoInit
#undef DoInit2
#endif
EE = ExecutionEngine::create(MP, ForceInterpreter, &ErrorMsg, OLvl);
if (!EE && !ErrorMsg.empty()) {