]> granicus.if.org Git - clang/commitdiff
Use the new code gen optimization enum instead of passing in the optimization
authorBill Wendling <isanbard@gmail.com>
Wed, 29 Apr 2009 23:53:23 +0000 (23:53 +0000)
committerBill Wendling <isanbard@gmail.com>
Wed, 29 Apr 2009 23:53:23 +0000 (23:53 +0000)
level. This is more expressive.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70451 91177308-0d34-0410-b5e6-96231b3b80d8

tools/clang-cc/Backend.cpp

index 078c7a1fb9edfd6f057ce5b03e1ffcfd3453196e..3fcf84cb7ab17673232c9791e48408f1d146ec45 100644 (file)
@@ -256,12 +256,20 @@ bool BackendConsumer::AddEmitPasses(std::string &Error) {
     // FIXME: This is disabled right now until bugs can be worked out.  Reenable
     // this for fast -O0 compiles!
     FunctionPassManager *PM = getCodeGenPasses();
-    
+    CodeGenOpt::Level OptLevel = CodeGenOpt::Default;
+
+    switch (CompileOpts.OptimizationLevel) {
+    default: break;
+    case 0: OptLevel = CodeGenOpt::None; break;
+    case 1: OptLevel = CodeGenOpt::One; break;
+    case 2: OptLevel = CodeGenOpt::Two; break;
+    case 3: OptLevel = CodeGenOpt::Aggressive; break;
+    }
+
     // Normal mode, emit a .s file by running the code generator.
     // Note, this also adds codegenerator level optimization passes.
     switch (TM->addPassesToEmitFile(*PM, *AsmOutStream,
-                                    TargetMachine::AssemblyFile,
-                                    CompileOpts.OptimizationLevel)) {
+                                    TargetMachine::AssemblyFile, OptLevel)) {
     default:
     case FileModel::Error:
       Error = "Unable to interface with target machine!\n";
@@ -270,8 +278,7 @@ bool BackendConsumer::AddEmitPasses(std::string &Error) {
       break;
     }
     
-    if (TM->addPassesToEmitFileFinish(*CodeGenPasses, 0,
-                                      CompileOpts.OptimizationLevel)) {
+    if (TM->addPassesToEmitFileFinish(*CodeGenPasses, 0, OptLevel)) {
       Error = "Unable to interface with target machine!\n";
       return false;
     }