Static chain support in ipa-modref
authorJan Hubicka <hubicka@ucw.cz>
Tue, 2 Nov 2021 17:57:51 +0000 (18:57 +0100)
committerJan Hubicka <hubicka@ucw.cz>
Tue, 2 Nov 2021 17:57:51 +0000 (18:57 +0100)
commita70c05120ae6f15f204a04a7df7d19941ab33ef1
tree234844b801a3446e044d1c2be530e4afb386d0d5
parent164bbf701ff10ff44e272525e8f462ed3ff1cf43
Static chain support in ipa-modref

Teach ipa-modref about the static chain that is, like
retslot, a hiden argument.  The patch is pretty much symemtric to what
was done for retslot handling and I verified it does the intended job
for Ada LTO bootstrap.

gcc/ChangeLog:

* gimple.c (gimple_call_static_chain_flags): New function.
* gimple.h (gimple_call_static_chain_flags): Declare
* ipa-modref.c (modref_summary::modref_summary): Initialize
static_chain_flags.
(modref_summary_lto::modref_summary_lto): Likewise.
(modref_summary::useful_p): Test static_chain_flags.
(modref_summary_lto::useful_p): Likewise.
(struct modref_summary_lto): Add static_chain_flags.
(modref_summary::dump): Dump static_chain_flags.
(modref_summary_lto::dump): Likewise.
(struct escape_point): Add static_cahin_arg.
(analyze_ssa_name_flags): Use gimple_call_static_chain_flags.
(analyze_parms): Handle static chains.
(modref_summaries::duplicate): Duplicate static_chain_flags.
(modref_summaries_lto::duplicate): Likewise.
(modref_write): Stream static_chain_flags.
(read_section): Likewise.
(modref_merge_call_site_flags): Handle static_chain_flags.
* ipa-modref.h (struct modref_summary): Add static_chain_flags.
* tree-ssa-structalias.c (handle_rhs_call): Use
gimple_static_chain_flags.

gcc/testsuite/ChangeLog:

* gcc.dg/ipa/modref-3.c: New test.
gcc/gimple.c
gcc/gimple.h
gcc/ipa-modref.c
gcc/ipa-modref.h
gcc/testsuite/gcc.dg/ipa/modref-3.c [new file with mode: 0644]
gcc/tree-ssa-structalias.c