SD wrote:
> Hello,
> 
> After searching this list it appears that with recent gcc (I am using gcc 
> 4.1), C++ exception handling has zero overhead (unless an exception actually 
> happens)
> 
> Where can I find more information on how exception handling is done and if 
> this zero overhead property is always true.

  There are two EH mechanisms in gcc, one using a Dwarf-2 table-driven
implementation, the other based around use of setjmp-longjmp.  Which one is
used depends on the --en/disable-sjlj-exceptions flag at configure time.  The
DW2 version has zero overhead in terms of execution time when no exceptions
are thrown, but adds a noticeable amount of memory usage for the eh tables.
The sjlj version incurs a time penalty every time it enters an EH region, and
probably incurs more stack usage doing so, but doesn't have all the big static
data tables that DW2 has.

> I looked a a couple of manuals on the gcc homepage but could not find 
> anything.

  Don't think there's much about sjlj except in the gcc sources themselves.
There's a page about DW2 EH on the wiki:

http://gcc.gnu.org/wiki/Dwarf2EHNewbiesHowto

    cheers,
      DaveK

Reply via email to