Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!zaphod.mps.ohio-state.edu!ncar!ames!haven!uvaarpa!mmdf From: eichin@athena.mit.edu (Mark W. Eichin) Newsgroups: comp.lang.perl Subject: Re: Perl-Users Digest #524, "unsigned long ints/mips/floats + FIX" Message-ID: <1990Dec19.002656.6510@uvaarpa.Virginia.EDU> Date: 19 Dec 90 00:26:56 GMT Sender: mmdf@uvaarpa.Virginia.EDU (Uvaarpa Mail System) Reply-To: eichin@athena.mit.edu Organization: The Internet Lines: 21 (Yeah, I'm still banging on this one, but at least it is "relevant to the Perl language"...) It turns out that the NeXT machine also needs the "#ifdef mips" case in util.c:castulong() to function correctly. This appears to be a bug in "fixunsdfsi" but I don't know 68K assembler well enough to tell... however, setting castneg=undef and duplicating the #ifdef mips clause as #ifdef NeXT produces a perl which passes all normal tests *and* handles DES properly. (This isn't just an example of bizarre perl code: I reduced the bug to % perl -e 'printf "%lu\n",0x80000000;' 2147483647 which is clearly and obviously wrong. I think the castneg try.c test has to be made *much* stronger, or else it should simply check #ifdef vax and only pass that case :-) At very least, it needs to check some real values near 1<<31 for conversions. It should also really *compute* some of them; one of the compilers I tried had *different behavior* depending on whether the float to long conversion was "constant folded" (ie done in the compiler) or done at runtime...) _Mark_ ps. Has anyone worked on more extensive Perl tests, comparable to SVVD or maybe trip.tex? ------ "Perl is APL on LSD" -- Seth Finkelstein -----