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] 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


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