Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!wuarchive!udel!rochester!kodak!dixel!lrul00 From: lrul00@dixel.Kodak.COM (Richard C. Dempsey) Newsgroups: comp.lang.perl Subject: Re: toke.c warnings on SGI Irix 3.3 Keywords: install toke compiler errors Message-ID: <1991Apr25.125623.4398@kodak.kodak.com> Date: 25 Apr 91 12:56:23 GMT References: <1991Apr24.192700.5016@kodak.kodak.com> <1991Apr24.212941.9704@cs.umn.edu> Sender: news@kodak.kodak.com Distribution: na Organization: Eastman Kodak Co. Lines: 59 Summary: For SGI IRIX 3.3 (MIPS cc v2.0) 1) edit toke.c to put #undef f_next after #include 2) use optimize=-O1. Higher levels do not work. In article <1991Apr24.212941.9704@cs.umn.edu> meuer@cs.umn.edu (Mark V. Meuer) writes: >In <1991Apr24.192700.5016@kodak.kodak.com> lrul00@dixel.Kodak.COM (Richard C. Dempsey) writes: >> I am installing perl 4.003 on a Silicon Graphics Personal Iris 4D/25 >> running Irix v3.3. I get a bunch of warnings when compiling toke.c at >> lines 2333, 2345, 2453, 2464, and 2517. In each case it says "illegal >> member use: f_up" (or f_type). At lines 2333, 2345, 2453, and 2517, it >> also says "illegal structure pointer combination". In addition, it >> won't run t/TEST at all. Any ideas? > > I ran into some of the same problems. The problem with toke.c is > caused by the fact that the file sys/file.h on the Iris defines f_next > as a macro. Unfortunately f_next is used as a field name in one of > the structures in toke.c. To fix it, find where sys/file.h is > #included in toke.c and insert "#undef f_next" right after it. It is interesting to note that hints/sgi.sh has a line in it that says ccflags="$ccflags -Uf_next" which is presumably put there precisely to get around this problem. Clearly, it doesn't work. You have to edit toke.c as Mark describes. Sigh. > The other thing to watch out for is the value of vfork in the > configuration file. The patched configuration script gives a warning > about vfork. You MUST go with the recommended value (undefined). This is true. I neglected to mention that I had done so. >> Incidentally, I can compile eval.c and teval.c with "-O -Olimit 2900" >> in 16 MB, but it takes 50-60 minutes each (gag). It uses 5:39 of CPU >> in 40:00 elapsed. It sure would be nice if MIPS optimazation algorithm >> could trade time for space a little more gracefully. > You might also have to turn off optimization to get it to work. I had > to for earlier versions of perl and never bothered to try turning it > back on again. With the above modification to toke.c, perl compiled with -O -Olimit 2900 fails three tests. op/eval fails on test 0, op/s runs out of memory on test 40 and lib/big fails on test 0, returning false at ./lib/big.t, line 2. So I pulled back to -O1 (on SGI, which is MIPS cc v2.0, -O is -O2) and that perl passes all the tests. -O1 does all the simple optimizations, but avoids the global optimizations. -Olimit, which increases some static tables, only makes sense with -O2 or -O3. So, at any rate, I am happy that I didn't have to turn off optimization completely (-O0 or -g) to get it to work. It also compiles MUCH faster, like about 5 minutes. Thanks for the help, Mark. -- Richard C. Dempsey, Computational Science Lab | dempsey@Kodak.COM 10th Floor, Bldg 83, RL | KODAKR(DEMPSEY) Eastman Kodak Company | (716) 477-3457 Rochester, NY 14650-2205 |