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

--- Comment #13 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:2f1691be517fcdcabae9cd671ab511eb0e08b1d5

commit r13-6319-g2f1691be517fcdcabae9cd671ab511eb0e08b1d5
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Feb 24 11:05:27 2023 +0100

    cgraphclones: Don't share DECL_ARGUMENTS between thunk and its artificial
thunk [PR108854]

    The following testcase ICEs on x86_64-linux with -m32.  The problem is
    we create an artificial thunk and because of -fPIC, ia32 and thunk
    destination which doesn't bind locally can't use a mi thunk.
    The ICE is because during expansion to RTL we see SSA_NAME for a PARM_DECL,
    but the PARM_DECL doesn't have DECL_CONTEXT of the current function.
    This is because duplicate_thunk_for_node creates a new DECL_ARGUMENTS chain
    only if some arguments need modification.

    The following patch fixes it by copying the DECL_ARGUMENTS list even if
    the arguments can stay as is, to update DECL_CONTEXT on them.  While for
    mi thunks it doesn't really matter because we don't use those arguments
    in any way, for other thunks it is important.

    2023-02-23  Jakub Jelinek  <ja...@redhat.com>

            PR middle-end/108854
            * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
            changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
            nodes and adjust their DECL_CONTEXT.

            * g++.dg/opt/pr108854.C: New test.

Reply via email to