> gcc/ChangeLog: > > 2022-11-11 Martin Jambor <mjam...@suse.cz> > > * ipa-sra.cc (isra_param_desc): New fields safe_size, > conditionally_dereferenceable and safe_size_set. > (struct gensum_param_desc): New field conditionally_dereferenceable. > (struct isra_param_flow): Updated comment of field unit_size. > (ipa_sra_function_summaries::duplicate): Copy the new fields. > (isra_call_summary::dump): Dump unit_size when representing safe_size. > (dump_gensum_param_descriptor): Dump new flag. > (dump_isra_param_descriptor): Dump new fields. > (isra_analyze_call): Fill unit_size when it represents known safe > size. > (check_gensum_access): Instead of disqualifying pointers which are not > always dereference, mark them as conditionally dereferencable if loads > are frequent enough. > (process_scan_results): Copy the conditionally_dereferenceable flag. > (isra_write_node_summary): Stream new fields, or assert they are not > initialized yet. > (isra_read_node_info): Stream new fields. > (update_safe_size): New function. > (propagate_param_hints_accross_call): Propagate safe_sizes. > (propagate_hints_to_all_callees): New function. > (adjust_parameter_descriptions): Check conditionally_dereferenceable > candidates, rework dumping. > (ipa_sra_analysis): Move most of hint propagation for one node to > propagate_hints_to_all_callees. Add another loop to stabilize within > SCCs and another one to verify. > > gcc/testsuite/ChangeLog: > > 2022-11-11 Martin Jambor <mjam...@suse.cz> > > * gcc.dg/ipa/ipa-sra-26.c: New test. > * gcc.dg/ipa/ipa-sra-27.c: Likewise. > * gcc.dg/ipa/ipa-sra-28.c: Likewise.
OK, thanks! Honza