This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PR middle-end/42151 (verify_cgraph ICE)
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 24 Nov 2009 00:09:13 +0100
- Subject: PR middle-end/42151 (verify_cgraph ICE)
Hi,
PR middle-end/42151 is ICE in inline_transform trying to apply inline twice in row.
This is because how the clonning is merging the ipa transforms after inlining is done,
I will fix this more properly with WPA cleanups, at the moment it is very difficult to
do something with this code without getting whopr failures.
Bootstrapped/regtested x86_64-linux, comitted.
Honza
Index: ChangeLog
===================================================================
--- ChangeLog (revision 154474)
+++ ChangeLog (working copy)
@@ -1,5 +1,11 @@
2009-11-23 Jan Hubicka <jh@suse.cz>
+ PR middle-end/42151
+ * ipa-inline.c (inline_transform): Avoid ICE when transform is called
+ twice.
+
+2009-11-23 Jan Hubicka <jh@suse.cz>
+
* ipa-cp.c (ipcp_compute_node_scale): Work around completely
wrong profile updates.
* predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
Index: ipa-inline.c
===================================================================
--- ipa-inline.c (revision 154461)
+++ ipa-inline.c (working copy)
@@ -1974,6 +1974,11 @@ inline_transform (struct cgraph_node *no
unsigned int todo = 0;
struct cgraph_edge *e;
+ /* FIXME: Currently the passmanager is adding inline transform more than once to some
+ clones. This needs revisiting after WPA cleanups. */
+ if (cfun->after_inlining)
+ return 0;
+
/* We might need the body of this function so that we can expand
it inline somewhere else. */
if (cgraph_preserve_function_body_p (node->decl))