Hi, > 2021-06-16 Martin Jambor <mjam...@suse.cz> > > PR ipa/101066 > * ipa-sra.c (class isra_call_summary): New member > m_before_any_store, initialize it in the constructor. > (isra_call_summary::dump): Dump the new field. > (ipa_sra_call_summaries::duplicate): Copy it. > (process_scan_results): Set it. > (isra_write_edge_summary): Stream it. > (isra_read_edge_summary): Likewise. > (param_splitting_across_edge): Only override > safe_to_import_accesses if m_before_any_store is set. > > gcc/testsuite/ChangeLog: > > 2021-06-16 Martin Jambor <mjam...@suse.cz> > > PR ipa/101066 > * gcc.dg/ipa/pr101066.c: New test. OK, thanks!
The analysis disabling transformation on any memory store is overly conservative. We have pointer (which is a parameter and comes from outer world) and no type infomration, however alias oracle will still be able to disambiguate when memory access is to non-escaping local memory or mallocated memory block etc. Honza