pirama added a comment. In https://reviews.llvm.org/D30920#700741, @mehdi_amini wrote:
> In https://reviews.llvm.org/D30920#700574, @hfinkel wrote: > > > In https://reviews.llvm.org/D30920#700557, @mehdi_amini wrote: > > > > > In https://reviews.llvm.org/D30920#700433, @tejohnson wrote: > > > > > > > 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...) > > > > > > > > > I agree that I don't like the discrepancy: the driver should *not* drop > > > -Os silently if it passes down -O1/-O2/-O3, a warning is the minimum. > > > > > > I don't like the discrepancy either, and I agree that we should be passing > > these other flags through the IR as well (even though, in the face of > > inlining, there is some ambiguity as to what the flags would mean). That > > having been said, I don't see the value in the warning. Forcing users to > > endure a warning solely because they use LTO and use -Os or -Oz for all of > > their compilation steps, is not friendly. > > > The warning here is only about the *link* step. > > > The information has been captured already so there's nothing to warn about. > > You might worry about the opposite situation (the user uses only -Os or -Oz > > on the link step, but not for the compile steps), and that will have no > > effect. That, however, should be the expected behavior (optimization is > > associated with compiling, not linking, except perhaps for specifically > > called-out exceptions). The fact that our other optimization level don't > > work that way is a bug, not a feature, that we should fix instead of > > further exposing to our users. > > Yes, the issue is only about how the driver accepts Os for the link even > though it has no effect > (O0/https://reviews.llvm.org/owners/package/1//https://reviews.llvm.org/owners/package/2//https://reviews.llvm.org/owners/package/3/ > *will* have an effect though). The driver (accepts, but) ignores Os and other optimization flags for non-lto link-only actions. That it has an effect for LTO is seems to be an implementation detail. Since optimization flags are compiler-only options, and Clang already silently (without a warning) ignores these flags during link-only invocations, silently transforming them when passing to the plugin seems reasonable. https://reviews.llvm.org/D30920 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits