r199247 - Clarify driver/frontend -fms-compatibility help text

Nico Weber thakis at chromium.org
Wed Jan 15 11:42:43 PST 2014


On Wed, Jan 15, 2014 at 3:17 AM, Alp Toker <alp at nuanti.com> wrote:

>
> On 15/01/2014 05:59, Nico Weber wrote:
>
>  On Tue, Jan 14, 2014 at 11:13 AM, Alp Toker <alp at nuanti.com> wrote:
>
>> Author: alp
>> Date: Tue Jan 14 13:13:00 2014
>> New Revision: 199247
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=199247&view=rev
>> Log:
>> Clarify driver/frontend -fms-compatibility help text
>>
>> Better describe the flag that enables drop-in MSVC compatibility,
>> including
>> ability to parse MS standard headers. This is intended to distinguish it
>> from
>> -fms-extensions, the more established and 'gentler' flag also supported
>> by GCC.
>>
>> The new wording matches up with the internal description introduced in
>> r198936.
>> Still room for improvement (e.g. C++ is part of the product name, yet the
>> flag
>> also applies to C) but it's a step forward from "Microsoft mode".
>>
>> Modified:
>>     cfe/trunk/include/clang/Driver/Options.td
>>
>> Modified: cfe/trunk/include/clang/Driver/Options.td
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=199247&r1=199246&r2=199247&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Driver/Options.td (original)
>> +++ cfe/trunk/include/clang/Driver/Options.td Tue Jan 14 13:13:00 2014
>> @@ -575,9 +575,9 @@ def fmessage_length_EQ : Joined<["-"], "
>>  def fms_extensions : Flag<["-"], "fms-extensions">, Group<f_Group>,
>> Flags<[CC1Option]>,
>>    HelpText<"Accept some non-standard constructs supported by the
>> Microsoft compiler">;
>>  def fms_compatibility : Flag<["-"], "fms-compatibility">,
>> Group<f_Group>, Flags<[CC1Option]>,
>> -  HelpText<"Enable Microsoft compatibility mode">;
>> +  HelpText<"Enable full Microsoft Visual C++ compatibility">;
>>
>
>  Isn't "full" too strong? I thought this was more "enough to parse ms sdk
> headers and link to mscrt", not "full" compatibility.
>
>
> It isn't perfect, but we ran through a lot of options and this is the only
> one that standard.
>
> In so far as it enables the "full" set of compatibility features this one
> works well.
>
>
> Other options evaluated:
>
>
>    - "drop-in": Sounds like a knock off or clone, and could be taken
>    literally (I deleted cl.exe and dropped it in!)
>    - "seamless": Implies subtlety and non-breaking of existing code,
>    which isn't always the case.
>    - No word: Same problem as 'seamless'. "Compatible with existing code,
>    or compatible with MSVC?"
>    - "mode": There are other modes which only make minor changes to the
>    parser -- this didn't work out in past
>    - "Microsoft system headers": none -fms-compatibility is currently
>    restricted to system headers -- it fully changes the behaviour of the
>    compiler in various ways.
>
>
> Also, facepalm link:
>
>   "Clang does't compile gcc compatible c++ code? -fms-compatibility is
> your friend"
>
> http://codingdave.blogspot.co.uk/2012/08/clang-doest-compile-gcc-compatible-c.html
>
> *"Although this parameter was introduced to make clang compile visual c++
> headers, it also fixes problems like the one above."*
>
> That's why we'd do well to move away from the "ms sdk header" wording
> (even if it's the current goal).
>

Yeah. With the "full compat" text, I'm afraid that people will keep doing
this and file bugs on clang if their code doesn't build with -fms-compat
even though it builds with cl.


> I think it's about right now, but suggestions on the back of a postcard
> welcome.
>

To me the difference between -fms-extensions and -ms-compat is that the
first enables some relatively harmless things, while the latter enables
things that actively contradict the standard, so I'd try to express this in
the help text somehow.

(But I realize this is a bikeshed topic, so I'll be happy with whatever you
decide to do, including "no action".)


>
> Alp.
>
>
>
>
>
>>  def fmsc_version : Joined<["-"], "fmsc-version=">, Group<f_Group>,
>> Flags<[CC1Option, CoreOption]>,
>> -  HelpText<"Version of the Microsoft C/C++ compiler to report in
>> _MSC_VER (0 = don't define it (default))">;
>> +  HelpText<"Microsoft compiler version number to report in _MSC_VER (0 =
>> don't define it (default))">;
>>  def fdelayed_template_parsing : Flag<["-"],
>> "fdelayed-template-parsing">, Group<f_Group>,
>>    HelpText<"Parse templated function definitions at the end of the "
>>             "translation unit">,  Flags<[CC1Option]>;
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
>
> -- http://www.nuanti.com
> the browser experts
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140115/e007a463/attachment.html>


More information about the cfe-commits mailing list