From 89770e5640dd5039569ecdc64c61acd9aa22cff9 Mon Sep 17 00:00:00 2001 From: Chad Rosier Date: Fri, 20 Jul 2012 21:44:43 +0000 Subject: [PATCH] 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 --- include/clang/Frontend/CodeGenOptions.h | 3 +++ lib/CodeGen/CGStmt.cpp | 2 ++ lib/Frontend/CompilerInvocation.cpp | 1 + 3 files changed, 6 insertions(+) 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); -- 2.40.0