]> granicus.if.org Git - clang/commitdiff
[driver, ms-inline asm] Have -fms-extensions enable the AsmBlocks language
authorChad Rosier <mcrosier@apple.com>
Wed, 5 Dec 2012 23:08:09 +0000 (23:08 +0000)
committerChad Rosier <mcrosier@apple.com>
Wed, 5 Dec 2012 23:08:09 +0000 (23:08 +0000)
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

lib/Frontend/CompilerInvocation.cpp
test/Parser/MicrosoftExtensions.c

index 9da28e5d026a7a38529960f630425ead04deb593..7be5e57b6e8aa1132102cd0eec83f809a7058929 100644 (file)
@@ -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);
index a8e7b8950de1da70cbce05ada60856a198c1ca90..7703999d67ce6543398d8a7edb3f3fdb7f996377 100644 (file)
@@ -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() {