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

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:ee6ae8cb4793041590b479346433ed786a86985d

commit r13-6941-gee6ae8cb4793041590b479346433ed786a86985d
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Thu Mar 30 09:34:12 2023 +0200

    c++: Avoid informs without a warning [PR109278]

    On the following testcase we emit notes in
    maybe_inform_about_fndecl_for_bogus_argument_init
    despite no warning/error being printed before it.
    This is for the extended floating point type conversions where pedwarn
    is used, and complained is used there for 2 different purposes,
    one is whether an unspecific error should be emitted if we haven't
    complained otherwise, and one whether
    maybe_inform_about_fndecl_for_bogus_argument_init should be called.
    For the 2 pedwarns, currently it sets complained to true regardless of
    whether pedwarn succeeded, which results in the undesirable notes printed
    with -w.  If complained is initialized to result of pedwarn, we would
    emit an error later on.

    So, the following patch makes complained a tristate, the additional
    error isn't printed if complained != 0, and
    maybe_inform_about_fndecl_for_bogus_argument_init is called only if
    complained == 1, so if pedwarn returns false, we can use complained = -1
    to tell later code not to emit an error and not to call
    maybe_inform_about_fndecl_for_bogus_argument_init.

    2023-03-30  Jakub Jelinek  <ja...@redhat.com>

            PR c++/109278
            * call.cc (convert_like_internal): If pedwarn for extended float
            type conversions doesn't report anything, avoid calling
            maybe_inform_about_fndecl_for_bogus_argument_init.

            * g++.dg/cpp23/ext-floating15.C: New test.

Reply via email to