------- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-30 22:21 ------- The jump: (jump_insn:HI 2539 2830 2305 120 (set (pc) (reg:SI 66 ctr)) 482 {*indirect_jumpsi} (insn_list:REG_DEP_TRUE 2537 (insn_list:REG_DEP_TRUE 2538 (insn_list:REG_DEP_TRUE 1498 (nil)))) (insn_list:REG_LABEL 1504 (expr_list:REG_CROSSING_JUMP (nil) (nil))))
And the backtrace: #0 fancy_abort (file=0x92cb54 "../../gcc/cfgbuild.c", line=350, function=0x8e5374 "make_edges") at ../../gcc/diagnostic.c:590 #1 0x007db014 in make_edges (min=0x2dd87e8, max=0x2df70b0, update_p=1) at ../../gcc/ cfgbuild.c:350 #2 0x007dc378 in find_many_sub_basic_blocks (blocks=0x1b6d240) at ../../gcc/cfgbuild.c:763 #3 0x0059a7f8 in split_all_insns (upd_life=0) at ../../gcc/recog.c:2795 #4 0x003898ec in rest_of_handle_flow2 () at ../../gcc/flow.c:4624 #5 0x0069f964 in execute_one_pass (pass=0x9fdef4) at ../../gcc/passes.c:809 This makes me feel better. Plus this is a bug really related to/exposed by -freorder-blocks-and- partition, we are changing an direct into an indirect one but make_edges is not thinking it should get an indirect to a known label here or at least as far as I can tell. Looking more into it. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24069