#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static bool lRunTest(const char *fn) { llvm::LLVMContext *ctx = new llvm::LLVMContext; llvm::OwningPtr buf; llvm::MemoryBuffer::getFileOrSTDIN(fn, buf); std::string bcErr; llvm::Module *module = llvm::ParseBitcodeFile(buf.get(), *ctx, &bcErr); if (!module) { fprintf(stderr, "Bitcode reader failed for \"%s\": %s\n", fn, bcErr.c_str()); delete ctx; return false; } std::string eeError; llvm::EngineBuilder engineBuilder(module); engineBuilder.setErrorStr(&eeError); engineBuilder.setEngineKind(llvm::EngineKind::JIT); engineBuilder.setUseMCJIT(true); llvm::ExecutionEngine *ee = engineBuilder.create(); if (!ee) { fprintf(stderr, "Unable to create ExecutionEngine: %s\n", eeError.c_str()); return false; } return true; } int main(int argc, char *argv[]) { llvm::InitializeNativeTarget(); llvm::InitializeAllTargetMCs(); LLVMLinkInMCJIT(); LLVMLinkInJIT(); lRunTest(argv[1]); return 0; }