Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!mailrus!uflorida!novavax!hcx1!tom From: tom@ssd.csd.harris.com (Tom Horsley) Newsgroups: comp.lang.perl Subject: Re: Bugs in perl 3.0 pl 8 -- return statement Message-ID: Date: 9 Feb 90 12:06:37 GMT References: <4080004@hpausla.aso.hp.com> <4080005@hpausla.aso.hp.com> <418@proexam.UUCP> <7000@jpl-devvax.JPL.NASA.GOV> Sender: news@hcx1.SSD.CSD.HARRIS.COM Organization: Harris Computer Systems Division Lines: 23 In-reply-to: lwall@jpl-devvax.JPL.NASA.GOV's message of 6 Feb 90 19:30:58 GMT I think the solution of re-loading the register variables rather than declaring everything as volatile is a good idea, but it needs one extra frill (at least the way it is implemented in patch level 8). The variables you restore the register variables from *DO* need to be declared volatile. Quite a few of the newer optimizing compilers don't care if you declare a variable register or not, if they can keep it in a register, they will do so. This also means that some of the non-register variables (which appear to be referenced across a setjmp) need to be declared volatile, or restored from a volatile copy just like the register variables. I have a problem now compiling with the highest optimization level getting "panic: corrupt saved stack index" messages, I am perfectly willing to believe it is an optimizer bug in my compiler, but it may also be a problem with setjmp/longjmp, I have not had enough time to actually debug it yet (but it happens the same way with or without JMPCLOBBER). -- ===================================================================== domain: tahorsley@ssd.csd.harris.com USMail: Tom Horsley uucp: ...!novavax!hcx1!tahorsley 511 Kingbird Circle or ...!uunet!hcx1!tahorsley Delray Beach, FL 33444 ======================== Aging: Just say no! ========================