summaryrefslogtreecommitdiff
path: root/tools/llc
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2009-04-28 00:21:31 +0000
committerBill Wendling <isanbard@gmail.com>2009-04-28 00:21:31 +0000
commit2e9d5f912a9841d3685ba0241abe1131943fed29 (patch)
tree9dd3e8a53311bd2858fbd020e0a886952726bb2b /tools/llc
parentd908adf2ec0dc774ac95441e755ce3fea94ce329 (diff)
downloadllvm-2e9d5f912a9841d3685ba0241abe1131943fed29.tar.gz
llvm-2e9d5f912a9841d3685ba0241abe1131943fed29.tar.bz2
llvm-2e9d5f912a9841d3685ba0241abe1131943fed29.tar.xz
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'm not 100% sure if it's necessary to change it there... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70270 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llc')
-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;