This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Restoration of arg pointer in expand_builtin_setjmp_receiver
- To: gcc-bugs at gcc dot gnu dot org, rth at redhat dot com
- Subject: Restoration of arg pointer in expand_builtin_setjmp_receiver
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Date: Thu, 23 Aug 2001 16:03:34 -0400 (EDT)
I have been looking into why throw/catch doesn't work on vax-dec-ultrix4.3.
The vax needs its arg pointer restored after a longjmp. The arg pointer
is supposed to be restored by code generated by expand_builtin_setjmp_receiver.
However, for the restore to work, the arg pointer must be saved in the frame.
This is done by expand_function_end. It checks arg_pointer_save_area
to see if the code to save the arg pointer should be emitted. However,
when doing eh, expand_builtin_setjmp_receiver isn't called until AFTER
expand_function_end. Thus, the save is never done.
Any suggestions on the best way to fix this?
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)