aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-07-20 21:44:43 +0000
committerChad Rosier <mcrosier@apple.com>2012-07-20 21:44:43 +0000
commit89770e5640dd5039569ecdc64c61acd9aa22cff9 (patch)
treedb4cbdcc22f21ab042786a4fd6ed29eca76ccc0c
parentae99b75fbbac1deaccdcc1b326b8fb6b07a1e72d (diff)
Add the mechanics for -fms-inline-asm. No easy way to test at this time.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160580 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Frontend/CodeGenOptions.h3
-rw-r--r--lib/CodeGen/CGStmt.cpp2
-rw-r--r--lib/Frontend/CompilerInvocation.cpp1
3 files changed, 6 insertions, 0 deletions
diff --git a/include/clang/Frontend/CodeGenOptions.h b/include/clang/Frontend/CodeGenOptions.h
index c8d6578b29..ecd86056e1 100644
--- a/include/clang/Frontend/CodeGenOptions.h
+++ b/include/clang/Frontend/CodeGenOptions.h
@@ -72,6 +72,8 @@ public:
unsigned EmitGcovArcs : 1; ///< Emit coverage data files, aka. GCDA.
unsigned EmitGcovNotes : 1; ///< Emit coverage "notes" files, aka GCNO.
unsigned EmitOpenCLArgMetadata : 1; /// Emit OpenCL kernel arg metadata.
+ unsigned EmitMicrosoftInlineAsm : 1; ///< Enable emission of MS-style inline
+ ///< assembly.
unsigned ForbidGuardVariables : 1; ///< Issue errors if C++ guard variables
///< are required
unsigned FunctionSections : 1; ///< Set when -ffunction-sections is enabled
@@ -201,6 +203,7 @@ public:
EmitGcovArcs = 0;
EmitGcovNotes = 0;
EmitOpenCLArgMetadata = 0;
+ EmitMicrosoftInlineAsm = 0;
ForbidGuardVariables = 0;
FunctionSections = 0;
HiddenWeakTemplateVTables = 0;
diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp
index 1d71cddb6f..26a31cdad4 100644
--- a/lib/CodeGen/CGStmt.cpp
+++ b/lib/CodeGen/CGStmt.cpp
@@ -1684,4 +1684,6 @@ void CodeGenFunction::EmitAsmStmt(const AsmStmt &S) {
void CodeGenFunction::EmitMSAsmStmt(const MSAsmStmt &S) {
// MS-style inline assembly is not fully supported, so sema emits a warning.
+ if (!CGM.getCodeGenOpts().EmitMicrosoftInlineAsm)
+ return;
}
diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp
index 544c0a270a..4f3f6bdcc9 100644
--- a/lib/Frontend/CompilerInvocation.cpp
+++ b/lib/Frontend/CompilerInvocation.cpp
@@ -1261,6 +1261,7 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
Opts.EmitGcovArcs = Args.hasArg(OPT_femit_coverage_data);
Opts.EmitGcovNotes = Args.hasArg(OPT_femit_coverage_notes);
Opts.EmitOpenCLArgMetadata = Args.hasArg(OPT_cl_kernel_arg_info);
+ Opts.EmitMicrosoftInlineAsm = Args.hasArg(OPT_fms_inline_asm);
Opts.CoverageFile = Args.getLastArgValue(OPT_coverage_file);
Opts.DebugCompilationDir = Args.getLastArgValue(OPT_fdebug_compilation_dir);
Opts.LinkBitcodeFile = Args.getLastArgValue(OPT_mlink_bitcode_file);