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]

Re: cfg_layout_split_edge doesn't handle the general case correctly


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



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