[llvm-dev] [RFC] Removing optimization size level from LLVM and relying on minsize/optsize

Arthur Eubanks via llvm-dev llvm-dev at lists.llvm.org
Fri Nov 12 12:03:51 PST 2021

Currently in the LLVM IR optimization pipelines we pass around an
OptimizationLevel, which consists of a speedup level and a size level (e.g.
-O1 is {1, 0}, -Oz is {2, 2}). We use the size level to turn on/off some
passes and also to determine inliner thresholds.

When attempting to add support for -Os/-Oz in
https://reviews.llvm.org/D113738, I got some pushback saying that we should
be relying on the function attributes minsize and optsize. The logical
extension of that is to completely remove the size level from
OptimizationLevel and rely on frontends to set minsize/optsize for -Os/-Oz.
Passes that are disabled with -Os/-Oz can check those attributes instead.

There are some tests (e.g. inline-optsize.ll) that test that if we have
optsize and -Oz, the lower inlining threshold (-Oz in this case) wins, but
perhaps we can revisit that and calculate inline thresholds purely based on
the function attributes.

Any thoughts?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211112/0a31484c/attachment.html>

More information about the llvm-dev mailing list