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

Reply via email to