From: Chad Rosier Date: Wed, 5 Dec 2012 23:08:09 +0000 (+0000) Subject: [driver, ms-inline asm] Have -fms-extensions enable the AsmBlocks language X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e23fbf1fca9be5653ca706ccefc31d5e5a3a334d;p=clang [driver, ms-inline asm] Have -fms-extensions enable the AsmBlocks language option. MS-style inline asm can now be enabled by either -fasm-blocks or -fms-extensions. rdar://12808010 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169445 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 9da28e5d02..7be5e57b6e 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -1172,7 +1172,7 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK, Opts.MicrosoftExt = Args.hasArg(OPT_fms_extensions) || Args.hasArg(OPT_fms_compatibility); Opts.MicrosoftMode = Args.hasArg(OPT_fms_compatibility); - Opts.AsmBlocks = Args.hasArg(OPT_fasm_blocks); + Opts.AsmBlocks = Args.hasArg(OPT_fasm_blocks) || Args.hasArg(OPT_fms_extensions); Opts.MSCVersion = Args.getLastArgIntValue(OPT_fmsc_version, 0, Diags); Opts.Borland = Args.hasArg(OPT_fborland_extensions); Opts.WritableStrings = Args.hasArg(OPT_fwritable_strings); diff --git a/test/Parser/MicrosoftExtensions.c b/test/Parser/MicrosoftExtensions.c index a8e7b8950d..7703999d67 100644 --- a/test/Parser/MicrosoftExtensions.c +++ b/test/Parser/MicrosoftExtensions.c @@ -18,6 +18,15 @@ void * __ptr32 PtrToPtr32(const void *p) return((void * __ptr32) (unsigned __int32) (ULONG_PTR)p ); } +void __forceinline InterlockedBitTestAndSet (long *Base, long Bit) +{ + __asm { // expected-warning {{MS-style inline assembly is not supported}} + mov eax, Bit + mov ecx, Base + lock bts [ecx], eax + setc al + }; +} _inline int foo99() { return 99; } void test_ms_alignof_alias() {