projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Reapply [FastISel][AArch64] Add support for more addressing modes (r215597).
[oota-llvm.git]
/
lib
/
ExecutionEngine
/
ExecutionEngine.cpp
diff --git
a/lib/ExecutionEngine/ExecutionEngine.cpp
b/lib/ExecutionEngine/ExecutionEngine.cpp
index ce20a02216f7eff7aa2f7b0c062ab3ec32a21fc9..f112e08b42b57882ede6fcf7c5ab365d2dcb59f7 100644
(file)
--- a/
lib/ExecutionEngine/ExecutionEngine.cpp
+++ b/
lib/ExecutionEngine/ExecutionEngine.cpp
@@
-24,6
+24,7
@@
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/ValueHandle.h"
+#include "llvm/Object/Archive.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/DynamicLibrary.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/DynamicLibrary.h"
@@
-48,20
+49,20
@@
void ObjectBuffer::anchor() {}
void ObjectBufferStream::anchor() {}
ExecutionEngine *(*ExecutionEngine::JITCtor)(
void ObjectBufferStream::anchor() {}
ExecutionEngine *(*ExecutionEngine::JITCtor)(
-
Module *
M,
+
std::unique_ptr<Module>
M,
std::string *ErrorStr,
JITMemoryManager *JMM,
bool GVsWithCode,
TargetMachine *TM) = nullptr;
ExecutionEngine *(*ExecutionEngine::MCJITCtor)(
std::string *ErrorStr,
JITMemoryManager *JMM,
bool GVsWithCode,
TargetMachine *TM) = nullptr;
ExecutionEngine *(*ExecutionEngine::MCJITCtor)(
-
Module *
M,
+
std::unique_ptr<Module >
M,
std::string *ErrorStr,
RTDyldMemoryManager *MCJMM,
TargetMachine *TM) = nullptr;
std::string *ErrorStr,
RTDyldMemoryManager *MCJMM,
TargetMachine *TM) = nullptr;
-ExecutionEngine *(*ExecutionEngine::InterpCtor)(
Module *
M,
+ExecutionEngine *(*ExecutionEngine::InterpCtor)(
std::unique_ptr<Module>
M,
std::string *ErrorStr) =nullptr;
std::string *ErrorStr) =nullptr;
-ExecutionEngine::ExecutionEngine(
Module *
M)
+ExecutionEngine::ExecutionEngine(
std::unique_ptr<Module>
M)
: EEState(*this),
LazyFunctionCreator(nullptr) {
CompilingLazily = false;
: EEState(*this),
LazyFunctionCreator(nullptr) {
CompilingLazily = false;
@@
-76,14
+77,12
@@
ExecutionEngine::ExecutionEngine(Module *M)
VerifyModules = false;
#endif
VerifyModules = false;
#endif
- Modules.push_back(M);
assert(M && "Module is null?");
assert(M && "Module is null?");
+ Modules.push_back(std::move(M));
}
ExecutionEngine::~ExecutionEngine() {
clearAllGlobalMappings();
}
ExecutionEngine::~ExecutionEngine() {
clearAllGlobalMappings();
- for (unsigned i = 0, e = Modules.size(); i != e; ++i)
- delete Modules[i];
}
namespace {
}
namespace {
@@
-125,11
+124,15
@@
void ExecutionEngine::addObjectFile(std::unique_ptr<object::ObjectFile> O) {
llvm_unreachable("ExecutionEngine subclass doesn't implement addObjectFile.");
}
llvm_unreachable("ExecutionEngine subclass doesn't implement addObjectFile.");
}
+void ExecutionEngine::addArchive(object::OwningBinary<object::Archive> A) {
+ llvm_unreachable("ExecutionEngine subclass doesn't implement addArchive.");
+}
+
bool ExecutionEngine::removeModule(Module *M) {
bool ExecutionEngine::removeModule(Module *M) {
- for(SmallVectorImpl<Module *>::iterator I = Modules.begin(),
- E = Modules.end(); I != E; ++I) {
- Module *Found = *I;
+ for (auto I = Modules.begin(), E = Modules.end(); I != E; ++I) {
+ Module *Found = I->get();
if (Found == M) {
if (Found == M) {
+ I->release();
Modules.erase(I);
clearGlobalMappingsFromModule(M);
return true;
Modules.erase(I);
clearGlobalMappingsFromModule(M);
return true;
@@
-302,10
+305,10
@@
void *ArgvArray::reset(LLVMContext &C, ExecutionEngine *EE,
return Array;
}
return Array;
}
-void ExecutionEngine::runStaticConstructorsDestructors(Module
*
module,
+void ExecutionEngine::runStaticConstructorsDestructors(Module
&
module,
bool isDtors) {
const char *Name = isDtors ? "llvm.global_dtors" : "llvm.global_ctors";
bool isDtors) {
const char *Name = isDtors ? "llvm.global_dtors" : "llvm.global_ctors";
- GlobalVariable *GV = module
->
getNamedGlobal(Name);
+ GlobalVariable *GV = module
.
getNamedGlobal(Name);
// If this global has internal linkage, or if it has a use, then it must be
// an old-style (llvmgcc3) static ctor with __main linked in and in use. If
// If this global has internal linkage, or if it has a use, then it must be
// an old-style (llvmgcc3) static ctor with __main linked in and in use. If
@@
-343,8
+346,8
@@
void ExecutionEngine::runStaticConstructorsDestructors(Module *module,
void ExecutionEngine::runStaticConstructorsDestructors(bool isDtors) {
// Execute global ctors/dtors for each module in the program.
void ExecutionEngine::runStaticConstructorsDestructors(bool isDtors) {
// Execute global ctors/dtors for each module in the program.
- for (
unsigned i = 0, e = Modules.size(); i != e; ++i
)
- runStaticConstructorsDestructors(
Modules[i]
, isDtors);
+ for (
std::unique_ptr<Module> &M : Modules
)
+ runStaticConstructorsDestructors(
*M
, isDtors);
}
#ifndef NDEBUG
}
#ifndef NDEBUG
@@
-469,10
+472,10
@@
ExecutionEngine *EngineBuilder::create(TargetMachine *TM) {
ExecutionEngine *EE = nullptr;
if (UseMCJIT && ExecutionEngine::MCJITCtor)
ExecutionEngine *EE = nullptr;
if (UseMCJIT && ExecutionEngine::MCJITCtor)
- EE = ExecutionEngine::MCJITCtor(
M, ErrorStr, MCJMM ? MCJMM : JMM
,
- TheTM.release());
+ EE = ExecutionEngine::MCJITCtor(
std::move(M), ErrorStr
,
+
MCJMM ? MCJMM : JMM,
TheTM.release());
else if (ExecutionEngine::JITCtor)
else if (ExecutionEngine::JITCtor)
- EE = ExecutionEngine::JITCtor(
M
, ErrorStr, JMM,
+ EE = ExecutionEngine::JITCtor(
std::move(M)
, ErrorStr, JMM,
AllocateGVsWithCode, TheTM.release());
if (EE) {
AllocateGVsWithCode, TheTM.release());
if (EE) {
@@
-485,7
+488,7
@@
ExecutionEngine *EngineBuilder::create(TargetMachine *TM) {
// an interpreter instead.
if (WhichEngine & EngineKind::Interpreter) {
if (ExecutionEngine::InterpCtor)
// an interpreter instead.
if (WhichEngine & EngineKind::Interpreter) {
if (ExecutionEngine::InterpCtor)
- return ExecutionEngine::InterpCtor(
M
, ErrorStr);
+ return ExecutionEngine::InterpCtor(
std::move(M)
, ErrorStr);
if (ErrorStr)
*ErrorStr = "Interpreter has not been linked in.";
return nullptr;
if (ErrorStr)
*ErrorStr = "Interpreter has not been linked in.";
return nullptr;