Refactor load/store/kill analysis in ipa-modref

Refactor load/store/kill analysis in ipa-modref to a class
modref_access_analysis.  This is done in order to avoid some code duplication
and early exits that has turned out to be hard to maintain and there were
multiple bugs we noticed recently.

gcc/ChangeLog:

2021-11-21  Jan Hubicka  <hubicka@ucw.cz>

	* ipa-modref.c (ignore_nondeterminism_p): Move earlier in source
	code.
	(ignore_retval_p): Likewise.
	(ignore_stores_p): Likewise.
	(parm_map_for_arg): Likewise.
	(class modref_access_analysis): New class.
	(modref_access_analysis::set_side_effects): New member function.
	(modref_access_analysis::set_nondeterministic): New member function.
	(get_access): Turn to ...
	(modref_access_analysis::get_access): ... this one.
	(record_access): Turn to ...
	(modref_access_analysis::record_access): ... this one.
	(record_access_lto): Turn to ...
	(modref_access_analysis::record_access_lto): ... This one.
	(record_access_p): Turn to ...
	(modref_access_analysis::record_access_p): ... This one
	(modref_access_analysis::record_unknown_load): New member function.
	(modref_access_analysis::record_unknown_store): New member function.
	(get_access_for_fnspec): Turn to ...
	(modref_access_analysis::get_access_for_fnspec): ... this one.
	(merge_call_side_effects): Turn to ...
	(moderf_access_analysis::merge_call_side_effects): Turn to ...
	(collapse_loads): Move later in source code.
	(collapse_stores): Move later in source code.
	(process_fnspec): Turn to ...
	(modref_access_analysis::process_fnspec): ... this one.
	(analyze_call): Turn to ...
	(modref_access_analysis::analyze_call): ... this one.
	(struct summary_ptrs): Remove.
	(analyze_load): Turn to ...
	(modref_access_analysis::analyze_load): ... this one.
	(analyze_store): Turn to ...
	(modref_access_analysis::analyze_store): ... this one.
	(analyze_stmt): Turn to ...
	(modref_access_analysis::analyze_stmt): ... This one.
	(remove_summary): Remove.
	(modref_access_analysis::propagate): Break out from ...
	(modref_access_analysis::analyze): Break out from ...
	(analyze_function): ... here.
This commit is contained in:
Jan Hubicka 2021-11-21 13:21:32 +01:00
parent dc915b361b
commit 09a4ffb72a
1 changed files with 581 additions and 505 deletions

File diff suppressed because it is too large Load Diff