summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2009-04-29 00:15:41 +0000
committerBill Wendling <isanbard@gmail.com>2009-04-29 00:15:41 +0000
commitbe8cc2a3dedeb7685f07e68cdc4b9502eb97eb2b (patch)
tree61b5516b5232ee39d0cfb04473b2cc8076464a1c /tools
parenta24d1b155831d25f543e0e4ece9b572cefda2f17 (diff)
downloadllvm-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.cpp15
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;