https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120987

--- Comment #21 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #20)
> Seems to be fixed by:
> ...
> diff --git a/gcc/ipa-modref.c b/gcc/ipa-modref.c
> index 9e537b04196..fbdf8da36df 100644
> --- a/gcc/ipa-modref.c
> +++ b/gcc/ipa-modref.c
> @@ -5109,7 +5109,6 @@ ipa_merge_modref_summary_after_inlining (cgraph_edge
> *edge)
>    cgraph_node *n;
>    for (n = edge->caller; n->inlined_to; n = n->callers->caller)
>      flags |= flags_from_decl_or_type (n->decl);
> -  flags |= flags_from_decl_or_type (n->decl);
>    bool ignore_stores = ignore_stores_p (edge->caller->decl, flags);
>  
>    if (!callee_info && to_info)
> ...

Which causes this difference in test-2.c.085i.modref:
...
-  parm 0 flags: no_direct_clobber no_direct_escape no_indirect_escape
+  parm 0 flags: no_direct_escape
...
in the analysis of throw_exception.

I don't understand these flags very well, but my guess is that it's the
no_direct_clobber that is causing the problems.

Reply via email to