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

--- Comment #16 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Qing Zhao <qinz...@gcc.gnu.org>:

https://gcc.gnu.org/g:f613fdc6920c83658f033501fce1a1420e687d11

commit r16-3956-gf613fdc6920c83658f033501fce1a1420e687d11
Author: Qing Zhao <qing.z...@oracle.com>
Date:   Thu Sep 18 15:50:38 2025 +0000

    Fix SRA issue with -ftrivial-auto-var-init= [PR121894]

    In tree-sra.cc, for the following stmt (initialization in source code):
    s = {};

    for the above lhs "s", the field "grp_assignment_write" of the created
    struct access is 1;

    however, for the following stmt (compiler added initialization):
    s = .DEFERRED_INIT (size, init_type, &"s"[0]);

    for the above lhs "s", the field "grp_assignment_write" of the created
    struct access is 0;

    Since the field "grp_assignment_write" of the struct access for the
    corresponding LHS "s" is not set correctly when the RHS is .DEFERRED_INIT,
    SRA phase didn't do a correct transformation for call to .DEFERRED_INIT.

    To fix this issue, we should set the field "grp_assignment_write" correctly
    for .DEFERRED_INIT.

            PR tree-optimization/121894

    gcc/ChangeLog:

            * tree-sra.cc (scan_function): Set grp_assignment_write to 1 when
            specially handle call to .DEFERRED_INIT.

    gcc/testsuite/ChangeLog:

            * g++.dg/opt/auto-init-sra-pr121894.C: New test.

Reply via email to