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

--- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <[email protected]>:

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

commit r17-3278-gb6477e6c4efd6df2719190cb048cf300ff31af46
Author: Longjun Luo <[email protected]>
Date:   Thu Jul 23 00:01:50 2026 +0800

    debug/126355 - preserve debug info for IPA ICF wrappers

    When IPA ICF keeps a distinct symbol for an address-taken function by
    replacing its body with a wrapper, cgraph_node::create_wrapper reuses the
    original function declaration and its early debug DIE.

    create_wrapper then calls expand_thunk with force_gimple_thunk set.  Forced
    GIMPLE thunks are normally created after early debug, so expand_thunk marks
    their declarations ignored.  For an ICF wrapper this also prevents final
    debug emission from attaching the wrapper address to the existing DIE.
    The wrapper consequently has code and an STT_FUNC symbol but no
    address-bearing DW_TAG_subprogram DIE.

    Preserve the declaration's original DECL_IGNORED_P value across forced
    GIMPLE thunk expansion in create_wrapper.  Declarations that were already
    ignored remain ignored, while an original source declaration can receive
    its final address information.

    Tested on x86_64-pc-linux-gnu with the new gcc.dg/debug/dwarf2 test.  The
    test fails before the change and passes afterwards.

            PR debug/126355

    gcc/ChangeLog:

            * cgraphunit.cc (cgraph_node::create_wrapper): Preserve
            DECL_IGNORED_P across forced GIMPLE thunk expansion.

    gcc/testsuite/ChangeLog:

            * gcc.dg/debug/dwarf2/pr126355.c: New test.

    Signed-off-by: Longjun Luo <[email protected]>

Reply via email to