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? Thanks! Faisal Vali On Thu, May 21, 2015 at 8:06 AM, Hubert Tong <[email protected]> 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/ _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
