https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64867

--- Comment #20 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #17)
> This adds -Wnon-pod-varargs, enabled by -Wconditionally-supported, allowing
> e.g.
> -Wconditionally-supported -Werror=non-pod-varargs
> 
> diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
> index 3435fe90cca..b6ac29cda64 100644
> --- a/gcc/c-family/c.opt
> +++ b/gcc/c-family/c.opt
> @@ -714,6 +714,10 @@ Wnamespaces
>  C++ ObjC++ Var(warn_namespaces) Warning
>  Warn on namespace definition.
>  
> +Wnon-pod-varargs
> +C++ ObjC++ Var(warn_non_pod_varargs) Warning LangEnabledBy(C++
> ObjC++,Wconditionally-supported)
> +Warn if passing a non-POD object through the \"...\" of a varargs function.
> +
>  Wpacked-not-aligned
>  C ObjC C++ ObjC++ Var(warn_packed_not_aligned) Warning LangEnabledBy(C ObjC
> C++ ObjC++,Wall)
>  Warn when fields in a struct with the packed attribute are misaligned.
> diff --git a/gcc/cp/call.c b/gcc/cp/call.c
> index 9e4a5c1b9ae..fc9f74f5968 100644
> --- a/gcc/cp/call.c
> +++ b/gcc/cp/call.c
> @@ -7164,10 +7164,12 @@ convert_arg_to_ellipsis (tree arg, tsubst_flags_t
> complain)
>               || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (arg_type)))
>         {
>           if (complain & tf_warning)
> -           warning (OPT_Wconditionally_supported,
> -                    "passing objects of non-trivially-copyable "
> -                    "type %q#T through %<...%> is conditionally supported",
> -                    arg_type);
> +           {
> +             warning (OPT_Wnon_pod_varargs,
> +                      "passing objects of non-trivially-copyable "
> +                      "type %q#T through %<...%> is conditionally
> supported",
> +                      arg_type);
> +           }
>           return cp_build_addr_expr (arg, complain);
>         }
>      }

Has this patch been posted to the gcc-patches mailing list yet?

Reply via email to