[Bug middle-end/48486] cfgexpand leaves BARRIERs at the end of basic blocks
steven at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Apr 6 22:39:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48486
--- Comment #2 from Steven Bosscher <steven at gcc dot gnu.org> 2011-04-06 22:38:51 UTC ---
find_many_sub_basic_blocks breaks its own STATE:
Breakpoint 6, find_many_sub_basic_blocks (blocks=0x19b6ea0) at
../../trunk/gcc/cfgbuild.c:577
577 SET_STATE (bb,
(gdb) p bb
$24 = (basic_block) 0x7ffff70d1f08
(gdb) watch ((basic_block) 0x7ffff70d1f08)->aux
Hardware watchpoint 9: ((struct basic_block_def *) 140737338220296)->aux
(gdb) cont
Continuing.
Hardware watchpoint 9: ((struct basic_block_def *) 140737338220296)->aux
Old value = (void *) 0x0
New value = (void *) 0x2
find_many_sub_basic_blocks (blocks=0x19b6ea0) at ../../trunk/gcc/cfgbuild.c:576
576 FOR_EACH_BB (bb)
(gdb) cont
Continuing.
Hardware watchpoint 9: ((struct basic_block_def *) 140737338220296)->aux
Old value = (void *) 0x2
New value = (void *) 0x22
mark_tablejump_edge (label=0x7ffff6fdb000) at ../../trunk/gcc/cfgbuild.c:391
391 }
(gdb) l cfgbuild.c:577
572 find_many_sub_basic_blocks (sbitmap blocks)
573 {
574 basic_block bb, min, max;
575
576 FOR_EACH_BB (bb)
577 SET_STATE (bb,
578 TEST_BIT (blocks, bb->index) ? BLOCK_TO_SPLIT :
BLOCK_ORIGINAL);
579
580 FOR_EACH_BB (bb)
581 if (STATE (bb) == BLOCK_TO_SPLIT)
(gdb) l cfgbuild.c:391
386 /* See comment in make_label_edge. */
387 if (INSN_UID (label) == 0)
388 return;
389 bb = BLOCK_FOR_INSN (label);
390 SET_STATE (bb, FULL_STATE (bb) | BLOCK_USED_BY_TABLEJUMP);
391 }
392
393 static void
394 purge_dead_tablejump_edges (basic_block bb, rtx table)
395 {
(gdb)
(gdb) cont
Continuing.
Breakpoint 7, find_many_sub_basic_blocks (blocks=0x19b6ea0) at
../../trunk/gcc/cfgbuild.c:581
581 if (STATE (bb) == BLOCK_TO_SPLIT)
(gdb) p STATE(bb)
$25 = 34
(gdb)
More information about the Gcc-bugs
mailing list