[comp.lang.perl] toke.c warnings on SGI Irix 3.3

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			|