diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Parse/Parser.cpp | 4 | ||||
| -rw-r--r-- | clang/test/Parser/no-gnu-inline-asm.c | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp index 3b56102dcfa..81adbfba8b2 100644 --- a/clang/lib/Parse/Parser.cpp +++ b/clang/lib/Parse/Parser.cpp @@ -1253,6 +1253,10 @@ ExprResult Parser::ParseSimpleAsm(SourceLocation *EndLoc) { assert(Tok.is(tok::kw_asm) && "Not an asm!"); SourceLocation Loc = ConsumeToken(); + // Check if GNU-styple InlineAsm is disabled. + if (!getLangOpts().GNUAsm) + Diag(Loc, diag::err_gnu_inline_asm_disabled); + if (Tok.is(tok::kw_volatile)) { // Remove from the end of 'asm' to the end of 'volatile'. SourceRange RemovalRange(PP.getLocForEndOfToken(Loc), diff --git a/clang/test/Parser/no-gnu-inline-asm.c b/clang/test/Parser/no-gnu-inline-asm.c index 78f470fa668..d73d6123a0e 100644 --- a/clang/test/Parser/no-gnu-inline-asm.c +++ b/clang/test/Parser/no-gnu-inline-asm.c @@ -1,5 +1,6 @@ // RUN: %clang_cc1 %s -triple i686-apple-darwin -verify -fsyntax-only -fno-gnu-inline-asm +asm ("INST r1, 0"); // expected-error {{GNU-style inline assembly is disabled}} void f (void) { long long foo = 0, bar; asm volatile("INST %0, %1" : "=r"(foo) : "r"(bar)); // expected-error {{GNU-style inline assembly is disabled}} |

