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

--- Comment #11 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:c85aaf2cbe9da50e23655a8082a37166adf4c0f7

commit r12-7483-gc85aaf2cbe9da50e23655a8082a37166adf4c0f7
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Mar 4 15:14:59 2022 +0100

    gimplify: Clear TREE_READONLY on automatic vars being stored into
[PR104529]

    The following testcase regressed when SRA started punting on stores to
    TREE_READONLY vars.  We document that:
    "In a VAR_DECL, PARM_DECL or FIELD_DECL, or any kind of ..._REF node,
    nonzero means it may not be the lhs of an assignment."
    so the SRA change looks desirable.  On the other side, at least in this
    testcase the TREE_READONLY is set there intentionally from the
    PR85873 fix, because gimplify_init_constructor itself uses TREE_READONLY
    on the object to determine if it can perform promotion to static const
    or not.

    So, similarly to other spots in the gimplifier where we also clear
    TREE_READONLY when we emit IL that stores into the object, this
    does the same in gimplify_init_constructor, but in the way so that
    the TREE_READONLY test for the promotion to static const keeps working
    and doesn't change anything for notify_temp_creation mode, which doesn't
    emit any IL, just tests if it would need a temporary or not.

    This keeps PR85873 testcase working as before and fixes this regression.

    2022-03-04  Jakub Jelinek  <ja...@redhat.com>

            PR middle-end/104529
            * gimplify.cc (gimplify_init_constructor): Clear TREE_READONLY
            on automatic objects which will be runtime initialized.

            * g++.dg/tree-ssa/pr104529.C: New test.

Reply via email to