From: Akira Hatanaka Date: Thu, 12 Nov 2015 17:21:22 +0000 (+0000) Subject: Add support for driver option -mno-ms-bitfields. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=89b2048244e905ccbf025f5177354b97184e4bed;p=clang Add support for driver option -mno-ms-bitfields. This option is used to cancel -mms-bitfields on the command line. rdar://problem/15898553 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252912 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 254dfcfb3c..4ebde1f797 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -1273,6 +1273,8 @@ def mmacosx_version_min_EQ : Joined<["-"], "mmacosx-version-min=">, Group, HelpText<"Set Mac OS X deployment target">; def mms_bitfields : Flag<["-"], "mms-bitfields">, Group, Flags<[CC1Option]>, HelpText<"Set the default structure layout to be compatible with the Microsoft compiler standard">; +def mno_ms_bitfields : Flag<["-"], "mno-ms-bitfields">, Group, + HelpText<"Do not set the default structure layout to be compatible with the Microsoft compiler standard">; def mstackrealign : Flag<["-"], "mstackrealign">, Group, Flags<[CC1Option]>, HelpText<"Force realign the stack at entry to every function">; def mstack_alignment : Joined<["-"], "mstack-alignment=">, Group, Flags<[CC1Option]>, diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index e25321bac2..e821de5520 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -3713,7 +3713,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (KernelOrKext && getToolChain().getTriple().isOSDarwin()) CmdArgs.push_back("-fforbid-guard-variables"); - if (Args.hasArg(options::OPT_mms_bitfields)) { + if (Args.hasFlag(options::OPT_mms_bitfields, options::OPT_mno_ms_bitfields, + false)) { CmdArgs.push_back("-mms-bitfields"); } diff --git a/test/Driver/ms-bitfields.c b/test/Driver/ms-bitfields.c new file mode 100644 index 0000000000..4b24b6bc38 --- /dev/null +++ b/test/Driver/ms-bitfields.c @@ -0,0 +1,6 @@ +// RUN: %clang -### %s 2>&1 | FileCheck %s -check-prefix=NO-MSBITFIELDS +// RUN: %clang -### -mno-ms-bitfields -mms-bitfields %s 2>&1 | FileCheck %s -check-prefix=MSBITFIELDS +// RUN: %clang -### -mms-bitfields -mno-ms-bitfields %s 2>&1 | FileCheck %s -check-prefix=NO-MSBITFIELDS + +// MSBITFIELDS: -mms-bitfields +// NO-MSBITFIELDS-NOT: -mms-bitfields