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

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Patrick Palka <ppa...@gcc.gnu.org>:

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

commit r14-4138-gb510b83aad52adf94d52a6ae3a3b332946e947a1
Author: Patrick Palka <ppa...@redhat.com>
Date:   Tue Sep 19 08:29:39 2023 -0400

    c++: overeager type completion in convert_to_void [PR111419]

    Here convert_to_void always completes the type of an indirection or
    id-expression, but according to [expr.context] an lvalue-to-rvalue
    conversion is applied to a discarded-value expression only if "the
    expression is a glvalue of volatile-qualified type".  This patch
    restricts convert_to_void's type completion to match.

            PR c++/111419

    gcc/cp/ChangeLog:

            * cvt.cc (convert_to_void) <case INDIRECT_REF>: Only call
            complete_type if the type is volatile.
            <case VAR_DECL>: Likewise.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/concepts-requires36.C: New test.
            * g++.dg/expr/discarded1.C: New test.
            * g++.dg/expr/discarded1a.C: New test.

Reply via email to