[PATCH] Add cc1 option -fconcepts-ts + feature test macro
Michael Wong
fraggamuffin at gmail.com
Fri May 22 16:30:14 PDT 2015
Lgtm
Sent from my iPad
> On May 22, 2015, at 7:34 PM, Richard Smith <richard at metafoo.co.uk> wrote:
>
> On 21 May 2015 6:20 pm, "Faisal Vali" <faisalv at gmail.com> wrote:
> >
> > Committed as r237982.
> >
> > http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150518/129643.html
> >
> > Richard - are you ok with us proceeding like this (for tiny innocuous
> > patches), until Hubert gets his access?
>
> Yes, that seems fine.
>
> > Thanks!
> >
> > Faisal Vali
> >
> >
> >
> > On Thu, May 21, 2015 at 8:06 AM, Hubert Tong
> > <hubert.reinterpretcast at gmail.com> wrote:
> > > Hi rsmith, faisalv, fraggamuffin, rcraik,
> > >
> > > This adds `-fconcepts-ts` as a `cc1` option for enabling the
> > > in-progress implementation of the Concepts TS. The recommended feature
> > > test macro `__cpp_experimental_concepts` is set to `1` (as opposed to
> > > `201501`) to indicate that the feature is enabled, but the
> > > implementation is incomplete.
> > >
> > > The link to the Concepts TS in `cxx_status` is updated to refer to the
> > > PDTS (N4377). Additional changes related to `__has_feature` and
> > > `__has_extension` are to follow in a later change.
> > >
> > > http://reviews.llvm.org/D9909
> > >
> > > Files:
> > > include/clang/Basic/LangOptions.def
> > > include/clang/Driver/CC1Options.td
> > > lib/Frontend/CompilerInvocation.cpp
> > > lib/Frontend/InitPreprocessor.cpp
> > > test/Lexer/cxx-features.cpp
> > > www/cxx_status.html
> > >
> > > Index: include/clang/Basic/LangOptions.def
> > > ===================================================================
> > > --- include/clang/Basic/LangOptions.def
> > > +++ include/clang/Basic/LangOptions.def
> > > @@ -167,6 +167,7 @@
> > >
> > > LANGOPT(AssumeSaneOperatorNew , 1, 1, "implicit __attribute__((malloc)) for C++'s new operators")
> > > LANGOPT(SizedDeallocation , 1, 0, "enable sized deallocation functions")
> > > +LANGOPT(ConceptsTS , 1, 0, "enable C++ Extensions for Concepts")
> > > BENIGN_LANGOPT(ElideConstructors , 1, 1, "C++ copy constructor elision")
> > > BENIGN_LANGOPT(DumpRecordLayouts , 1, 0, "dumping the layout of IRgen'd records")
> > > BENIGN_LANGOPT(DumpRecordLayoutsSimple , 1, 0, "dumping the layout of IRgen'd records in a simple form")
> > > Index: include/clang/Driver/CC1Options.td
> > > ===================================================================
> > > --- include/clang/Driver/CC1Options.td
> > > +++ include/clang/Driver/CC1Options.td
> > > @@ -365,6 +365,8 @@
> > > Flag<["-"], "fmodules-local-submodule-visibility">,
> > > HelpText<"Enforce name visibility rules across submodules of the same "
> > > "top-level module.">;
> > > +def fconcepts_ts : Flag<["-"], "fconcepts-ts">,
> > > + HelpText<"Enable C++ Extensions for Concepts.">;
> > >
> > > let Group = Action_Group in {
> > >
> > > Index: lib/Frontend/CompilerInvocation.cpp
> > > ===================================================================
> > > --- lib/Frontend/CompilerInvocation.cpp
> > > +++ lib/Frontend/CompilerInvocation.cpp
> > > @@ -1537,6 +1537,7 @@
> > > Opts.NoMathBuiltin = Args.hasArg(OPT_fno_math_builtin);
> > > Opts.AssumeSaneOperatorNew = !Args.hasArg(OPT_fno_assume_sane_operator_new);
> > > Opts.SizedDeallocation = Args.hasArg(OPT_fsized_deallocation);
> > > + Opts.ConceptsTS = Args.hasArg(OPT_fconcepts_ts);
> > > Opts.HeinousExtensions = Args.hasArg(OPT_fheinous_gnu_extensions);
> > > Opts.AccessControl = !Args.hasArg(OPT_fno_access_control);
> > > Opts.ElideConstructors = !Args.hasArg(OPT_fno_elide_constructors);
> > > Index: lib/Frontend/InitPreprocessor.cpp
> > > ===================================================================
> > > --- lib/Frontend/InitPreprocessor.cpp
> > > +++ lib/Frontend/InitPreprocessor.cpp
> > > @@ -453,6 +453,8 @@
> > > }
> > > if (LangOpts.SizedDeallocation)
> > > Builder.defineMacro("__cpp_sized_deallocation", "201309");
> > > + if (LangOpts.ConceptsTS)
> > > + Builder.defineMacro("__cpp_experimental_concepts", "1");
> > > }
> > >
> > > static void InitializePredefinedMacros(const TargetInfo &TI,
> > > Index: test/Lexer/cxx-features.cpp
> > > ===================================================================
> > > --- test/Lexer/cxx-features.cpp
> > > +++ test/Lexer/cxx-features.cpp
> > > @@ -1,6 +1,7 @@
> > > // RUN: %clang_cc1 -std=c++98 -verify %s
> > > // RUN: %clang_cc1 -std=c++11 -verify %s
> > > // RUN: %clang_cc1 -std=c++1y -fsized-deallocation -verify %s
> > > +// RUN: %clang_cc1 -std=c++1y -fsized-deallocation -fconcepts-ts -DCONCEPTS_TS=1 -verify %s
> > >
> > > // expected-no-diagnostics
> > >
> > > @@ -123,3 +124,7 @@
> > > #if check(alias_templates, 0, 200704, 200704)
> > > #error "wrong value for __cpp_alias_templates"
> > > #endif
> > > +
> > > +#if check(experimental_concepts, 0, 0, CONCEPTS_TS)
> > > +#error "wrong value for __cpp_experimental_concepts"
> > > +#endif
> > > Index: www/cxx_status.html
> > > ===================================================================
> > > --- www/cxx_status.html
> > > +++ www/cxx_status.html
> > > @@ -631,7 +631,7 @@
> > > </tr>
> > > <tr>
> > > <td>[DRAFT TS] Concepts</td>
> > > - <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3929.pdf">N3929</a></td>
> > > + <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4377.pdf">N4377</a></td>
> > > <td class="none" align="center">No</td>
> > > </tr>
> > > </table>
> > >
> > > EMAIL PREFERENCES
> > > http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150523/3d1a3104/attachment.html>
More information about the cfe-commits
mailing list