This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/81766] [7/8 Regression] ICE in maybe_add_or_update_dep_1, at sched-deps.c:924 caused by r250815
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 08 Aug 2017 09:16:04 +0000
- Subject: [Bug target/81766] [7/8 Regression] ICE in maybe_add_or_update_dep_1, at sched-deps.c:924 caused by r250815
- Auto-submitted: auto-generated
- References: <bug-81766-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81766
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
If contemplating reversion, perhaps:
--- gcc/function.c.jj 2017-08-07 18:50:09.000000000 +0200
+++ gcc/function.c 2017-08-08 11:11:25.506239318 +0200
@@ -6073,17 +6073,16 @@ thread_prologue_and_epilogue_insns (void
if (prologue_insn
&& BLOCK_FOR_INSN (prologue_insn) == NULL)
prologue_insn = NULL;
- if (split_prologue_insn || prologue_insn)
- {
- auto_sbitmap blocks (last_basic_block_for_fn (cfun));
- bitmap_clear (blocks);
- if (split_prologue_insn)
- bitmap_set_bit (blocks,
- BLOCK_FOR_INSN (split_prologue_insn)->index);
- if (prologue_insn)
- bitmap_set_bit (blocks, BLOCK_FOR_INSN (prologue_insn)->index);
- find_many_sub_basic_blocks (blocks);
- }
+ auto_sbitmap blocks (last_basic_block_for_fn (cfun));
+ bitmap_clear (blocks);
+ if (split_prologue_insn)
+ bitmap_set_bit (blocks,
+ BLOCK_FOR_INSN (split_prologue_insn)->index);
+ if (prologue_insn)
+ bitmap_set_bit (blocks, BLOCK_FOR_INSN (prologue_insn)->index);
+ bitmap_set_bit (blocks, entry_edge->dest->index);
+ bitmap_set_bit (blocks, orig_entry_edge->dest->index);
+ find_many_sub_basic_blocks (blocks);
}
default_rtl_profile ();
should be safe too (which does what we used to do before and additionally marks
the new blocks if needed and different from the old ones.
Can't test it right now though. And, I really need to debug why we need to
find_many_sub_basic_blocks when split_prologue_seq is NULL and prologue_seq is
just
(note 17 0 0 NOTE_INSN_PROLOGUE_END)
alone. Perhaps something inserts insns elsewhere.