Hi,

during analysis of PR 118924 it was discussed that total scalarization
invents access paths (strings of COMPONENT_REFs and possibly even
ARRAY_REFs) which did not exist in the program before which can have
unintended effects on subsequent AA queries.  Although not doing that
does not mean that SRA cannot create such situations (see the bug for
more info), it has been agreed that not doing this is generally better.
This patch therfore makes SRA fall back on creating simple MEM_REFs when
accessing components of an aggregate corresponding to what a SRA
variable now represents.

Bootstrapped on x86_64-linux and Aarch64-linux.  OK for master and then
for all active release branches?

Thanks,

Martin


gcc/ChangeLog:

2025-03-26  Martin Jambor  <mjam...@suse.cz>

        PR tree-optimization/118924
        * tree-sra.cc (create_total_scalarization_access): Set
        grp_same_access_path flag to zero.
---
 gcc/tree-sra.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/tree-sra.cc b/gcc/tree-sra.cc
index 22d5d1ce999..8014bf1e6b4 100644
--- a/gcc/tree-sra.cc
+++ b/gcc/tree-sra.cc
@@ -3463,7 +3463,7 @@ create_total_scalarization_access (struct access *parent, 
HOST_WIDE_INT pos,
   access->grp_write = parent->grp_write;
   access->grp_total_scalarization = 1;
   access->grp_hint = 1;
-  access->grp_same_access_path = path_comparable_for_same_access (expr);
+  access->grp_same_access_path = 0;
   access->reverse = reverse_storage_order_for_component_p (expr);
 
   access->next_sibling = next_sibling;
-- 
2.48.1

Reply via email to