tejohnson added a comment.

In https://reviews.llvm.org/D30920#700133, @pcc wrote:

> In https://reviews.llvm.org/D30920#700077, @tejohnson wrote:
>
> > Until everything is converted to using size attributes, it seems like a 
> > correct fix for the bug is to accept these options in the gold-plugin and 
> > pass through the LTO API to the PassManagerBuilder.
>
>
> Not necessarily. There is no requirement (from a correctness perspective) 
> that `-Os` at link time should exactly match the behaviour of `-Os` at 
> compile time.


Sure, but there is certainly a perception that optimization flags affecting the 
non-LTO pipeline should similarly affect the LTO pipeline. LTO should be 
transparent to the user, so if -Os behaves one way without LTO, it seems 
problematic to me if it behaves a different way with LTO.

That being said, agree that the best way to enforce that is to pass the 
relevant flags through the IR. (On the flip side, if the user passes -O1 to the 
link step, it does get passed through to the plugin and affects the LTO 
optimization pipeline...)

Pirama - can you file a bug (and cc me on it) for the need to convert existing 
users of the sizeLevel flag to instead use the relevant function attributes?



================
Comment at: lib/Driver/ToolChains/CommonArgs.cpp:376
+      if (OptLevel != "s" && OptLevel != "z")
+        OOpt = OptLevel;
+    } else if (A->getOption().matches(options::OPT_O0))
----------------
Note that -Os and -Oz are supposed to map to -O2 minus some size increasing 
options. Not setting OOpt in that case works because the OptLevel in the 
gold-plugin defaults to -O2. I'd rather make it explicit here, i.e. add an else 
that sets OOpt to "2" under these options. You can add a check for that in your 
tests.


https://reviews.llvm.org/D30920



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

Reply via email to