This is the mail archive of the gcc-bugs@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]
Other format: [Raw text]

[Bug c/13133] Extraneous register-saves triggered by setjmp()


------- Additional Comments From wilson at specifixinc dot com  2003-11-21 19:18 -------
Subject: Re:  Extraneous register-saves triggered by setjmp()

On Fri, 2003-11-21 at 07:03, charlet at gcc dot gnu dot org wrote:
> It seems that this change broke all Ada targets that use setjmp for the
> exception handling mechanism.

There was a message from Andreas Schwab recently that mentioned that GNU
Ada was trying to use the builtin setjmp/longjmp exception handling
mechanism for IA-64.  Because of complexities of the IA-64 architecture,
this is very unlikely to work.  Ada needs to use the ABI defined
exception handling mechanism instead.  This may be why IA-64 Ada is
failing.  If there aren't any other targets that are failing, then the
problem may very well be in the Ada front end.  Maybe the patch from
Andreas will fix this?

It may be that Ada broke because it was relying on an accidental
misfeature of gcc's setjmp implementation.  It is certainly possible
that my patch exposed a latent problem with the Ada front end.

> In particular, Ada IA64 builds started behaving in a very unreliable manner
> around the date of the change.

I can do Ada builds on both my x86 and ia64 linux machines.  I will take
a look.  I've never run the Ada testsuite though.  I will have to look
into how to do that.

> If this is the case, seems like a high price to pay for an enhancement.

This is an necessary fix for a serious performance regression.


-- 


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


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