diff options
Diffstat (limited to 'tools/llc/llc.cpp')
-rw-r--r-- | tools/llc/llc.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp index 1b84d4d..eff3227 100644 --- a/tools/llc/llc.cpp +++ b/tools/llc/llc.cpp @@ -55,8 +55,13 @@ OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename")); static cl::opt<bool> Force("f", cl::desc("Overwrite output files")); -static cl::opt<bool> Fast("fast", - cl::desc("Generate code quickly, potentially sacrificing code quality")); +// Determine optimization level. Level -O0 is equivalent to "fast" code gen. +static cl::opt<unsigned> +OptLevel("O", + cl::desc("Optimization level. Similar to llvm-gcc -O. (default: -O3)"), + cl::Prefix, + cl::ZeroOrMore, + cl::init(3)); static cl::opt<std::string> TargetTriple("mtriple", cl::desc("Override target triple for module")); @@ -257,7 +262,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, Fast)) { + if (Target.addPassesToEmitWholeFile(PM, *Out, FileType, OptLevel)) { std::cerr << argv[0] << ": target does not support generation of this" << " file type!\n"; if (Out != &outs()) delete Out; @@ -283,7 +288,7 @@ int main(int argc, char **argv) { // Override default to generate verbose assembly. Target.setAsmVerbosityDefault(true); - switch (Target.addPassesToEmitFile(Passes, *Out, FileType, Fast)) { + switch (Target.addPassesToEmitFile(Passes, *Out, FileType, OptLevel)) { default: assert(0 && "Invalid file model!"); return 1; @@ -304,7 +309,7 @@ int main(int argc, char **argv) { break; } - if (Target.addPassesToEmitFileFinish(Passes, MCE, Fast)) { + if (Target.addPassesToEmitFileFinish(Passes, MCE, OptLevel)) { std::cerr << argv[0] << ": target does not support generation of this" << " file type!\n"; if (Out != &outs()) delete Out; |