]> granicus.if.org Git - clang/commitdiff
clang-cl: Bake /Ob0 and /Ob2 into the general /O option handling
authorHans Wennborg <hans@hanshq.net>
Tue, 24 May 2016 21:23:29 +0000 (21:23 +0000)
committerHans Wennborg <hans@hanshq.net>
Tue, 24 May 2016 21:23:29 +0000 (21:23 +0000)
This is a follow-up to r270609, wherein I forgot that /O options can
be combined, and e.g. /Odb2 is a valid combination.

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

include/clang/Driver/CLCompatOptions.td
lib/Driver/MSVCToolChain.cpp
test/Driver/cl-options.c

index 3d98a65ec7f2035f4c973aeb1bf6344bec24cdc6..a6892e567135068edbd153eac3877155fd15a43b 100644 (file)
@@ -100,10 +100,6 @@ def _SLASH_J : CLFlag<"J">, HelpText<"Make char type unsigned">,
 def _SLASH_O0 : CLFlag<"O0">, Alias<O0>;
 // /Oy- is handled by the /O option because /Oy- only has an effect on 32-bit.
 def _SLASH_O : CLJoined<"O">, HelpText<"Optimization level">;
-def _SLASH_Ob0 : CLFlag<"Ob0">, HelpText<"Disable inlining">,
-  Alias<fno_inline>;
-def _SLASH_Ob2 : CLFlag<"Ob2">, HelpText<"Enable inlining">,
-  Alias<finline_functions>;
 def _SLASH_Od : CLFlag<"Od">, HelpText<"Disable optimization">, Alias<O0>;
 def _SLASH_Oi : CLFlag<"Oi">, HelpText<"Enable use of builtin functions">,
   Alias<fbuiltin>;
index 4af142de9220e5453632f34bd543884ec0664931..fb8d20be2f1048b7f430256e5941b121243f7be8 100644 (file)
@@ -722,8 +722,20 @@ static void TranslateOptArg(Arg *A, llvm::opt::DerivedArgList &DAL,
       }
       break;
     case 'b':
-      if (I + 1 != E && isdigit(OptStr[I + 1]))
+      if (I + 1 != E && isdigit(OptStr[I + 1])) {
+        switch (OptStr[I + 1]) {
+        case '0':
+          DAL.AddFlagArg(A, Opts.getOption(options::OPT_fno_inline));
+          break;
+        case '1':
+          // TODO: Inline calls to 'inline functions' only.
+          break;
+        case '2':
+          DAL.AddFlagArg(A, Opts.getOption(options::OPT_finline_functions));
+          break;
+        }
         ++I;
+      }
       break;
     case 'g':
       break;
index 6a721fc9f825a00b9ae72c3749bf7b29e3b3037f..2e68b18217eb0b7fc03c3fb058a969564ab04756 100644 (file)
@@ -98,6 +98,7 @@
 // Ob0: -fno-inline
 
 // RUN: %clang_cl /Ob2 -### -- %s 2>&1 | FileCheck -check-prefix=Ob2 %s
+// RUN: %clang_cl /Odb2 -### -- %s 2>&1 | FileCheck -check-prefix=Ob2 %s
 // Ob2: -finline-functions
 
 // RUN: %clang_cl /Od -### -- %s 2>&1 | FileCheck -check-prefix=Od %s