Index: cfe/trunk/lib/Parse/Parser.cpp =================================================================== --- cfe/trunk/lib/Parse/Parser.cpp +++ cfe/trunk/lib/Parse/Parser.cpp @@ -1253,6 +1253,10 @@ 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), Index: cfe/trunk/test/Parser/no-gnu-inline-asm.c =================================================================== --- cfe/trunk/test/Parser/no-gnu-inline-asm.c +++ cfe/trunk/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}}