diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-07-20 21:20:33 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-07-20 21:20:33 +0000 |
commit | f925e0414d76d39d612d54d233e9fa2ee04b0a27 (patch) | |
tree | d0210760cf1dccf1681a8b1be01d755128b792d7 | |
parent | 4914c2897bb8beb5e15b2a0bf3e72d78da0706ae (diff) |
Add a new flag, -fms-inline-asm, that enables the output of MS-style inline
assembly.
By default, we don't emit IR for MS-style inline assembly (see r158833 as to
why). This is strictly for testing purposes and should not be enabled with the
expectation that things will work. This is a temporary flag and will be removed
once MS-style inline assembly is fully supported.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160573 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Driver/CC1Options.td | 2 | ||||
-rw-r--r-- | include/clang/Driver/Options.td | 2 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 4 | ||||
-rw-r--r-- | test/Driver/clang_f_opts.c | 3 |
4 files changed, 11 insertions, 0 deletions
diff --git a/include/clang/Driver/CC1Options.td b/include/clang/Driver/CC1Options.td index 8fd3166ebe..97884de2aa 100644 --- a/include/clang/Driver/CC1Options.td +++ b/include/clang/Driver/CC1Options.td @@ -338,6 +338,8 @@ def rewrite_macros : Flag<"-rewrite-macros">, HelpText<"Expand macros without full preprocessing">; def migrate : Flag<"-migrate">, HelpText<"Migrate source code">; +def emit_ms_asm : Flag<"-enable-ms-asm">, + HelpText<"Enable MS-style inline assembly">; } def mt_migrate_directory : Separate<"-mt-migrate-directory">, diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 0c4760bbb9..a655826ba0 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -454,6 +454,8 @@ def fmerge_all_constants : Flag<"-fmerge-all-constants">, Group<f_Group>; def fmessage_length_EQ : Joined<"-fmessage-length=">, Group<f_Group>; def fms_extensions : Flag<"-fms-extensions">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Accept some non-standard constructs supported by the Microsoft compiler">; +def fms_inline_asm : Flag<"-fms-inline-asm">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Enable support for Microsoft style inine assembly">; def fms_compatibility : Flag<"-fms-compatibility">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Enable Microsoft compatibility mode">; def fmsc_version : Joined<"-fmsc-version=">, Group<f_Group>, Flags<[CC1Option]>, diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index e07068aea1..5c00a7f591 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -2456,6 +2456,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, getToolChain().getTriple().getOS() == llvm::Triple::Win32)) CmdArgs.push_back("-fms-extensions"); + // -fms-inline-asm. + if (Args.hasArg(options::OPT_fms_inline_asm)) + CmdArgs.push_back("-fms-inline-asm"); + // -fms-compatibility=0 is default. if (Args.hasFlag(options::OPT_fms_compatibility, options::OPT_fno_ms_compatibility, diff --git a/test/Driver/clang_f_opts.c b/test/Driver/clang_f_opts.c index b74b285501..621026eeeb 100644 --- a/test/Driver/clang_f_opts.c +++ b/test/Driver/clang_f_opts.c @@ -35,3 +35,6 @@ // RUN: %clang -### -S -ffp-contract=off %s 2>&1 | FileCheck -check-prefix=FP-CONTRACT-OFF-CHECK %s // FP-CONTRACT-FAST-CHECK: -ffp-contract=fast // FP-CONTRACT-OFF-CHECK: -ffp-contract=off + +// RUN: %clang -fms-extensions -fms-inline-asm %s -### 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS3 %s +// CHECK-OPTIONS3: -fms-inline-asm |