aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2021-11-21 13:21:32 +0100
committerJan Hubicka <jh@suse.cz>2021-11-21 13:22:34 +0100
commit09a4ffb72aa2f51345f8021aaea3501ce91ae588 (patch)
tree00a17c979c6db0c5949a33f501920301855a11fd /libgcc
parentdc915b361bbc99da83fc53db7f7e0e28d0ce12c8 (diff)
downloadgcc-09a4ffb72aa2f51345f8021aaea3501ce91ae588.zip
gcc-09a4ffb72aa2f51345f8021aaea3501ce91ae588.tar.gz
gcc-09a4ffb72aa2f51345f8021aaea3501ce91ae588.tar.bz2
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.
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions