[cfe-dev] clang::LangOption policy

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


>
> I think you've hit the nail on the head, MSVCCompat is poorly named in our
> big sea of compatibility options.


Glad you agree! I need to spend some time working out what it actually does
in order to think of a better name now.

What might be useful is adding a dump method to LangOptions which would let
> you examine how particular invocations of clang/clang-cl have it configured
> under different flags.


It'll certainly be a start, yes. It'll also be a good way for me to get
started contributing some source!

I'll start poking around these two issues now.


--
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:35, David Majnemer <david.majnemer at gmail.com>
wrote:

>
>
> On Thu, Oct 15, 2015 at 3:24 AM, Joshua Gerrard <joshua.gerrard at roli.com>
> wrote:
>
>> 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.
>>
>
> I think you've hit the nail on the head, MSVCCompat is poorly named in our
> big sea of compatibility options.
>
>
>>
>> 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.
>>
>
> What might be useful is adding a dump method to LangOptions which would
> let you examine how particular invocations of clang/clang-cl have it
> configured under different flags.
>
>
>>
>> Thanks for your input!
>>
>
> Happy to help :)
>
>
>>
>> --
>> 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/2993644e/attachment.html>


More information about the cfe-dev mailing list