You have ''__foo'' in some of your diagnostics. These should only use a single level of quotes.<div><br></div><div>Should these really be handled as declaration attributes? They look like they would more naturally be type attributes. Can you do this:</div>
<div><br></div><div>  void * __sptr * __uptr p;</div><div><br></div><div><div>I don't think there's any need to check MicrosoftExt in SemaDeclAttr: these things are only keyword in MicrosoftExt mode.<br><br><div>+    // You cannot have both __sptr and __uptr on the same declaration, nor can</div>
<div>+    // you duplicate the attributes.</div><div>+    bool HasUPtr = D->hasAttr<UPtrAttr>(), HasSPtr = D->hasAttr<SPtrAttr>();</div><div>+    if ((HasUPtr && Kind == AttributeList::AT_SPtr) ||</div>
<div>+        (HasSPtr && Kind == AttributeList::AT_UPtr)) {</div><div>+      S.Diag(Attr.getLoc(), diag::err_attributes_are_not_compatible)</div><div>+        << S.Context.Idents.get("'__sptr'").getName()</div>
<div>+        << S.Context.Idents.get("'__uptr'").getName();</div><div><br></div><div>This seems like a very strange way to convert a string literal into a StringRef.</div><div><br></div><div class="gmail_quote">
On Mon, May 13, 2013 at 5:37 PM, Aaron Ballman <span dir="ltr"><<a href="mailto:aaron@aaronballman.com" target="_blank">aaron@aaronballman.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
__sptr and __uptr are pointer type qualifiers that relate to __ptr32<br>
and __ptr64.  Specifically, they specify how pointers are supposed to<br>
be converted (sign extended or zero extended).  For more information,<br>
see MSDN: <a href="http://msdn.microsoft.com/en-us/library/aa983399.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/aa983399.aspx</a><br>
<br>
This patch brings in parsing support, some semantic warnings and test<br>
cases for code which uses __sptr and __uptr in conjunction with<br>
__ptr32 and __ptr64.  A future patch will have to be made to hook into<br>
the codegen machinery to support __ptr32 and __ptr64 more fully.<br>
<br>
This patch is modeled after the existing __ptr32 and __ptr64 support.<br>
<span class="HOEnZb"><font color="#888888"><br>
~Aaron<br>
</font></span><br>_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br></blockquote></div><br></div></div>