This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch] PR56729
- From: Steven Bosscher <stevenb dot gcc at gmail dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 29 Mar 2013 13:05:41 +0100
- Subject: [patch] PR56729
Hello,
It looks like there are places in the middle end that use remove_insn
on insns that are not actually emitted. This breaks the assert I added
in df_insn_delete. The patch disables the assert for now. The comment
before the assert is now even messier than before but I think it's
better to explain why the assert cannot work than to remove the
comment and the assert altogether.
Bootstrapped&tested on powerpc64-unknown-linux-gnu (also tested 32bits ppc).
OK for trunk?
Ciao!
Steven
PR middle-end/56729
* df-scan.c (df_insn_delete): Disable failing assert.
Index: df-scan.c
===================================================================
--- df-scan.c (revision 197180)
+++ df-scan.c (working copy)
@@ -1158,8 +1158,17 @@ df_insn_delete (rtx insn)
In any case, we expect BB to be non-NULL at least up to register
allocation, so disallow a non-NULL BB up to there. Not perfect
but better than nothing... */
-
+ /* ??? bb can also be NULL if lower-subreg.c:resolve_simple_mov emits
+ an insn into a sequence and then does delete_insn on it. Not sure
+ if that makes sense, but for now it means this assert cannot work.
+ See PR56738.
+ Disable for now but revisit before the end of GCC 4.9 stage1. */
+#if 0
gcc_checking_assert (bb != NULL || reload_completed);
+#else
+ if (bb == NULL)
+ return;
+#endif
df_grow_bb_info (df_scan);
df_grow_reg_info ();