This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Assert failed in purge_dead_edges in cfgrtl.c


Hi,
I have some problems with an assert in purge_dead_edges in
cfgrtl.c:2319. I use gcc version 4.2.2. and I add a new function to
the callgraph with cgraph_add_new_function.
My new function body is obtained by current_function body using
move_sese_region_to_fn and all seems go well but when the new function
is processed to obtain rtl, I have an assertion failed.
So, this is the cfg dump that I obtain in my pass for the new function
and I'm not be able to find the error.

Basic block 2 (new, reachable)
Predecessors:  ENTRY [100.0%]  (fallthru,exec)
Successors:  3 [100.0%]  (fallthru,exec)

Basic block 3 (new, reachable)
Predecessors:  8 [100.0%]  (fallthru) 2 [100.0%]  (fallthru,exec)
Successors:  4 [100.0%]  (fallthru,exec)

Basic block 4 (new, reachable)
Predecessors:  3 [100.0%]  (fallthru,exec) 7 [100.0%]  (fallthru)
Successors:  7 [89.0%]  (dfs_back,true,exec) 5 [11.0%]  (loop_exit,false,exec)

Basic block 7 (new)
Predecessors:  4 [89.0%]  (dfs_back,true,exec)
Successors:  4 [100.0%]  (fallthru)

Basic block 5 (new, reachable)
Predecessors:  4 [11.0%]  (loop_exit,false,exec)
Successors:  8 [89.0%]  (dfs_back,true,exec) 6 [11.0%]  (loop_exit,false,exec)

Basic block 8 (new)
Predecessors:  5 [89.0%]  (dfs_back,true,exec)
Successors:  3 [100.0%]  (fallthru)

Basic block 6 (new, reachable)
Predecessors:  5 [11.0%]  (loop_exit,false,exec)
Successors:  EXIT [100.0%]

The dump of wrong basic block is ( unfortunately it doesn't have a successor )

;;        basic block 6, loop depth 0, count 0
;;        prev block 5, next block 8
;;        pred:       5 [11.0%]  (fallthru,loop_exit)
;;        succ:
;;        Registers live at start:  (nil)
(code_label 66 65 67 6 8 "" [0 uses])
(note 67 66 68 6 [bb 6] NOTE_INSN_BASIC_BLOCK)
;;        Registers live at end:  (nil)

What am I doing wrong?

Regards,
Mario Fanelli


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]