This is the mail archive of the gcc-patches@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]

Re: document edge flags


BTW
I've put together also small chapter about cfg to our manual.  My friends
are just fixing the english before I will contribute it.  Just to let you
know :)

Hope it will be less contraversal than this stuff.
> 
> I tend to think of them as distinct.  Tail call is when we optimize a
> recursive call to the current function into a branch; sibling call is
> when we turn a call to a different function with the same signature
> into a branch.
In this case we are speaking only about sibling calls..
> 
> > > /* EDGE_EH marks an edge from a (possibly) trapping instruction to the
> > >    exception handler.  This includes calls to functions that may throw
> > >    exceptions.  */
> > 
> > I don't believe we should have EDGE_EH from a non-trapping insn.
> 
> Does this mean that if you write
> 
>   try {
>     a();
>   } catch (...) { /* stuff */ }
> 
> and a may throw, there is no EDGE_EH edge from a to the catch block?
Actually the (possibly) in my sentense meant that the instruction does not
need unconditionally trap, just gcc may not be sure that it doesn't trap.

Call to a() is possibly trapping, as gcc does not know what a is doing,
as load from memory and similar cases.

Thanks for caring this issue...
Honza
> 
> zw


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