RFC: Default language standard mode policy

Sean Silva via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 29 13:35:25 PDT 2016


On Wed, Jun 29, 2016 at 1:34 PM, Sean Silva <chisophugis at gmail.com> wrote:

>
>
> On Wed, Jun 29, 2016 at 12:51 PM, Richard Smith <richard at metafoo.co.uk>
> wrote:
>
>> On Wed, Jun 29, 2016 at 12:30 PM, Sean Silva <chisophugis at gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Wed, Jun 29, 2016 at 12:09 PM, Richard Smith via cfe-commits <
>>> cfe-commits at lists.llvm.org> wrote:
>>>
>>>> Hi all!
>>>>
>>>> I'd like to establish a policy for Clang's default language standard
>>>> (if none is specified with -std), as follows:
>>>>
>>>>   Clang defaults to the most recent published standard for the selected
>>>> language that it fully implements.
>>>>
>>>> The practical impact of this is that clang++ will default to C++14 for
>>>> C++ compilations (for version 3.9 onwards) and will default to C++17 once
>>>> our implementation support is complete and the standard is published
>>>> (whichever happens later).
>>>>
>>>> I'd suggest that we apply the same policy for clang-cl, but if it's
>>>> important that we enable a not-yet-fully-implemented standard for cl
>>>> compatibility, that seems reasonable.
>>>>
>>>> The question of whether the default mode for the GCC-compatible driver
>>>> should be -std=gnuXXX or -std=cXXX is separate, but also likely worth
>>>> discussing. Enabling GNU keywords by default is a very odd choice, and if
>>>> we believe we can change our defaults without breaking the world then this
>>>> seems like a good time to do so.
>>>>
>>>
>>> Using cXXX instead of gnuXXX would break the world on PS4. So for sure
>>> with `-std=c++latest` we would end up proposing a patch to change this for
>>> the PS4 target to gnu++latest (or gnu++11 if gnu++latest is not feasible).
>>>
>>
>> OK. Out of interest, is it the GNU keywords that you need, or some other
>> effect of the difference between modes?
>>
>
> A quick check of two titles I have at hand shows that at least `typeof` is
> in use.
>

(this check consisted of using -std=c++11 instead of -std=gnu++11 and
seeing what breaks)

-- Sean Silva


>
> -- Sean Silva
>
>
>>
>>
>>> (As I'm sure you're aware, we have pending to upstream a patch that
>>> makes -std=gnu++11 the default C++ language mode on PS4 (just blocked on
>>> fixing tests to not assume the existing std)).
>>>
>>> It may be feasible for us to use a "-std=gnu++latest" behavior and not
>>> have to have a PS4-specific default; CC'ing Warren and Paul.
>>>
>>> -- Sean Silva
>>>
>>>
>>>>
>>>> I also intend to make explicit in our documentation that our -std=XXX
>>>> flag enables the selected standard, *plus all relevant issues in Defect
>>>> Report status from the relevant language committee* (it doesn't make sense
>>>> to support a language without its bugfixes).
>>>>
>>>> Thoughts?
>>>>
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> cfe-commits at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160629/755a9b9f/attachment.html>


More information about the cfe-commits mailing list