summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/llc/llc.cpp25
-rw-r--r--tools/lli/lli.cpp4
-rw-r--r--tools/lto/LTOCodeGenerator.cpp6
3 files changed, 26 insertions, 9 deletions
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp
index eff32270e7..cf58384378 100644
--- a/tools/llc/llc.cpp
+++ b/tools/llc/llc.cpp
@@ -56,12 +56,12 @@ OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename"));
static cl::opt<bool> Force("f", cl::desc("Overwrite output files"));
// Determine optimization level. Level -O0 is equivalent to "fast" code gen.
-static cl::opt<unsigned>
+static cl::opt<char>
OptLevel("O",
- cl::desc("Optimization level. Similar to llvm-gcc -O. (default: -O3)"),
+ cl::desc("Optimization level. Similar to llvm-gcc -O."),
cl::Prefix,
cl::ZeroOrMore,
- cl::init(3));
+ cl::init(' '));
static cl::opt<std::string>
TargetTriple("mtriple", cl::desc("Override target triple for module"));
@@ -253,6 +253,19 @@ int main(int argc, char **argv) {
raw_ostream *Out = GetOutputStream(argv[0]);
if (Out == 0) return 1;
+ CodeGenOpt::Level OLvl = CodeGenOpt::Aggressive;
+
+ switch (OptLevel) {
+ default:
+ case ' ': break;
+ case '0': OLvl = CodeGenOpt::None; break;
+ case '1': OLvl = CodeGenOpt::One; break;
+ case '2': OLvl = CodeGenOpt::Two; break;
+ case 's': OLvl = CodeGenOpt::Size; break;
+ case '3': OLvl = CodeGenOpt::Aggressive; break;
+ case '4': OLvl = CodeGenOpt::LTO; break;
+ }
+
// If this target requires addPassesToEmitWholeFile, do it now. This is
// used by strange things like the C backend.
if (Target.WantsWholeFile()) {
@@ -262,7 +275,7 @@ int main(int argc, char **argv) {
PM.add(createVerifierPass());
// Ask the target to add backend passes as necessary.
- if (Target.addPassesToEmitWholeFile(PM, *Out, FileType, OptLevel)) {
+ if (Target.addPassesToEmitWholeFile(PM, *Out, FileType, OLvl)) {
std::cerr << argv[0] << ": target does not support generation of this"
<< " file type!\n";
if (Out != &outs()) delete Out;
@@ -288,7 +301,7 @@ int main(int argc, char **argv) {
// Override default to generate verbose assembly.
Target.setAsmVerbosityDefault(true);
- switch (Target.addPassesToEmitFile(Passes, *Out, FileType, OptLevel)) {
+ switch (Target.addPassesToEmitFile(Passes, *Out, FileType, OLvl)) {
default:
assert(0 && "Invalid file model!");
return 1;
@@ -309,7 +322,7 @@ int main(int argc, char **argv) {
break;
}
- if (Target.addPassesToEmitFileFinish(Passes, MCE, OptLevel)) {
+ if (Target.addPassesToEmitFileFinish(Passes, MCE, OLvl)) {
std::cerr << argv[0] << ": target does not support generation of this"
<< " file type!\n";
if (Out != &outs()) delete Out;
diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp
index d62d332098..812e52c8a9 100644
--- a/tools/lli/lli.cpp
+++ b/tools/lli/lli.cpp
@@ -122,7 +122,9 @@ int main(int argc, char **argv, char * const *envp) {
if (!TargetTriple.empty())
Mod->setTargetTriple(TargetTriple);
- EE = ExecutionEngine::create(MP, ForceInterpreter, &ErrorMsg, Fast);
+ EE = ExecutionEngine::create(MP, ForceInterpreter, &ErrorMsg,
+ Fast ?
+ CodeGenOpt::None : CodeGenOpt::Aggressive);
if (!EE && !ErrorMsg.empty()) {
std::cerr << argv[0] << ":error creating EE: " << ErrorMsg << "\n";
exit(1);
diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp
index af8ad962cc..66b56b174c 100644
--- a/tools/lto/LTOCodeGenerator.cpp
+++ b/tools/lto/LTOCodeGenerator.cpp
@@ -442,7 +442,8 @@ bool LTOCodeGenerator::generateAssemblyCode(raw_ostream& out,
MachineCodeEmitter* mce = NULL;
switch (_target->addPassesToEmitFile(*codeGenPasses, out,
- TargetMachine::AssemblyFile, 3)) {
+ TargetMachine::AssemblyFile,
+ CodeGenOpt::Default)) {
case FileModel::MachOFile:
mce = AddMachOWriter(*codeGenPasses, out, *_target);
break;
@@ -457,7 +458,8 @@ bool LTOCodeGenerator::generateAssemblyCode(raw_ostream& out,
return true;
}
- if (_target->addPassesToEmitFileFinish(*codeGenPasses, mce, 3)) {
+ if (_target->addPassesToEmitFileFinish(*codeGenPasses, mce,
+ CodeGenOpt::Default)) {
errMsg = "target does not support generation of this file type";
return true;
}