18#include "llvm/ExecutionEngine/ExecutionEngine.h"
19#include "llvm/ExecutionEngine/Orc/CompileUtils.h"
20#include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
21#include "llvm/ExecutionEngine/Orc/IRCompileLayer.h"
22#include "llvm/ExecutionEngine/Orc/LLJIT.h"
23#include "llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h"
24#include "llvm/ExecutionEngine/SectionMemoryManager.h"
25#include "llvm/IR/Module.h"
26#include "llvm/Support/ManagedStatic.h"
27#include "llvm/Support/TargetSelect.h"
36 llvm::ErrorAsOutParameter EAO(&Err);
38 auto JTMB = JITTargetMachineBuilder(TI.
getTriple());
40 if (
auto JitOrErr = LLJITBuilder().setJITTargetMachineBuilder(JTMB).create())
41 Jit = std::move(*JitOrErr);
43 Err = JitOrErr.takeError();
47 const char Pref = Jit->getDataLayout().getGlobalPrefix();
49 if (
auto PSGOrErr = DynamicLibrarySearchGenerator::GetForCurrentProcess(Pref))
50 Jit->getMainJITDylib().addGenerator(std::move(*PSGOrErr));
52 Err = PSGOrErr.takeError();
60 llvm::orc::ResourceTrackerSP RT =
61 Jit->getMainJITDylib().createResourceTracker();
62 ResourceTrackers[&PTU] = RT;
64 return Jit->addIRModule(RT, {std::move(PTU.
TheModule), TSCtx});
69 llvm::orc::ResourceTrackerSP RT = std::move(ResourceTrackers[&PTU]);
71 return llvm::Error::success();
73 ResourceTrackers.erase(&PTU);
74 if (llvm::Error Err = RT->remove())
76 return llvm::Error::success();
82 return Jit->deinitialize(Jit->getMainJITDylib());
86 return Jit->initialize(Jit->getMainJITDylib());
92 auto Sym = (NameKind ==
LinkerName) ? Jit->lookupLinkerMangled(Name)
96 return Sym.takeError();
97 return Sym->getValue();
Defines the clang::TargetOptions class.
llvm::Expected< llvm::JITTargetAddress > getSymbolAddress(llvm::StringRef Name, SymbolNameKind NameKind) const
llvm::Error runCtors() const
llvm::Error addModule(PartialTranslationUnit &PTU)
IncrementalExecutor(llvm::orc::ThreadSafeContext &TSC, llvm::Error &Err, const clang::TargetInfo &TI)
llvm::Error removeModule(PartialTranslationUnit &PTU)
Exposes information about the current target.
TargetOptions & getTargetOpts() const
Retrieve the target options.
const llvm::Triple & getTriple() const
Returns the target triple of the primary target.
std::vector< std::string > Features
The list of target specific features to enable or disable – this should be a list of strings starting...
Defines the clang::TargetInfo interface.
The class keeps track of various objects created as part of processing incremental inputs.
std::unique_ptr< llvm::Module > TheModule
The llvm IR produced for the input.