On Mon, Apr 24, 2017 at 12:48:19PM +0200, Jan Hubicka wrote:
> Hi,
> this patch fixes ICE in dumping that triggers somewhat overactive sanity
> check.
> I think it would be nice to get it into release branches so we could debug
> things
> more easily.
>
> I am going to commit to trunk, OK for release branches?
> Honza
> PR middle-end/79931
> * ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
No testcase in the patch?
> Index: ipa-devirt.c
> ===================================================================
> --- ipa-devirt.c (revision 246970)
> +++ ipa-devirt.c (working copy)
> @@ -3367,7 +3367,13 @@ dump_possible_polymorphic_call_targets (
> fprintf (f, " Speculative targets:");
> dump_targets (f, targets);
> }
> - gcc_assert (targets.length () <= len);
> + /* Ugly: during callgraph construction the target cache may get populated
> + before all targets are found. While this is harmless (because all local
> + types are discovered and only in those case we devirtualize fully and we
> + don't do speculative devirtualization before IPA stage) it triggers
> + assert here when dumping at that stage also populates the case with
> + speculative targets. Quietly ignore this. */
> + gcc_assert (symtab->state < IPA_SSA || targets.length () <= len);
> fprintf (f, "\n");
> }
>
Jakub