------- Comment #11 from danglin at gcc dot gnu dot org  2007-02-03 01:54 
-------
The patch mentioned in comment #3 was applied to the 4.1 branch and
introduces a regression in 4.1.2 on hppa1.1-hp-hpux10.20.

As a result, it's no longer possible to use EH exception support on
this target.  This is the default.  Unfortunately, I haven't had a
chance to change config.gcc to disable use of EH exceptions or to
document this problem.

The change installed to fix PR rtl-optimization/29323 causes EH
data to emitted for all functions which don't bind locally.  This
exposed a latent bug in the HP linker; it can't handle the relocations
relating to COMDAT sections that have been nullified.

On the one hand, this is likely to cause problems for weak (COMDAT)
functions which can throw.  On the other hand, there aren't any in
libstdc++ and the problem didn't expose itself in building at least
one large C++ application (lyx).

Personally, I believe that the fix for PR 29323 was wrong and has
bloated the EH data emitted by GCC.  The EH data for a module are
only relevant to the functions in the module itself.  If a function
in a module can't throw, then we don't need EH exception data for
it.

I think we need to decide how TREE_NOTHROW is to be used.  If
it's to be used to control the emission of EH data, then it should
be set based on analysis of the module being compiled and not whether
a function binds locally or not. 





-- 

danglin at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mark at codesourcery dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29487

Reply via email to