Snider, Todd via llvm-dev
2021-Nov-13 00:03 UTC
[llvm-dev] [EXTERNAL] Re: [RFC] Removing optimization size level from LLVM and relying on minsize/optsize
Hi Arthur,
If -Oz/-Os are implemented via front-end setting the optnone/minsize attribute,
would that have any impact on code-size related IPOs like machine outlining?
~ Todd
From: llvm-dev <llvm-dev-bounces at lists.llvm.org<mailto:llvm-dev-bounces
at lists.llvm.org>> On Behalf Of Matt Arsenault via llvm-dev
Sent: Friday, November 12, 2021 2:10 PM
To: Arthur Eubanks <aeubanks at google.com<mailto:aeubanks at
google.com>>
Cc: llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at
lists.llvm.org>>
Subject: [EXTERNAL] Re: [llvm-dev] [RFC] Removing optimization size level from
LLVM and relying on minsize/optsize
On Nov 12, 2021, at 15:03, Arthur Eubanks via llvm-dev <llvm-dev at
lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote:
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?
I do not believe in encoding optimization levels in the IR. The optimization
level is an option for the machinery of the compiler, and not part of the
semantics of the program.
-Matt
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20211113/224a470b/attachment.html>