V3 patch causes EH failures in ILP32 mode

Mark Mitchell mark@codesourcery.com
Wed Jun 23 17:53:00 GMT 2004


In:

  2004-05-22  Benjamin Kosnik  <bkoz@redhat.com>

	* libsupc++/cxxabi.h: Remove duplicated and useless public and
        private keywords in class declarations. Format. Use
        stddef.h. Expose declarations to "C" compilation.
        * libsupc++/tinfo.cc (__upcast_result): Add copy constructor and
        assignment operator.
        (__dyncast_result): Same.
        * libsupc++/vec.cc (uncatch_exception): Same, use member
        initialization list.

you added seemingly pointless implementations of __upcast_result's
copy constructor and assignment operator; these versions are almost
identical to the implicit definitions.  On HP-UX in ILP32 mode, this
change is causing several G++ testsuite failures relating to upcasts
during EH processing.

That's probably a code-generation problem, which we're trying to track
down, but there's no reason to be tickling it when we don't need to
be.  Zack and I plan to revert the __upcast_result assignment operator
on the branch, as it is the proximate cause of these regressions.

Without excusing the compiler for generating wrong code, would you
explain why you added these definitions?  The compiler's version may
be more efficient than yours since it may use a bitwise copy; your
version is going to require a fair amount of cleverness to optimize
into that.  And, you've got just that much more code to maintain...

Thanks,

--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com



More information about the Libstdc++ mailing list