On 07/20/2017 02:33 PM, Andrew Sutton wrote: > This adds a new C++ dialect, enabled by -std=c++2a.
Hi Andrew, I happened to skim this patch and notice a couple issues. See below. > +/* Set the C++ 202a draft standard (without GNU extensions if ISO). */ > +static void > +set_std_cxx2a (int iso) > +{ > + cpp_set_lang (parse_in, iso ? CLK_CXX2A: CLK_GNUCXX2A); > + flag_no_gnu_keywords = iso; > + flag_no_nonansi_builtin = iso; > + flag_iso = iso; > + /* C++1z includes the C99 standard library. */ > + flag_isoc94 = 1; > + flag_isoc99 = 1; > + flag_isoc11 = 1; > + cxx_dialect = cxx2a; > + lang_hooks.name = "GNU C++17"; /* Pretend C++17 until standardization. */ Did you mean to write C++20 here? > --- a/libcpp/include/cpplib.h > +++ b/libcpp/include/cpplib.h > @@ -171,7 +171,8 @@ enum cpp_ttype > enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11, > CLK_STDC89, CLK_STDC94, CLK_STDC99, CLK_STDC11, > CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX11, CLK_CXX11, > - CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX1Z, CLK_CXX1Z, CLK_ASM}; > + CLK_GNUCXX14, CLK_CXX14, CLK_GNUCXX1Z, CLK_CXX1Z, > + CLK_GNUCXX2A, CLK_CXX2A, CLK_ASM}; Tabs vs spaces? > @@ -497,7 +499,10 @@ cpp_init_builtins (cpp_reader *pfile, int hosted) > > if (CPP_OPTION (pfile, cplusplus)) > { > - if (CPP_OPTION (pfile, lang) == CLK_CXX1Z > + if (CPP_OPTION (pfile, lang) == CLK_CXX2A > + || CPP_OPTION (pfile, lang) == CLK_GNUCXX2A) > + _cpp_define_builtin (pfile, "__cplusplus 201707L"); I think you wanted 202007L here. > + else if (CPP_OPTION (pfile, lang) == CLK_CXX1Z > || CPP_OPTION (pfile, lang) == CLK_GNUCXX1Z) > _cpp_define_builtin (pfile, "__cplusplus 201703L"); > else if (CPP_OPTION (pfile, lang) == CLK_CXX14 > Thanks, Pedro Alves