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

--- Comment #5 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:8b1b1b2d691d5cee4ebc40a01974ad5bccab22f9

commit r13-6003-g8b1b1b2d691d5cee4ebc40a01974ad5bccab22f9
Author: Martin Jambor <mjam...@suse.cz>
Date:   Wed Feb 15 11:38:01 2023 +0100

    ipa: Avoid IPA confusing scalar values and single-field aggregates (PR
108679)

    PR 108679 testcase shows a situation when IPA-CP is able to track a
    scalar constant in a single-field structure that is part of a bigger
    structure.  This smaller structure is however also passed in a few
    calls to other functions, but the two same-but-different entities,
    originally placed at the same offset and with the same size, confuse
    the mechanism that takes care of handling call statements after
    IPA-SRA.

    I think that in stage 4 it is best to revert to GCC 12 behavior in this
    particular case (when IPA-CP detects a constant in a single-field
    structure or a single element array that is part of a bigger aggregate)
    and the patch below does that.  If accepted, I plan to file a
    missed-optimization bug to track that we could use the IPA-CP propagated
    value to re-construct the small aggregate arguments.

    gcc/ChangeLog:

    2023-02-13  Martin Jambor  <mjam...@suse.cz>

            PR ipa/108679
            * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
            creation of non-scalar replacements even if IPA-CP knows their
            contents.

    gcc/testsuite/ChangeLog:

    2023-02-13  Martin Jambor  <mjam...@suse.cz>

            PR ipa/108679
            * gcc.dg/ipa/pr108679.c: New test.

Reply via email to