diff options
author | Fangrui Song <i@maskray.me> | 2022-04-10 00:31:25 -0700 |
---|---|---|
committer | Fangrui Song <i@maskray.me> | 2022-04-10 00:31:25 -0700 |
commit | d74039fa8e4d3f3d9e10fd67f312d4410cc0f53d (patch) | |
tree | 5ac42667ddb3a5e1125bdf8c570315f5d2fa419c /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | ee7fb36ba03a75e404d1030666883e050052c5a1 (diff) | |
download | llvm-d74039fa8e4d3f3d9e10fd67f312d4410cc0f53d.zip llvm-d74039fa8e4d3f3d9e10fd67f312d4410cc0f53d.tar.gz llvm-d74039fa8e4d3f3d9e10fd67f312d4410cc0f53d.tar.bz2 |
[Frontend] Simplify -finline* handling. NFC
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 5181999..bbc6df5 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -1613,23 +1613,22 @@ bool CompilerInvocation::ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, // At O0 we want to fully disable inlining outside of cases marked with // 'alwaysinline' that are required for correctness. - Opts.setInlining((Opts.OptimizationLevel == 0) - ? CodeGenOptions::OnlyAlwaysInlining - : CodeGenOptions::NormalInlining); - // Explicit inlining flags can disable some or all inlining even at - // optimization levels above zero. - if (Arg *InlineArg = Args.getLastArg( - options::OPT_finline_functions, options::OPT_finline_hint_functions, - options::OPT_fno_inline_functions, options::OPT_fno_inline)) { - if (Opts.OptimizationLevel > 0) { - const Option &InlineOpt = InlineArg->getOption(); - if (InlineOpt.matches(options::OPT_finline_functions)) - Opts.setInlining(CodeGenOptions::NormalInlining); - else if (InlineOpt.matches(options::OPT_finline_hint_functions)) - Opts.setInlining(CodeGenOptions::OnlyHintInlining); - else - Opts.setInlining(CodeGenOptions::OnlyAlwaysInlining); - } + if (Opts.OptimizationLevel == 0) { + Opts.setInlining(CodeGenOptions::OnlyAlwaysInlining); + } else if (const Arg *A = Args.getLastArg(options::OPT_finline_functions, + options::OPT_finline_hint_functions, + options::OPT_fno_inline_functions, + options::OPT_fno_inline)) { + // Explicit inlining flags can disable some or all inlining even at + // optimization levels above zero. + if (A->getOption().matches(options::OPT_finline_functions)) + Opts.setInlining(CodeGenOptions::NormalInlining); + else if (A->getOption().matches(options::OPT_finline_hint_functions)) + Opts.setInlining(CodeGenOptions::OnlyHintInlining); + else + Opts.setInlining(CodeGenOptions::OnlyAlwaysInlining); + } else { + Opts.setInlining(CodeGenOptions::NormalInlining); } // PIC defaults to -fno-direct-access-external-data while non-PIC defaults to |