<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jul 9, 2012, at 5:14 AM, Chandler Carruth wrote:</div><blockquote type="cite"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jul 6, 2012 at 10:29 AM, John McCall <span dir="ltr"><<a href="mailto:rjmccall@apple.com" target="_blank" class="cremed">rjmccall@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; "><div class="im">On Jul 6, 2012, at 7:16 AM, Alexander Kornienko wrote:<br>
> The whole purpose of this e-mail is to gather ideas regarding our needs for C++11 attributes parsing. Right now, only select attributes are parsed in C++11 style, attribute arguments parsing is not implemented, there's no common check for matching attribute targets ("Subjects" field in Attr.td). BTW, AFAIK, the latter is not implemented for GNU-style attributes either.<br>

><br>
> Currently, I see the following questions:<br>
> 1. will we allow c++11 syntax for existing GNU attributes?<br>
<br>
</div>Probably not.  If we do, there's a potential for collision with attributes introduced by the committee.  It doesn't seem to have any benefits except giving users a prettier syntax for writing code that is totally unportable between compilers.<br>
</blockquote><div><br></div><div>I think there are a very few specific GNU attributes that we should support in either syntax: ones that are really Clang attributes but happen to be in GNU syntax currently:</div><div><br>
</div><div>- Thread safety attributes</div><div>- Some of the LLVM attributes such as readnone</div><div>- Attributes with very active users that would specifically benefit from the improved syntax of C++11 attributes: format string, non-null, and other argument-related attributes which are of particular use to static analysis tools built in and around clang.</div></div></div></blockquote><div><br></div>Putting an attribute on a parameter declaration is exactly the same with GNU attributes as with C++11 attributes.  The actual problem here is that these attributes, by design, are currently placed on the *function* with an awkward mapping back to parameter indexes.  You could certainly come up with a different design in which these attributes are placed on the parameter, but doing that isn't really inherent to migrating to C++11, and I suspect that the wider community would be a lot happier if we *didn't* tie that feature somewhat randomly to C++11.</div><div><br></div><div>That said, I don't really have a problem with exposing attributes in both syntaxes as long as they're namespaced appropriately.</div><div><br><blockquote type="cite"><div class="gmail_extra"><div class="gmail_quote">
<div>That said, I don't think even these would ever be directly ported. We would naturally use the new name spacing utility to pave the way for increased portability. I would also assume this would be used as a good opportunity to re-think any syntactical problems we've hit over the years, and maybe talk to GCC folks to come up with an agreed-upon set of common names for those likely to be supported in both compilers (format string, non-null, etc).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> 2. what new attributes do we expect to appear in c++11 syntax?<br>
<br>
</div>Impossible to say;  it depends on the committee.<br>
<div class="im"><br>
> 3. will they require late parsing of parameters?<br>
<br>
</div>Unlikely, but possible.<br></blockquote><div><br></div><div>The thread safety attributes at the least would benefit from this, and there is definitely a desire to migrate those to C++11 syntax on our end.</div></div>
</div>
</blockquote></div><br><div>True.</div><div><br></div><div>John.</div></body></html>