diff options
author | Hans Wennborg <hans@chromium.org> | 2024-06-14 11:09:01 +0200 |
---|---|---|
committer | Hans Wennborg <hans@chromium.org> | 2024-06-14 11:11:30 +0200 |
commit | 32cd703da578e769787a921d76b768164a4256b6 (patch) | |
tree | b4e2486b6472dd1b10859d0a2991200310d91695 /clang | |
parent | b6b0f975a6005de530262ed1c5643d1060c86d63 (diff) | |
download | llvm-32cd703da578e769787a921d76b768164a4256b6.zip llvm-32cd703da578e769787a921d76b768164a4256b6.tar.gz llvm-32cd703da578e769787a921d76b768164a4256b6.tar.bz2 |
[clang-cl] Support the /Ob3 flag
According to the docs, this was added in VS2019 and specifies more
aggressive inlining than /Ob2. Let's treat it the same as /Ob2 for now.
Diffstat (limited to 'clang')
-rw-r--r-- | clang/docs/UsersManual.rst | 1 | ||||
-rw-r--r-- | clang/include/clang/Driver/Options.td | 2 | ||||
-rw-r--r-- | clang/lib/Driver/ToolChains/MSVC.cpp | 1 | ||||
-rw-r--r-- | clang/test/Driver/cl-options.c | 2 |
4 files changed, 6 insertions, 0 deletions
diff --git a/clang/docs/UsersManual.rst b/clang/docs/UsersManual.rst index ee30e4e..15bf5e3 100644 --- a/clang/docs/UsersManual.rst +++ b/clang/docs/UsersManual.rst @@ -4632,6 +4632,7 @@ Execute ``clang-cl /?`` to see a list of supported options: /Ob0 Disable function inlining /Ob1 Only inline functions which are (explicitly or implicitly) marked inline /Ob2 Inline functions as deemed beneficial by the compiler + /Ob3 Same as /Ob2 /Od Disable optimization /Og No effect /Oi- Disable use of builtin functions diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 96e5227..1cb03ac 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8262,6 +8262,8 @@ def : CLFlag<"Ob1">, Alias<_SLASH_O>, AliasArgs<["b1"]>, HelpText<"Only inline functions explicitly or implicitly marked inline">; def : CLFlag<"Ob2">, Alias<_SLASH_O>, AliasArgs<["b2"]>, HelpText<"Inline functions as deemed beneficial by the compiler">; +def : CLFlag<"Ob3">, Alias<_SLASH_O>, AliasArgs<["b3"]>, + HelpText<"Same as /Ob2">; def : CLFlag<"Od", [CLOption, DXCOption]>, Alias<_SLASH_O>, AliasArgs<["d"]>, HelpText<"Disable optimization">; def : CLFlag<"Og">, Alias<_SLASH_O>, AliasArgs<["g"]>, diff --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp index d036872..ca266e3 100644 --- a/clang/lib/Driver/ToolChains/MSVC.cpp +++ b/clang/lib/Driver/ToolChains/MSVC.cpp @@ -880,6 +880,7 @@ static void TranslateOptArg(Arg *A, llvm::opt::DerivedArgList &DAL, DAL.AddFlagArg(A, Opts.getOption(options::OPT_finline_hint_functions)); break; case '2': + case '3': DAL.AddFlagArg(A, Opts.getOption(options::OPT_finline_functions)); break; } diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c index e77ec36..95d28e4 100644 --- a/clang/test/Driver/cl-options.c +++ b/clang/test/Driver/cl-options.c @@ -163,7 +163,9 @@ // Ob0: -fno-inline // RUN: %clang_cl /Ob2 -### -- %s 2>&1 | FileCheck -check-prefix=Ob2 %s +// RUN: %clang_cl /Ob3 -### -- %s 2>&1 | FileCheck -check-prefix=Ob2 %s // RUN: %clang_cl /Odb2 -### -- %s 2>&1 | FileCheck -check-prefix=Ob2 %s +// RUN: %clang_cl /Odb3 -### -- %s 2>&1 | FileCheck -check-prefix=Ob2 %s // RUN: %clang_cl /O2 /Ob2 -### -- %s 2>&1 | FileCheck -check-prefix=Ob2 %s // Ob2-NOT: warning: argument unused during compilation: '/O2' // Ob2: -finline-functions |