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

--- Comment #8 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pins...@gcc.gnu.org>:

https://gcc.gnu.org/g:8b41e021ba4ad8db6a6cbd512c8c42277909c402

commit r16-3334-g8b41e021ba4ad8db6a6cbd512c8c42277909c402
Author: Andrew Pinski <andrew.pin...@oss.qualcomm.com>
Date:   Wed Aug 20 15:34:15 2025 -0700

    c: Add folding of nullptr_t in some cases [PR121478]

    The middle-end does not fully understand NULLPTR_TYPE. So it
    gets confused a lot of the time when dealing with it.
    This adds the folding that is similarly done in the C++ front-end already.
    In some cases it should produce slightly better code as there is no
    reason to load from a nullptr_t variable as it is always NULL.

    The following is handled:
    nullptr_v ==/!= nullptr_v -> true/false
    (ptr)nullptr_v -> (ptr)0, nullptr_v
    f(nullptr_v) -> f ((nullptr, nullptr_v))

    The last one is for conversion inside ... .

    Bootstrapped and tested on x86_64-linux-gnu.

            PR c/121478
    gcc/c/ChangeLog:

            * c-fold.cc (c_fully_fold_internal): Fold nullptr_t ==/!=
nullptr_t.
            * c-typeck.cc (convert_arguments): Handle conversion from nullptr_t
            for varargs.
            (convert_for_assignment): Handle conversions from nullptr_t to
            pointer type specially.

    gcc/testsuite/ChangeLog:

            * gcc.dg/torture/pr121478-1.c: New test.

    Signed-off-by: Andrew Pinski <andrew.pin...@oss.qualcomm.com>

Reply via email to