This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [CFG] what are class 3 edges ?
On 8/12/07, Dave Korn <dave.korn@artimi.com> wrote:
> On 11 August 2007 08:42, Emmanuel Fleury wrote:
> > Sunzir Deepur wrote:
> >> so why are those class 3 edges created at all ?
> > I didn't see any 3-edges blocks at all in your example.
> Not 3-edge blocks; class 3 edges = the green lines.
>
> They appear to be showing where the fall-through path /would have/ gone in
> those BBs which end with an unconditional jump if there had been no jump.
>
> Edge class in the vcg output is determined by the 'class' arg passed by
> print_rtl_graph_with_bb to the draw_edge routine in graph.c. The only place
> that generates class 3 edges is the catch-all if (!edge_printed) clause at the
> end of the for (tmp_rtx) loop. The FOR_EACH_EDGE loop above will output all
> the 'real' edges that represent possible code flow paths, so it looks to me
> like gcc is using class 3 as a catch-all for things like EDGE_FAKE,
> EDGE_CROSSING, and any other of the kinds of edges (basic-block.h) that the
> compiler maintains for structural reasons that aren't real edges.
>
> You'd have to ask someone other than me for the details of what kinds of
> things other than real edges the compiler stores edge structs for, but that's
> what ends up being drawn as class 3.
so do you think it's a safe bet to say that all class 3 edges do not represent
a possible flow of code ?
thank you
sunzir