mehdi_amini added inline comments.

================
Comment at: lib/Frontend/CompilerInvocation.cpp:453
+    // There is no effect at O0 when we won't inline anyways.
+    if (Opts.OptimizationLevel > 1) {
+      const Option &InlineOpt = InlineArg->getOption();
----------------
mehdi_amini wrote:
> I'd switch the two if
The test `> 1` and the comment about `-O0` are confusing to me as well. What 
about the following (IIUC):

```
if (Opts.OptimizationLevel <= 1) {
  // "always-inline" required for correctness at O0 and O1.
  Opts.setInlining(CodeGenOptions::OnlyAlwaysInlining);
else if (Opts.OptimizationLevel > 1) {
  // Normal inlining at O2 and above
  Opts.setInlining((CodeGenOptions::NormalInlining);
  // -fno-inline-functions overrides
  if (Arg *InlineArg = Args.getLastArg(
          options::OPT_finline_functions, options::OPT_finline_hint_functions,
          options::OPT_fno_inline_functions, options::OPT_fno_inline)) {
     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);
  }
}
```



https://reviews.llvm.org/D28053



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to