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

--- Comment #46 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Martin Jambor <jamb...@gcc.gnu.org>:

https://gcc.gnu.org/g:2902991a6b61d473f7cb996a2b80eef4a90f8eda

commit r12-1848-g2902991a6b61d473f7cb996a2b80eef4a90f8eda
Author: Martin Jambor <mjam...@suse.cz>
Date:   Mon Jun 28 18:20:00 2021 +0200

    ipa-sra: Introduce a mini-DCE to tree-inline.c (PR 93385)

    I was asked by Richi to split my fix for PR 93385 for easier review
    into IPA-SRA materialization refactoring and the actual DCE addition.
    This is the second part that actually contains the DCE of statements
    that IPA-SRA should not leave behind because they can have problematic
    side effects, even if they are useless, so that we do not depend on
    tree-dce to remove them for correctness.

    The patch fixes the problem by doing a def-use walk when materializing
    clones, marking which statements should not be copied and which
    SSA_NAMEs do not need to be computed because eventually they would be
    DCEd.  We do this on the original function body and tree-inline simply
    does not copy statements which are "dead."

    The only complication is removing dead argument calls because that
    needs to be communicated to callee redirection code using the
    infrastructure introduced by the previous patch.

    I added all testcases of the original patch to this one, although some
    probably test behavior introduced in the previous patch.

    gcc/ChangeLog:

    2021-05-12  Martin Jambor  <mjam...@suse.cz>

            PR ipa/93385
            * ipa-param-manipulation.h (class ipa_param_body_adjustments): New
            members m_dead_stmts and m_dead_ssas.
            * ipa-param-manipulation.c
            (ipa_param_body_adjustments::mark_dead_statements): New function.
            (ipa_param_body_adjustments::common_initialization): Call it on
            all removed but not split parameters.
            (ipa_param_body_adjustments::ipa_param_body_adjustments):
Initialize
            new mwmbers.
            (ipa_param_body_adjustments::modify_call_stmt): Remove arguments
that
            are dead.
            * tree-inline.c (remap_gimple_stmt): Do not copy dead statements,
reset
            dead debug statements.
            (copy_phis_for_bb): Do not copy dead PHI nodes.

    gcc/testsuite/ChangeLog:

    2021-03-22  Martin Jambor  <mjam...@suse.cz>

            PR ipa/93385
            * gcc.dg/ipa/pr93385.c: New test.
            * gcc.dg/ipa/ipa-sra-23.c: Likewise.
            * gcc.dg/ipa/ipa-sra-24.c: Likewise.
            * g++.dg/ipa/ipa-sra-4.C: Likewise.

Reply via email to