<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jul 17, 2014 at 11:36 AM, 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">GNU-style type attributes are not allowed in new expressions, such as:<br>
<br>
auto *P = new int * __attribute__((attr));<br>
<br>
We silently accept them in clang, but have a FIXME in the code to<br>
address the issue. This patch is an initial stab at addressing the<br>
issue, and I am looking for feedback on whether my approach is<br>
reasonable or not. (It disables support for GNU attributes, but not<br>
other vendor attributes which should remain supported.)<br>
<br>
Note, the attached test case does not currently pass. It only checks<br>
for one error diagnostic, but the actual diagnostics for that code<br>
are:<br>
<br>
..\llvm\tools\clang\test\SemaCXX\attr-gnu.cpp:4:22: error: an<br>
attribute list cannot appear here<br>
  auto P = new int * __attribute__((vector_size(8))); // expected-error ...<br>
                     ^<br>
..\llvm\tools\clang\test\SemaCXX\attr-gnu.cpp:4:21: error: expected<br>
';' at end of declaration<br>
  auto P = new int * __attribute__((vector_size(8))); // expected-error ...<br>
                    ^<br>
                    ;<br>
..\llvm\tools\clang\test\SemaCXX\attr-gnu.cpp:4:22: warning:<br>
declaration does not declare anything [-Wmissing-declarations]<br>
  auto P = new int * __attribute__((vector_size(8))); // expected-error ...<br>
                     ^~~~~~~~~~~~~<br>
1 warning and 2 errors generated.<br>
<br>
The first diagnostic is obviously correct, but are the other two<br>
reasonable diagnostics as well?<br></blockquote><div><br></div><div>I would prefer for them to be suppressed: if you're in the GNUAttributesProhibited case and you see a GNU attribute, I think you should both parse it and diagnose it.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If the approach is reasonable, I'll clean the patch up, add more test<br>
cases, etc. I mostly wanted to check my direction first. Thanks!<br></blockquote><div><br></div><div>The direction looks good to me. I think your AttrRequirements enum could be made clearer (separate XAllowed and XProhibited flags seem a bit confusing at first -- perhaps XParsed and XParsedAndRejected or something along those lines might be clearer?)</div>
</div></div></div>