[llvm-dev] RFC: Need One True Way to check for -Oz/-Os (minsize, optsize) in passes...
James Molloy via llvm-dev
llvm-dev at lists.llvm.org
Fri Jan 20 01:15:46 PST 2017
Thanks for bringing this up. As I see it:
The advantage of (1) is that it allows easier exploration of IR - I can run the optimizer in -O2, optsize and minsize mode all without going back to clang.
The advantage of (2) is that it works with LTO… and I think that must trump all other concerns, as you said. In fact, the advantage of (1) I just stated could be gained by simply “opt -force-attribute=*:minsize” (do we have a wildcard match for -force-attribute? if we don’t, we should). So while unwieldy, it does work (and ideally should be documented!)
So I agree, (2) sounds best.
> On 20 Jan 2017, at 09:11, Chandler Carruth <chandlerc at gmail.com> wrote:
> Right now we have a healthy mixture of two ways to respond to -Oz and -Os in LLVM:
> 1) Pass this info to the PassManagerBuilder and then toggle some flag to the pass to change thresholds.
> 2) When running over IR, inspect it for the minsize or optsize attribute.
> Regardless of the particulars of what these mean and/or how they relate to -O2 vs -O3 for example, I'd really like to at least get to *one* way of doing this.
> The only way that is really compatible with LTO use cases is to use the function attributes, so I'd suggest we actively work toward that. That sound good to others? Thoughts?
> If folks like this, I will attempt to update the few places where we get this wrong. I already have some patches but wanted to make sure everyone likes this direction.
More information about the llvm-dev