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

--- Comment #1 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Marek Polacek <[email protected]>:

https://gcc.gnu.org/g:9de2f8da0c37f04d67bc3d5dcee6a36034df2f9a

commit r16-7242-g9de2f8da0c37f04d67bc3d5dcee6a36034df2f9a
Author: Marek Polacek <[email protected]>
Date:   Sun Feb 1 15:20:55 2026 -0500

    c++/reflection: wrong error with const meta::info parm [PR123614]

    Here we issue a bogus "not a constant expression" error ultimately
    because get_info returns NULL_TREE for the const parameter in Name.
    The cxx_eval_constant_expression in get_info produces a NOP_EXPR:

      (info) reflect_expr <int>

    which is not REFLECT_EXPR_P.  This isn't caught by the
    REFLECTION_TYPE_P && REFLECT_EXPR_P check in _eval_constant_expression
    because OP is a NOP_EXPR.  The NOP_EXPR comes from adjust_temp_type.

    I suppose I could just add STRIP_NOPS to get_info.  Or I could follow
    c++/65695 / r6-41-gfb899e32c16088 and adjust cp_fold_convert to fold
    away the conversion.

            PR c++/123614

    gcc/cp/ChangeLog:

            * cvt.cc (cp_fold_convert): Avoid wrapping a REFLECT_EXPR in
NOP_EXPR.

    gcc/testsuite/ChangeLog:

            * g++.dg/reflect/parm5.C: New test.

    Reviewed-by: Jason Merrill <[email protected]>

Reply via email to