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