cfg_layout_split_edge doesn't handle the general case correctly
James E Wilson
wilson@specifixinc.com
Fri Aug 20 01:57:00 GMT 2004
Mostafa Hagog wrote:
> according to the below lines, cfg_layout_split_edge adds the newly
> created basic block after e->src, this is not correct when there
> is at least one additional edge that is fallthru that is going out
> of e->src.
I am not very familiar with the cfg code.
Looking at this, you didn't say exactly why what cfg_layout_split_edge
is doing is wrong. You didn't say why you got an ICE in
commit_edge_insertions. I would need more info about what is going on.
You pointed at the tree code as a counter example, but the comments in
the tree code indicate that it is doing something just to make the dumps
look prettier. It doesn't say anything about correctness. So this
isn't very convincing.
Trying to guess what is wrong, I would guess that perhaps there is an
ordering issue. When we traverse the list of basic blocks, maybe we
need to initialize something for one block before another block?
However, you haven't provided any info about what is being initialized
or why the initialization is order dependent, so I can't suggest solutions.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
More information about the Gcc
mailing list