lrul00@dixel.Kodak.COM (Richard C. Dempsey) (04/25/91)
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? 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. -- 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 |
meuer@cs.umn.edu (Mark V. Meuer) (04/25/91)
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. 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). >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. Good luck! :-) -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 | -- Mark Meuer <>< | The Geometry Center | meuer@geom.umn.edu Observing the first baloon ascent in Paris, [Ben] Franklin heard a scoffer ask, "What good is it?" He spoke for a generation of scientists in his retort, "What good is a newly born infant?" -- John F. Kasson
lrul00@dixel.Kodak.COM (Richard C. Dempsey) (04/25/91)
Summary: For SGI IRIX 3.3 (MIPS cc v2.0) 1) edit toke.c to put #undef f_next after #include <sys/file.h> 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 |