]> granicus.if.org Git - clang/commitdiff
Add the mechanics for -fms-inline-asm. No easy way to test at this time.
authorChad Rosier <mcrosier@apple.com>
Fri, 20 Jul 2012 21:44:43 +0000 (21:44 +0000)
committerChad Rosier <mcrosier@apple.com>
Fri, 20 Jul 2012 21:44:43 +0000 (21:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160580 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Frontend/CodeGenOptions.h
lib/CodeGen/CGStmt.cpp
lib/Frontend/CompilerInvocation.cpp

index c8d6578b2965200185dc04cad39553cf3772878a..ecd86056e18246b7842a5f6901d16cd6cab09234 100644 (file)
@@ -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;
index 1d71cddb6fc977f2b8bf305a5421e2a59fab648a..26a31cdad4bae0f961de23ca7f3ad960b985c429 100644 (file)
@@ -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;
 }
index 544c0a270a03acd4b8a10f8f23244fe883053330..4f3f6bdcc9258ed0e2a3e9d11960b2def205afc7 100644 (file)
@@ -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);