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

--- Comment #8 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-15 branch has been updated by Jakub Jelinek
<[email protected]>:

https://gcc.gnu.org/g:6b76bcb2673b323127fb1b1d9260bde2f595593d

commit r15-10891-g6b76bcb2673b323127fb1b1d9260bde2f595593d
Author: Jakub Jelinek <[email protected]>
Date:   Fri Jan 30 11:40:17 2026 +0100

    fold-const: Fix implicit cast to nullptr_t typedef [PR123790]

    The following testcase is incorrectly rejected, because since r15-6744
    it adds build_nop to preserve the exact typedef type and
    cxx_eval_constant_expression can't fold NOP_EXPR from integer_zerop of one
    NULLPTR_TYPE to another NULLPTR_TYPE, while cxx_eval_constant_expression
    relies on fold to do such folding.

    I see 3 options to fix that, one is deal with this in the r15-6744 spot
    and special case NULLPTR_TYPE there and build_zero_cst instead of build_nop
    (with similar condition like in the patch below), another possibility is
    special case this in cxx_eval_constant_expression, and
    another one (done in this patch) is to handle this in fold-const.cc -
    fold_convert_loc and also in fold_convert_const.

    2026-01-30  Jakub Jelinek  <[email protected]>

            PR c++/123790
            * fold-const.cc (fold_convert_const): Handle conversion of
            integer_zerop to NULLPTR_TYPE.
            (fold_convert_loc): Likewise.

            * g++.dg/cpp0x/nullptr47.C: New test.

    (cherry picked from commit cffe5fd7c98babd85acf86f3e7f8d02b04416ec2)
  • [Bug c++/123790] [15 Regression... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to