<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div class="moz-cite-prefix">On 9/11/20 1:04 PM, James Y Knight
wrote:<br>
</div>
<blockquote type="cite" cite="mid:CAA2zVHree=9pw+A9ntqcpDuTk4oPUH3q2w9_i8GHpCnp0Mrm1w@mail.gmail.com">
<div dir="ltr">
<div dir="ltr">
<div>On Fri, Sep 11, 2020 at 12:42 PM Atmn Patel <<a href="mailto:atmndp@gmail.com" target="_blank" moz-do-not-send="true">atmndp@gmail.com</a>> wrote:<br>
</div>
</div>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">Hi Hal,<br>
<br>
On Thu, Sep 10, 2020 at 8:54 PM Hal Finkel <<a href="mailto:hfinkel@anl.gov" target="_blank" moz-do-not-send="true">hfinkel@anl.gov</a>> wrote:<br>
><br>
> Hi, Atmn,<br>
><br>
> Has anyone else expressed an opinion regarding the
naming? We need to<br>
> clarify the semantics in C, it seems.<br>
<br>
No other names have come in yet, in total the names proposed
so far (I<br>
think) are:<br>
- maynotprogress<br>
- maybenoprogress<br>
- might_not_progress<br>
- nfpg<br>
- no_fpg<br>
and the loop metadata has been pretty firmly established as<br>
llvm.loop.mustprogress. IMHO, I've warmed up to no_fpg (or
even nfpg<br>
in a pinch if we want to save 33% of space and lose some
readability)<br>
since we've made substantial progress in clarifying the
exact<br>
definitions of progress in this context and I think it's a
good idea<br>
to bake it into the attribute name.</blockquote>
<div><br>
</div>
<div>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:</div>
<div>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).</div>
<div>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.</div>
<div>3. Bonus: it makes choosing an attribute name easier:
mustprogress, done.</div>
</div>
</div>
</blockquote>
<p><br>
</p>
<p>I support this suggestion.<br>
</p>
<p> -Hal<br>
</p>
<p><br>
</p>
<blockquote type="cite" cite="mid:CAA2zVHree=9pw+A9ntqcpDuTk4oPUH3q2w9_i8GHpCnp0Mrm1w@mail.gmail.com">
<div dir="ltr">
<div class="gmail_quote">
<div><br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">I've also modified the
clang patch [0] to only apply either of the</blockquote>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
attributes for C functions when compiled with C11 or later
so we can<br>
tightly adhere to both the C and C++ standards, and the
other changes<br>
that need to be made will be forthcoming. Thanks again to
James, that<br>
particular example was pretty cool, and I agree that it may
be best to<br>
follow that interpretation.<br>
<br>
[0] <a href="https://reviews.llvm.org/D86841" rel="noreferrer" target="_blank" moz-do-not-send="true">https://reviews.llvm.org/D86841</a></blockquote>
<div><br>
</div>
<div>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.)</div>
</div>
</div>
</blockquote>
<pre class="moz-signature" cols="72">--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</body>
</html>