summaryrefslogtreecommitdiffstats
path: root/clang/examples/clang-interpreter
diff options
context:
space:
mode:
Diffstat (limited to 'clang/examples/clang-interpreter')
-rw-r--r--clang/examples/clang-interpreter/CMakeLists.txt2
-rw-r--r--clang/examples/clang-interpreter/README.txt3
-rw-r--r--clang/examples/clang-interpreter/main.cpp6
3 files changed, 6 insertions, 5 deletions
diff --git a/clang/examples/clang-interpreter/CMakeLists.txt b/clang/examples/clang-interpreter/CMakeLists.txt
index 6d78408f855..d454539fdac 100644
--- a/clang/examples/clang-interpreter/CMakeLists.txt
+++ b/clang/examples/clang-interpreter/CMakeLists.txt
@@ -2,7 +2,9 @@ set(LLVM_LINK_COMPONENTS
Core
ExecutionEngine
Interpreter
+ JIT
Support
+ native
)
add_clang_executable(clang-interpreter
diff --git a/clang/examples/clang-interpreter/README.txt b/clang/examples/clang-interpreter/README.txt
index b81d3813a1d..7dd45fad504 100644
--- a/clang/examples/clang-interpreter/README.txt
+++ b/clang/examples/clang-interpreter/README.txt
@@ -10,8 +10,7 @@ It demonstrates the following features:
3. Invoking the Clang compiler to lex, parse, syntax check, and then generate
LLVM code.
- 4. Use the LLVM interpreter functionality to execute the final module, with
- guidance on how to extend the demo with JIT execution.
+ 4. Use the LLVM JIT functionality to execute the final module.
The implementation has many limitations and is not designed to be a full fledged
C interpreter. It is designed to demonstrate a simple but functional use of the
diff --git a/clang/examples/clang-interpreter/main.cpp b/clang/examples/clang-interpreter/main.cpp
index c255f51cee8..fb9d298f0ac 100644
--- a/clang/examples/clang-interpreter/main.cpp
+++ b/clang/examples/clang-interpreter/main.cpp
@@ -18,6 +18,7 @@
#include "clang/Frontend/TextDiagnosticPrinter.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ExecutionEngine/ExecutionEngine.h"
+#include "llvm/ExecutionEngine/JIT.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Host.h"
@@ -42,12 +43,11 @@ std::string GetExecutablePath(const char *Argv0) {
}
static int Execute(llvm::Module *Mod, char * const *envp) {
- // To JIT instead of interpreting, call llvm::InitializeNativeTarget() here
- // and pass ForceInterpreter=false to ExecutionEngine::create().
+ llvm::InitializeNativeTarget();
std::string Error;
std::unique_ptr<llvm::ExecutionEngine> EE(
- llvm::ExecutionEngine::create(Mod, /*ForceInterpreter*/ true, &Error));
+ llvm::ExecutionEngine::create(Mod, /*ForceInterpreter*/ false, &Error));
if (!EE) {
llvm::errs() << "unable to make execution engine: " << Error << "\n";
return 255;
OpenPOWER on IntegriCloud