sms@wlv.imsd.contel.com (Steven M. Schultz(Y)) (06/29/89)
Subject: bug in f77 equivalence handling Index: usr.bin/f77/equiv.c 2.10BSD Description: /lib/f77pass1 gives "bad alignment forced by equivalence" error on many equivalence statements. Repeat-By: Try to compile this program with f77: program test real a(2),a1,a2 equivalence (a(1),a1),(a(2),a2) end Note the errors produced for all variables mentioned in the equivalence statement. Fix: It's yet another long vs. int gotcha, the lmin() and lmax() functions were not declared properly in eqveqv(). Apply the following patch to equiv.c: *** equiv.c.old Tue Jun 27 19:57:21 1989 --- equiv.c Tue Jun 27 19:54:24 1989 *************** *** 1,6 **** --- 1,7 ---- #include "defs" #include "string_defs" + extern ftnint iarrlen(), lmin(), lmax(); /* ROUTINES RELATED TO EQUIVALENCE CLASS PROCESSING */ /* called at end of declarations section to process chains *************** *** 10,16 **** { register int i; int inequiv, comno, ovarno; ! ftnint comoffset, offset, leng, iarrlen(), lmin(), lmax(); register struct equivblock *p; register struct eqvchain *q; struct primblock *itemp; --- 11,17 ---- { register int i; int inequiv, comno, ovarno; ! ftnint comoffset, offset, leng; register struct equivblock *p; register struct eqvchain *q; struct primblock *itemp; -------------------------------------------------------------------------