This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/50764] [4.7 Regression] ICE: in maybe_record_trace_start, at dwarf2cfi.c:2243 with -O2 -fsched2-use-superblocks -ftree-tail-merge
- From: "vries at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 27 Oct 2011 15:29:10 +0000
- Subject: [Bug tree-optimization/50764] [4.7 Regression] ICE: in maybe_record_trace_start, at dwarf2cfi.c:2243 with -O2 -fsched2-use-superblocks -ftree-tail-merge
- Auto-submitted: auto-generated
- References: <bug-50764-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50764
--- Comment #4 from vries at gcc dot gnu.org 2011-10-27 15:29:10 UTC ---
Created attachment 25634
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25634
sdiff between 209r.split4 and 210r.sched2 with -ftree-tail-merge
The effect of -fsched2-use-superblocks (with -ftree-tail-merge) is that note 59
and insn 51 are moved from block 4 to block 3.
...
(note 59 27 51 3 NOTE_INSN_EPILOGUE_BEG)
(insn/f 51 50 52 4 (set (reg:DI 39 r10)
(mem/c:DI (plus:DI (reg/f:DI 6 bp)
(const_int -8 [0xfffffffffffffff8])) [3 S8 A8])) pr50764.c:13
62 {*movdi_internal_rex64}
(expr_list:REG_CFA_DEF_CFA (reg:DI 39 r10)
(nil)))
...
block 4 contains a return, and block 3 jumps either to block 4 or block 5,
which calls abort.
2
bar
|
-------+-----
/ \
* *
5 *------------ 3
abort bar
|
|
*
4
return
The move looks ok, bp and memory are not modified in between the original and
new position, and r10 does not overwrite a value in block 3 or 5.
Possibly the dead label at the start of block 4 prevents this move in case of
-fno-tree-tail-merge.