[cfe-dev] clang::LangOption policy

Joshua Gerrard via cfe-dev cfe-dev at lists.llvm.org
Thu Oct 15 03:24:19 PDT 2015


Yes, I meant MSCompatibilityVersion (sorry about that).

I see your point about having the granularity available to the user; users
not want some tweaks whilst still wanting others.
However, it feels like a misnomer having a flag MSVCCompat that doesn't
enable everything needed to compile the Windows headers. Perhaps this is a
naming issue.

Does clang-cl have a function I can call into to get the appropriate flags
set (LangOptions and anything else that needs to be set)? If not, how would
you feel about me adding one? I feel this would make developing an
application that uses libclang for Windows easier, as you could simply
point them to that function.

Thanks for your input!

--
Joshua Gerrard
JUCE Software Developer

*ROLI’s **award-winning*
<http://www.telegraph.co.uk/luxury/design/31520/the-seaboard-grand-piano-wins-designs-of-the-year-2014-award.html>*
Seaboard
GRAND, celebrated as the “**piano of the future*
<http://edition.cnn.com/2013/09/27/tech/innovation/hans-zimmer-seaboard-future-piano/>*”,
is now joined by the **Seaboard RISE*
<https://www.youtube.com/watch?v=fGr7VbDiRNw>*, “**every bit as slimline
and attractive as its bigger brother*
<http://www.soundonsound.com/news?NewsID=18726>*”. The press is hailing the
Seaboard RISE as “**innovative*
<http://www.wired.co.uk/news/archive/2015-09/10/seaboard-rise-digital-keyboard-launch-uk-price>*”,
“**expressive*
<http://createdigitalmusic.com/2015/09/new-roli-instrument-wants-make-expressive-control-mainstream/>*”,
“**accessible*
<http://createdigitalmusic.com/2015/09/new-roli-instrument-wants-make-expressive-control-mainstream/>*”,
and “**a keyboard controller that does to piano keys what 3D touch does to
the iPhone*
<http://www.slashgear.com/roli-seaboard-rise-is-like-3d-touch-for-musicians-11404216/>*”.
Now available for preorder at **www.roli.com* <http://www.roli.com/>*.*


On 15 October 2015 at 11:08, David Majnemer <david.majnemer at gmail.com>
wrote:

>
>
> On Thu, Oct 15, 2015 at 12:59 AM, Joshua Gerrard via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>
>> So I've been working with clang as a library on Windows for a little
>> while now, and I'm noticed a few things that I'd like to change, but in
>> order to do so I need to know the "clang policy" for such things first.
>>
>> There is a flag, MSVCCompat, which as you probably know already, tweaks
>> some things so that clang works better on Windows.
>>
>> However, other flags are required, such as DelayedTemplateParsing, in
>> order for things to work. Now I understand that these need to be separate
>> flags so that users on other platforms can enable things like
>> DelayedTemplateParsing for other reasons, but as it stands enabling
>> MSVCCompat doesn't make clang compatible with Windows.
>>
>> As a result, I'd like to fix this problem by making things like
>> DelayedTemplateParsing take effect when MSVCCompat is turned on. However,
>> this would make it so that the "implied" flags would essentially have no
>> effect, and turning off DelayedTemplateParsing would not have any effect if
>> MSVCCompat was turned off.
>>
>
> I see our MSVC compatibility story a little differently.  We offer a
> multitude of flags which control different aspects of compatibility with
> MSVC:
> -fms-extensions
> -fms-compatibility
> -fdelayed-template-parsing
> -fms-compatibility-version/-fmsc-version
> -fthreadsafe-statics
> -relaxed-aliasing
> /vd0, /vd1, /vd2
> /vmg, /vmb, /vms, /vmv, /vmm
> ...
>
> While many (all?) of these flags have some effect on language conformance,
> there are perhaps two which have no discernible ABI impact (outside of,
> say, SFINAE): -fms-compatibility and -fdelayed-template-parsing.
>
> These two flags engage orthogonal pieces of our compatibility machinery
> and the intent is to ask users of clang to enable the bare minimum they
> need in the hopes that we would encourage authorship of code which is
> portable and free of reliance on compiler quirks.  -fms-compatibility is
> less bad than -fdelayed-template-parsing in my eyes in
> that -fdelayed-template-parsing will result in ASTs which have way worse
> fidelity.
>
> I think it is reasonable for tools like clang-cl to enable both flags by
> default due to it's fundamental nature but I don't think that's a decision
> we'd want to make for tools at large.
>
> At a rather fundamental level the tool really needs to know whether or not
> it should run the frontend with /vd2 or /vmv, some information must be
> supplied to us.  I would rather see tools actively make the decision to use
> -fdelayed-template-parsing instead of get opted into it.
>
>
>>
>> Furthermore, I can't see the point in having both a MSCompatibility flag
>> and a MSVCCompat flag; surely we should have one or the other?
>>
>
> I can't seem to find MSCompatibility as an identifier in clang's sources.
> However, I can find the similarly named MSCompatibilityVersion.
> MSCompatibilityVersion is intended to be useful outside of MSVCCompat:
> clang emitting MSVC-style diagnostics when targeting non-MSVC platforms is
> a not-uncommon thing; some versions of VisualStudio do the wrong thing and
> MSCompatibilityVersion lets us know if we should work around them (see
> Frontend/TextDiagnostic.cpp).
>
>
>>
>> How do you folks feel about this? I'd really like to make this my first
>> contribution to clang.
>>
>> --
>> Joshua Gerrard
>> JUCE Software Developer
>>
>> *ROLI’s **award-winning*
>> <http://www.telegraph.co.uk/luxury/design/31520/the-seaboard-grand-piano-wins-designs-of-the-year-2014-award.html>* Seaboard
>> GRAND, celebrated as the “**piano of the future*
>> <http://edition.cnn.com/2013/09/27/tech/innovation/hans-zimmer-seaboard-future-piano/>*”,
>> is now joined by the **Seaboard RISE*
>> <https://www.youtube.com/watch?v=fGr7VbDiRNw>*, “**every bit as slimline
>> and attractive as its bigger brother*
>> <http://www.soundonsound.com/news?NewsID=18726>*”. The press is hailing
>> the Seaboard RISE as “**innovative*
>> <http://www.wired.co.uk/news/archive/2015-09/10/seaboard-rise-digital-keyboard-launch-uk-price>*”,
>> “**expressive*
>> <http://createdigitalmusic.com/2015/09/new-roli-instrument-wants-make-expressive-control-mainstream/>*”,
>> “**accessible*
>> <http://createdigitalmusic.com/2015/09/new-roli-instrument-wants-make-expressive-control-mainstream/>*”,
>> and “**a keyboard controller that does to piano keys what 3D touch does
>> to the iPhone*
>> <http://www.slashgear.com/roli-seaboard-rise-is-like-3d-touch-for-musicians-11404216/>*”.
>> Now available for preorder at **www.roli.com* <http://www.roli.com/>*.*
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20151015/d8fa9b6a/attachment.html>


More information about the cfe-dev mailing list