summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-12-05 23:08:09 +0000
committerChad Rosier <mcrosier@apple.com>2012-12-05 23:08:09 +0000
commit636386753a48af2303b1f267086980b926ae6d8e (patch)
treef1bbb5323b55196de81e97877cee440809a01243
parent727e392a459deaafd4710eaca58ba42fc845e46e (diff)
downloadbcm5719-llvm-636386753a48af2303b1f267086980b926ae6d8e.tar.gz
bcm5719-llvm-636386753a48af2303b1f267086980b926ae6d8e.zip
[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 llvm-svn: 169445
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp2
-rw-r--r--clang/test/Parser/MicrosoftExtensions.c9
2 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 9da28e5d026..7be5e57b6e8 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/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/clang/test/Parser/MicrosoftExtensions.c b/clang/test/Parser/MicrosoftExtensions.c
index a8e7b8950de..7703999d67c 100644
--- a/clang/test/Parser/MicrosoftExtensions.c
+++ b/clang/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() {
OpenPOWER on IntegriCloud