[llvm-dev] [RFC] Introducing the maynotprogress IR attribute
Hal Finkel via llvm-dev
llvm-dev at lists.llvm.org
Fri Sep 11 11:08:58 PDT 2020
On 9/11/20 1:04 PM, James Y Knight wrote:
> On Fri, Sep 11, 2020 at 12:42 PM Atmn Patel <atmndp at gmail.com
> <mailto:atmndp at gmail.com>> wrote:
>
> Hi Hal,
>
> On Thu, Sep 10, 2020 at 8:54 PM Hal Finkel <hfinkel at anl.gov
> <mailto:hfinkel at anl.gov>> wrote:
> >
> > Hi, Atmn,
> >
> > Has anyone else expressed an opinion regarding the naming? We
> need to
> > clarify the semantics in C, it seems.
>
> No other names have come in yet, in total the names proposed so far (I
> think) are:
> - maynotprogress
> - maybenoprogress
> - might_not_progress
> - nfpg
> - no_fpg
> and the loop metadata has been pretty firmly established as
> llvm.loop.mustprogress. IMHO, I've warmed up to no_fpg (or even nfpg
> in a pinch if we want to save 33% of space and lose some readability)
> since we've made substantial progress in clarifying the exact
> definitions of progress in this context and I think it's a good idea
> to bake it into the attribute name.
>
>
> I'd actually like to suggest that we invert the default for
> functions. Rather than adding a "maynotprogress" function attribute,
> instead add a "mustprogress" function attribute, which Clang will emit
> on every function compiled in C++ mode. For two reasons:
> 1. Having both the attribute and the loop metadata be the same way
> around makes it simpler to think about (rather than one being
> positive, and the other being negated).
> 2. Given that the global progress-requirement seems to be pretty much
> C++-specific, having this behavior be off by default, and opted into
> by C++ frontends makes sense.
> 3. Bonus: it makes choosing an attribute name easier: mustprogress, done.
I support this suggestion.
-Hal
>
> I've also modified the clang patch [0] to only apply either of the
>
> attributes for C functions when compiled with C11 or later so we can
> tightly adhere to both the C and C++ standards, and the other changes
> that need to be made will be forthcoming. Thanks again to James, that
> particular example was pretty cool, and I agree that it may be best to
> follow that interpretation.
>
> [0] https://reviews.llvm.org/D86841 <https://reviews.llvm.org/D86841>
>
>
> You mean that you now apply maynotprogress to all functions in C,
> right? But why only C11 and later? I think all versions of C should
> get the maynotprogress function attribute? (Or, with the change I
> suggest above: only C++ code should get the "mustprogress" function
> attribute.)
--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200911/acce3eb9/attachment.html>
More information about the llvm-dev
mailing list