Workaround ICE in gimple_call_static_chain_flags

gcc/ChangeLog:

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

	PR ipa/103058
	* gimple.c (gimple_call_static_chain_flags): Handle case when
	nested function does not bind locally.
This commit is contained in:
Jan Hubicka 2021-11-04 17:07:44 +01:00
parent fae00a0ac0
commit d3f7a2fa64

View File

@ -1666,7 +1666,18 @@ gimple_call_static_chain_flags (const gcall *stmt)
int modref_flags = summary->static_chain_flags;
/* We have possibly optimized out load. Be conservative here. */
gcc_checking_assert (node->binds_to_current_def_p ());
if (!node->binds_to_current_def_p ())
{
if ((modref_flags & EAF_UNUSED) && !(flags & EAF_UNUSED))
{
modref_flags &= ~EAF_UNUSED;
modref_flags |= EAF_NOESCAPE;
}
if ((modref_flags & EAF_NOREAD) && !(flags & EAF_NOREAD))
modref_flags &= ~EAF_NOREAD;
if ((modref_flags & EAF_DIRECT) && !(flags & EAF_DIRECT))
modref_flags &= ~EAF_DIRECT;
}
if (dbg_cnt (ipa_mod_ref_pta))
flags |= modref_flags;
}