aaron.ballman added inline comments.

================
Comment at: clang/lib/Parse/ParseStmtAsm.cpp:704
+      AQ = DeclSpec::AQ_goto;
+    else {
+      if (EndLoc.isValid())
----------------
nickdesaulniers wrote:
> aaron.ballman wrote:
> > I would expect a diagnostic if the unknown token is anything other than a 
> > left paren.
> That currently is is handled by the caller, see `if (Tok.isNot(tok::l_paren)) 
> {` in `Parser::ParseAsmStatement` (line 762 of 
> clang/lib/Parse/ParseStmtAsm.cpp).
My suggestion is to move it out of the caller and into the helper. This 
function is expected to parse the asm qualifiers, so it stands to reason if it 
gets something other than an asm qualifier, it should diagnose. (We probably 
won't need to re-use this parsing logic in other contexts, but that's why it's 
better to have the diagnostic here rather than assume the caller will do it.)


================
Comment at: clang/lib/Parse/ParseStmtAsm.cpp:725
 /// [GNU] gnu-asm-statement:
-///         'asm' type-qualifier[opt] '(' asm-argument ')' ';'
+///         'asm' asm-qualifier[opt] '(' asm-argument ')' ';'
 ///
----------------
nickdesaulniers wrote:
> I guess this should be `asm-qualifier-list[opt]`?
Yup, good catch!


================
Comment at: clang/test/Parser/asm-qualifiers.c:12-14
+  asm noodle(""); // expected-error {{expected '(' after 'asm'}}
+  asm goto noodle("" ::::foo); // expected-error {{expected '(' after 'asm'}}
+  asm volatile noodle inline(""); // expected-error {{expected '(' after 
'asm'}}
----------------
I think these diagnostics should be improved as none of them suggest the 
underlying problem. As they read now, it sounds like you can write 
`asm(volatile noodle inline(""))` to appease the diagnostic.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75563/new/

https://reviews.llvm.org/D75563



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to