This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/70061] [6 Regression] ICE: SIGSEGV in delete_insn_chain() with unused label
- From: "rth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 05 Mar 2016 17:01:16 +0000
- Subject: [Bug rtl-optimization/70061] [6 Regression] ICE: SIGSEGV in delete_insn_chain() with unused label
- Auto-submitted: auto-generated
- References: <bug-70061-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70061
--- Comment #3 from Richard Henderson <rth at gcc dot gnu.org> ---
Created attachment 37875
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37875&action=edit
proposed patch
Thanks, Jeff, the errant stack adjustment was a good hint.
The problem is that we are emitting copy sequences to edges without caring
for deferred popping of arguments. Thus when we began emitting code for the
first block, which in this case starts with a label, we had 32 bytes of
pending stack adjustment, which emit_label flushed. The ICE is due to the
label not being the first insn in the BB.
There are two equivalent ways to fix this: we can either save/restore
inhibit_defer_pop around these sequences, or we can manually flush any
pending stack adjustment.
This patch does the latter. Just starting full testing.