Fix early exit in modref_merge_call_site_flags

When adding support for static chain and return slot flags I forgot to update
early exit condition in modref_merge_call_site_flags.  This yields to wrong
code as demonstrated by the Fortran testcase attached to PR (which I hope
someone will help me to turn into testuite one).

gcc/ChangeLog:

2021-12-19  Jan Hubicka  <hubicka@ucw.cz>

	PR ipa/103766
	* ipa-modref.c (modref_merge_call_site_flags): Fix early exit condition
This commit is contained in:
Jan Hubicka 2021-12-19 22:28:40 +01:00
parent 6bcb6ed5a4
commit fcbf94a5be

View file

@ -5019,9 +5019,15 @@ modref_merge_call_site_flags (escape_summary *sum,
bool changed = false;
bool ignore_stores = ignore_stores_p (caller, callee_ecf_flags);
/* If we have no useful info to propagate. */
if ((!cur_summary || !cur_summary->arg_flags.length ())
&& (!cur_summary_lto || !cur_summary_lto->arg_flags.length ()))
/* Return early if we have no useful info to propagate. */
if ((!cur_summary
|| (!cur_summary->arg_flags.length ()
&& !cur_summary->static_chain_flags
&& !cur_summary->retslot_flags))
&& (!cur_summary_lto
|| (!cur_summary_lto->arg_flags.length ()
&& !cur_summary_lto->static_chain_flags
&& !cur_summary_lto->retslot_flags)))
return false;
FOR_EACH_VEC_ELT (sum->esc, i, ee)