[ expat-Bugs-419585 ] Compiling with gcc for C++ exceptions.

noreply@sourceforge.net noreply@sourceforge.net
Wed, 25 Jul 2001 15:53:48 -0700


Bugs item #419585, was opened at 2001-04-27 11:49
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=110127&aid=419585&group_id=10127

Category: Build control
Group: Feature Request
>Status: Open
Resolution: Wont Fix
Priority: 5
Submitted By: David Crowley (dcrowley)
Assigned to: Fred L. Drake, Jr. (fdrake)
Summary: Compiling with gcc for C++ exceptions.

Initial Comment:

It would be nice if when compiling with gcc, the 
flag "-fexceptions" was added so it can deal with C++ 
handlers that throw exceptions.  As it's now built by 
default, C++ programs will crash if they throw in the 
handler. Perhaps make "-fexceptions" the default so as 
to be most robust, and allow people to turn off the 
flag as a parameter to configure ("configure --no-
exceptions" or whatever).

----------------------------------------------------------------------

>Comment By: David Crowley (dcrowley)
Date: 2001-07-25 15:53

Message:
Logged In: YES 
user_id=27458

Here are the results of my bench mark.  Running on Linux 
2.2.16 (SGI, dual processors, 800MHz), and parsing a 123MB 
xml file.
Each run was initiated like this:

% time cat bigdog.xml | ./xbench

xbench is dynamically linked against expat.  I copied 
libexpat.so.0.0.1 compiled with -fexceptions 
to /usr/local/lib, ran, and then copied one compiled w/o -
fexceptions, ran.

With -fexceptions: 9.82s, 9.80s, 9.79s.
W/o -fexceptions: 9.78s, 9.77s, 9.78s.

So the difference is pretty negligible.  Around <.5% if any.

xbench.c is attached.  Make your own 123MB file :)



----------------------------------------------------------------------

Comment By: Fred L. Drake, Jr. (fdrake)
Date: 2001-07-25 14:33

Message:
Logged In: YES 
user_id=3066

This sounds like a reasonable plan -- I look forward to your measurement results.  I really don't know what the C++ penetration is on Unix platforms, and may be exhibiting an unfortunate C bias.

I've marked the feature request as "pending"; when you add to it it will be automatically re-opened and assigned back to me, so it won't get lost.

----------------------------------------------------------------------

Comment By: David Crowley (dcrowley)
Date: 2001-07-25 14:20

Message:
Logged In: YES 
user_id=27458

While I agree that yes, it IS a C implementation, I would 
think that it would still be nice to for the library to be 
more easily useable by C++ coders out of the box.  I will 
do a benchmark in C and see if I can figure out how much of 
an impact the -fexceptions flag really makes.  If it's less 
than 2-3% impact in performance, I see no reason not to 
make it a default.  If a C coder REALLY needs that extra 
speed and knows they will never install any C++ apps which 
link against it, then by all means they can remove the flag.

----------------------------------------------------------------------

Comment By: Fred L. Drake, Jr. (fdrake)
Date: 2001-07-24 20:19

Message:
Logged In: YES 
user_id=3066

Added a note about this in README revision 1.7.

This is not being added as a default option -- Expat is fundamentally a C implementation, not C++.  Avoiding this option for normal C allows the optimizer to perform more effective optimizations and generally improve performance.

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=110127&aid=419585&group_id=10127