On Wed, 28 Aug 2024, Jason Merrill wrote:

> Tested x86_64-pc-linux-gnu.  Any objections?  Should I change all the other
> instances of
> 
> if (CPP_PEDANTIC...
>   cpp_error (...CPP_DL_PEDWARN
> 
> the same way?

Yes, I think that's a good change.

A followup question might be whether cases such as the unchanged code in

> -      if (!CPP_OPTION (pfile, binary_constants)
> -       && CPP_PEDANTIC (pfile))
> -     cpp_error_with_line (pfile, CPP_DL_PEDWARN, virtual_location, 0,
> -                          CPP_OPTION (pfile, cplusplus)
> -                          ? N_("binary constants are a C++14 feature "
> -                               "or GCC extension")
> -                          : N_("binary constants are a C23 feature "
> -                               "or GCC extension"));
> +      if (!CPP_OPTION (pfile, binary_constants))
> +     cpp_pedwarning_with_line (pfile, CPP_W_PEDANTIC, virtual_location, 0,
> +                               CPP_OPTION (pfile, cplusplus)
> +                               ? N_("binary constants are a C++14 feature "
> +                                    "or GCC extension")
> +                               : N_("binary constants are a C23 feature "
> +                                    "or GCC extension"));
>        else if (CPP_OPTION (pfile, cpp_warn_c11_c23_compat) > 0)
>       cpp_warning_with_line (pfile, CPP_W_C11_C23_COMPAT,
>                              virtual_location, 0,

could be refactored to reduce duplication (the C front end has pedwarn_c11 
for such cases of features added in C23, that can be a pedwarn-if-pedantic 
up to C11, or a warning with -Wc11-c23-compat).  Though libcpp handling 
both C and C++, and the use of conditionals such as CPP_OPTION (pfile, 
binary_constants) for individual features, might make that hard.

-- 
Joseph S. Myers
josmy...@redhat.com

Reply via email to