projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Re-committing r76828 with the JIT memory manager changes now that the build
[oota-llvm.git]
/
tools
/
lli
/
lli.cpp
diff --git
a/tools/lli/lli.cpp
b/tools/lli/lli.cpp
index 40b858e9d1a63758875eed944ed52ab1f8855918..f9d86d75b1a70a3f67a65bde62ddcb8abb934ceb 100644
(file)
--- a/
tools/lli/lli.cpp
+++ b/
tools/lli/lli.cpp
@@
-94,8
+94,13
@@
int main(int argc, char **argv, char * const *envp) {
sys::PrintStackTraceOnErrorSignal();
PrettyStackTraceProgram X(argc, argv);
sys::PrintStackTraceOnErrorSignal();
PrettyStackTraceProgram X(argc, argv);
- LLVMContext
Context
;
+ LLVMContext
&Context = getGlobalContext()
;
atexit(do_shutdown); // Call llvm_shutdown() on exit.
atexit(do_shutdown); // Call llvm_shutdown() on exit.
+
+ // If we have a native target, initialize it to ensure it is linked in and
+ // usable by the JIT.
+ InitializeNativeTarget();
+
cl::ParseCommandLineOptions(argc, argv,
"llvm interpreter & dynamic compiler\n");
cl::ParseCommandLineOptions(argc, argv,
"llvm interpreter & dynamic compiler\n");
@@
-112,8
+117,8
@@
int main(int argc, char **argv, char * const *envp) {
}
if (!MP) {
}
if (!MP) {
-
std::cerr
<< argv[0] << ": error loading program '" << InputFile << "': "
-
<< ErrorMsg << "\n";
+
errs()
<< argv[0] << ": error loading program '" << InputFile << "': "
+ << ErrorMsg << "\n";
exit(1);
}
exit(1);
}
@@
-121,11
+126,17
@@
int main(int argc, char **argv, char * const *envp) {
Module *Mod = NoLazyCompilation
? MP->materializeModule(&ErrorMsg) : MP->getModule();
if (!Mod) {
Module *Mod = NoLazyCompilation
? MP->materializeModule(&ErrorMsg) : MP->getModule();
if (!Mod) {
-
std::cerr
<< argv[0] << ": bitcode didn't read correctly.\n";
-
std::cerr
<< "Reason: " << ErrorMsg << "\n";
+
errs()
<< argv[0] << ": bitcode didn't read correctly.\n";
+
errs()
<< "Reason: " << ErrorMsg << "\n";
exit(1);
}
exit(1);
}
+ EngineBuilder builder(MP);
+ builder.setErrorStr(&ErrorMsg);
+ builder.setEngineKind(ForceInterpreter
+ ? EngineKind::Interpreter
+ : EngineKind::JIT);
+
// If we are supposed to override the target triple, do so now.
if (!TargetTriple.empty())
Mod->setTargetTriple(TargetTriple);
// If we are supposed to override the target triple, do so now.
if (!TargetTriple.empty())
Mod->setTargetTriple(TargetTriple);
@@
-133,7
+144,7
@@
int main(int argc, char **argv, char * const *envp) {
CodeGenOpt::Level OLvl = CodeGenOpt::Default;
switch (OptLevel) {
default:
CodeGenOpt::Level OLvl = CodeGenOpt::Default;
switch (OptLevel) {
default:
-
std::cerr
<< argv[0] << ": invalid optimization level.\n";
+
errs()
<< argv[0] << ": invalid optimization level.\n";
return 1;
case ' ': break;
case '0': OLvl = CodeGenOpt::None; break;
return 1;
case ' ': break;
case '0': OLvl = CodeGenOpt::None; break;
@@
-141,21
+152,19
@@
int main(int argc, char **argv, char * const *envp) {
case '2': OLvl = CodeGenOpt::Default; break;
case '3': OLvl = CodeGenOpt::Aggressive; break;
}
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 and
- // usable by the JIT.
- InitializeNativeTarget();
+ builder.setOptLevel(OLvl);
- EE =
ExecutionEngine::create(MP, ForceInterpreter, &ErrorMsg, OLvl
);
+ EE =
builder.create(
);
if (!EE) {
if (!ErrorMsg.empty())
if (!EE) {
if (!ErrorMsg.empty())
-
std::cerr
<< argv[0] << ": error creating EE: " << ErrorMsg << "\n";
+
errs()
<< argv[0] << ": error creating EE: " << ErrorMsg << "\n";
else
else
-
std::cerr
<< argv[0] << ": unknown error creating EE!\n";
+
errs()
<< argv[0] << ": unknown error creating EE!\n";
exit(1);
}
EE->RegisterJITEventListener(createMacOSJITEventListener());
exit(1);
}
EE->RegisterJITEventListener(createMacOSJITEventListener());
+ EE->RegisterJITEventListener(createOProfileJITEventListener());
if (NoLazyCompilation)
EE->DisableLazyCompilation();
if (NoLazyCompilation)
EE->DisableLazyCompilation();
@@
-181,7
+190,7
@@
int main(int argc, char **argv, char * const *envp) {
//
Function *EntryFn = Mod->getFunction(EntryFunc);
if (!EntryFn) {
//
Function *EntryFn = Mod->getFunction(EntryFunc);
if (!EntryFn) {
-
std::cerr
<< '\'' << EntryFunc << "\' function not found in module.\n";
+
errs()
<< '\'' << EntryFunc << "\' function not found in module.\n";
return -1;
}
return -1;
}
@@
-218,10
+227,10
@@
int main(int argc, char **argv, char * const *envp) {
ResultGV.IntVal = APInt(32, Result);
Args.push_back(ResultGV);
EE->runFunction(ExitF, Args);
ResultGV.IntVal = APInt(32, Result);
Args.push_back(ResultGV);
EE->runFunction(ExitF, Args);
-
std::cerr
<< "ERROR: exit(" << Result << ") returned!\n";
+
errs()
<< "ERROR: exit(" << Result << ") returned!\n";
abort();
} else {
abort();
} else {
-
std::cerr
<< "ERROR: exit defined with wrong prototype!\n";
+
errs()
<< "ERROR: exit defined with wrong prototype!\n";
abort();
}
}
abort();
}
}