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

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

https://gcc.gnu.org/g:3181f66afc7926950115d9802de1516fba3822a2

commit r9-9326-g3181f66afc7926950115d9802de1516fba3822a2
Author: Martin Jambor <mjam...@suse.cz>
Date:   Thu Apr 8 18:57:48 2021 +0200

    sra: Fix bug in grp_write propagation (PR 97009)

    SRA represents parts of aggregates which are arrays accessed with
    unknown index as "unscalarizable regions."  When there are two such
    regions one within another and the outer is only read whereas the
    inner is written to, SRA fails to propagate that write information
    across assignments.  This means that a second aggregate can contain
    data while SRA thinks it does not and the pass can wrongly eliminate
    big chunks of assignment from that second aggregate into a third
    aggregate, which is what happens in PR 97009.

    Fixed by checking all children of unscalariable accesses for the
    grp_write flag.

    gcc/ChangeLog:

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

            PR tree-optimization/97009
            * tree-sra.c (access_or_its_child_written): New function.
            (propagate_subaccesses_from_rhs): Use it instead of a simple
grp_write
            test.

    gcc/testsuite/ChangeLog:

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

            PR tree-optimization/97009
            * gcc.dg/tree-ssa/pr97009.c: New test.

    (cherry picked from commit 19d71674616e6494a60432a2a28adcd762a6c877)
  • [Bug tree-optimization/97009] [... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to