diff options
author | Bill Wendling <isanbard@gmail.com> | 2009-04-29 00:15:41 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2009-04-29 00:15:41 +0000 |
commit | be8cc2a3dedeb7685f07e68cdc4b9502eb97eb2b (patch) | |
tree | 61b5516b5232ee39d0cfb04473b2cc8076464a1c /tools | |
parent | a24d1b155831d25f543e0e4ece9b572cefda2f17 (diff) | |
download | llvm-be8cc2a3dedeb7685f07e68cdc4b9502eb97eb2b.tar.gz llvm-be8cc2a3dedeb7685f07e68cdc4b9502eb97eb2b.tar.bz2 llvm-be8cc2a3dedeb7685f07e68cdc4b9502eb97eb2b.tar.xz |
Second attempt:
Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.
Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'll change the JIT with a follow-up patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70343 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-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 1b84d4d5b1..eff32270e7 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; |