[llvm-dev] [RFC] Adding function attributes to represent codegen optimization level

Chad Rosier via llvm-dev llvm-dev at lists.llvm.org
Wed Apr 4 08:53:36 PDT 2018


Hi Martin,

I think this is another example of why we might consider having such 
function level attributes.. yes.

  Chad


On 4/4/2018 11:42 AM, Martin J. O'Riordan via llvm-dev wrote:
>
> Sorry, my reply “to all” left out LLVM-Dev
>
> *From:*Martin J. O'Riordan [mailto:MartinO at theheart.ie]
> *Sent:* 04 April 2018 16:41
> *To:* 'David Blaikie' <dblaikie at gmail.com>; 'mcrosier at codeaurora.org' 
> <mcrosier at codeaurora.org>; 'Chandler Carruth' <chandlerc at gmail.com>; 
> 'Eric Christopher' <echristo at gmail.com>
> *Subject:* RE: [llvm-dev] [RFC] Adding function attributes to 
> represent codegen optimization level
>
> Would implementing GCC’s ‘__attribute__((optimize(...)))’ help?
>
> I can’t find any good documentation for this attribute, but it seems 
> that GCC supports this in two forms:
>
> __attribute__((optimize(2)))
>
> meaning optimise equivalent to ‘-O2’, and:
>
> __attribute_((optimize("fblah", "O1")))
>
> meaning optimise with the provided discrete options.
>
> MartinO
>
> *From:*llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] *On Behalf Of 
> *David Blaikie via llvm-dev
> *Sent:* 04 April 2018 15:41
> *To:* mcrosier at codeaurora.org <mailto:mcrosier at codeaurora.org>; 
> Chandler Carruth <chandlerc at gmail.com <mailto:chandlerc at gmail.com>>; 
> Eric Christopher <echristo at gmail.com <mailto:echristo at gmail.com>>
> *Cc:* llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
> *Subject:* Re: [llvm-dev] [RFC] Adding function attributes to 
> represent codegen optimization level
>
> On Tue, Apr 3, 2018 at 12:47 PM via llvm-dev <llvm-dev at lists.llvm.org 
> <mailto:llvm-dev at lists.llvm.org>> wrote:
>
>     All,
>     A recent commit, D43040/r324557, changed the behavior of the gold
>     plugin
>     when compiling with LTO.  The change now causes the codegen
>     optimization
>     level to default to CodeGenOpt::Default (i.e., -O2) rather than
>     use the
>     LTO optimization level.  The argument was made that the LTO
>     optimization
>     level should control the amount of cross-module optimizations done by
>     LTO, but it should not control the codegen optimization level; that
>     should be based off of the optimization level used during the initial
>     compilation phase (i.e., bitcode generation).
>
>
> At least as I recall the discussion around optnone/optsize in the pass 
> was that these were in some way special semantically distinct 
> properties (optnone being "good for debugging" (or good for debugging 
> compilers - what's the baseline behavior before optimizations are 
> applied), optsize being "make this fit into something it wouldn't 
> otherwise fit into") but that the gradiations of -ON didn't fit into 
> this kind of model & wouldn't ever be implemented as function attributes.
>
> CC'd Chandler & Eric who I think had opinions/were involved in those 
> previous discussions.
>
>
>     Assuming the argument is reasonable (it make sense to me), I was
>     hoping
>     to solicit feedback on how to proceed.  The suggestion in
>     D43040/r324557
>     was to add function attributes to represent the compile-time
>     optimization level (which also seems reasonable to me).
>
>     As a first step, I've put together two patches: 1) an llvm patch that
>     adds the function attributes to the LLVM IR and 2) a clang patch that
>     attaches these attributes to each function based on the codegen
>     optimization level.  I then use the function level attributes to
>     "reconstruct" to codegen optimization level used with LTO.
>
>     Please understand this is very much a WIP and just a very small step
>     towards a final solution.
>
>     Here are the patches for reference:
>     Clang: D45226
>     LLVM: D45225
>
>     Regards,
>       Chad
>
>
>     _______________________________________________
>     LLVM Developers mailing list
>     llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>     http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180404/6a2e9f87/attachment.html>


More information about the llvm-dev mailing list