Fix cgraph_node::function_symbol availability compuattion [PR94202]
authorJan Hubicka <jh@suse.cz>
Thu, 19 Mar 2020 23:42:13 +0000 (00:42 +0100)
committerJan Hubicka <jh@suse.cz>
Thu, 19 Mar 2020 23:42:13 +0000 (00:42 +0100)
commitf7dceb4e658399edfbf8dd0e08ce0c686bfa2c9d
treebd112e021c4db6ecd2cf89f3b21c152e0ee55fb9
parent9def91e9f2a7051c9c146f16c1a10d1b25d33b47
Fix cgraph_node::function_symbol availability compuattion [PR94202]

this fixes ICE in inliner cache sanity check which is caused by very old
bug in visibility calculation in cgraph_node::function_symbol and
cgraph_node::function_or_virtual_thunk_symbol.

In the testcase there is indirect call to a thunk. At begining we correctly
see that its body as AVAIL_AVAILABLE but later we inline into the thunk and
this turns it to AVAIL_INTERPOSABLE.

This is because function_symbol incorrectly overwrites availability parameter
by availability of the alias used in the call within thunk, which is a local
alias.

gcc/ChangeLog:

2020-03-19  Jan Hubicka  <hubicka@ucw.cz>

PR ipa/94202
* cgraph.c (cgraph_node::function_symbol): Fix availability computation.
(cgraph_node::function_or_virtual_thunk_symbol): Likewise.

gcc/testsuite/ChangeLog:

2020-03-19  Jan Hubicka  <hubicka@ucw.cz>

PR ipa/94202
* g++.dg/torture/pr94202.C: New test.
gcc/ChangeLog
gcc/cgraph.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/torture/pr94202.C [new file with mode: 0644]