[PATCH] D52339: Support enums with a fixed underlying type in all language modes

Erik Pilkington via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Sep 21 10:31:22 PDT 2018


erik.pilkington added a comment.

In https://reviews.llvm.org/D52339#1242126, @aaron.ballman wrote:

> In https://reviews.llvm.org/D52339#1242118, @jfb wrote:
>
> > In https://reviews.llvm.org/D52339#1242103, @aaron.ballman wrote:
> >
> > > In https://reviews.llvm.org/D52339#1242086, @jfb wrote:
> > >
> > > > I think we should consider proposing this to the C committee. @aaron.ballman I can help Erik write the paper, would you be able to present it? Too tight for the upcoming meeting, but I'm guessing we have *plenty* of time for ++C17.
> > >
> > >
> > > It's already been proposed to WG14 and is currently on the SD-3 list of features to consider for C2x. See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2008.pdf. I know Clive and am happy to point him towards this patch (when it lands) as demonstration of industry desire for the feature, in case he needs to provide updated papers.
> >
> >
> > Wonderful! Does this match he proposed C2x semantics? Once voted in we'll want to change this from just an extension to also be a `-std=c2x` thing, better have them match now.
>
>
> I have to validate that still, but from a quick look, I think we're in the ballpark if not outright compatible.


>From the last line in the paper, it seems that C++ compatibility is a goal of the paper (or at least a consideration). We should probably think about this if/when the final wording gets accepted though.



================
Comment at: clang/include/clang/Basic/Features.def:90
 FEATURE(objc_default_synthesize_properties, LangOpts.ObjC2)
-FEATURE(objc_fixed_enum, LangOpts.ObjC2)
+FEATURE(objc_fixed_enum, true)
 FEATURE(objc_instancetype, LangOpts.ObjC2)
----------------
aaron.ballman wrote:
> Is this really supported in ObjC1, or is there no longer a distinction to be made there?
I suppose it's a first class feature in ObjC2, but an extension in ObjC1. On second thought I should probably not change this, because ObjC1 doesn't have this as a feature, although it does have it as an extension. 


================
Comment at: clang/include/clang/Basic/Features.def:233
 EXTENSION(cxx_variadic_templates, LangOpts.CPlusPlus)
+EXTENSION(cxx_fixed_enum, true)
 // C++14 features supported by other languages as extensions.
----------------
aaron.ballman wrote:
> Are we sure we want to make this decision for things like OpenCL, Cuda, etc?
I can't think of any reason why not, seems there are a handful of other EXTENSION(*, true) features. Do you have a preference?


Repository:
  rC Clang

https://reviews.llvm.org/D52339





More information about the cfe-commits mailing list