This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/13133] Extraneous register-saves triggered by setjmp()
- From: "wilson at specifixinc dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 21 Nov 2003 19:18:49 -0000
- Subject: [Bug c/13133] Extraneous register-saves triggered by setjmp()
- References: <20031119222145.13133.davidm@hpl.hp.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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