Google
 

Trailing-Edge - PDP-10 Archives - AP-D480B-SB_1978 - ftn5a.pco
There is 1 other file named ftn5a.pco in the archive. Click here to see a list.
Digital Equipment Corporation       27-OCT-77    Page   1
PCO Log Report



                   *********************
                   *PCO #:10-F10   -201*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515)

[Date Entered]          10-NOV-76

[Programmer]            GILBERT

[Routines]              COMMAN

[Key Words]             SFD'S       BLANK EXTE

[Source Before Edit]    %5   (000515)

[Source After Edit]     %5   (000516)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21215
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page   2
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
     F10 cannot find files  with  blank  extensions  if  the
user's default path includes any SFD's.
 

                        **********


[DIAGNOSIS]
 
     If the user does not specify an extension for an  input
source  file  in  the  command  string, F10 first executes a
LOOKUP UUO for the file name specified with an extension  of
.FOR  (F10's  default  input  extension).  If this fails, it
then tries another LOOKUP UUO, this time specifying a  blank
extension.  Unfortunately, if the first LOOKUP tried to look
in the user's default path (i.e., the  .RBPPN  word  of  the
LOOKUP  block was 0), the monitor will place the PPN portion
of the path on which it first looked for the file  into  the
.RBPPN  word  of  the  LOOKUP  UUO  argument  block, thereby
destroying the user's default path specification.  When  F10
tries the second LOOKUP, it uses the same UUO argument block
without re-initializing it, thereby  looking  in  the  wrong
place.
 

                        **********


[CURE]
 
     Recognize that the monitor will destroy the .RBPPN word
of  the  LOOKUP UUO argument block on either an erroneous or
successful LOOKUP, and add code to save the correct value of
this word over the LOOKUP UUO.
 
 
Digital Equipment Corporation       27-OCT-77    Page   3
PCO Log Report


[FILCOM]
File 1)	DSK:COMMAN.515	created: 1129 09-NOV-1976
File 2)	DSK:COMMAN.MAC	created: 1130 09-NOV-1976
 
1)1	TITLE	FTNCMD	%5.(515) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 7-No
	v-76
1)	;COPYRIGHT 1972,1973,1974,1975,1976, DIGITAL EQUIPMENT CORPORATI
	ON, MAYNARD, MASS
****
2)1	TITLE	FTNCMD	%5.(516) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 9-No
	v-76
2)	;COPYRIGHT 1972,1973,1974,1975,1976, DIGITAL EQUIPMENT CORPORATI
	ON, MAYNARD, MASS
**************
1)1	;END REVISION HISTORY
****
2)1	;516	COMMAN(516)	21215	FIND FILES WITH BLANK EXTENSIONS
	 IN SFDS
2)	;END REVISION HISTORY
**************
1)1	EDNUM==515	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==516	;EDIT NUMBER
2)	JOBVER=137
**************
1)1		TXNN	T1,DV.DTA	;IS DEVICE DECTAPE
****
2)1	;**;[516] Insert @ OPENIN+11L	JNG	9-Nov-76
2)		PUSH	P,LBLOCK+.RBPPN	;[516] SAVE .RBPPN OVER LOOKUP
2)		TXNN	T1,DV.DTA	;IS DEVICE DECTAPE
**************
1)1		MOVE	T2,OBLOCK	;T2 GETS THE DEVICE NAME
****
2)1	;**;[516] Insert @ OPEN2	JNG	9-Nov-76
2)		POP	P,LBLOCK+.RBPPN	;[516] RESTORE .RBPPN TO WHAT US
	ER SAID
2)		MOVE	T2,OBLOCK	;T2 GETS THE DEVICE NAME
**************
1)1		HRRZ	T1,LBLOCK+.RBEXT
****
2)1	;**;[516] Insert @ OPNER2	JNG	9-Nov-76
2)		POP	P,LBLOCK+.RBPPN	;[516] RESTORE .RBPPN FROM LOOKU
	P ERROR
2)		HRRZ	T1,LBLOCK+.RBEXT
**************
Digital Equipment Corporation       27-OCT-77    Page   4
PCO Log Report


[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page   5
PCO Log Report



                   *********************
                   *PCO #:10-F10   -202*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515)

[Date Entered]          11-NOV-76

[Programmer]            GILBERT

[Routines]              COMMAN

[Key Words]             SFD'S       EXPLICIT

[Source Before Edit]    %5   (000516)

[Source After Edit]     %5   (000517)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21238
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page   6
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
     Explicitly typed SFD's do not work in a command  string
to F10.
 

                        **********


[DIAGNOSIS]
 
     Although F10 contains a great deal of code to correctly
handle  SFD's,  this code was apparently never tested.  As a
result, there are a few minor bugs in the code which prevent
SFD's from working properly.
 

                        **********


[CURE]
 
     Pass the correct SCAN block length to SCAN, and  use  a
SKIPE  instead  of  a SKIPN to skip if a path block entry is
zero.
 
 
Digital Equipment Corporation       27-OCT-77    Page   7
PCO Log Report


[FILCOM]
File 1)	DSK:COMMAN.516	created: 0137 11-NOV-1976
File 2)	DSK:COMMAN.MAC	created: 0137 11-NOV-1976
 
1)1	TITLE	FTNCMD	%5.(516) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 9-No
	v-76
1)	;COPYRIGHT 1972,1973,1974,1975,1976, DIGITAL EQUIPMENT CORPORATI
	ON, MAYNARD, MASS
****
2)1	TITLE	FTNCMD	%5.(517) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 11-N
	ov-76
2)	;COPYRIGHT 1972,1973,1974,1975,1976, DIGITAL EQUIPMENT CORPORATI
	ON, MAYNARD, MASS
**************
1)1	;END REVISION HISTORY
****
2)1	;517	COMMAN(517)	21238	MAKE SFD'S IN COMMAND STRINGS WO
	RK.
2)	;END REVISION HISTORY
**************
1)1	EDNUM==516	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==517	;EDIT NUMBER
2)	JOBVER=137
**************
1)1		SKIPN	(T1)		;IS IT THERE??
1)		AOJA	T2,SETEN1	;YES--LOOP OVER IT
****
2)1	;**;[517] Change @ SETEN1+3L	JNG	11-Nov-76
2)		SKIPE	(T1)		;[517] IS IT THERE??
2)		AOJA	T2,SETEN1	;YES--LOOP OVER IT
**************
1)1	F.SLEN==.-F.DIR-1
1)	F.ADV:!	BLOCK	1	;NUMBER OF FILES TO ADVANCE TAPE
****
2)1	;**;[517] Change @ F.SLEN	JNG	11-Nov-76
2)	F.SLEN==.-F.DEV		;[517] SIZE OF THE BLOCK SCAN KNOWS ABOU
	T
2)	F.ADV:!	BLOCK	1	;NUMBER OF FILES TO ADVANCE TAPE
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  13
PCO Log Report



                   *********************
                   *PCO #:10-F10   -204*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515), TESTED IN 5(517)

[Date Entered]          19-NOV-76

[Programmer]            EKLUND

[Routines]              REA       COMSUB

[Key Words]             BAD CODE    RELATIONAL  COMMON SUB  NEG FLAGS

[Source Before Edit]    %5   (000517)

[Source After Edit]     %5   (000520)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21271
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  14
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Bad code may be generated when using the optimizer  if  a  common
sub-expression  is  found  as  a relational operation while any of the
operands are negated.  For example, the expressions:  A .GT.  B and -A
.GT.   B  may be discovered to be essentially the same expression, and
bad code will be generated for at least one of them.
 

                        **********


[DIAGNOSIS]
 
 
     No test was ever made to  discard  relational  expressions  which
involved  negations  in  them  from  the  normal common sub-expression
processing.  The assumption was made that any negative flags could  be
handled  further  down  the line.  While this is true in all cases for
arithmetic expressions, it is not true for  relational  ones,  and  so
they must be treated quite differently.
 

                        **********


[CURE]
 
 
     For the time being, the patch is to not consider  any  relational
expressions   which   involve   negations  for  common  sub-expression
elimination.   This  will  restrict  the  class  of  potential  common
sub-expressions,   but   not   severely.   Thus  we  will  still  find
expressions like:  A .GT.  B but will not look at ones like:  -A  .GT.
B  since  the  minus sign is present.  This will be considered further
when the method of entering elements into the hash table of  potential
common sub-expressions is under review for development.
 
Digital Equipment Corporation       27-OCT-77    Page  15
PCO Log Report


[FILCOM]
File 1)	DSK:COMMAN.MAC[30,3737]	created: 0137 11-NOV-1976
File 2)	DSK:COMMAN.520	created: 1545 19-NOV-1976
 
1)1	TITLE	FTNCMD	%5.(517) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 11-N
	ov-76
1)	;COPYRIGHT 1972,1973,1974,1975,1976, DIGITAL EQUIPMENT CORPORATI
	ON, MAYNARD, MASS
****
2)1	TITLE	FTNCMD	%5.(520) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 19-N
	ov-76
2)	;COPYRIGHT 1972,1973,1974,1975,1976, DIGITAL EQUIPMENT CORPORATI
	ON, MAYNARD, MASS
**************
1)1	;END REVISION HISTORY
****
2)1	;520	COMSUB(261)	21271	PROHIBIT NEGATIONS IN RELATIONAL
	 COMSUBS
2)	;END REVISION HISTORY
**************
1)1	EDNUM==517	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==520	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  16
PCO Log Report


[FILCOM]
File 1)	DSK:COMSUB.BLI	created: 1458 22-SEPT-1976
File 2)	DSK:COMSUB.520	created: 1540 19-NOV-1976
 
1)1	GLOBAL BIND COMSV = 5^24 + 0^18 + 260;	!VERSION DATE: 20-SEP-76
1)	%(
****
2)1	GLOBAL BIND COMSV = 5^24 + 0^18 + 261;	!VERSION DATE: 19-NOV-76
2)	%(
**************
1)1	)%
****
2)1	261	520	21271	RELATIONAL COMMON SUBS CANNOT HAVE NEG F
	LAGS SET
2)	)%
**************
1)1				IF .PAE[A1VALFLG] AND .PAE[A2VALFLG] THE
	N
****
2)1	!**;[520], REA @5009 (5098 IN VERSION 5), DCE, 19-NOV-76
2)	!**;[520], DO NOT CONSIDER FOR COMMON SUBEXPRESSIONS RELATIONAL
2)	!**;[520], EXPRESSIONS INVOLVING NEG FLAGS.  TO ALLOW THIS WILL
	CAUSE
2)	!**;[520], EXPRESSIONS LIKE A .GT. B   AND   -A .GT. B   TO BE
2)	!**;[520], CONSIDERED AS COMMON SUBS - CLEARLY WRONG!
2)	%[520]%		IF(.PAE[A1NEGFLG] OR .PAE[A2NEGFLG]) THEN RETURN
	 ELSE
2)				IF .PAE[A1VALFLG] AND .PAE[A2VALFLG] THE
	N
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  17
PCO Log Report



                   *********************
                   *PCO #:10-F10   -205*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515)

[Date Entered]          16-DEC-76

[Programmer]            GILBERT

[Routines]              STREGA

[Key Words]             IOLIST      ARRAY REF   NEGFLG'S

[Source Before Edit]    %5   (000521)

[Source After Edit]     %5   (000522)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-20819
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  18
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
     Bad code  may  be  generated  by  FORTRAN  for  an  I/O
statement  (READ,  WRITE, TYPE, etc.) which includes a long,
complicated I/O list  containing  several  array  references
which  have  the  same  expression for their subscript.  The
array references generated may actually use the negative  of
the desired subscript.
 

                        **********


[DIAGNOSIS]
 
     When doing register allocation for an  array  reference
in  a  long I/O list, the compiler will attempt to determine
if the desired subscript is already present in  a  register,
so  that  a  new  register  will  not  have to be allocated.
Unfortunately, the check to determine  whether  the  desired
subscript  is  living in a register does not bother to check
the sign of the  needed  subscript.   This  means  that  the
compiler  may  end  up  generating  code that contains array
references which use the negative of the desired subscript.
 

                        **********


[CURE]
 
     Check the sign of the contents  of  a  register  before
deciding that that register contains the desired subscript.
 
Digital Equipment Corporation       27-OCT-77    Page  19
PCO Log Report


[FILCOM]
File 1)	DSK:COMMAN.521	created: 1835 16-DEC-1976
File 2)	DSK:COMMAN.MAC	created: 1845 16-DEC-1976
 
1)1	TITLE	FTNCMD	%5.(521) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 24-N
	ov-76
1)	;COPYRIGHT 1972,1973,1974,1975,1976, DIGITAL EQUIPMENT CORPORATI
	ON, MAYNARD, MASS
****
2)1	TITLE	FTNCMD	%5.(522) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 16-D
	ec-76
2)	;COPYRIGHT 1972,1973,1974,1975,1976, DIGITAL EQUIPMENT CORPORATI
	ON, MAYNARD, MASS
**************
1)1	;END REVISION HISTORY
****
2)1	;522	STREGA(214)	20819	CHECK NEGFLGS FOR ARRAYREFS IN I
	OLISTS
2)	;END REVISION HISTORY
**************
1)1	EDNUM==521	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==522	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  20
PCO Log Report


[FILCOM]
File 1)	DSK:STREGA.521	created: 1835 16-DEC-1976
File 2)	DSK:STREGA.BLI	created: 1837 16-DEC-1976
 
1)1	GLOBAL BIND STREV = 5^24 + 0^18 + 213;	!VERSION DATE: 26-Oct-76
1)	%(
****
2)1	GLOBAL BIND STREV = 5^24 + 0^18 + 214;	!VERSION DATE: 16-Dec-76
2)	%(
**************
1)1	)%
****
2)1	214	522	20819	ON AN ARRAYREF IN AN IOLIST WHEN WE'RE O
	UT OF
2)				REGS, CHECK NEGFLGS BEFORE USING EXISTIN
	G REG
2)				CONTAINING DESIRED SUBSCRIPT.
2)	)%
**************
1)1							IF .TREEPTR[A2VA
	LFLG]
1)							THEN
****
2)1	!**;[522] Insert @ line 5640 in ALCIOCALL	JNG	16-Dec-7
	6
2)	%[522]%						IF .TREEPTR[A2VA
	LFLG] AND NOT .TREEPTR[A2NEGFLG]
2)							THEN
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  21
PCO Log Report



                   *********************
                   *PCO #:10-F10   -206*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515), TESTED IN 5A(526)

[Date Entered]          06-JAN-77

[Programmer]            EKLUND

[Routines]              ALCRAN    STREGA

[Key Words]             ASSOCIATE   VARIABLES   COMMON      REG ALLOC

[Source Before Edit]    %5A  (000526)

[Source After Edit]     %5A  (000527)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-20317
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  22
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     If a random READ, WRITE, or FIND statement occurs  in  a  program
unit  different from the one where the OPEN statement for the I/O unit
occurs, and if there is an associate variable in  the  OPEN  statement
with  the  variable in COMMON, then bad code may result around the I/O
statement.  In particular, the compiler forgets that the I/O statement
can  be  changing  any  variable  in  COMMON,  and so if the associate
variable is living in a register, it will not get updated properly.
 

                        **********


[DIAGNOSIS]
 
 
     Basically, the problem is that if the associate variable  is  not
in  the  associate variable list because it is defined in a separately
compiled module, then it is being changed without the  compiler  being
fully  aware  of it.  Thus if the associate variable lives temporarily
in a register before the I/O statement, the compiler will consider  it
to  still be alive and well there after the I/O statement when in fact
it could have changed.
 

                        **********


[CURE]
 
     When encountering any of the above described cases, be sure  that
all  variables  in  COMMON  or  EQUIVALENCE statements for the current
program unit are materialized so  that  they  wil  not  be  used  from
registers after the I/O statement.
 
Digital Equipment Corporation       27-OCT-77    Page  23
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 0859 29-DEC-1976
File 2)	FTN:COMMAN.527[30,4515]	created: 0840 06-JAN-1977
 
1)1	TITLE	FTNCMD	%5.(526) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 29-D
	ec-76
1)	;***COPYRIGHT 1972,1973,1974,1975,1976 DIGITAL EQUIPMENT CORP.,
	MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(527) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 6-Ja
	n-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976 DIGITAL EQUIPMENT CORP.,
	MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;527	STREGA(215)	20317	BAD CODE FOR ASSOCIATE VARS IN C
	OMMON
2)	;END REVISION HISTORY
**************
1)1	EDNUM==526	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==527	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  24
PCO Log Report


[FILCOM]
File 1)	FTN:STREGA.BLI[31,4650]	created: 1837 16-DEC-1976
File 2)	FTN:STREGA.527[30,4515]	created: 1617 05-JAN-1977
 
1)1	GLOBAL BIND STREV = 5^24 + 0^18 + 214;	!VERSION DATE: 16-Dec-76
1)	%(
****
2)1	GLOBAL BIND STREV = 5^24 + 0^18 + 215;	!VERSION DATE: 6-JAN-77
2)	%(
**************
1)1	)%
****
2)1	215	527	20317	CLOBBER ALL COMMON OR EQUIV VARS ON RAND
	OM READ,
2)				WRITE, FIND SINCE ASSOCIATE VAR IS UNKNO
	WN TO US!
2)	)%
**************
1)1		ROUTINE ALCRANDIO=
****
2)1	!**;[527], STREGA @3520, DCE, 6-JAN-77
2)	%[527]%	EXTERNAL CLOBBCOMEQV;
2)		ROUTINE ALCRANDIO=
**************
1)1		END;
****
2)1	!**;[527], ALCRANDIO @3556 (BETWEEN END STMNTS), DCE, 6-JAN-77
2)	!**;[527], IF THE OPEN OCCURS OUTSIDE THIS PROGRAM MODULE, THEN
2)	!**;[527], WE MUST ASSUME THAT ALL COMMON/EQUIV VARS ARE CLOBBER
	ED
2)	!**;[527], SINCE THEY COULD BE ASSOCIATE VARIABLES!
2)	%[527]%	CLOBBCOMEQV();
2)		END;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  25
PCO Log Report



                   *********************
                   *PCO #:10-F10   -207*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(520)

[Date Entered]          06-JAN-77

[Programmer]            STAN WHITLOCK

[Routines]              STA1

[Key Words]             OPEN        NO UNIT

[Source Before Edit]    %5   (000520)

[Source After Edit]     %5   (000521)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-QA900
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  26
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
Error message FTNISN says "DEFINE IS NOT UNIT"
 

                        **********


[DIAGNOSIS]
 
Error message should be "UNIT IS NOT DEFINED"
 

                        **********


[CURE]
 
Reverse the arguments to FATLEX routine
 
Digital Equipment Corporation       27-OCT-77    Page  27
PCO Log Report


[FILCOM]
File 1)	LIB:STA1.BLI	created: 0837 23-AUG-1976
File 2)	DSK:STA1.BLI	created: 1104 24-NOV-1976
 
1)1	GLOBAL BIND STA1V = 5^24 + 0^18 + 64;	!VERSION DATE: 13-AUG-76
1)	%(
****
2)1	GLOBAL BIND STA1V = 5^24 + 0^18 + 65;	!VERSION DATE: 24-NOV-76
2)	%(
**************
1)1	)%
****
2)1	65	521	QA900	FIX E15 PARAMS TO FATLEX IN OPENCLOSE
2)	)%
**************
1)1			RETURN FATLEX(PLIT 'UNIT',PLIT SIXBIT'DEFINED',E
	15<0,0>);
1)		IF .SP GEQ 0
****
2)1	!**[521] OPENCLOSE @4162 SJW 24-NOV-76
2)	![521] FIX PARAMS TO E15 IN FATLEX: E15 =?B IS NOT ?C
2)	![521]				    1ST PARAM IS ?C IN 7BIT
2)	![521]				    2ND PARAM IS ?B IN 6BIT
2)			RETURN FATLEX(PLIT 'DEFINED',PLIT SIXBIT'UNIT',E
	15<0,0>);
2)		IF .SP GEQ 0
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  28
PCO Log Report



                   *********************
                   *PCO #:10-F10   -208*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(522)

[Date Entered]          06-JAN-77

[Programmer]            STAN WHITLOCK

[Routines]              COMMAN

[Key Words]             SCAN        SWITCHES

[Source Before Edit]    %5   (000522)

[Source After Edit]     %5   (000523)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-QA1038
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  29
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
Setting the default flag setting for a SCAN flag to non-zero
turns on the wrong flag.
 

                        **********


[DIAGNOSIS]
 
The expression which constructs the  default  flag  settings
shifts   the  default  values  by  SW.XXX  for  switch  XXX.
However, SW.XXX values  are  counted  from  the  right  (for
BLISS) but must be from the left (for MACRO).
 

                        **********


[CURE]
 
Shift the default values by (octal) 43 - SW.XXX to  get  the
flag position from the left.
 
Digital Equipment Corporation       27-OCT-77    Page  30
PCO Log Report


[FILCOM]
File 1)	DSK:COMMAN.MAC	created: 1129 17-DEC-1976
File 2)	LIB:COMMAN.MAC	created: 1845 16-DEC-1976
 
1)1	TITLE	FTNCMD	%5.(523) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 17-D
	ec-76
1)	;***COPYRIGHT 1972,1973,1974,1975,1976 DIGITAL EQUIPMENT CORP.,
	MAYNARD, MASS. ***
1)		TWOSEG
****
2)1	TITLE	FTNCMD	%5.(522) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 16-D
	ec-76
2)	;COPYRIGHT 1972,1973,1974,1975,1976, DIGITAL EQUIPMENT CORPORATI
	ON, MAYNARD, MASS
2)		TWOSEG
**************
1)1	;523	COMMAN(523)	QA1038	FIX DEFAULT FLAG SETTINGS FOR SC
	AN:
1)	;				  SWITCHES COUNT FROM LEFT NOT R
	IGHT
1)	;END REVISION HISTORY
****
2)1	;END REVISION HISTORY
**************
1)1	EDNUM==523	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==522	;EDIT NUMBER
2)	JOBVER=137
**************
1)1	;**[523] COMMAN @556 SJW 17-DEC-76 FIX DEFAULT SETTINGS: SWITCHE
	S
1)	;[523]				     COUNT FROM LEFT NOT RIGHT
1)	INDADF:	EXP	<<AD.MAP>_<43-^L<SW.MAP>>> ! ^_
1)			<<AD.CRF>_<43-^L<SW.CRF>>> ! ^_
1)			<<AD.DEB>_<43-^L<SW.DEB>>> ! ^_
1)			<<AD.EXP>_<43-^L<SW.EXP>>> ! ^_
1)			<<AD.INC>_<43-^L<SW.IDS>>> ! ^_
1)			<<AD.MAC>_<43-^L<SW.MAC>>> ! ^_
1)			<<AD.NOE>_<43-^L<SW.NET>>>
1)	EXTERNAL DEBGSW
****
2)1	INDADF:	EXP	<AD.MAP>_<^L<SW.MAP>>+<AD.CRF>_<^L<SW.CRF>>+<AD.
	DEB>_<^L<SW.DEB>>+<AD.EXP>_<^L<SW.EXP>>+^_
2)	<AD.INC>_<^L<SW.IDS>>+<AD.MAC>_<^L<SW.MAC>>+<AD.NOE>_<^L<SW.NET>
	>
2)	EXTERNAL DEBGSW
Digital Equipment Corporation       27-OCT-77    Page  31
PCO Log Report


**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  32
PCO Log Report



                   *********************
                   *PCO #:10-F10   -209*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(523)

[Date Entered]          06-JAN-77

[Programmer]            STAN WHITLOCK

[Routines]              COMSUB

[Key Words]             HASH TABLE  NARY SKEWE  NEG FLAGS

[Source Before Edit]    %5   (000523)

[Source After Edit]     %5   (000524)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-QA876
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  33
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
INTERNAL COMPILER ERROR when optimizing an expression  which
contains a common sub-expression and an array reference.
 

                        **********


[DIAGNOSIS]
 
For an NARY skewed  common  sub-expression  (N(I)+P+P1  with
N(I)   as   the  left-most  leaf  and  P+P1  as  the  common
sub-expression), the hash table  entry  which  replaces  the
array  reference  must  be  put back after the skewed comsub
(P+P1) is replaced by a .O.  Also NEG flags might be changed
by CMNMAK so call STPRECLUDE to put back the arrayref before
the original tree is changed when the comsub is removed.
 

                        **********


[CURE]
 
Do it, carefully.
 
Digital Equipment Corporation       27-OCT-77    Page  34
PCO Log Report


[FILCOM]
File 1)	LIB:COMSUB.BLI	created: 1543 19-NOV-1976
File 2)	DSK:COMSUB.BLI	created: 1618 17-DEC-1976
 
1)1	GLOBAL BIND COMSV = 5^24 + 0^18 + 261;	!VERSION DATE: 19-NOV-76
1)	%(
****
2)1	GLOBAL BIND COMSV = 5^24 + 0^18 + 262;	!VERSION DATE: 17-DEC-76
2)	%(
**************
1)1	)%
****
2)1	262	522	QA876	PUT BACK ARRAY REF IN STPRECLUDE AFTER A
	 MATCH
2)				  SO CAN NEXTUP THE EXPR CONTAINING THE
	ARRAY
2)				  REF AND NOT RUN INTO A HASH TABLE ENTR
	Y
2)				CALL STPRECLUDE BEFORE CMNMAK CHANGES NE
	G
2)				  FLAGS IN MATCHER
2)	)%
**************
1)1		IF (.QQ[OPR1] EQL .CNODE[OPR1]) AND  .QQ[A2VALFLG] THEN
1)		BEGIN
1)			!NOW ITS NARY CHECK FOR B OP B OP B
****
2)1	!**[524] STPRECLUDE @3815 SJW 2-DEC-76
2)	%[524]%	IF .QQ [OPR1] NEQ .CNODE [OPR1]
2)	%[524]%	  THEN RETURN;
2)	%[524]%	IF .QQ [A2VALFLG]
2)	%[524]%	  THEN BEGIN
2)			!NOW ITS NARY CHECK FOR B OP B OP B
**************
1)1	END;
****
2)1	!**[524] STPRECLUDE @3830 SJW 2-DEC-76
2)	![524] IF /OPT, MUST CHECK IF EXPR IS A OP B OP ARRAYREF.  IF IT
	 IS,
2)	![524] MUST DROP USECNT OF HASH ENTRY FOR ARRAYREF BY 1 SO MAYBE
	 THE
2)	![524] ARRAYREF WILL BE PUT BACK IN PLACE OF THE HASH TABLE ENTR
	Y
2)	%[524]%	IF NOT .FLGREG<OPTIMIZE>
2)	%[524]%	  THEN RETURN;
2)	%[524]%	HASHIT (.QQ, SKEW);
2)	%[524]%	TS _ TBLSRCH ();
2)	%[524]%	IF .FLAG  THEN IF
2)	%[524]%	   .TS [TEMPER] EQL 0  THEN IF
2)	%[524]%	   .TS [NBRCH]
2)	%[524]%	  THEN DELETE (.TS, 1);
Digital Equipment Corporation       27-OCT-77    Page  35
PCO Log Report


2)	END;
**************
1)1					T_CMNMAK(.PHI[LKER],.PHI[NEDSANE
	G],.PHI);	!MAKE A CMNSUB
1)					!PRECLUDE IF NECESSARY
1)					STPRECLUDE(.PHI[LKER]);
1)					PC_.PHI[LKER];
****
2)1	!**[524] MATCHER @4241 SJW 17-DEC-76
2)	![524] CALL STPRECLUDE BEFORE CMNMAK CHANGES NEG FLAGS SO HASH I
	N
2)	![524]   STPRECLUDE CAN FIND THE SKEW PIECE OF TREE
2)	%[524]%				!PRECLUDE IF NECESSARY
2)	%[524]%				STPRECLUDE(.PHI[LKER]);
2)					T_CMNMAK(.PHI[LKER],.PHI[NEDSANE
	G],.PHI);	!MAKE A CMNSUB
2)					PC_.PHI[LKER];
**************
1)1		%[371]%				T_CMNMAK(.PHI[LKER],
 
 
1)		%[371]%					.PHI[NEDSANEG],.
	PHI);
1)						![371] FIRST NODE WAS ST
	RAIGHT
1)						![371] BUT STILL HAVE TH
	E COUNT HASSLE
1)		%[371]%				STPRECLUDE(.PHI[LKER])
1)		%[371]%			END;
****
2)1	!**[524] MATCHER @4262 SJW 17-DEC-76
2)	![524] CALL STPRECLUDE BEFORE CMNMAK CHANGES THE NEG FLAGS
2)	%[524]%					![371] FIRST NODE WAS ST
	RAIGHT
2)	%[524]%					![371] BUT STILL HAVE TH
	E COUNT HASSLE
2)	%[524]%	%[371]%				STPRECLUDE(.PHI[LKER]);
2)		%[371]%				T_CMNMAK(.PHI[LKER],
2)		%[371]%					.PHI[NEDSANEG],.
	PHI);
2)		%[371]%			END;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  36
PCO Log Report



                   *********************
                   *PCO #:10-F10   -210*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(524)

[Date Entered]          06-JAN-77

[Programmer]            STAN WHITLOCK

[Routines]              VER5

[Key Words]             VER5        TYPE CONVE

[Source Before Edit]    %5   (000524)

[Source After Edit]     %5   (000525)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-QA949
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  37
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
Various INTERNAL COMPILER ERRORs occur  in  FORTD  or  FORTE
when   dealing   with   an   optimized  DO  loop  containing
subscripted expressions.
 

                        **********


[DIAGNOSIS]
 
The version 5 code which  optimized  expressions  containing
reduction   of   strength   variables   had   to  include  a
type-conversion if the expression went from INTEGER to REAL.
It is unnecessary to convert INTEGER to INDEX and vice versa
but the code tried anyway.  The result is  that  the  symbol
table  becomes  linked into the statement tree and the world
explodes.
 

                        **********


[CURE]
 
Do the correct type conversion only when necessary.
 
Digital Equipment Corporation       27-OCT-77    Page  38
PCO Log Report


[FILCOM]
File 1)	FTN:VER5.BLI[31,4735]	created: 0847 17-DEC-1976
File 2)	FTN:VER5.BLI[31,4577]	created: 1552 21-DEC-1976
 
1)1	GLOBAL BIND  VER5V = 5^24 + 0^18 + 4;		!VERSION DATE: 7
	-NOV-76
1)	%(REVISION HISTORY
****
2)1	GLOBAL BIND  VER5V = 5^24 + 0^18 + 5;		!VERSION DATE: 2
	1-DEC-76
2)	%(REVISION HISTORY
**************
1)1	)%
****
2)1	5	525	QAR949	DO CORRECT TYPECNV IN DOTOFIX ONLY IF NE
	CESSARY
2)	)%
**************
1)1	!	IF SUBSUMING .O WHICH CAME FROM .R, FIND .O INCR &
1)	!	  CHANGE TO NEW .O
****
2)1	!	IF SUBSUMING .O WHICH CAME FROM .R, FIND .O INCR (=.O +
	Z) &
2)	!	  CHANGE TO NEW .O
**************
1)1	!	  NODE ABOVE .O INCR EXPR TO MAKE SUBSUMER GET CORRECT I
	NCR EXPR
1)	!	  (EXCEPT INTEGER -> INDEX IS NOT NECESSARY)
1)	!	CALLED FROM GLOBDEP IN GCMNSB
****
2)1	!	  NODE ABOVE .O INCR EXPR (=Z) TO MAKE SUBSUMER GET CORR
	ECT INCR
2)	!	  EXPR (EXCEPT INTEGER <-> INDEX IS NOT NECESSARY) SO US
	E VALTP2
2)	!	  TO CHECK 1ST 3 BITS OF VALTYPE: MUST CONVERT IF NEQ
2)	!	CALLED FROM GLOBDEP IN GCMNSB
**************
1)1			IF .T [VALTYPE] NEQ .NEWO [VALTYPE] AND .NEWO [V
	ALTYPE] NEQ INDEX
1)			  THEN BEGIN
1)			    TEMP [VALTYPE] _ .NEWO [VALTYPE];
1)			    T1 _ .TEMP [ARG2PTR];
1)			    TEMP [ARG2PTR] _ MAKPR1 (.TEMP, TYPECNV, FRO
	MINT,
1)						     .NEWO [VALTYPE], 0,
1)						     .TEMP [ARG2PTR]);
1)			    T1 [PARENT] _ .TEMP [ARG2PTR];
1)			    T1 [A2FLGS] _ .TEMP [A2FLGS];	! MOVE F
	LAGS DOWN
****
2)1	!**[525] DOTOFIX @4116 SJW 21-DEC-76
Digital Equipment Corporation       27-OCT-77    Page  39
PCO Log Report


2)	![525]  DO TYPE CONVERSION ONLY IF NECESSARY AND DON'T CLOBBER "
	PARENT"
2)	%[525]%		IF .T [VALTP2] NEQ .NEWO [VALTP2]	! CONVER
	SION NECESSARY ?
2)			  THEN BEGIN
2)			    TEMP [VALTYPE] _ .NEWO [VALTYPE];
2)	%[525]%		    T1 _ MAKPR1 (.TEMP, TYPECNV, .T [VALTYPE],
2)	%[525]%		                 .NEWO [VALTYPE], 0,
2)	%[525]%		                 .TEMP [ARG2PTR]);
2)	%[525]%		    TEMP [ARG2PTR] _ .T1;
2)			    T1 [A2FLGS] _ .TEMP [A2FLGS];	! MOVE F
	LAGS DOWN
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  40
PCO Log Report



                   *********************
                   *PCO #:10-F10   -211*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(525)

[Date Entered]          06-JAN-77

[Programmer]            STAN WHITLOCK

[Routines]              GCMNSB

[Key Words]             LIB FUNC    ARRAY REF   FNARY

[Source Before Edit]    %5   (000525)

[Source After Edit]     %5   (000526)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-QA1035
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  41
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
The optimizer dies with  various  INTERNAL  COMPILER  ERRORs
when  trying to handle a library function reference with one
argument which is an array reference (eg, SQRT(A(I))).
 

                        **********


[DIAGNOSIS]
 
The node type FNARY (library function  of  one  argument
being  an  arrayref)  was  checked  to see if it matched any
existing sub-expressions.  If no match was found,  the  hash
table  entry  which  represents the arrayref was left in the
expression which caused link fields to point to 0, etc.
 

                        **********


[CURE]
 
If the expression is FNARY and there is  no  match,  put
the  arrayref  back  in place of the hash table entry so the
expression tree is consistent.
 
Digital Equipment Corporation       27-OCT-77    Page  42
PCO Log Report


[FILCOM]
File 1)	FTN:GCMNSB.BLI[31,4735]	created: 0837 17-DEC-1976
File 2)	FTN:GCMNSB.BLI[31,4577]	created: 0928 29-DEC-1976
 
1)1	GLOBAL BIND GCMNV=5^24 + 0^18 + 102;	!VERSION DATE: 7-NOV-76
1)	%(REVISION HISTORY
****
2)1	GLOBAL BIND GCMNV=5^24 + 0^18 + 103;	!VERSION DATE: 29-DEC-76
2)	%(REVISION HISTORY
**************
1)1	)%
****
2)1	103	526	QA1035	IN CHKDOM IF FNARY AND NO MATCH ON "FUNC
	(ARRAYREF)",
2)				  PUT BACK ARRAYREF SO HASH ENTRY NOT IN
	 TREE
2)	)%
**************
1)1				CNODE[DEFPT2]_.PHI[STPT];
****
2)1	!**[526] CHKDOM @4080 IN !FNARY SJW 29-DEC-76
2)	%[526]%			PLACE _ .CNODE [DEFPT2];	! SAVE D
	EFPT2
2)				CNODE[DEFPT2]_.PHI[STPT];
**************
1)1				IF .PHI NEQ 0 THEN
1)					PHI[AR2ARY]_1;
1)				RETURN;
****
2)1	!**[526] CHKDOM @4086 IN !FNARY SJW 29-DEC-76
2)	%[526]%			IF .PHI NEQ 0
2)	%[526]%			  THEN PHI [A2ARY] _ 1
2)	%[526]%			  ELSE BEGIN			! PUT BA
	CK ARRAYREF
2)	%[526]%			    AG [1,ARGNPTR] _ NEWCOPY (.AG [1,ARG
	NPTR], .CNODE);	! ARRAYREF'S DAD IS CNODE = FNCALL
2)	%[526]%			    CNODE [DEFPT2] _ .PLACE;	! RESTOR
	E DEFPT2
2)	%[526]%			  END;
2)				RETURN;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  46
PCO Log Report



                   *********************
                   *PCO #:10-F10   -213*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515), TESTED IN 5A(527)

[Date Entered]          10-JAN-77

[Programmer]            EKLUND

[Routines]              P2S2      ARCMB

[Key Words]             DOUBLE PRE  POWER OF 2  FSC INSTR

[Source Before Edit]    %5A  (000527)

[Source After Edit]     %5A  (000530)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21606
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  47
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Division or multiplication of a  double  precision  number  by  a
compile  time  constant  which is a power of two may generate bad code
(an FSC instruction) which will give  incorrect  results  for  a  very
small class of arguments - those which are negative and different from
a number which is a power of two by very little.
 

                        **********


[DIAGNOSIS]
 
 
     The internal representation of a double precision number which is
negative  and  close  to  a power of two may have the mantissa portion
entirely zero in the first of the double word  representation.   Under
this  condition,  the  FSC  instruction  which  may  be generated will
produce unpredictable and certainly incorrect results!
 

                        **********


[CURE]
 
 
     When producing the  internal  representation  of  the  expression
which  involves either a division or multiplication by a power of two,
check to see if the number being operated upon  is  double  precision,
and  if  so,  take  the  extra  precaution  to  never generate the FSC
instruction which will fail under the cases outlined above.  This will
result  in somewhat slower code in some cases, but correct code in all
cases!
 
Digital Equipment Corporation       27-OCT-77    Page  48
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.527[30,4515]	created: 0840 06-JAN-1977
File 2)	FTN:COMMAN.530[30,4515]	created: 1326 10-JAN-1977
 
1)1	TITLE	FTNCMD	%5A(527) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 6-Ja
	n-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976 DIGITAL EQUIPMENT CORP.,
	MAYNARD, MASS. ***
1)		TWOSEG
****
2)1	TITLE	FTNCMD	%5A(530) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 10-J
	an-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
2)		TWOSEG
**************
1)1	;END REVISION HISTORY
****
2)1	;530	P2S2(54)	21606	BAD CODE FOR DOUBLE PRECISION SP
	ECOPS
2)	;				WHICH GENERATED FSC INSTRUCTIONS
2)	;END REVISION HISTORY
**************
1)1	EDNUM==527	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==530	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  49
PCO Log Report


[FILCOM]
File 1)	FTN:P2S2.BLI[31,4650]	created: 1139 20-AUG-1976
File 2)	DSKC:P2S2.530[30,4515]	created: 1150 10-JAN-1977
 
1)1	!COPYRIGHT 1972,1973,1974,1975,1976, DIGITAL EQUIPMENT CORPORATI
	ON, MAYNARD, MASS
1)	!AUTHOR: S. MURPHY/HPW/MD/DCE/JNG
****
2)1	!COPYRIGHT 1972,1973,1974,1975,1976,1977, DIGITAL EQUIPMENT CORP
	ORATION, MAYNARD, MASS
2)	!AUTHOR: S. MURPHY/HPW/MD/DCE/JNG
**************
1)1	GLOBAL BIND P2S2V = 5^24 + 0^18 + 53;	!VERSION DATE: 20-Aug-76
1)	%(
****
2)1	GLOBAL BIND P2S2V = 5^24 + 1^18 + 54;	!VERSION DATE: 10-JAN-77
2)	%(
**************
1)1	)%
****
2)1	54	530	21606	DO NOT ALLOW FSC ON DOUBLE PRECISION NUM
	BERS
2)	)%
**************
1)1		%(****IF HAVE A MULTIPLICATION OR DIVISION BY A POWER OF
	 2, REPLACE CNODE
****
2)1	!**;[530], ARCMB @4102, DCE, 10-JAN-77
2)	!**;[530], DO NOT ALLOW DOUBLE PRECISION ARGS THROUGH HERE, FOR
	TO DO
2)	!**;[530], SO WOULD CAUSE FSC INSTRUCTIONS LATER WHICH ARE BAD C
	ODE!
2)	%[530]%	IF .CNODE[VALTYPE] NEQ DOUBLPREC THEN
2)		%(****IF HAVE A MULTIPLICATION OR DIVISION BY A POWER OF
	 2, REPLACE CNODE
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  50
PCO Log Report



                   *********************
                   *PCO #:10-F10   -214*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515), TESTED IN 5A(531)

[Date Entered]          14-JAN-77

[Programmer]            EKLUND

[Routines]              STA1      OPENCL

[Key Words]             ASSOCIATE   SUBROUTINE  PARAMETER

[Source Before Edit]    %5A  (000530)

[Source After Edit]     %5A  (000531)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-20323
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  51
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     When a parameter to a subroutine is used as an associate variable
in  an OPEN statement in that subroutine, problems may result if there
are RANDOM I/O statements not within this particular  subroutine.   In
particular,  it  will appear outside the subroutine that the associate
variable is not being incremented.
 

                        **********


[DIAGNOSIS]
 
 
     The problem is a complex one,  involving  how  FOROTS  keeps  the
associate   variable   updated,  and  how  parameters  are  passed  to
subroutines in the F10  implementation.   Basically,  FOROTS  will  be
passed  an  address  to  use (that of the associate variable) which it
uses to update as reading and writing and finding are  done.   If  the
associate  variable is a parameter to the subroutine in which the OPEN
occurs, then the address of the "local" parameter is used, and this is
perfectly  fine  if  all  I/O  operations  are  performed  within this
subroutine.  When one returns to the calling routine, however,  FOROTS
will  still  be  updating  the  local copy of the subroutine parameter
which is now not accessible within the calling routine.  Therefore the
results  that  one  gets  are  rather  unusual and unexpected, but the
implementation of the  parameter  passing  is  such  that  it  is  not
possible  to work around this peculiarity.  Therefore, the patch is to
issue a warning message whenever the user attempts to use a subroutine
parameter as an associate variable, for this may lead to unpredictable
results.  Furthermore, a similar problem exists whenever the  unit  is
opened  in  a  main  routine and calls a subroutine with the associate
variable as a parameter.  If I/O occurs within  the  subroutine,  once
again  it will appear that the associate variable is not being updated
properly, for in this case the  real  associate  variable  address  is
again  inaccessible  in  the  subroutine.  In general it is a very bad
idea to pass an associate variable as a parameter to a subroutine, and
should  be  avoided  unless  the  user  is  certain  of  the  possible
consequences!
 

                        **********
Digital Equipment Corporation       27-OCT-77    Page  52
PCO Log Report


[CURE]
 
 
     Issue a warning message whenever  the  user  attempts  to  use  a
subroutine  parameter as an associate variable in an OPEN statement in
the subroutine, but allow code generation, for this will be reasonable
if  the  user  does  all his I/O within this subroutine and CLOSEs the
unit prior to exiting the subroutine.
 

                        **********


[RESTRICTION]
 
 
     Due to the parameter passing mechanism and the implementation  of
associate  variables,  one  cannot  do I/O in program units other than
where the OPEN statement occurs if  there  is  an  associate  variable
involved which is being passed as a parameter.
 
Digital Equipment Corporation       27-OCT-77    Page  53
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1447 11-JAN-1977
File 2)	FTN:COMMAN.531[30,4515]	created: 0940 14-JAN-1977
 
1)1	TITLE	FTNCMD	%5A(530) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 10-J
	an-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(531) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 14-J
	an-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;531	STA1(66)	20323	GIVE WARNING WHEN SUBROUTINE PAR
	AMETER
2)	;	ERROUT(40)		IS USED AS ASSOCIATE VARIABLE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==530	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==531	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  54
PCO Log Report


[FILCOM]
File 1)	FTN:STA1.BLI[31,4650]	created: 0838 13-JAN-1977
File 2)	FTN:STA1.531[30,4515]	created: 1627 13-JAN-1977
 
1)1	!AUTHOR: F.J. INFANTE, D. B. TOLMAN/SJW
1)	MODULE STA1(RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15,DREGS=4)
	=
****
2)1	!AUTHOR: F.J. INFANTE, D. B. TOLMAN/SJW/DCE
2)	MODULE STA1(RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15,DREGS=4)
	=
**************
1)1	GLOBAL BIND STA1V = 5^24 + 1^18 + 65;	!VERSION DATE: 24-NOV-76
1)	%(
****
2)1	GLOBAL BIND STA1V = 5^24 + 1^18 + 66;	!VERSION DATE: 13-JAN-77
2)	%(
**************
1)1	)%
****
2)1	66	531	20323	GIVE WARNING FOR PARAMETER USED AS ASSOC
	 VAR
2)	)%
**************
1)1		EXTERNAL LEXEMEGEN %()%, LSAVE, LEXL, STK,SP,SYNTAX %(ME
	TA)%,
****
2)1	!**;[531], OPENCLOSE @3958, DCE, 13-JAN-77
2)	%[531]%	EXTERNAL E143;
2)		EXTERNAL LEXEMEGEN %()%, LSAVE, LEXL, STK,SP,SYNTAX %(ME
	TA)%,
**************
1)1					IF GETVARB()  LSS 0 THEN RETURN
	.VREG
****
2)1	!**;[531], OPENCLOSE @4110, DCE, 13-JAN-77
2)	!**;[531], GIVE WARNING FOR SUBROUTINE PARAMETER USED AS ASSOCIA
	TE VAR
2)	%[531]%				T1_.LEXL;
2)	%[531]%				IF .T1[OPR1] EQL FMLVARFL
2)	%[531]%					THEN WARNERR(.ISN,E143<0
	,0>);
2)					IF GETVARB()  LSS 0 THEN RETURN
	.VREG
**************
 
Digital Equipment Corporation       27-OCT-77    Page  55
PCO Log Report


[FILCOM]
File 1)	FTN:ERROUT.BLI[31,4650]	created: 0836 17-DEC-1976
File 2)	FTN:ERROUT.531[30,4515]	created: 1337 13-JAN-1977
 
1)1	GLOBAL BIND ERROV = 5^24 + 0^18 + 39;		!VERSION DATE: 4
	-NOV-76
1)	%(
****
2)1	GLOBAL BIND ERROV = 5^24 + 1^18 + 40;		!VERSION DATE: 1
	3-JAN-76
2)	%(
**************
1)1	)%	!END REVISION HISTORY
****
2)1	********* BEGIN VERSION 5A *********
2)	40	531	20323	ADD E143 (WARNING)
2)	)%	!END REVISION HISTORY
**************
1)1		WARMSG  GLOBALLY INDEXES  % END WARNING MESSAGES %
****
2)1	!**;[531], ERROUT @96, DCE, 13-JAN-77
2)	!**;[531], ADD ERROR MESSAGE
2)	%[531]%	E143 GLOBALLY INDEXES
2)	%[531]%		'PAV?E?A PARAMETER USED AS ASSOCIATE VARIABLE?0'
	,
2)		WARMSG  GLOBALLY INDEXES  % END WARNING MESSAGES %
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  56
PCO Log Report



                   *********************
                   *PCO #:10-F10   -215*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515), TESTED IN 5A(531)

[Date Entered]          14-JAN-77

[Programmer]            EKLUND

[Routines]              ALCOPE    STREGA    CGOPAR    CGSTMN

[Key Words]             ASSOCIATE   ARRAY REF   BAD CODE

[Source Before Edit]    %5A  (000531)

[Source After Edit]     %5A  (000532)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-20323
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  57
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Bad code  is  generated  for  an  OPEN  statement  which  uses  a
subscripted variable as an associate variable.
 

                        **********


[DIAGNOSIS]
 
 
     This case was never considered, and completely erroneous code  is
generated  so that the associate variable never gets updated properly.
The fix is in two parts - the  first  part  causes  the  address  (not
value)  of  the appropriate array element to be used as the address to
be passed to FOROTS.  The second  part  of  the  fix  is  to  set  the
indirect  bit  for the array reference in the argument block to FOROTS
so that it gets the right address to use for the associate variable.
 

                        **********


[CURE]
 
 
     Take into account the possibility that an associate variable  may
be  a  subscripted  variable and generate the correct code as outlined
above.
 
Digital Equipment Corporation       27-OCT-77    Page  58
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 0940 14-JAN-1977
File 2)	FTN:COMMAN.532[30,4515]	created: 1642 14-JAN-1977
 
1)1	TITLE	FTNCMD	%5A(531) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 14-J
	an-77
****
2)1	TITLE	FTNCMD	%5A(532) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 14-J
	an-77
**************
1)1	;END REVISION HISTORY
****
2)1	;532	STREGA(216)	20323	FIX CODE GENERATION FOR AN ARRAY
	 ELEMENT
2)	;	CGSTMN(127)		USED AS AN ASSOCIATE VARIABLE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==531	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==532	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  59
PCO Log Report


[FILCOM]
File 1)	FTN:STREGA.BLI[31,4650]	created: 0841 13-JAN-1977
File 2)	FTN:STREGA.532[30,4515]	created: 1531 14-JAN-1977
 
1)1	GLOBAL BIND STREV = 5^24 + 1^18 + 215;	!VERSION DATE: 6-JAN-77
1)	%(
****
2)1	GLOBAL BIND STREV = 5^24 + 1^18 + 216;	!VERSION DATE: 14-JAN-77
2)	%(
**************
1)1	)%
****
2)1	216	532	20323	TREAT ARRAY AS ASSOCIATE VARIABLE CORREC
	TLY
2)	)%
**************
1)1		REGISTER OPENLIST ARVALLST;
****
2)1	!**;[532], ALCOPEN @5155, DCE, JAN-14-77
2)	%[532]%	EXTERNAL ALCTARY;
2)		REGISTER OPENLIST ARVALLST;
**************
1)1				IF .TREEPTR[OPRCLS] EQL ARRAYREF	
	!FOR AN ARRAY ELEMENT
1)				THEN ARVALLST[.I,OPENLPTR]_ALCTVARR(.STB
	SYR,.STRGCT)	!LINK IN A PTR TO STORECLS NODE
1)				ELSE ALCINTMP(NXTTMP(.TREEPTR[DBLFLG]),.
	STBSYR,.STRGCT);
****
2)1	!**;[532], ALCOPEN @5170, DCE, 14-JAN-77
2)	!**;[532], BE SURE TO HANDLE ARRAY FOR ASSOCIATE VARIABLE CORREC
	TLY HERE
2)	!**;[532], SO THAT THE ADDRESS IS SET UP RATHER THAN THE VALUE I
	N THE ARRAY ELEMENT
2)	%[532]%			IF .TREEPTR[OPRCLS] EQL ARRAYREF !FOR AR
	RAY ELEMENT
2)	%[532]%			THEN ARVALLST[.I,OPENLPTR]_ !LINK IN PTR
	 TO STORECLS NODE
2)	%[532]%			(IF .ARVALLST[.I,OPENLCODE] EQL OPNCASSO
	CIATE
2)	%[532]%			THEN ALCTARY(.STBSYR,.STRGCT) !HERE IS T
	HE CHANGE
2)	%[532]%			ELSE ALCTVARR(.STBSYR,.STRGCT))
2)				ELSE ALCINTMP(NXTTMP(.TREEPTR[DBLFLG]),.
	STBSYR,.STRGCT);
**************
 
Digital Equipment Corporation       27-OCT-77    Page  60
PCO Log Report


[FILCOM]
File 1)	FTN:CGSTMN.BLI[31,4650]	created: 0834 17-DEC-1976
File 2)	FTN:CGSTMN.532[30,4515]	created: 1611 14-JAN-1977
 
1)1	GLOBAL BIND CGSTV = 4^24 + 2^18 + 126;	!VERSION DATE: 28-APR-76
1)	%(
****
2)1	GLOBAL BIND CGSTV = 5^24 + 1^18 + 127;	!VERSION DATE: 14-JAN-77
2)	%(
**************
1)1	)%
****
2)1	*********** BEGIN VERSION 5A *************
2)	127	532	20323	SET INDIRECT BIT IN ARG BLOCK FOR ARRAY
2)				REF AS ASSOCIATE VARIABLE
2)	)%
**************
1)1				END;
****
2)1	!**;[532], CGOPARGS @5475, DCE, 14-JAN-77
2)	!**;[532], SET INDIRECT BIT FOR ARRAY REF USED AS ASSOCIATE VARI
	ABLE
2)	%[532]%				IF .PBOPWD[OPENGFIELD] EQL OPNCA
	SSOCIATE
2)	%[532]%				THEN PBOPWD[OTSIND]_1;
2)				END;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  61
PCO Log Report



                   *********************
                   *PCO #:10-F10   -216*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317),5(515), TESTED IN 5A(532)

[Date Entered]          24-JAN-77

[Programmer]            EKLUND

[Routines]              INCLST    STA2

[Key Words]             INCLUDE     4400-4402   OVERWRITE   ICE

[Source Before Edit]    %5A  (000532)

[Source After Edit]     %5A  (000533)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21796
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  62
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Various internal compiler errors or bad code may result  when  an
INCLUDE  statement  is  used  in  a  program.  Locations 4400-4402 are
consistently   overwritten   by   any   INCLUDE   statement,   causing
unpredictable results based upon just what is overwritten.
 

                        **********


[DIAGNOSIS]
 
     When an INCLUDE statement occurs in a program, an attempt is made
to  open  up  the  new  file  to  be used for source input.  Due to an
oversight, the output buffer header pointer is not zero as  it  should
have  been,  but  is  4400  which  results in the OPEN UUO overwriting
locations 4400-4402.  This can result in  strange  results  -  various
internal  compiler  errors  and  the  like  at  compilation  time, and
possibly bad code under certain circumstances.   If  the  compiler  is
loaded  with  DDT a portion of DDT itself is overwritten, resulting in
its malfunctioning.
 

                        **********


[CURE]
 
 
     Fix up the buffer pointer word so that the  left  half  (for  the
output  buffer  which  should never be used) is zero.  This will cause
the compiler to not overwrite the three words causing strange results.
 
Digital Equipment Corporation       27-OCT-77    Page  63
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1642 14-JAN-1977
File 2)	FTN:COMMAN.533[30,4515]	created: 1027 24-JAN-1977
 
1)1	TITLE	FTNCMD	%5A(532) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 14-J
	an-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(533) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 24-J
	an-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;533	STA2(44)	21796	INCLUDE STMNT DESTROYS LOCS 4400
	-4402
2)	;END REVISION HISTORY
**************
1)1	EDNUM==532	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==533	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  64
PCO Log Report


[FILCOM]
File 1)	FTN:STA2.BLI[31,4650]	created: 0845 17-DEC-1976
File 2)	FTN:STA2.533[30,4515]	created: 1014 24-JAN-1977
 
1)1	GLOBAL BIND STA2V = 5^24 + 0^18 + 43;	!VERSION DATE: 1-OCT-76
1)	%(
****
2)1	GLOBAL BIND STA2V = 5^24 + 1^18 + 44;	!VERSION DATE: 24-JAN-77
2)	%(
**************
1)1	)%
****
2)1	44	533	21796	FIX OUTPUT BUFFER PTR FOR INCLUDE FILE T
	O BE 0.
2)	)%
**************
1)1			BUFFERS(ICL) _ BUFHDR(ICL);
1)			OPEN  (ICL, STATUS(ICL));
****
2)1	!**;[533], INCLST @3684, DCE, 24-JAN-77
2)	!**;[533], BE SURE THAT THE OUTPUT PTR IS ZERO, NOT 4400 AS IT W
	AS
2)	%[533]%		BUFFERS(ICL) _ BUFHDR(ICL)<0,0>;
2)			OPEN  (ICL, STATUS(ICL));
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  84
PCO Log Report



                   *********************
                   *PCO #:10-F10   -220*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(533)

[Date Entered]          17-FEB-77

[Programmer]            EKLUND

[Routines]              STATEF    STA3

[Key Words]             STMNT FN    ICE         FORTB

[Source Before Edit]    %5A  (000533)

[Source After Edit]     %5A  (000534)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21817
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  85
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Various internal compiler errors during FORTB may  occur  if  the
compiler  is  processing  what  appears  to be a syntactically invalid
statement function.  Examples are:
 
 
     FIRMT(' STRING')
 
     CAYY SYMBOL(-1.,3)
 
     X('LITERAL')=
 

                        **********


[DIAGNOSIS]
 
 
     If the compiler is  processing  what  seems  to  be  a  statement
function,  and  encounters  a syntax error somewhere in the statement,
then  it  attempts  to  recover  gracefully  by  removing  the   dummy
parameters  from  the  symbol  table.   Unfortunately,  this procedure
depends upon the state of STK when the syntax error is discovered, and
there were cases which caused confusion.
 

                        **********


[CURE]
 
 
     Be more careful when  attempting  to  restore  the  symbol  table
entries, and get out if things look too dangerous to proceed!
 
Digital Equipment Corporation       27-OCT-77    Page  86
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1027 24-JAN-1977
File 2)	FTN:COMMAN.534[30,4515]	created: 1017 17-FEB-1977
 
1)1	TITLE	FTNCMD	%5A(533) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 24-J
	an-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(534) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 17-F
	EB-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;534	STA3(60)	21817	INTERNAL COMPILER ERRORS IN FORT
	B CAUSED
2)	;				BY BADLY STRUCTURED STATEMENT FU
	NCTIONS
2)	;END REVISION HISTORY
**************
1)1	EDNUM==533	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==534	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  87
PCO Log Report


[FILCOM]
File 1)	FTN:STA3.515[31,4650]	created: 0845 17-DEC-1976
File 2)	FTN:STA3.534[30,4515]	created: 1514 17-FEB-1977
 
1)1	GLOBAL BIND STA3V = 5^24 + 0^18 + 59;		!VERSION DATE: 5
	-AUG-76
1)	%(
****
2)1	GLOBAL BIND STA3V = 5^24 + 1^18 + 60;		!VERSION DATE: 1
	7-FEB-77
2)	%(
**************
1)1	)%	!END REVISION HISTORY
****
2)1	***** BEGIN VERSION 5A *****
2)	60	534	QAR/21817  VARIOUS PROBLEMS WITH EDIT 59, ESPECI
	ALLY
2)				WITH QUOTED STRINGS IN VARIABLE LIST (BA
	D
2)				FORMAT STATEMENT, ETC.)
2)	)%	!END REVISION HISTORY
**************
1)1		%[324]%			T1_ .STK[0];
1)		%[324]%			R1_ T1[ELMNT];
1)		%[324]%			DECR I FROM .T1[ELMNT]<LEFT> TO
	0 DO
1)		%[324]%			BEGIN
****
2)1		!**;[534], STATEFUNC @4090, DCE, 17-FEB-77
2)		!**;[534], IN CASE THERE ARE PROBLEMS WITH THE FORMAT OF
	 STK UNDER
2)		!**;[534], A VARIETY OF BADLY FORMED STATEMENT FUNCTIONS
	, BE
2)		!**;[534], MORE CAUTIOUS, AND ABORT IF THINGS LOOK SUSPI
	CIOUS
2)		%[534]%			IF .STK<RIGHT> EQL 0 THEN RETURN
	 -1;
2)		%[534]%			IF (.(T2_R1_@STK)<RIGHT>) EQL 0
	THEN RETURN -1;
2)		!**;[534], THE FOLLOWING STMNT CHECKS FOR .F AS FIRST 2
	CHARS
2)		!**;[534], WHERE THEY MAY OCCUR UNDER UNUSUAL SYNTACTIC
	PROBLEMS
2)		!**;[534], IN THIS CASE, SIMPLY GET OUT, FOR WE ARE NOT
	SURE WHAT
2)		!**;[534], STATE STK AND ITS SUCCESSORS MAY BE IN!
2)		%[534]%			IF .(T2[IDSYMBOL])<24,12> EQL SI
	XBIT ".F" THEN RETURN -1;
2)		%[534]%			DECR I FROM .STK<LEFT> TO 0 DO
2)		%[324]%			BEGIN
**************
Digital Equipment Corporation       27-OCT-77    Page  88
PCO Log Report



[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  89
PCO Log Report



                   *********************
                   *PCO #:10-F10   -221*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515), TESTED IN 5A(534)

[Date Entered]          18-FEB-77

[Programmer]            EKLUND

[Routines]              ABSGOC    GRAPH

[Key Words]             INACCESSIB  CODE        ZERO LN

[Source Before Edit]    %5A  (000534)

[Source After Edit]     %5A  (000535)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21809
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  90
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     When using the optimizer, a  warning  message  may  be  generated
concerning inaccessible code which has a line number of zero.
 

                        **********


[DIAGNOSIS]
 
 
     During optimization, a logical IF statement  may  be  transformed
into  a logical IF statement followed by an unnumbered GO TO statement
if only two labels are used by the  arithmetic  IF  statement.   Under
these  circumstances, if the arithmetic IF statement was inaccessible,
so too will the created GO TO statement which has  a  line  number  of
zero.   There  may  be  other  cases where such a created statement is
inaccessible - this was the one found in the example program.
 

                        **********


[CURE]
 
 
     Whenever an attempt is made to delete inaccessible code,  do  not
print  the  warning  message  in the case that the line number is zero
which indicates an optimizer generated statement being deleted.
 
Digital Equipment Corporation       27-OCT-77    Page  91
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1017 17-FEB-1977
File 2)	FTN:COMMAN.535[30,4515]	created: 1055 18-FEB-1977
 
1)1	TITLE	FTNCMD	%5A(534) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 17-F
	EB-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(535) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 18-F
	EB-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;535	GRAPH(125)	21809	INACCESSIBLE CODE WITH ZERO LINE
	 NUMBER
2)	;END REVISION HISTORY
**************
1)1	EDNUM==534	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==535	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  92
PCO Log Report


[FILCOM]
File 1)	FTN:GRAPH.BLI[31,4650]	created: 0838 17-DEC-1976
File 2)	FTN:GRAPH.535[30,4515]	created: 1053 18-FEB-1977
 
1)1	GLOBAL BIND GRAPV = 5^24 + 0^18 + 124;	!VERSION DATE: 10-SEP-76
1)	%(
****
2)1	GLOBAL BIND GRAPV = 5^24 + 1^18 + 125;	!VERSION DATE: 18-FEB-77
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	125	535	21809	INNACCESSIBLE CODE WITH ZERO LINE NUMBER
	!
2)	)%
**************
1)1				WARNERR(.PC[SRCISN],E105);	!ISSUE W
	ARNING MESSAGE
****
2)1		!**;[535], ABSGOCHK @3731, DCE, 18-FEB-77
2)		!**;[535], IF LINE HAS ZERO LINE NUMBER, DO NOT PRINT WA
	RNING -
2)		!**;[535], PROBABLY AN OPTIMIZER CREATED STATEMENT!
2)		%[535]%		IF .PC[SRCISN] NEQ 0 THEN
2)				WARNERR(.PC[SRCISN],E105);	!ISSUE W
	ARNING MESSAGE
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  93
PCO Log Report



                   *********************
                   *PCO #:10-F10   -222*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(536)

[Date Entered]          23-FEB-77

[Programmer]            EKLUND

[Routines]              LISTNG    BACKTY

[Key Words]             ERROR       CONTINUATI  BAD         PRINTING

[Source Before Edit]    %5A  (000536)

[Source After Edit]     %5A  (000537)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21811
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  94
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     If an error occurs in a statement which is  continued  over  more
than  a  single  line,  and  if  the  lexeme being scanned at the time
happens to begin on one  line  and  terminate  on  another,  then  the
printing  of the statement which is in error may erroneously omit some
of the characters at the beginning of a continuation line.
 

                        **********


[DIAGNOSIS]
 
 
     The low level printing routines which handle the  printing  of  a
statement which is in error did not consider this case in the way that
they printed the lines.  In particular, the pointer to the position in
the continuation line where printing was to resume was not being reset
properly.
 

                        **********


[CURE]
 
 
     Be more careful when printing error lines so that  no  characters
will be lost from the start of the continuation line(s).
 
Digital Equipment Corporation       27-OCT-77    Page  95
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 1300 23-FEB-1977
File 2)	FTN:COMMAN.537[30,4515]	created: 1311 23-FEB-1977
 
1)1	TITLE	FTNCMD	%5A(536) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 23-F
	EB-77
****
2)1	TITLE	FTNCMD	%5A(537) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 23-F
	EB-77
**************
1)1	;END REVISION HISTORY
****
2)1	;537	LISTNG(15)	21811	BAD PRINTING OF ERROR CONTINUATI
	ON LINE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==536	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==537	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  96
PCO Log Report


[FILCOM]
File 1)	FTN:LISTNG.BLI[31,4650]	created: 0840 17-DEC-1976
File 2)	FTN:LISTNG.537[30,4515]	created: 1142 23-FEB-1977
 
1)1	GLOBAL BIND LISTV = 5^24 + 0^18 + 14;	! VERSION DATE: 29-OCT-7
	6
1)	%(
****
2)1	GLOBAL BIND LISTV = 5^24 + 1^18 + 15;	! VERSION DATE: 23-FEB-7
	7
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	15	537	21811	LEXEME SPLIT ACROSS LINES GIVES BAD ERRO
	R MSG
2)	)%
**************
1)1					IF (C_SCANI(BTPTR))   GEQ  LF  A
	ND  .C  LEQ  FF
****
2)1		!**;[537], BACKTYPE @1579, DCE, 23-FEB-77
2)		!**;[537], DECLARE VARIABLE USED TO SAVE AND RESTORE BTP
	TR
2)		!**;[537], FOR MULTI-LINE ERRORS WITH LEXEME SPLIT ACROS
	S LINES
2)		%[537]%			LOCAL SBTPTR;
2)					IF (C_SCANI(BTPTR))   GEQ  LF  A
	ND  .C  LEQ  FF
**************
1)1						% CHECK FOR END OF PRINT
	ING %
****
2)1		!**;[537], BACKTYPE @1613, DCE, FEB-23-77
2)		%[537]%				SBTPTR_.BTPTR;
2)						% CHECK FOR END OF PRINT
	ING %
**************
1)1						THEN LEAVE TYPELINES	
	! END OF TYPING
1)					END;
****
2)1		!**[537], BACKTYPE @1631, DCE, 23-FEB-77
2)		%[537]%				THEN (IF .LINESORALL NEQ
	 ALLCHAR THEN BTPTR_.SBTPTR;
2)		%[537]%				 LEAVE TYPELINES)	
	! END OF TYPING
2)					END;
**************
Digital Equipment Corporation       27-OCT-77    Page  97
PCO Log Report


[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  98
PCO Log Report



                   *********************
                   *PCO #:10-F10   -223*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(535)

[Date Entered]          24-FEB-77

[Programmer]            STAN WHITLOCK

[Routines]              LEFTFM

[Key Words]             R FORMAT    SYNTAX

[Source Before Edit]    %5A  (000535)

[Source After Edit]     %5A  (000536)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-NONE
                        Critical:      A


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  99
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
A syntax table building error on R format will say TCHAR, not RCHAR.
 

                        **********


[DIAGNOSIS]
 
In the syntax builder program, LEFTFM, when R format was  added  to  the
FORMAT BNF, the name RCHAR was not added to the error name PLIT LEXNAME.
 

                        **********


[CURE]
 
Add RCHAR (#21) to LEXNAME and increment the CHARs below it by 1.   NOTE
that   the   4   BLISS  warnings  (undefined  identifiers  METANAME  and
ACTIONNAME) when LEFTFM is compiled can be ignored.
 
Digital Equipment Corporation       27-OCT-77    Page 100
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.535[30,4515]	created: 1055 18-FEB-1977
File 2)	FTN:COMMAN.536[30,4515]	created: 1300 23-FEB-1977
 
1)1	TITLE	FTNCMD	%5A(535) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 18-F
	EB-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(536) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 23-F
	EB-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;536	LEFTFM(23)		ADD RCHAR TO ERR NAME PLIT
2)	;END REVISION HISTORY
**************
1)1	EDNUM==535	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==536	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 101
PCO Log Report


[FILCOM]
File 1)	LIB:LEFTFM.BLI[31,4650]	created: 0839 17-DEC-1976
File 2)	FTN:LEFTFM.BLI[31,4577]	created: 1309 24-FEB-1977
 
1)1	REQUIRE  FMTLEX.BLI;
****
2)1	GLOBAL BIND	LEFTV = 5^24 + 1^18 + 23;	!VERSION DATE: 2
	4-FEB-77
2)	%(
2)	REVISION HISTORY
2)	23	536	-----	ADD RCHAR TO ERR NAME PLIT
2)	)%
2)	REQUIRE  FMTLEX.BLI;
**************
1)1	%21%	PLIT'TCHAR',
1)	%22%	PLIT'XCHAR')-1;
1)	BIND LEFTBUILD = 1;
1)	REQUIRE	FRMBNF.BLI;		!BUILD FORMAT SYNTAX TABLES
1)	GLOBAL BIND LEFTV = 2^24 +0^18+22;		!VERSION DATE: 1
	8-SEP-1973
1)	REGISTER R;
****
2)1	%21%	PLIT'RCHAR',		![536]  SJW  24-FEB-77
2)	%22%	PLIT'TCHAR',
2)	%23%	PLIT'XCHAR')-1;
2)	BIND LEFTBUILD = 1;
2)	REQUIRE	FRMBNF.BLI;		!BUILD FORMAT SYNTAX TABLES
2)	REGISTER R;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 102
PCO Log Report



                   *********************
                   *PCO #:10-F10   -224*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515), TESTED IN 5A(537)

[Date Entered]          07-MAR-77

[Programmer]            EKLUND

[Routines]              STA2      COMMST    BLDARR

[Key Words]             COMMON      BAD DECLAR  ICE         ILL UUO

[Source Before Edit]    %5A  (000537)

[Source After Edit]     %5A  (000540)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22191
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 103
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Various internal compiler errors and illegal UUOs may  be  caused
by  a  semantically  bad  COMMON  declaration.   An  example of such a
statement would be a COMMON declaration  of  an  array  with  variable
bounds where the variables are not parameters.
 

                        **********


[DIAGNOSIS]
 
 
     While attempting  to  build  the  list  of  COMMON  elements,  an
assumption  was  made that the call to BLDARRAY would succeed.  If the
call failed for semantic reasons, then incomplete  processing  of  the
array could result, and this would mean that STK would not get updated
as expected.  This eventually could lead to the use of two pointers in
STK+2 which were never set up - in this case the entire word contained
-1.  Overwriting of some registers was the final outcome, with various
kinds  of  errors  occurring based on just what command string was used
and relative locations in low core.
 

                        **********


[CURE]
 
 
     Before attempting to use the two pointers set up in STK, check to
see  whether  the  call  to BLDARRAY succeeded, and if not, forego any
further processing of this array  element  since  the  STK  is  in  an
indeterminate state.
 
Digital Equipment Corporation       27-OCT-77    Page 104
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1311 23-FEB-1977
File 2)	FTN:COMMAN.540[30,4515]	created: 0957 07-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(537) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 23-F
	EB-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(540) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 7-MA
	R-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;540	STA2(45)	22191	BAD COMMON STMNT GIVES ICE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==537	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==540	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 105
PCO Log Report


[FILCOM]
File 1)	FTN:STA2.BLI[31,4650]	created: 1014 24-JAN-1977
File 2)	FTN:STA2.540[30,4515]	created: 0928 07-MAR-1977
 
1)1	GLOBAL BIND STA2V = 5^24 + 1^18 + 44;	!VERSION DATE: 24-JAN-77
1)	%(
****
2)1	GLOBAL BIND STA2V = 5^24 + 1^18 + 45;	!VERSION DATE: 7-MAR-77
2)	%(
**************
1)1	)%
****
2)1	45	540	22096	ICE CAUSED BY BAD COMMON DECLARATION
2)	)%
**************
1)1			STK[2]<RIGHT>_.R2[COMLAST];BLDARRAY(.R1[ELMNT1])
	;
1)			!-----------------------------------------------
	----------------------------
****
2)1		!**;[540], COMMST @4247, DCE, 7-MAR-77
2)		!**;[540], MUST BE VERY CAREFUL IF BLDARRAY FAILS, FOR U
	NDER SOME
2)		!**;[540], CIRCUMSTANCES, STK[2] WILL CONTAIN -1 WHICH K
	ILLS US
2)		%[540]%	STK[2]<RIGHT>_.R2[COMLAST];
2)		%[540]%	IF BLDARRAY(.R1[ELMNT1]) GEQ 0 THEN
2)		%[540]%	BEGIN
2)			!-----------------------------------------------
	----------------------------
**************
1)1		END;T1_.STK[1];SAVSPACE(.T1<LEFT>,@T1);
****
2)1		!**;[540], COMMST @4258, DCE, 7-MAR-77
2)		%[540]%	END %OF FIXING UP COMMON POINTERS%
2)		END;T1_.STK[1];SAVSPACE(.T1<LEFT>,@T1);
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 106
PCO Log Report



                   *********************
                   *PCO #:10-F10   -225*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515), TESTED IN 5A(541)

[Date Entered]          08-MAR-77

[Programmer]            EKLUND

[Routines]              EXPRES    LOGEXX

[Key Words]             .NOT.       LOGICAL EX  TYPE

[Source Before Edit]    %5A  (000541)

[Source After Edit]     %5A  (000542)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22147
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 107
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     The  .NOT.   operator  does  not  impart  type  logical   to   an
expression.   In  particular,  the  expression  .NOT.  I where I is an
integer, is considered an integer expression  rather  than  a  logical
one.
 

                        **********


[DIAGNOSIS]
 
 
     When creating the node for representing a  .NOT.   operator,  the
type  of  the  node is taken from the expression which the operator is
applied to.  This results in some anomolies such as the assignment R =
.NOT.   I  resulting in the floating and rounding of the result before
storing into the real R.
 

                        **********


[CURE]
 
 
     Always use type logical for a .NOT.  node so that the  expression
is  a  logical  one  in all cases.  Of note is the fact that this also
implies that the expression is single  precision  since  there  is  no
double precision logical in the language.
 
Digital Equipment Corporation       27-OCT-77    Page 108
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 0818 08-MAR-1977
File 2)	FTN:COMMAN.542[30,4515]	created: 1141 08-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(541) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 8-MA
	R-77
****
2)1	TITLE	FTNCMD	%5A(542) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 8-MA
	R-77
**************
1)1	;END REVISION HISTORY
****
2)1	;542	EXPRES(32)	22147	MAKE A NOT IMPLY TYPE LOGICAL AL
	WAYS.
2)	;END REVISION HISTORY
**************
1)1	EDNUM==541	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==542	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 109
PCO Log Report


[FILCOM]
File 1)	FTN:EXPRES.BLI[31,4650]	created: 0836 17-DEC-1976
File 2)	FTN:EXPRES.542[30,4515]	created: 1126 08-MAR-1977
 
1)1	!AUTHOR: F.J. INFANTE, D. B. TOLMAN
1)	MODULE EXPR(RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15,DREGS=4,
	GLOROUTINES)=
1)	BEGIN
1)	GLOBAL BIND EXPRV = 2^24+0^18+31;		!VERSION DATE: 1
	6-SEP-1974
1)	%(
****
2)1	!AUTHOR: F.J. INFANTE, D. B. TOLMAN/DCE
2)	MODULE EXPR(RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15,DREGS=4,
	GLOROUTINES)=
2)	BEGIN
2)	GLOBAL BIND EXPRV = 5^24+1^18+32;		!VERSION DATE: 8
	-MAR-77
2)	%(
**************
1)1	)%
****
2)1	32	542	22147	MAKE NOT NODES BE OF TYPE LOGICAL
2)	)%
**************
1)1			T1[VALTYPE] _ .R2[VALTYPE];
1)			T1[ARG1PTR] _ 0;
****
2)1		!**;[542], LOGEXPRESSION @3494, DCE, 8-MAR-77
2)		!**;[542], NOT NODES SHOULD ALWAYS BE OF TYPE LOGICAL
2)		%[542]%	T1[VALTYPE] _ LOGICAL;
2)			T1[ARG1PTR] _ 0;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 110
PCO Log Report



                   *********************
                   *PCO #:10-F10   -226*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         4A(317), 5(515), TESTED IN 5A(542)

[Date Entered]          10-MAR-77

[Programmer]            EKLUND

[Routines]              SRCA      SRCHLI

[Key Words]             LOOPING     FORTB       LIB FUNCTI  BIN SEARCH

[Source Before Edit]    %5A  (000542)

[Source After Edit]     %5A  (000543)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22089
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 111
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Looping of the compiler in FORTB may occur for  a  program  which
uses  references  to  external  functions  which  are not known to the
compiler.
 

                        **********


[DIAGNOSIS]
 
 
     The compiler attempts to look up the name of the function in  its
table  of  library  function  names  using  a  binary  search  of  the
alphabetized  list  of  known  names.   Unfortunately,  there  was  an
oversight  in the coding of the binary search routine so that if it is
used to look up a name which is not there, it may get stuck in a  loop
depending  upon the position of where the new name logically occurs in
the table.
 

                        **********


[CURE]
 
     Fix the binary search logic to perform the search as intended.
 
Digital Equipment Corporation       27-OCT-77    Page 112
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1141 08-MAR-1977
File 2)	FTN:COMMAN.543[30,4515]	created: 1325 10-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(542) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 8-MA
	R-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(543) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 10-M
	AR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;543	SRCA(50)	-----	FIX BINARY SEARCH FOR LIBRARY NA
	ME
2)	;END REVISION HISTORY
**************
1)1	EDNUM==542	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==543	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 113
PCO Log Report


[FILCOM]
File 1)	FTN:SRCA.BLI[31,4650]	created: 0845 17-DEC-1976
File 2)	FTN:SRCA.543[30,4515]	created: 1320 10-MAR-1977
 
1)1	GLOBAL BIND SRCAV = 4^24 + 2^18 + 49;	!VERSION DATE: 2-MAR-76
1)	%(
****
2)1	GLOBAL BIND SRCAV = 5^24 + 1^18 + 50;	!VERSION DATE: 10-MAR-77
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	50	543	NONE	FIX THE BINARY SEARCH FOR LIBRARY FUNCTI
	ONS
2)	)%
**************
1)1			   ELSE IF .CENTER EQL BOTTOM THEN EXITLOOP;
1)			IF .PARAM GTR @@CENTER THEN
****
2)1		!**;[543], SRCHLIB @3383, DCE, 10-MAR-77
2)		!**;[543], PUT IN OMITTED DOT IN BINARY SEARCH ROUTINE T
	O
2)		!**;[543], MAKE IT WORK AS WAS INTENDED
2)		%[543]%	   ELSE IF .CENTER EQL .BOTTOM THEN EXITLOOP;
2)			IF .PARAM GTR @@CENTER THEN
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 114
PCO Log Report



                   *********************
                   *PCO #:10-F10   -227*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(544)

[Date Entered]          14-MAR-77

[Programmer]            EKLUND

[Routines]              STREGA    ALCINR

[Key Words]             FUNCTION C  REGISTER    ALLOCATION  BAD CODE

[Source Before Edit]    %5A  (000544)

[Source After Edit]     %5A  (000545)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22096
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 115
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Assignment statements which have several function calls  in  them
or  which  have  single  function  calls  under some circumstances may
generate bad code.  In particular, if the results of the calls need to
be  moved  from  the  function return registers (0 and 1) temporarily,
they may overwrite other temporary results inadvertently.
 

                        **********


[DIAGNOSIS]
 
 
     During register allocation for a function call whose result needs
to  be  saved temporarily, an attempt is made to save the results into
other free registers.   In  doing  this,  a  check  was  made  against
BLOCKBSYREGS,  but  not  against BSYREGS.  This could cause code to be
generated which stored such temporary results into  register(s)  which
are not really available.
 

                        **********


[CURE]
 
 
     Check  more  carefully  before  acquiring  registers  for  saving
temporary results of function calls.
 
Digital Equipment Corporation       27-OCT-77    Page 116
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1628 10-MAR-1977
File 2)	FTN:COMMAN.545[30,4515]	created: 0958 14-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(544) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 10-M
	AR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(545) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 14-M
	AR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;545	REGAL2(142)	22096	FUNCTION VALUES MUST GO INTO REA
	LLY FREE REGS
2)	;END REVISION HISTORY
**************
1)1	EDNUM==544	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==545	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 117
PCO Log Report


[FILCOM]
File 1)	FTN:REGAL2.BLI[31,4650]	created: 0843 17-DEC-1976
File 2)	FTN:REGAL2.545[30,4515]	created: 0954 14-MAR-1977
 
1)1	GLOBAL BIND REGAV = 5^24 + 0^18 + 141;	!VERSION DATE: 29-Oct-76
1)	%(
****
2)1	GLOBAL BIND REGAV = 5^24 + 1^18 + 142;	!VERSION DATE: 14-MAR-77
2)	%(
**************
1)1	)%
****
2)1	142	545	22096	STORE FUNCTION VALUE IN REALLY FREE REG
2)	)%
**************
1)1				IF NOT BITSET (.BLOCKBSYREGS,.RA)	
	![274] IF NEED IT LATER
1)				THEN	![274]
****
2)1		!**;[545], ALCINREG @3323, DCE, 14-MAR-77
2)		!**;[545], MUST NOT CONFLICT WITH A REG ALREADY USED IN
	BSYREGS TOO
2)		%[545]%		IF NOT BITSET (.BLOCKBSYREGS AND .BSYREG
	S,.RA)	![274] IF NEED IT LATER
2)				THEN	![274]
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 118
PCO Log Report



                   *********************
                   *PCO #:10-F10   -228*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(545)

[Date Entered]          14-MAR-77

[Programmer]            EKLUND

[Routines]              REGAL2    LHINRE    CLOBBN

[Key Words]             REGISTER    ALLOCATION  INT DIVIDE  CLOBREG

[Source Before Edit]    %5A  (000545)

[Source After Edit]     %5A  (000546)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22030
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 119
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
        Assignment statements which have  an  occurrence  of
the  assigned  into  variable  on  the  right  hand side may
produce bad code if the variable needs to be  operated  upon
by  an operator which clobbers the register after the one in
which the variable resides.  An example is:  I=(J+K)+(I/L).
 

                        **********


[DIAGNOSIS]
 
        This is an elaboration on edit 403 which appears  to
now  cover  all  possible  cases.   When register allocation
discovered that it had such a special case, it would  ignore
whatever  was  living in the register after the one in which
the assigned into variable was residing.  This  caused  that
register  to  be  overwritten  during  the evaluation of the
right hand side, and unexpected results  would  occur.   The
best  way  to  determine  if this problem is occurring is to
examine the code produced;  the most common case is probably
one which involves an integer divide operation in it.
 

                        **********


[CURE]
 
        At all the appropriate places, check to see  if  the
operation  which will be done in the register containing the
assigned  into  variable  will  clobber  the  next  register
(integer divide and a few others).  If so, then do not allow
the special case register allocation, and revert back to the
standard  allocation of registers for the right hand side of
the assignment statement.
 
Digital Equipment Corporation       27-OCT-77    Page 120
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 0958 14-MAR-1977
File 2)	FTN:COMMAN.546[30,4515]	created: 1001 14-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(545) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 14-M
	AR-77
****
2)1	TITLE	FTNCMD	%5A(546) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 14-M
	AR-77
**************
1)1	;END REVISION HISTORY
****
2)1	;546	STREGA(217)	22030	FIX PROBLEMS WITH OPERATIONS WHI
	CH CLOBBER
2)	;				FOLLOWING REGISTER (IDIV)
2)	;END REVISION HISTORY
**************
1)1	EDNUM==545	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==546	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 121
PCO Log Report


[FILCOM]
File 1)	FTN:STREGA.BLI[31,4650]	created: 1531 14-JAN-1977
File 2)	FTN:STREGA.546[30,4515]	created: 0920 14-MAR-1977
 
1)1	GLOBAL BIND STREV = 5^24 + 1^18 + 216;	!VERSION DATE: 14-JAN-77
1)	%(
****
2)1	GLOBAL BIND STREV = 5^24 + 1^18 + 217;	!VERSION DATE: 14-MAR-77
2)	%(
**************
1)1	)%
****
2)1	217	546	22030	FIX OPERATIONS WHICH CLOBBER NEXT REGIST
	ER (IDIV)
2)	)%
**************
1)1		%(***IF ARG1 IS EQUAL TO LHS VAR, SIMPLY PERFORM OP IN L
	HS REG***)%
****
2)1		!**;[546], LHINREGALC @6202, DCE, 14-MAR-77
2)		!**;[546], FIX UP 403 TO CONSIDER MORE CASES LIKE:
2)		!**;[546],	I=I/J
2)		!**;[546],	I=(I+K)/J
2)		!**;[546],	I=J+(I/K)
2)		!**;[546], AND OTHER ASSOCIATED PROBLEMS!
2)		!**;[546], THESE ALL DEPEND UPON THE REG AFTER THE ONE
2)		!**;[546], IN WHICH THE LHS IS LIVING GETTING OVERWRITTE
	N BY
2)		!**;[546], SOME OPERATION PERFORMED DIRECTLY IN THE REG
	FOR LHS.
2)		%[546]%	IF CLOBBNX(.RHNODE) THEN RETURN FALSE;
2)		%(***IF ARG1 IS EQUAL TO LHS VAR, SIMPLY PERFORM OP IN L
	HS REG***)%
**************
1)1		!**;[403], LHINRGALC @6165 (ARG1 = LHS VAR), DCE, 17-MAY
	-76
1)		!**;[403], MUST CHECK WHAT IS IN NEXT REG - IT MIGHT
1)		!**;[403], GET OVERWRITTEN HERE LIKE I=I/J
1)	%[403]%	IF CLOBBNX(.RHNODE) THEN RETURN FALSE ELSE
1)		BEGIN
****
2)1		BEGIN
**************
1)1				CMPRHINLH();
****
2)1		!**;[546], LHINREGALC @6264 (ARG1PTR IS LHNODE), DCE, 14
	-MAR-77
2)		%[546]%		IF CLOBBNX(.ARG1NODE) THEN RETURN FALSE;
2)				CMPRHINLH();
**************
1)1				SWAPARGS(RHNODE);
Digital Equipment Corporation       27-OCT-77    Page 122
PCO Log Report


****
2)1		!**;[546], LHINREGALC @6286 (ARG2NODE[ARG1PTR] = LHNODE)
	, DCE, 14-MAR-77
2)		%[546]%		IF CLOBBNX(.ARG2NODE) THEN RETURN FALSE;
2)				SWAPARGS(RHNODE);
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 123
PCO Log Report



                   *********************
                   *PCO #:10-F10   -229*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(546)

[Date Entered]          18-MAR-77

[Programmer]            STAN WHITLOCK

[Routines]              LEXICA    STCNTC    STILNT

[Key Words]             INIT TAB    COLUMN 6

[Source Before Edit]    %5A  (000546)

[Source After Edit]     %5A  (000547)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21820
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 124
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
The F10 manual defines an "initial tab"  in  section  2.1  as  one  that
"includes  or  STARTS  in  character  position 6".  In section 2.2.1, it
states that  "the  character  position  following  the  initial  tab  is
considered  to be in character position 6 in a continuation line, and in
character position 7 in an initial line".
 
If a tab is in column 6 with blanks in columns 1-5, the character  after
the  tab  is  placed  in column 8 (for either an initial or continuation
line) which could shift information out of column 72  into  the  comment
area  starting  in  column  73  so  that  the  statement  could  not  be
recognized.
 

                        **********


[DIAGNOSIS]
 
In LEXICA, in small state STCNTCONT  (continuation  field,  continuation
check,  no  initial tab), a tab (in column 6) is handled by TAB7S, which
performs action ACTNOCONT, which does not eat the tab but allows  it  to
be  processed,  which  positions  the  line at column 8.  In small state
STILNTCONT (check continuation field of  an  initial  line,  no  initial
tab),  a  tab  (in column 6) is handled by TAB11S, which performs action
ACTILNTI, which does not eat the tab but  allows  it  to  be  processed,
which again positions the line at column 8.
 

                        **********


[CURE]
 
Bind TAB7S to ACTCITCONT and TAB11S to ACTILITCONT  so  that  a  tab  in
column 6 will position the line in column 6 if it is a continuation line
and column 7 if it is an initial line.
 
Digital Equipment Corporation       27-OCT-77    Page 125
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1001 14-MAR-1977
File 2)	FTN:COMMAN.MAC[31,4577]	created: 1546 17-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(546) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 14-M
	AR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(547) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 17-M
	AR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;547	LEXICA(17)	21280	(QAR863) FIX INITIAL TAB IN COLU
	MN 6 TO
2)	;				  GO TO COL 7 ON AN INITIAL LINE
	 OR COL
2)	;				  6 IF A CONTINUATION LINE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==546	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==547	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 126
PCO Log Report


[FILCOM]
File 1)	LIB:LEXICA.BLI[31,4650]	created: 0840 17-DEC-1976
File 2)	FTN:LEXICA.BLI[31,4577]	created: 1445 17-MAR-1977
 
1)1	!AUTHOR: D. B. TOLMAN/DCE
1)	MODULE LEXAL(RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15,DREGS=4
	)=
1)	BEGIN %LEXICAL%
1)	GLOBAL BIND LEXIV = 4^24 + 2^18 + 16;	!VERSION DATE: 2-APR-76
1)	%(
****
2)1	!AUTHOR: D. B. TOLMAN/DCE/SJW
2)	MODULE LEXAL(RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15,DREGS=4
	)=
2)	BEGIN %LEXICAL%
2)	GLOBAL BIND LEXIV = 5^24 + 1^18 + 17;	!VERSION DATE: 17-MAR-77
2)	%(
**************
1)1	)%
****
2)1	**	***	*****	BEGIN VERSION 5A
2)	17	547	21820	(QAR863) FIX TAB7S AND TAB11S SO INITIAL
	 TAB
2)				  IN COLUMN 6 GOES TO COL 7 IF AN INITIA
	L LINE
2)				  OR COL 6 IF A CONTINUATION LINE
2)	)%
**************
1)1		TAB7S	=	ACTNOCONT	,
1)		LT7S	=	ACTCLABLT	,
****
2)1	!** [547] LEXICA IN STCNTCONT  @ 1243  SJW  17-MAR-77
2)	%[547]%	TAB7S	=	ACTCITCONT	,
2)		LT7S	=	ACTCLABLT	,
**************
1)1		TAB11S	=	ACTILNTI	,
1)		LT11S	=	ACTILABLT	,
****
2)1	!**[547] LEXICA IN STILNTCONT  @ 2255  SJW  17-MAR-77
2)	%[547]%	TAB11S	=	ACTILITCONT	,
2)		LT11S	=	ACTILABLT	,
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 127
PCO Log Report



                   *********************
                   *PCO #:10-F10   -230*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(547)

[Date Entered]          18-MAR-77

[Programmer]            EKLUND

[Routines]              ALCTA     REGAL2

[Key Words]             BAD CODE    REG ALLOCA  ASSIGNMENT  KA

[Source Before Edit]    %5A  (000547)

[Source After Edit]     %5A  (000550)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21824
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 128
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Bad code may be generated for assignment statements which need to
use  temporaries  to compute the right hand side.  In general the code
will reveal that an intermediate result  will  be  calculated  into  a
register (or register pair) and then used as if it had been calculated
into a temporary storage location.
 

                        **********


[DIAGNOSIS]
 
 
     Under  conditions  of  register   scarcity,   temporary   storage
locations  may  be  necessary  to  calculate large expressions.  If an
operation is projected to be done to leave its result in a  temporary,
it attempts to use the same temporary for its arguments, but sometimes
this causes a store class node to be inserted  between  the  operation
and  its  second  operand  without  changing  the saved pointer to the
second operand.  Any future use of this pointer is  incorrect  without
first updating it.
 

                        **********


[CURE]
 
 
     Be sure to update the pointer to the second operand  whenever  it
is  possible  that  the  allocation  of  the second operand could have
caused the "real" pointer to change!
 
Digital Equipment Corporation       27-OCT-77    Page 129
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1546 17-MAR-1977
File 2)	FTN:COMMAN.550[30,4515]	created: 1025 18-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(547) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 17-M
	AR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(550) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 18-M
	AR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;550	REGAL2(143)	21824	FIX REG ALLOCATION FOR BIG EXPRE
	SSION
2)	;END REVISION HISTORY
**************
1)1	EDNUM==547	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==550	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 130
PCO Log Report


[FILCOM]
File 1)	FTN:REGAL2.BLI[31,4650]	created: 0954 14-MAR-1977
File 2)	FTN:REGAL2.550[30,4515]	created: 0944 18-MAR-1977
 
1)1	GLOBAL BIND REGAV = 5^24 + 1^18 + 142;	!VERSION DATE: 14-MAR-77
1)	%(
****
2)1	GLOBAL BIND REGAV = 5^24 + 1^18 + 143;	!VERSION DATE: 18-MAR-77
2)	%(
**************
1)1	)%
****
2)1	143	550	21824	FIX TEMP ALLOCATION FOR KA WITH BIG EXPR
	ESSION
2)	)%
**************
1)1			TREEPTR_.ARG1NODE;
****
2)1		!**;[550], ALCTA @5448, DCE, 18-MAR-77
2)		!**;[550], THE CALL TO ALCINTMP (ONE LINE UP) MAY CAUSE
	A STORE
2)		!**;[550], CLASS NODE TO BE INSERTED BETWEEN CNODE AND A
	RG2NODE.
2)		!**;[550], WE NEED TO ADJUST ARG2NODE IN THIS CASE SO TH
	AT THE
2)		!**;[550], TEST AGAINST ARG2NODE[TARGTMEM] LATER ON WILL
	 SUCCEED
2)		%[550]%	ARG2NODE_.CNODE[ARG2PTR];
2)			TREEPTR_.ARG1NODE;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 131
PCO Log Report



                   *********************
                   *PCO #:10-F10   -231*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(550)

[Date Entered]          21-MAR-77

[Programmer]            EKLUND

[Routines]              TABLES

[Key Words]             TYPE CONVE  TO LOGICAL  FROM D.P.   BAD CODE

[Source Before Edit]    %5A  (000550)

[Source After Edit]     %5A  (000551)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21826
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 132
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Bad code may be generated in an attempt to do type conversion  of
variables from real, double precision, or complex to either logical or
octal.  These cases do not arise very often, and  the  code  generated
will  usually  perform a conversion that was not expected - to integer
instead of to logical for example.
 

                        **********


[DIAGNOSIS]
 
 
     In performing the dispatch for the type conversion, things may go
wrong  if  the target type is either logical or octal.  In these cases
(which are rare) the conversion is dispatched incorrectly so that  the
conversion is done as if the target type were integer.
 

                        **********


[CURE]
 
 
     Be more careful during type conversion, and dispatch correctly so
that conversions to logical and octal are done correctly (usually this
means a conversion involving no code).
 
Digital Equipment Corporation       27-OCT-77    Page 133
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1025 18-MAR-1977
File 2)	FTN:COMMAN.551[30,4515]	created: 1624 22-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(550) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 18-M
	AR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(551) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 22-M
	AR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;551	TABLES(155)	21826	FIX TYPE CONVERSION DURING CODE
	GENERATION
2)	;END REVISION HISTORY
**************
1)1	EDNUM==550	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==551	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 134
PCO Log Report


[FILCOM]
File 1)	FTN:TABLES.BLI[31,4650]	created: 0846 17-DEC-1976
File 2)	FTN:TABLES.551[30,4515]	created: 1240 22-MAR-1977
 
1)1	!AUTHOR: S. MURPHY/HPW
1)	GLOBAL BIND TABLV = 4^24 + 1^18 + 154;	!VERSION DATE:	22-MAR-7
	5
1)	%(
****
2)1	!AUTHOR: S. MURPHY/HPW/DCE
2)	GLOBAL BIND TABLV = 5^24 + 1^18 + 155;	!VERSION DATE: 22-MAR-77
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	155	551	21826	FIX DISPATCH FOR TYPE CONVERSION TO OCTA
	L/LOGICAL
2)	)%
**************
1)1		MACRO	TPCNVIX(PNODE)= (.PNODE[OPERSP]^2 + .PNODE[VALTP
	1] +
1)				(IF .KA10FLG THEN OPGTCA ELSE OPGTCI))$;
****
2)1		MACRO	TPCNVIX(PNODE)= (.PNODE[OPERSP]^2 +
2)		!**;[551], TABLES IN MACRO "TPCNVIX", DCE, 22-MAR-77
2)		!**;[551], WHEN CONVERTING TO OCTAL/LOGICAL, MUST BE MOR
	E CAREFUL
2)		%[551]%		(IF .PNODE[OPERSP] GTR 4 !COMING FROM RE
	AL, DP, COMPLEX
2)		%[551]%		AND .PNODE[VALTP2] EQL 0 !GOING TO OCTAL
	, LOGICAL
2)		%[551]%		THEN .PNODE[OPRSP2]      !MATCH TYPES TO
	 GET NO CONVERSION
2)		%[551]%		ELSE .PNODE[VALTP1])+    !ELSE DISPATCH
	NORMALLY
2)				(IF .KA10FLG THEN OPGTCA ELSE OPGTCI))$;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 135
PCO Log Report



                   *********************
                   *PCO #:10-F10   -232*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(551)

[Date Entered]          23-MAR-77

[Programmer]            EKLUND

[Routines]              REGAL2    ALCTPC

[Key Words]             POOR CODE   ARRAY REFS  ASSIGNMENT

[Source Before Edit]    %5A  (000551)

[Source After Edit]     %5A  (000552)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21826
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 136
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Under some circumstances, poor code may be generated which  seems
to  move  a  value to a register and back to memory right away.  While
the code is not incorrect, it is not productive.
 

                        **********


[DIAGNOSIS]
 
     The circumstances under which this occurs are  unusual,  but  are
recognizable  by the fact that there will always be an array reference
whose type is not exactly right for its usage and upon  which  a  type
conversion  (real or implied) has occurred.  Internally, a store class
node has been inserted during register  allocation  between  the  type
conversion  node and the array reference node without updating a local
pointer to the correct node causing some confusion.
 

                        **********


[CURE]
 
 
     Update the pointer correctly  after  possible  insertion  of  the
store  class  node between the type conversion and the array reference
nodes.
 
Digital Equipment Corporation       27-OCT-77    Page 137
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 1624 22-MAR-1977
File 2)	FTN:COMMAN.552[30,4515]	created: 0902 23-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(551) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 22-M
	AR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(552) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 23-M
	AR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;552	REGAL2(144)	21826	GENERATE BETTER CODE FOR TYPE CO
	NVERSION
2)	;				OF ARRAY REFERENCE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==551	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==552	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 138
PCO Log Report


[FILCOM]
File 1)	FTN:REGAL2.BLI[31,4650]	created: 0944 18-MAR-1977
File 2)	FTN:REGAL2.552[30,4515]	created: 1538 22-MAR-1977
 
1)1	GLOBAL BIND REGAV = 5^24 + 1^18 + 143;	!VERSION DATE: 18-MAR-77
1)	%(
****
2)1	GLOBAL BIND REGAV = 5^24 + 1^18 + 144;	!VERSION DATE: 22-MAR-77
2)	%(
**************
1)1	)%
****
2)1	144	552	21826	RESET ARGNODE PTR TO GIVE BETTER CODE
2)	)%
**************
1)1				CNODE[TARGET]_.ARGNODE[TARGET];
****
2)1		!**;[552], ALCTPCNV @4681, DCE, 22-MAR-77
2)		!**;[552], ALCINTMP MAY HAVE INSERTED A STORE CLASS NODE
	 BETWEEN
2)		!**;[552], A TYPE CONVERSION AND AN ARRAYREF NODE - IN T
	HIS CASE,
2)		!**;[552], ARGNODE NEEDS TO BE UPDATED TO PREVENT A MOVE
	-MOVEM
2)		!**;[552], PAIR FROM AND TO THE SAME LOCATION!
2)		%[552]%		ARGNODE_.CNODE[ARG2PTR];
2)				CNODE[TARGET]_.ARGNODE[TARGET];
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 139
PCO Log Report



                   *********************
                   *PCO #:10-F10   -233*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(552)

[Date Entered]          23-MAR-77

[Programmer]            EKLUND

[Routines]              P2S2      BLCMB

[Key Words]             .AND.,.OR.  BAD CODE    DOUBLE PRE

[Source Before Edit]    %5A  (000552)

[Source After Edit]     %5A  (000553)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21826
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 140
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Bad code may be generated for an assignment statement which has a
single precision variable on the left hand side and an occurrence of a
double precision variable on the right hand side which is the  operand
of a logical operator.  An example is:  R=DP(I) .AND.  "777777777777.
 

                        **********


[DIAGNOSIS]
 
 
     The compiler will attempt to get rid of the AND operation in  the
above  example  since  the  constant  is construed to be logical TRUE.
When this elimination occurs, the type conversion  node  which  occurs
above  the  array  reference  (from  double  precision  to logical) is
promoted  up  in  the  representation  of   the   right   hand   side.
Unfortunately,  there is a "no conversion" flag still set in this type
conversion node, and this causes problems during register allocation.
 

                        **********


[CURE]
 
 
     When logical nodes are eliminated due to one  of  their  operands
being  a constant, check below to the remaining node to see if it is a
type conversion node, and if so, turn off  the  "no  conversion"  flag
since now a conversion may be necessary.
 
Digital Equipment Corporation       27-OCT-77    Page 141
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 0902 23-MAR-1977
File 2)	FTN:COMMAN.553[30,4515]	created: 0909 23-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(552) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 23-M
	AR-77
****
2)1	TITLE	FTNCMD	%5A(553) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 23-M
	AR-77
**************
1)1	;END REVISION HISTORY
****
2)1	;553	P2S2(55)	21826	TYPE CONVERSION MAY BE NECESSARY
	 IF LOGICAL
2)	;				OPERATION ABOVE IT IS LIQUIDATED
2)	;END REVISION HISTORY
**************
1)1	EDNUM==552	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==553	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 142
PCO Log Report


[FILCOM]
File 1)	FTN:P2S2.BLI[31,4650]	created: 0836 13-JAN-1977
File 2)	FTN:P2S2.553[30,4515]	created: 1545 22-MAR-1977
 
1)1	GLOBAL BIND P2S2V = 5^24 + 1^18 + 54;	!VERSION DATE: 10-JAN-77
1)	%(
****
2)1	GLOBAL BIND P2S2V = 5^24 + 1^18 + 55;	!VERSION DATE: 22-MAR-77
2)	%(
**************
1)1	)%
****
2)1	55	553	21826	BE CAREFUL COLLAPSING AN AND NODE WITH T
	RUE AS ARG
2)	)%
**************
1)1			VNOTFLG_(IF .VARGNODE EQL .OLDCNODE[ARG1PTR]
****
2)1		!**;[553], BLCMB @3607, DCE, 22-MAR-77
2)		!**;[553], IF TYPE CONVERSION NODE IS BEING PROMOTED, WE
	 MUST
2)		!**;[553], TAKE INTO CONSIDERATION THE FACT THAT IT MAY
	HAVE TO
2)		!**;[553], GENERATE CODE NOW WHERE IT DIDN'T USED TO...
2)		%[553]%	IF .CNODE[OPRCLS] EQL TYPECNV THEN CNODE[NOCNVFL
	G]_0;
2)			VNOTFLG_(IF .VARGNODE EQL .OLDCNODE[ARG1PTR]
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 143
PCO Log Report



                   *********************
                   *PCO #:10-F10   -234*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(553)

[Date Entered]          25-MAR-77

[Programmer]            EKLUND

[Routines]              CGVBOO    ALCTVB

[Key Words]             AND/OR      NOT         BAD CODE

[Source Before Edit]    %5A  (000553)

[Source After Edit]     %5A  (000554)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22324
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 144
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Bad code may be generated for  an  expression  involving  logical
operators  AND  and OR if one of the operands is the NOT of a function
call.  An example is:  I=(J .LT.  1) .OR.  (J .GT.   2)  .OR.   (.NOT.
FN(K)).
 

                        **********


[DIAGNOSIS]
 
 
     Under certain  conditions  not  well  defined,  the  NOT  of  the
expression  above will be transformed internally into a flag on the OR
node, and this causes problems both  during  register  allocation  and
during  code generation if the expression is thought to be a candidate
for direct evaluation into the left hand side.  What  will  happen  is
that  during  code  generation  an  attempt  is  made to calculate the
function call value into the left hand side variable and then get  the
other  nodes  for evaluation.  In this shuffle the NOT is done only to
the register containing the  value  of  the  function  call,  but  the
compiler  assumes that the complementation has been done to the memory
location as well.  This gives incorrect code.
 

                        **********


[CURE]
 
 
     Be  more  careful  during  both  register  allocation  and   code
generation so that if the not flag is set, register allocation is done
differently and so that  code  generation  can  handle  the  resulting
representation of the expression.
 
Digital Equipment Corporation       27-OCT-77    Page 145
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 0909 23-MAR-1977
File 2)	FTN:COMMAN.554[30,4515]	created: 1413 24-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(553) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 23-M
	AR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(554) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 24-M
	AR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;554	REGAL2(145)	22324	AND NODE WITH THE NEGATION OF A
	FUNCTION
2)	;	CGEXPR(72)		CALL BELOW IT GIVES BAD CODE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==553	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==554	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 146
PCO Log Report


[FILCOM]
File 1)	FTN:REGAL2.BLI[31,4650]	created: 1538 22-MAR-1977
File 2)	FTN:REGAL2.554[30,4515]	created: 1334 24-MAR-1977
 
1)1	GLOBAL BIND REGAV = 5^24 + 1^18 + 144;	!VERSION DATE: 22-MAR-77
1)	%(
****
2)1	GLOBAL BIND REGAV = 5^24 + 1^18 + 145;	!VERSION DATE: 24-MAR-77
2)	%(
**************
1)1	)%
****
2)1	145	554	22324	NOT FLAG CAUSES PROBLEMS ON AND, OR NODE
	S
2)	)%
**************
1)1		LOCAL RA;
****
2)1	!**;[554], ALCTVBOOL @5232, DCE, 24-MAR-77
2)	%[554]%	LABEL ALLARG1;
2)		LOCAL RA;
**************
1)1		BEGIN
1)			TREEPTR_.ARG1NODE;
1)			ALCINTMP(.TA,.BSYREGS,.FREGCT);
****
2)1	!**;[554], ALCTVBOOL @5266, DCE, 24-MAR-77
2)	!**;[554], ADD A LABEL FOR THE FOLLOWING LEAVE STATEMENT
2)	ALLARG1:BEGIN	%[554]%
2)			TREEPTR_.ARG1NODE;
2)		!**;[554], ALCTVBOOL @5268, DCE, 24-MAR-77
2)		!**;[554], IF THE AND NODE (OR NODE) HAS A1NOTFLG SET, M
	UST BE
2)		!**;[554], VERY CAREFUL ABOUT TARGETING BOTH ARG1NODE AN
	D CNODE
2)		!**;[554], SO THAT ARG1NODE GOES TO A REG WHILE CNODE GO
	ES TO MEMORY
2)		%[554]%	IF .CNODE[A1NOTFLG]
2)		%[554]%	THEN
2)		%[554]%	BEGIN
2)		%[554]%		RA_AFREEREG(.BSYREGS,FALSE,FALSE);
2)		%[554]%		ALCINREG(.RA,.BSYREGS,.FREGCT);
2)		%[554]%		CNODE[A1SAMEFLG]_0;
2)		%[554]%		LEAVE ALLARG1
2)		%[554]%	END;
2)			ALCINTMP(.TA,.BSYREGS,.FREGCT);
**************
 
Digital Equipment Corporation       27-OCT-77    Page 147
PCO Log Report


[FILCOM]
File 1)	FTN:CGEXPR.BLI[31,4650]	created: 0834 17-DEC-1976
File 2)	FTN:CGEXPR.554[30,4515]	created: 1348 24-MAR-1977
 
1)1	GLOBAL BIND CGEXV = 4^24 + 2^18 + 71;	!VERSION DATE: 30-DEC-75
1)	%(
****
2)1	GLOBAL BIND CGEXV = 4^24 + 2^18 + 72;	!VERSION DATE: 24-MAR-77
2)	%(
**************
1)1	)%
****
2)1	72	554	22324	FIX CODE GEN FOR AND NODE WITH A1NOTFLG
	SET
2)	)%
**************
1)1			IF .CNODE[INREGFLG] OR NOT .ARG1NODE[INREGFLG]
1)			THEN
****
2)1		%[554]%	IF .CNODE[INREGFLG] OR NOT .ARG1NODE[INREGFLG]
2)		!**;[554], CGVBOOL @4291, DCE, 24-MAR-77
2)		!**;[554], IF THE A1NOTFLG IS SET, MUST GENERATE CODE TO
	 COMPLEMENT
2)		!**;[554], THE VALUE OF A1NODE - THIS IS THE PLACE!
2)		%[554]%		OR .CNODE[A1NOTFLG]
2)			THEN
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 148
PCO Log Report



                   *********************
                   *PCO #:10-F10   -235*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(554)

[Date Entered]          01-APR-77

[Programmer]            EKLUND

[Routines]              LISTOU    OUTMDA

[Key Words]             ENTRY STMN  OCTAL MAP   INCORRECT

[Source Before Edit]    %5A  (000554)

[Source After Edit]     %5A  (000555)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22281
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 149
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     The line number/octal map is incorrect after an  entry  statement
occurs in the source file.
 

                        **********


[DIAGNOSIS]
 
 
     When the sixbit name is put out for the entry  point,  the  octal
location counter is not updated if only an octal map is requested.
 

                        **********


[CURE]
 
 
     If the octal map is requested, increment the  octal  counter  for
each  such  sixbit  name  that can be output in addition to the normal
code lines generated.
 
Digital Equipment Corporation       27-OCT-77    Page 150
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 1413 24-MAR-1977
File 2)	FTN:COMMAN.555[30,4515]	created: 1558 31-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(554) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 24-M
	AR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(555) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 31-M
	AR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;555	LISTOU(60)	22281	FIX LINE NUMBER/OCTAL MAP WITH E
	NTRY POINTS
2)	;END REVISION HISTORY
**************
1)1	EDNUM==554	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==555	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 151
PCO Log Report


[FILCOM]
File 1)	FTN:LISTOU.BLI[31,4650]	created: 0840 17-DEC-1976
File 2)	FTN:LISTOU.555[30,4515]	created: 1646 31-MAR-1977
 
1)1	GLOBAL BIND LISOV = 5^24 + 0^18 + 59;		!VERSION DATE: 1
	4-OCT-76
1)	%(
****
2)1	GLOBAL BIND LISOV = 5^24 + 1^18 + 60;		!VERSION DATE: 3
	1-MAR-77
2)	%(
**************
1)1	)%
****
2)1	****** BEGIN VERSION 5A ******
2)	60	22281	555	FIX MAP WITH ENTRY POINTS
2)	)%
**************
1)1		END;
1)		SELECT .IADDRPTR OF NSET
****
2)1	!**;[555], OUTMDA @3960, DCE, 31-MAR-77
2)	!**;[555], FOR VARIOUS DATA (ENTRY POINTS) UPDATE OCTAL LOCATION
	 COUNTER
2)	%[555]%	END ELSE IF .FLGREG<MAPFLG> THEN CODELINES_.CODELINES+1;
2)		SELECT .IADDRPTR OF NSET
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 152
PCO Log Report



                   *********************
                   *PCO #:10-F10   -236*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(555)

[Date Entered]          01-APR-77

[Programmer]            EKLUND

[Routines]              LISTNG    PAGEHE

[Key Words]             HEADING     OCTAL MAP   /L

[Source Before Edit]    %5A  (000555)

[Source After Edit]     %5A  (000556)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-NONE
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 153
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     If a line number/octal map is requested for a  compilation,  this
information is not contained in the header for each page.
 

                        **********


[DIAGNOSIS]
 
 
     There needs to be another test to put this information  into  the
header string for each page.
 

                        **********


[CURE]
 
 
     Make the test and build the correct string.
 
Digital Equipment Corporation       27-OCT-77    Page 154
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 1558 31-MAR-1977
File 2)	FTN:COMMAN.556[30,4515]	created: 1541 01-APR-1977
 
1)1	TITLE	FTNCMD	%5A(555) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 31-M
	AR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(556) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 1-AP
	R-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;556	LISTNG(17)	-----	PUT /L IN HEADING OF PAGE IF OCT
	AL MAP REQUESTED
2)	;END REVISION HISTORY
**************
1)1	EDNUM==555	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==556	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 155
PCO Log Report


[FILCOM]
File 1)	FTN:LISTNG.BLI[31,4650]	created: 0758 08-MAR-1977
File 2)	FTN:LISTNG.556[30,4515]	created: 1551 31-MAR-1977
 
1)1	GLOBAL BIND LISTV = 5^24 + 1^18 + 16;	! VERSION DATE: 8-MAR-77
1)	%(
****
2)1	GLOBAL BIND LISTV = 5^24 + 1^18 + 17;	! VERSION DATE: 31-MAR-7
	7
2)	%(
**************
1)1	)%
****
2)1	17	556	-----	PUT /L IN HEADER IF LINE NUMBER/OCTAL MA
	P REQUESTED
2)	)%
**************
1)1		BEGIN	%CHECK DEBUG FLAGS%
****
2)1	!**;[556], PAGEHEADER @594, DCE, 31-MAR-77
2)	!**;[556], ADD /L TO PAGE HEADERS IF LINE NUMBER/OCTAL MAP REQUE
	STED
2)	%[556]%	IF .FLGREG<MAPFLG> THEN STRNG7('/L');
2)		BEGIN	%CHECK DEBUG FLAGS%
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 156
PCO Log Report



                   *********************
                   *PCO #:10-F10   -237*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(556)

[Date Entered]          08-APR-77

[Programmer]            STAN WHITLOCK

[Routines]              COMMAN

[Key Words]             WILDCARD    PPN         SFD

[Source Before Edit]    %5A  (000556)

[Source After Edit]     %5A  (000557)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   Y
                        SER/SPR Number:10-NONE
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 157
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
Wild carding in the filename  or  filetype  of  the  .REL  or  the  .LST
specification  is flagged as an error.  Wild carding in the ppn or as an
SFD is not caught as an error in the command line for either the .REL or
the .LST file specification.
 

                        **********


[DIAGNOSIS]
 
SCAN passes the wild card indication for these  fields  to  the  command
scanner which then ignores it.
 

                        **********


[CURE]
 
If the wild card flag for the ppn or any SFD  level  is  set,  give  the
error message
    ?FTNNWD Incorrect use of * or ?  in [filename]
 
Notice that wild carding in ALL forms is allowed and  handled  correctly
in the input file specification.
 
Digital Equipment Corporation       27-OCT-77    Page 158
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1541 01-APR-1977
File 2)	DSK:COMMAN.MAC[31,4577]	created: 1417 06-APR-1977
 
1)1	TITLE	FTNCMD	%5A(556) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 1-AP
	R-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(557) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 6-AP
	R-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;557	COMMAN(557)	-----	CATCH WILD PPN OR SFD AS ERROR
2)	;END REVISION HISTORY
**************
1)1	EDNUM==556	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==557	;EDIT NUMBER
2)	JOBVER=137
**************
1)1		MOVE	T1,F.DIR(P1)	;PICK UP PPN
****
2)1	;**[557] @SETENT+19.5L  SJW  6-APR-77
2)		MOVE	T2,F.DIRM(P1)	;[557] IS PPN WILD?
2)		AOJN	T2,E.WILD	;[557] YES == ERROR
2)		MOVE	T1,F.DIR(P1)	;PICK UP PPN
**************
1)1	SETEN1:	MOVE	T3,(T1)		;PICK UP SFD
1)		MOVEM	T3,1(T2)	;STORE IN PATH
****
2)1	;**[557] @SETEN1  SJW  6-APR-77
2)	SETEN1:	MOVE	T3,1(T1)	;[557] IS SFD WILD?
2)		AOJN	T3,E.WILD	;[557] YES == ERROR
2)		MOVE	T3,(T1)		;PICK UP SFD
2)		MOVEM	T3,1(T2)	;STORE IN PATH
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 159
PCO Log Report



                   *********************
                   *PCO #:10-F10   -238*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(561)

[Date Entered]          27-APR-77

[Programmer]            EKLUND

[Routines]              FOLDER    PNROPT

[Key Words]             ICE         REG 0       IOLISTS     OPTIMIZED

[Source Before Edit]    %5A  (000561)

[Source After Edit]     %5A  (000562)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22540
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 160
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Internal compiler error was the reported symptom, but  there  may
be  other  symptoms which result from the overwriting of register zero
(flag register) during the optimization of complicated I/O lists.
 

                        **********


[DIAGNOSIS]
 
 
     When optimizing complicated I/O  lists,  considerable  effort  is
spent in trying to collapse the list into a form where either ELIST or
SLIST calls can be generated to FOROTS.  During this process,  various
expressions  which  are  associated  with  the  I/O list may undergo a
series of transformations, including constant folding.   The  internal
representation  of  these  expressions is unusual in that some of them
have no PARENT pointers, namely the top level of each  expression  has
no parent pointer.  If constant folding can occur at this top level to
produce an entirely constant expression, then it is possible that  the
compiler  will  continue  to  follow up the PARENT pointer, which will
result in register zero being overwritten.   The  processing  of  such
expressions  was  not  prepared  to  handle an expression node with no
parent.
 

                        **********


[CURE]
 
 
     During optimization, if  constant  folding  occurs,  and  if  the
parent  expression  pointer  is  zero,  then  the expression is at the
topmost level, and  no  further  processing  is  needed,  so  get  out
quickly.
 
Digital Equipment Corporation       27-OCT-77    Page 161
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1323 12-APR-1977
File 2)	FTN:COMMAN.562[30,4515]	created: 1551 27-APR-1977
 
1)1	TITLE	FTNCMD	%5A(561) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 12-A
	PR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(562) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 27-A
	PR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;562	PNROPT(150)	22540	IOLISTS IN OPTIMIZATIONS MAY KIL
	L REG 0
2)	;END REVISION HISTORY
**************
1)1	EDNUM==561	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==562	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 162
PCO Log Report


[FILCOM]
File 1)	FTN:PNROPT.BLI[31,4650]	created: 0843 17-DEC-1976
File 2)	FTN:PNROPT.562[30,4515]	created: 1530 27-APR-1977
 
1)1	!AUTHOR: NORMA ABEL/HPW/MD/SJW/JNG
1)	MODULE PNROPT(RESERVE(0,1,2,3),SREG=#17,VREG=#15,FREG=#16,DREGS=
	4)=
****
2)1	!AUTHOR: NORMA ABEL/HPW/MD/SJW/JNG/DCE
2)	MODULE PNROPT(RESERVE(0,1,2,3),SREG=#17,VREG=#15,FREG=#16,DREGS=
	4)=
**************
1)1	GLOBAL BIND PNROV = 5^24 + 0^18 + 149;	!VERSION DATE: 30-Sep-76
1)	%(
****
2)1	GLOBAL BIND PNROV = 5^24 + 1^18 + 150;	!VERSION DATE: 27-APR-77
2)	%(
**************
1)1	)%	!END REVISION HISTORY
****
2)1	***** BEGIN VERSION 5A *****
2)	150	562	22540	WHEN FOLDING CONSTANTS, TAKE CARE OF EXP
	RESSIONS
2)				WHICH HAVE NO PARENT POINTER (FIELD IS Z
	ERO)
2)	)%	!END REVISION HISTORY
**************
1)1	%[V5]%	    IF .EXPR [OPRCLS] EQL DATAOPR
****
2)1	!**;[562], FOLDER @3914, DCE, 27-APR-77
2)	!**;[562], THERE MAY BE NO PARENT FOR THIS EXPRESSION, AND IF NO
	T, WE
2)	!**;[562], WANT TO SIMPLY RETURN AFTER FOLDING THE CONSTANTS.
2)	%[562]%	    IF .T EQL 0 THEN RETURN .EXPR;
2)	%[V5]%	    IF .EXPR [OPRCLS] EQL DATAOPR
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 163
PCO Log Report



                   *********************
                   *PCO #:10-F10   -239*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(562)

[Date Entered]          28-APR-77

[Programmer]            EKLUND

[Routines]              MAKLIB    GNRCFN

[Key Words]             LIBRARY     FUNCTION    BAD ARG     ERROR MSG

[Source Before Edit]    %5A  (000562)

[Source After Edit]     %5A  (000563)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22541
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 164
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     If the first argument to a library function  is  of  a  type  not
acceptable  for  that  particular  library  function, while subsequent
arguments are correct, then  the  compiler  may  generate  more  error
messages (one for each argument) than appropriate.
 

                        **********


[DIAGNOSIS]
 
 
     The algorithm for detecting  incorrect  typing  of  arguments  to
library functions made the assumption that the first argument did have
the correct type (this was so that generic functions would be  handled
reasonably,  since  their  type  is  taken  from the type of the first
argument).  The type of the first argument (whether correct or not) is
used  to  compare  against the types of all other arguments, so if the
first argument is wrong, many spurious error messages may result.
 

                        **********


[CURE]
 
 
     Be more  careful,  and  if  the  first  argument's  type  is  not
acceptable,  use  the  expected  type  to  compare  against  the other
arguments to the library function.
 
Digital Equipment Corporation       27-OCT-77    Page 165
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1551 27-APR-1977
File 2)	FTN:COMMAN.563[30,4515]	created: 1540 28-APR-1977
 
1)1	TITLE	FTNCMD	%5A(562) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 27-A
	PR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(563) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 28-A
	PR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;563	GNRCFN(32)	22541	SPURIOUS ERRORS IF FIRST ARG TO
	LIB FN
2)	;				IS OF UNACCEPTIBLE TYPE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==562	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==563	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 166
PCO Log Report


[FILCOM]
File 1)	FTN:GNRCFN.BLI[31,4650]	created: 0838 17-DEC-1976
File 2)	FTN:GNRCFN.563[30,4515]	created: 1259 28-APR-1977
 
1)1	!AUTHOR: S. MURPHY
1)	MODULE	GNRC(SREG=#17,VREG=#15,FREG=#16,DREGS=4,RESERVE(0,1,2,3)
	) =
****
2)1	!AUTHOR: S. MURPHY/DCE
2)	MODULE	GNRC(SREG=#17,VREG=#15,FREG=#16,DREGS=4,RESERVE(0,1,2,3)
	) =
**************
1)1	GLOBAL BIND  GNRCV = 4^24 + 1^18 + 31;	!VERSION DATE: 02-JUL-75
1)	%(
****
2)1	GLOBAL BIND  GNRCV = 5^24 + 1^18 + 32;	!VERSION DATE: 28-APR-77
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	32	563	22541	GIVE CORRECT ERROR MESSAGES FOR BAD ARGU
	MENT
2)				TYPES TO LIBRARY ROUTINES.
2)	)%
**************
1)1		OWN PEXPRNODE ARG1NODE;	!EXPRESSION NODE FOR THE FIRST A
	RG ON THE ARGLIST
****
2)1	!**;[563], MAKLIBFN @3283, DCE, 28-APR-77
2)	%[563]%	OWN ARG1TYPE;		!TYPE OF FIRST FN ARGUMENT (TYPE
	 OF FN)
2)		OWN PEXPRNODE ARG1NODE;	!EXPRESSION NODE FOR THE FIRST A
	RG ON THE ARGLIST
**************
1)1		IF .ARG1NODE[VALTYPE] EQL OCTAL OR .ARG1NODE[VALTYPE] EQ
	L LOGICAL
1)		THEN
****
2)1	!**;[563], MAKLIBFN @3295, DCE, 28-APR-77
2)	%[563]%	ARG1TYPE_.ARG1NODE[VALTYPE];
2)	%[563]%	IF .ARG1TYPE EQL OCTAL OR .ARG1TYPE EQL LOGICAL
2)		THEN
**************
1)1			IF .ARG1NODE[VALTYPE] NEQ .LIBATTRIBUTES[.FNIX,A
	TTARGTYP]
1)			THEN
****
2)1	!**;[563], MAKLIBFN @3338, DCE, 28-APR-77
2)	!**;[563], MAKE SURE THAT FOR A NON-GENERIC FUNCTION, THE TYPE B
	EING
Digital Equipment Corporation       27-OCT-77    Page 167
PCO Log Report


2)	!**;[563], COMPARED AGAINST FOR LATER ARGUMENTS IS THE TYPE OF T
	HE FUNCTION
2)	!**;[563], RATHER THAN THE TYPE OF THE FIRST ARGUMENT.
2)	%[563]%		ARG1TYPE_.LIBATTRIBUTES[.FNIX,ATTARGTYP];
2)	%[563]%		IF .ARG1NODE[VALTYPE] NEQ .ARG1TYPE
2)			THEN
**************
1)1			INCR I FROM 1 TO .ARGLST[ARGCOUNT]
1)			DO
****
2)1	!**;[563], MAKLIBFN @3381, DCE, APR-28-77
2)	!**;[563], ONLY NEED TO TEST THE REST OF THE ARGUMENT LIST
2)	%[563]%		INCR I FROM 2 TO .ARGLST[ARGCOUNT]
2)			DO
**************
1)1				IF .ARGNODE[VALTYPE] NEQ .ARG1NODE[VALTY
	PE]
1)				THEN
****
2)1	!**;[563], MAKLIBFN @3386, DCE, 28-APR-77
 
 
2)	%[563]%			IF .ARGNODE[VALTYPE] NEQ .ARG1TYPE
2)				THEN
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 168
PCO Log Report



                   *********************
                   *PCO #:10-F10   -240*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(563)

[Date Entered]          29-APR-77

[Programmer]            STAN WHITLOCK

[Routines]              CGREAD    CGWRIT    CGSTMN

[Key Words]             WTB.        FIN.

[Source Before Edit]    %5A  (000563)

[Source After Edit]     %5A  (000564)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-NONE
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 169
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
The code generated for an unformatted WRITE (sequential or random)  with
no  iolist  did  not  include  an  explicit  call  to FIN.  which caused
problems for FOROTS.
 

                        **********


[DIAGNOSIS]
 
Edit 367 made CGWRIT generate a call to WTB.  for an  unformatted  write
with no iolist but forgot to include the FIN.  call.
 

                        **********


[CURE]
 
CGREAD and CGWRIT should be symmetrical.  Make them look the same and at
the same time fix an unformatted WRITE with no iolist to generate a FIN.
call.  Also fix a potential problem in CGREAD:  the test for a  NAMELIST
READ  (which  has  no  iolist)  was  made  before the IONAME pointer was
verified to be non-zero.
 
Digital Equipment Corporation       27-OCT-77    Page 170
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1540 28-APR-1977
File 2)	DSKC:COMMAN.MAC[31,4577]	created: 1425 29-APR-1977
 
1)1	TITLE	FTNCMD	%5A(563) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 28-A
	PR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(564) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 29-A
	PR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;564	CGSTMN(130)	-----	MAKE CGREAD == CGWRIT: GENERATE
	FIN CALL
2)	;				  ON UNFORMATTED WRITE WITH NO I
	OLIST
2)	;END REVISION HISTORY
**************
1)1	EDNUM==563	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==564	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 171
PCO Log Report


[FILCOM]
File 1)	LIB:CGSTMN.BLI[31,4650]	created: 1611 14-JAN-1977
File 2)	DSKC:CGSTMN.BLI[31,4577]	created: 1452 29-APR-1977
 
1)1	!AUTHOR: S. MURPHY/HPW/DCE
1)	MODULE	CGSTMNT(SREG=#17,VREG=#15,FREG=#16,DREGS=4,RESERVE(0,1,2
	,3)) =
1)	BEGIN
1)	GLOBAL BIND CGSTV = 5^24 + 1^18 + 127;	!VERSION DATE: 14-JAN-77
1)	%(
****
2)1	!AUTHOR: S. MURPHY/HPW/DCE/SJW
2)	MODULE	CGSTMNT(SREG=#17,VREG=#15,FREG=#16,DREGS=4,RESERVE(0,1,2
	,3)) =
2)	BEGIN
2)	GLOBAL BIND CGSTV = 5^24 + 1^18 + 130;	!VERSION DATE: 29-APR-77
2)	%(
**************
1)1	)%
****
2)1	130	564	-----	MAKE CGREAD AND CGWRIT SYMMETRICAL:
2)				  MAKE CGREAD CHECK FOR NAMELIST ONLY IF
	 IONAME
2)				  PTR NEQ 0;
2)				  MAKE CGWRIT GENERATE FIN CALL IF UNFOR
	MATTED
2)	)%
**************
1)1		IF .CSTMNT[IOLIST] EQL 0 THEN
1)			BEGIN
1)				T1_.CSTMNT[IONAME];
1)				IF .T1[OPRCLS] NEQ STATEMENT AND	
	!IONAME ==IOFORM
1)				 .T1[IDATTRIBUT(NAMNAM)] THEN
1)				  ( OPDSPIX_OPGNLI;	!NAME LIST READ
1)					CGOPGEN())
1)				ELSE
1)				BEGIN
1)					IF .CSTMNT[IOFORM] EQL 0
1)					THEN OPDSPIX_OPGRTB	!BINARY
	READ
1)					ELSE
1)					   OPDSPIX_OPGIN;	!FORMATE
	D READ
1)					CGOPGEN();
1)					OPDSPIX_OPGFIN;
1)					CGOPGEN();
1)				END;
1)			END ELSE
1)			BEGIN
1)				IF .CSTMNT[IOFORM] EQL 0 THEN
Digital Equipment Corporation       27-OCT-77    Page 172
PCO Log Report


1)				   OPDSPIX_OPGRTB
1)				ELSE
1)				   OPDSPIX_OPGIN;
1)				CGOPGEN();
1)				CGIOLST();
1)			END;
1)	END;
****
2)1	!**[564]  CGREAD @4846  SJW  29-APR-77
2)	![564] MAKE CGREAD AND CGWRIT SYMMETRICAL: DON'T MAKE A NAMELIST
2)	![564]   CHECK WITHOUT CHECKING FOR IONAME PTR = 0
2)	%[564]%	T1 _ .CSTMNT [IOFORM];			! IOFORM == IONA
	ME
2)	%[564]%	IF .CSTMNT [IOLIST] EQL 0		! NO IOLIST (BEW
	ARE NAMELIST)
2)	%[564]%	  THEN
2)	%[564]%	    IF .T1 EQL 0			! NO FORMAT
2)	%[564]%	      THEN BEGIN
 
 
2)	%[564]%		OPDSPIX _ OPGRTB;		! UNFORMATTED RE
	AD
2)	%[564]%		CGOPGEN ();
2)	%[564]%		OPDSPIX _ OPGFIN;		! FIN CALL SINCE
	 NO IOLIST
2)	%[564]%		CGOPGEN ();
2)	%[564]%	      END
2)	%[564]%	    ELSE
2)	%[564]%	    IF .T1 [OPRCLS] NEQ STATEMENT  AND	! CHECK FOR NAME
	LIST
2)	%[564]%	       .T1 [IDATTRIBUT (NAMNAM)]
2)	%[564]%	      THEN BEGIN
2)	%[564]%		OPDSPIX _ OPGNLI;		! NAMELIST READ
2)	%[564]%		CGOPGEN ();
2)	%[564]%	      END
2)	%[564]%	      ELSE BEGIN
2)	%[564]%		OPDSPIX _ OPGIN;		! FORMATTED READ
2)	%[564]%		CGOPGEN ();
2)	%[564]%		OPDSPIX _ OPGFIN;		! FIN CALL SINCE
	 NO IOLIST
2)	%[564]%		CGOPGEN ();
2)	%[564]%	      END
2)	%[564]%	  ELSE BEGIN				! THERE IS AN IO
	LIST
2)	%[564]%	    IF .T1 EQL 0			! CHECK FOR FORM
	AT
2)	%[564]%	      THEN OPDSPIX _ OPGRTB		! UNFORMATTED RE
	AD
2)	%[564]%	      ELSE OPDSPIX _ OPGIN;		! FORMATTED READ
2)	%[564]%	    CGOPGEN ();
2)	%[564]%	    CGIOLST ();				! PROCESS IOLIST
Digital Equipment Corporation       27-OCT-77    Page 173
PCO Log Report


2)	%[564]%	  END;
2)	END;
**************
1)1		!**;[367], CGWRIT @4894, DCE, 6-APR-76
1)		!**;[367], TAKE CARE OF CASE WHERE IOLIST AND IONAME ARE
	 ZERO
1)		!**;[367], THIS SHOULD GIVE A PUSHJ P,WTB.
1)		%[367]%	IF .CSTMNT[IOLIST] EQL 0 AND .CSTMNT[IONAME] NEQ
	 0 THEN
1)			BEGIN
1)				T1_.CSTMNT[IONAME];
1)				IF .T1[OPRCLS] NEQ STATEMENT AND
1)				 .T1[IDATTRIBUT(NAMNAM)] THEN
1)				(OPDSPIX_OPGNLO;
1)				CGOPGEN() )
1)				ELSE
1)				 (  OPDSPIX_OPGOUT;
1)				CGOPGEN();
1)				OPDSPIX_OPGFIN;
1)				CGOPGEN();)
1)			END ELSE
1)			BEGIN
1)			IF .CSTMNT[IOFORM] EQL 0 THEN
1)			   OPDSPIX_OPGWTB
1)			ELSE
1)			   OPDSPIX_OPGOUT;
1)				CGOPGEN();
1)				CGIOLST();
1)			END;
1)	END;
****
2)1	!**[564]  CGWRIT @4907  SJW  29-APR-77
2)	![564] MAKE CGREAD AND CGWRIT SYMMETRICAL: GENERATE A FIN CALL
2)	![564]   AFTER AN UNFORMATTED WRITE; REPLACE EDIT [367]
 
 
2)	%[564]%	T1 _ .CSTMNT [IOFORM];			! IOFORM == IONA
	ME
2)	%[564]%	IF .CSTMNT [IOLIST] EQL 0		! NO IOLIST (BEW
	ARE NAMELIST)
2)	%[564]%	  THEN
2)	%[564]%	    IF .T1 EQL 0			! NO FORMAT
2)	%[564]%	      THEN BEGIN
2)	%[564]%		OPDSPIX _ OPGWTB;		! UNFORMATTED WR
	ITE
2)	%[564]%		CGOPGEN ();
2)	%[564]%		OPDSPIX _ OPGFIN;		! FIN CALL SINCE
	 NO IOLIST
2)	%[564]%		CGOPGEN ();
2)	%[564]%	      END
2)	%[564]%	    ELSE
Digital Equipment Corporation       27-OCT-77    Page 174
PCO Log Report


2)	%[564]%	    IF .T1 [OPRCLS] NEQ STATEMENT  AND	! CHECK FOR NAME
	LIST
2)	%[564]%	       .T1 [IDATTRIBUT (NAMNAM)]
2)	%[564]%	      THEN BEGIN
2)	%[564]%		OPDSPIX _ OPGNLO;		! NAMELIST WRITE
2)	%[564]%		CGOPGEN ();
2)	%[564]%	      END
2)	%[564]%	      ELSE BEGIN
2)	%[564]%		OPDSPIX _ OPGOUT;		! FORMATTED WRIT
	E
2)	%[564]%		CGOPGEN ();
2)	%[564]%		OPDSPIX _ OPGFIN;		! FIN CALL SINCE
	 NO IOLIST
2)	%[564]%		CGOPGEN ();
2)	%[564]%	      END
2)	%[564]%	  ELSE BEGIN				! THERE IS AN IO
	LIST
2)	%[564]%	    IF .T1 EQL 0			! CHECK FOR FORM
	AT
2)	%[564]%	      THEN OPDSPIX _ OPGWTB		! UNFORMATTED WR
	ITE
2)	%[564]%	      ELSE OPDSPIX _ OPGOUT;		! FORMATTED WRIT
	E
2)	%[564]%	    CGOPGEN ();
2)	%[564]%	    CGIOLST ();				! PROCESS IOLIST
2)	%[564]%	  END;
2)	END;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 175
PCO Log Report



                   *********************
                   *PCO #:10-F10   -241*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(564)

[Date Entered]          02-MAY-77

[Programmer]            EKLUND

[Routines]              GRAPH     LOKENT

[Key Words]             UNINITIALI  VARIABLE    EXTENDED    RANGE

[Source Before Edit]    %5A  (000564)

[Source After Edit]     %5A  (000565)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21810
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 176
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     When using the optimizer, error messages may be  generated  which
refer  to  variables being not initialized when the program is clearly
initializing these variables.  There must be DO  loops  with  extended
ranges in the program for this to occur.
 

                        **********


[DIAGNOSIS]
 
 
     This problem occurs because the graphing of a program  which  has
an  extended  range DO loop may be incorrect.  In particular, the most
common case is where the extended range is accomplished  by  means  of
either  an  unconditional  GO  TO out of the DO loop or by means of an
arithmetic IF statement.  In these cases, the statements  between  the
transfer  statement  and the end of the DO loop may not be included in
the list of statements  considered  in  the  DO  loop,  and  therefore
initialization of variables is not detected properly.
 

                        **********


[CURE]
 
 
     During graphing, when the entrances to DO loops are  detected  by
means  of  the usage counts on local labels, be sure that the branched
to labels are all included  in  the  list  of  successors  to  the  DO
statement  itself  so  that the BUSY list of statements in the DO loop
will be generated correctly.
 
Digital Equipment Corporation       27-OCT-77    Page 177
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1425 29-APR-1977
File 2)	FTN:COMMAN.565[30,4515]	created: 1459 02-MAY-1977
 
1)1	TITLE	FTNCMD	%5A(564) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 29-A
	PR-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(565) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 2-MA
	Y-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;565	GRAPH(126)	21810	EXTENDED RANGE DO LOOPS GIVES BA
	D GRAPH
2)	;END REVISION HISTORY
**************
1)1	EDNUM==564	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==565	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 178
PCO Log Report


[FILCOM]
File 1)	FTN:GRAPH.BLI[31,4650]	created: 1053 18-FEB-1977
File 2)	FTN:GRAPH.565[30,4515]	created: 1452 02-MAY-1977
 
1)1	GLOBAL BIND GRAPV = 5^24 + 1^18 + 125;	!VERSION DATE: 18-FEB-77
1)	%(
****
2)1	GLOBAL BIND GRAPV = 5^24 + 1^18 + 126;	!VERSION DATE: 2-MAY-77
2)	%(
**************
1)1	)%
****
2)1	126	565	21810	EXTENDED RANGE DO LOOP IMPROPERLY GRAPHE
	D
2)	)%
**************
1)1					LNKREV(.TOP,.PB);
****
2)1	!**;[565], LOKENTRANCE @4365, DCE, 2-MAY-77
2)	!**;[565], PUT THIS STATEMENT ON THE SUCCESSOR LIST FOR THE TOP
	OF
2)	!**;[565], THE LIST - NAMELY THE DO STATEMENT.
2)	%[565]%				LNKFWD(.PB,.TOP);
2)					LNKREV(.TOP,.PB);
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 179
PCO Log Report



                   *********************
                   *PCO #:10-F10   -242*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(565)

[Date Entered]          04-MAY-77

[Programmer]            EKLUND

[Routines]              COMSUB    HASHIT

[Key Words]             LOGICAL     EXPRESSION  NOT OPERAT  BAD CODE

[Source Before Edit]    %5A  (000565)

[Source After Edit]     %5A  (000566)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22701
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 180
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Large logical expressions which have  many  .NOT.   operators  in
them may generate bad code.  If the expressions involved would involve
common sub-expressions without the .NOT.  operators, the compiler  may
get  confused  and  treat the expressions as if the operators were not
there resulting in bad code generated.
 

                        **********


[DIAGNOSIS]
 
 
     When the compiler is attempting to  find  common  sub-expressions
involving  logical  operands, there are a number of possible NOT flags
which need to enter into the internal  representation  of  the  common
sub-expression.   In  some  cases (only where there are two or more of
the same operator involved as in A .OR.   .NOT.   B  .OR.   .NOT.   C)
there  are  flags  which  are neglected inadvertently, and so a common
sub-expression might be made out of expressions like:  A .OR.  B and A
.OR.  .NOT.  B.
 

                        **********


[CURE]
 
 
     For large logical expressions, make sure that all NOT  flags  are
taken into consideration when looking for common sub-expressions.
 
Digital Equipment Corporation       27-OCT-77    Page 181
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1459 02-MAY-1977
File 2)	FTN:COMMAN.566[30,4515]	created: 1408 04-MAY-1977
 
1)1	TITLE	FTNCMD	%5A(565) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 2-MA
	Y-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(566) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 4-MA
	Y-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;566	COMSUB(263)	22701	BAD COMSUBS WITH MANY NOT FLAGS
2)	;				AND SHAPE SKEW
2)	;END REVISION HISTORY
**************
1)1	EDNUM==565	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==566	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 182
PCO Log Report


[FILCOM]
File 1)	FTN:COMSUB.BLI[31,4650]	created: 1456 11-JAN-1977
File 2)	FTN:COMSUB.566[30,4515]	created: 1226 04-MAY-1977
 
1)1	GLOBAL BIND COMSV = 5^24 + 1^18 + 262;	!VERSION DATE: 17-DEC-76
1)	%(
****
2)1	GLOBAL BIND COMSV = 5^24 + 1^18 + 263;	!VERSION DATE: 4-MAY-77
2)	%(
**************
1)1	)%
****
2)1	263	566	22701	SKEWED COMSUBS INVOLVING NOTFLAGS ARE NO
	T
2)				HASHED UNIQUELY - USE THE CORRECT FLAGS!
2)	)%
**************
1)1				+.CNODE[A1NOTFLG]^1+.CNODE[A2NOTFLG];
1)				SREGARG;
****
2)1	!**;[566], HASHIT @4816 (IN NOT ARITHMETIC), DCE, 4-MAY-77
2)	!**;[566], CHECK ON THE CORRECT FLAGS FOR HASHING UNIQUELY
2)	%[566]%			+.QQ[A2NOTFLG]^1+.CNODE[A2NOTFLG];
2)				SREGARG;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 183
PCO Log Report



                   *********************
                   *PCO #:10-F10   -243*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(566)

[Date Entered]          05-MAY-77

[Programmer]            EKLUND

[Routines]              ACT1      FUNCGE

[Key Words]             EXTERNAL    ENTRY       PARAMETERS  BAD CODE

[Source Before Edit]    %5A  (000566)

[Source After Edit]     %5A  (000567)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22284
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 184
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     If a subroutine name is being passed through an entry  point  and
on  to  another  called routine without using the name, then incorrect
code may be generated.  A simple example is:
 
 
     SUBROUTINE A
 
     EXTERNAL C
 
     ...
 
     ENTRY B(C)
 
     CALL D(C)
 
     ...
 
     END
 
The EXTERNAL declaration has been forgotten (overwritten) at the ENTRY
statement.
 

                        **********


[DIAGNOSIS]
 
 
     If the externally named routine (C above) is not used before  the
ENTRY  statement,  then  the variable C is considered to be a function
name at the  time  that  the  ENTRY  statement  is  encountered.   The
processing  of  the  parameter list for the entry statement would then
overwrite this declaration with a new type -  formal  variable.   This
would  lead to incorrect code being generated to pick up the parameter
(a MOVE instead of a MOVEI).
 

                        **********


[CURE]
Digital Equipment Corporation       27-OCT-77    Page 185
PCO Log Report


 
 
     In the case that the variable has already been assigned the  type
"function  name",  do  not  overwrite  this  type  when processing the
parameter list of an ENTRY statement.
 
Digital Equipment Corporation       27-OCT-77    Page 186
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1408 04-MAY-1977
File 2)	FTN:COMMAN.567[30,4515]	created: 0917 05-MAY-1977
 
1)1	TITLE	FTNCMD	%5A(566) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 4-MA
	Y-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(567) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 5-MA
	Y-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;567	ACT1(110)	22284	EXTERNAL STMNT NOT REMEMBERED AT
	 ENTRY POINTS
2)	;END REVISION HISTORY
**************
1)1	EDNUM==566	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==567	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 187
PCO Log Report


[FILCOM]
File 1)	FTN:ACT1.BLI[31,4650]	created: 0833 17-DEC-1976
File 2)	FTN:ACT1.567[30,4515]	created: 0910 05-MAY-1977
 
1)1	GLOBAL BIND ACT1V = 5^24 + 0^18 + 109;		!VERSION DATE: 2
	4-SEP-76
1)	%(
****
2)1	GLOBAL BIND ACT1V = 5^24 + 1^18 + 110;		!VERSION DATE: 5
	-MAY-77
2)	%(
**************
1)1	)%	!END REVISION HISTORY
****
2)1	***** BEGIN VERSION 5A *****
2)	110	567	22284	MAKE EXTERNAL STMNT APPLY TO ALL ENTRY P
	OINT PARAMS
2)	)%	!END REVISION HISTORY
**************
1)1	%[415]%				  (IF .R2[OPERSP] NEQ FORMLFN TH
	EN
1)	%[415]%				   R2[OPERSP]_FORMLVAR)
****
2)1	!**;[567], FUNCGEN @3885, DCE, 5-MAY-77
2)	!**;[567], ADD ONE MORE TEST SO THAT EXTERNAL DECLARATION WILL C
	ARRY OVER
2)	!**;[567], TO ALL ENTRY POINT PARAMETERS
2)	%[567]%				  (IF .R2[OPERSP] NEQ FORMLFN
2)	%[567]%				AND .R2[OPERSP] NEQ FNNAME THEN
2)	%[415]%				   R2[OPERSP]_FORMLVAR)
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 188
PCO Log Report



                   *********************
                   *PCO #:10-F10   -244*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(567)

[Date Entered]          06-MAY-77

[Programmer]            EKLUND

[Routines]              STA3      STATEF

[Key Words]             STMNT FN    ERRONEOUS   ICE

[Source Before Edit]    %5A  (000567)

[Source After Edit]     %5A  (000570)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22703
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 189
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Internal compiler error may result while processing  a  statement
which is syntactically invalid.  Examples are:
 
 
     WRUTE(6,340)
 
     A(3,2)=
 

                        **********


[DIAGNOSIS]
 
 
     For a statement which appears to resemble  a  statement  function
(array  reference,  WRITE  statement,  etc.),  but  which is not quite
correct syntactically, the compiler  will  attempt  to  clean  up  any
parameters  to  what it thought could be a statement function.  In the
case that the parameters are constants (an error condition), more care
needed to be taken to insure that the symbol table was left alone.
 

                        **********


[CURE]
 
 
     Check for a constant parameter, and get out if one is detected.
 
Digital Equipment Corporation       27-OCT-77    Page 190
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 0917 05-MAY-1977
File 2)	FTN:COMMAN.570[30,4515]	created: 1645 05-MAY-1977
 
1)1	TITLE	FTNCMD	%5A(567) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 5-MA
	Y-77
****
2)1	TITLE	FTNCMD	%5A(570) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 5-MA
	Y-77
**************
1)1	;END REVISION HISTORY
****
2)1	;570	STA3(61)	22703	BAD STMNT FN GIVES ICE (FN(2,3))
2)	;END REVISION HISTORY
**************
1)1	EDNUM==567	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==570	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 191
PCO Log Report


[FILCOM]
File 1)	FTN:STA3.BLI[31,4650]	created: 1514 17-FEB-1977
File 2)	FTN:STA3.570[30,4515]	created: 1626 05-MAY-1977
 
1)1	GLOBAL BIND STA3V = 5^24 + 1^18 + 60;		!VERSION DATE: 1
	7-FEB-77
1)	%(
****
2)1	GLOBAL BIND STA3V = 5^24 + 1^18 + 61;		!VERSION DATE: 5
	-MAY-77
2)	%(
**************
1)1	)%	!END REVISION HISTORY
****
2)1	61	570	22703	FN(2,3) CAUSES ILL MEM REF UNDER SOME CI
	RCUMSTANCES
2)	)%	!END REVISION HISTORY
**************
1)1		%[534]%			DECR I FROM .STK<LEFT> TO 0 DO
1)		%[324]%			BEGIN
****
2)1		!**;[570], STATEFUNC @4092, DCE, 5-MAY-77
2)		!**;[570], MUST GO IN ASCENDING ORDER TO CATCH ERRORS
2)		%[570]%			INCR I FROM 0 TO .STK<LEFT> DO
2)		%[324]%			BEGIN
**************
1)1		%[324]%				SAV_ .T2[IDSYMBOL];
****
2)1		!**;[570], STATEFUNC @4096, DCE, 5-MAY-77
2)		!**;[570], BE SURE THAT WE ARE NOT INADVERTENTLY IN THE
	CONSTANT
2)		!**;[570], TABLE RATHER THAN THE SYMBOL TABLE, E.G. FN(3
	,2)
2)		%[570]%				IF .T2[OPERSP] EQL CONST
	ANT
2)		%[570]%					THEN RETURN -1;
2)		%[324]%				SAV_ .T2[IDSYMBOL];
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 192
PCO Log Report



                   *********************
                   *PCO #:10-F10   -245*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(570)

[Date Entered]          12-MAY-77

[Programmer]            STAN WHITLOCK

[Routines]              FIRST     TABLES    ACT1      DRIVER

[Key Words]             ADJ1.       DIMENSION   TYPE STATE

[Source Before Edit]    %5A  (000570)

[Source After Edit]     %5A  (000571)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22378
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 193
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     If two or more arrays are passed to a  SUBROUTINE  with  adjustable
dimensions  which  are  the  same variables, and if the arrays are first
declared to be of one type (by a DIMENSION statement for  example),  and
then one of the arrays is declared to be of a different type requiring a
differnt amount of space (double precision for example), then  bad  code
may  be  generated  for  references to elements of this array.  One such
program is:
 
 
     SUBROUTINE MOV(S,R,I,J)
 
     DIMENSION S(I,J),R(I,J)
 
     DOUBLE PRECISION R
 
     ...
 

                        **********


[DIAGNOSIS]
 
In a subroutine with variable dimensioned arrays, the compiler tries  to
share  the  second  multiplier  factor  for two such arrays if the first
dimension is the same formal parameter, even if one  of  the  arrays  is
subsequently  declared  a  different "words per element" size in a later
type statement, which invalidates the sharing.
 

                        **********


[CURE]
 
When the type statement which changes the  element  size  for  a  formal
array  with  adjustable  dimensions  is  processed,  undo  any temporary
sharing which was done and try to share with any other formal array with
the  correct  properties.  If the multiplier temporary is not in use any
more, mark it NOT to be allocated.
 
The implementation of this fix requires  keeping  a  use  count  in  the
Digital Equipment Corporation       27-OCT-77    Page 194
PCO Log Report


symbol  table  entry  for  the temporary variable so that sharing may be
detected.  This means that these counts must be cleared before the later
phases of the compiler begin.
 
Digital Equipment Corporation       27-OCT-77    Page 195
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1645 05-MAY-1977
File 2)	DSKC:COMMAN.MAC[31,4577]	created: 1208 11-MAY-1977
 
1)1	TITLE	FTNCMD	%5A(570) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 5-MA
	Y-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(571) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 11-M
	AY-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;571	FIRST(130)	22378	ADD IDUSECNT DEFINITION
2)	;	TABLES(156)		ADD ARALINK DEFINITION
2)	;	ACT1(111)		FIX V5 OPT THAT SHARES 2ND OFFSE
	T OF FORMAL
2)	;				  ARRAY IF 1ST DIMS = SO ALL WIL
	L WORK IF
2)	;				  ARRAY SUBSEQUENTLY TYPED DIFFE
	RENT #
2)	;				  WORDS THAN WHEN SHARING 1ST DO
	NE
2)	;	DRIVER(19)		DEFINE & CALL CLERIDUSECNT AT EN
	D OF MRP1
2)	;END REVISION HISTORY
**************
1)1	EDNUM==570	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==571	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 196
PCO Log Report


[FILCOM]
File 1)	LIB:FIRST.BLI[31,4650]	created: 1601 10-MAR-1977
File 2)	DSKC:FIRST.BLI[31,4577]	created: 0846 11-MAY-1977
 
1)1	GLOBAL BIND FIRSV =5^24+1^18+127;	!VERSION DATE: 10-MAR-77
1)	%(
****
2)1	GLOBAL BIND FIRSV =5^24+1^18+130;	!VERSION DATE: 11-MAY-77
2)	%(
**************
1)1	)%
****
2)1	130	571	22378	ADD IDUSECNT DEFINITION
2)	)%
**************
1)1		IDSYMBOL  = CW3$,	!SYMBOL IN SIXBIT
****
2)1	!**[571] FIRST INSERT @339  SJW  11-MAY-77
2)		IDUSECNT  = CW2$,	![571] USE COUNT FOR SHARED .I D
	IMENSION OFFSETS
2)		IDSYMBOL  = CW3$,	!SYMBOL IN SIXBIT
**************
 
Digital Equipment Corporation       27-OCT-77    Page 197
PCO Log Report


[FILCOM]
File 1)	LIB:TABLES.BLI[31,4650]	created: 1240 22-MAR-1977
File 2)	DSKC:TABLES.BLI[31,4577]	created: 0840 11-MAY-1977
 
1)1	!AUTHOR: S. MURPHY/HPW/DCE
1)	GLOBAL BIND TABLV = 5^24 + 1^18 + 155;	!VERSION DATE: 22-MAR-77
1)	%(
****
2)1	!AUTHOR: S. MURPHY/HPW/DCE/SJW
2)	GLOBAL BIND TABLV = 5^24 + 1^18 + 156;	!VERSION DATE: 11-MAY-77
2)	%(
**************
1)1	)%
****
2)1	156	571	22378	ADD ARALINK DEFINITION
2)	)%
**************
1)1	MACRO	DIMENS(X)=0,3+2*X,FULL$,		!DIMENSIONS FOR
	THE XTH DIMENSION
****
2)1	!**[571]  TABLES INSERT @2173  SJW  11-MAY-77
2)	MACRO	ARALINK = 0,2,RIGHT$;			![571] LINK TO N
	EXT DIM TABLE ENTRY
2)							![571] GLOBAL DT
	ABPTR IS HEAD OF LIST
2)	MACRO	DIMENS(X)=0,3+2*X,FULL$,		!DIMENSIONS FOR
	THE XTH DIMENSION
**************
 
Digital Equipment Corporation       27-OCT-77    Page 198
PCO Log Report


[FILCOM]
File 1)	LIB:ACT1.BLI[31,4650]	created: 0910 05-MAY-1977
File 2)	DSKC:ACT1.BLI[31,4577]	created: 1038 12-MAY-1977
 
1)1	GLOBAL BIND ACT1V = 5^24 + 1^18 + 110;		!VERSION DATE: 5
	-MAY-77
1)	%(
****
2)1	GLOBAL BIND ACT1V = 5^24 + 1^18 + 111;		!VERSION DATE: 1
	1-MAY-77
2)	%(
**************
1)1	)%	!END REVISION HISTORY
****
2)1	111	571	22378	FIX V5 OPTIMIZATION THAT SHARES 2ND OFFS
	ET OF
2)				  FORMAL ARRAYS IF 1ST DIMENSIONS = SO A
	LL WILL
2)				  WORK IF ARRAY SUBSEQUENTLY TYPED DIFFE
	RENTLY
2)				  (DIFFERENT # WORDS) THAN WHEN SHARING
	1ST DONE
2)	)%	!END REVISION HISTORY
**************
1)1	%[V5]%
1)	%[V5]%	MACRO  ARALINK  = 0, 2, RIGHT$;
1)		!-------------------------------------------------------
	---------------------------------------------------
****
2)1	!**[571] BLDDIM @4076  SJW  11-MAY-77
2)	![571]  REMOVE DEFINITION OF ARALINK; IT IS NOW IN TABLES.BLI
2)		!-------------------------------------------------------
	---------------------------------------------------
**************
1)1	%[V5]%	  LOCAL  PTR;
1)	%[V5]%	  LOCAL DIMENTRY  E;
****
2)1	!**[571] BLDDIM @4326  SJW  11-MAY-77
2)	%[571]%	  LOCAL BASE  PTR;
2)	%[V5]%	  LOCAL DIMENTRY  E;
**************
1)1	%[414]%			      T2 [DFACTOR (0)] _ .E [DFACTOR (1)
	];
1)	%[V5]%			      LEAVE LDECR;
****
2)1	!**[571] BLDDIM @4371  SJW  11-MAY-77
2)	%[571]%			      PTR _ .E [DFACTOR (1)];
2)	%[571]%			      T2 [DFACTOR (0)] _ .PTR;
2)	%[571]%			      PTR [IDUSECNT] _ .PTR [IDUSECNT] +
	 1;	! UPDATE SHARING COUNT
2)	%[V5]%			      LEAVE LDECR;
Digital Equipment Corporation       27-OCT-77    Page 199
PCO Log Report


**************
1)1	%[V5]%		    T2 [DFACTOR (0)] _ INITLTEMP (INTEGER);	
	! NO MATCH FOUND
1)	%[V5]%		  END;	! OF LDECR
****
2)1	!**[571] BLDDIM @4377  SJW  11-MAY-77
2)	%[571]%		    PTR _ INITLTEMP (INTEGER);		! NO MAT
	CH FOUND
2)	%[571]%		    T2 [DFACTOR (0)] _ .PTR;
2)	%[571]%		    PTR [IDUSECNT] _ 1;			! 1ST US
	AGE: NO SHARING
2)	%[V5]%		  END;	! OF LDECR
**************
1)1	ROUTINE CHKCOMMON ( T1 ) =	!CHECKS COMMON DECLARATIONS
****
2)1	!**[571] BLDARRAY @4441  SJW  11-MAY-77
2)	%[571]%	LABEL  OUT, CHECKTHIS;
2)	%[571]%	EXTERNAL  DTABPTR, ONEPLIT, INITLTEMP;
2)	%[571]%	LOCAL BASE  PTR;		! TO MARCH DOWN DIM ENTR
	Y LIST
2)	%[571]%	LOCAL DIMENTRY  E;		! ONE ELEMENT ON THAT LI
	ST
2)	ROUTINE CHKCOMMON ( T1 ) =	!CHECKS COMMON DECLARATIONS
**************
1)1		   T2 _ .R2[DFACTOR(0)];
1)		   R2[DFACTOR(0)] _ MAKECNST(INTEGER,0, ( .T2[CONST2] *
	.DUB ) / 2 );
1)	END
****
2)1	!**[571] BLDARRAY @4539  SJW  11-MAY-77
2)		T2 _ .R2[DFACTOR(0)];
2)		R2[DFACTOR(0)] _ MAKECNST(INTEGER,0, ( .T2[CONST2] * .DU
	B ) / 2 );
2)	%[571]%	OUT:BEGIN
2)	%[571]%	  IF .R2 [DIMNUM] LSS 2	
2)	%[571]%	    THEN LEAVE OUT;
2)	%[571]%	  IF NOT .R2 [DVARUBFLG (1)]
2)	%[571]%	    THEN LEAVE OUT;
2)	%[571]%	  IF .R2 [DIMENL (1)] NEQ .ONEPLIT
2)	%[571]%	    THEN LEAVE OUT;
2)	%[571]%	  T2 _ .R2 [DFACTOR (1)];
2)	%[571]%	  T2 [IDUSECNT] _ .T2 [IDUSECNT] - 1;
2)	%[571]%	  IF .T2 [IDUSECNT] EQL 0
2)	%[571]%	    THEN T2 [IDATTRIBUT (NOALLOC)] _ 1;	! NOT SHARED NOW
	: DON'T ALLOC
2)	%[571]%	  PTR _ .DTABPTR<RIGHT>;
2)	%[571]%	  WHILE .PTR NEQ 0
2)	%[571]%	    DO BEGIN
2)	%[571]%	      E _ .PTR;
2)	%[571]%	CHECKTHIS:				      BEGIN
2)	%[571]%		IF .E EQL .R2		! DON'T SHARE WITH YOURS
Digital Equipment Corporation       27-OCT-77    Page 200
PCO Log Report


	ELF
2)	%[571]%		  THEN LEAVE CHECKTHIS;
2)	%[571]%		IF .E [DIMNUM] LSS 2
2)	%[571]%		  THEN LEAVE CHECKTHIS;
2)	%[571]%		IF NOT .E [ADJDIMFLG]
2)	%[571]%		  THEN LEAVE CHECKTHIS;
2)	%[571]%		IF .E [DFACTOR (0)] NEQ .R2 [DFACTOR (0)]	
	! SAME ELEMENT SIZE ?
2)	%[571]%		  THEN LEAVE CHECKTHIS;
2)	%[571]%		IF .E [DIMENU (0)] NEQ .R2 [DIMENU (0)]
2)	%[571]%		  THEN LEAVE CHECKTHIS;
2)	%[571]%		IF .E [DIMENL (0)] NEQ .ONEPLIT
2)	%[571]%		  THEN LEAVE CHECKTHIS;
2)	%[571]%	!	DIM 1 SAME: SHARE FACTOR FOR DIM2
2)	%[571]%		PTR _ .E [DFACTOR (1)];
2)	%[571]%		R2 [DFACTOR (1)] _ .PTR;
2)	%[571]%		PTR [IDUSECNT] _ .PTR [IDUSECNT] + 1;	! UPDATE
	 SHARING COUNT
2)	%[571]%		LEAVE OUT;
2)	%[571]%	      END;	! OF CHECKTHIS
2)	%[571]%	      PTR _ .E [ARALINK];	! NEXT ENTRY
2)	%[571]%	    END;	! OF WHILE .PTR NEQ 0
2)	%[571]%	  IF .T2 [IDUSECNT] EQL 0	! NO MATCH FOUND
2)	%[571]%	    THEN T2 [IDATTRIBUT (NOALLOC)] _ 0	! USE OLD .I WHI
	CH WAS DEALLOCED
2)	%[571]%	    ELSE T2 _ INITLTEMP (INTEGER);	! GET NEW .I TEM
	P
2)	%[571]%	  R2 [DFACTOR (1)] _ .T2;
2)	%[571]%	  T2 [IDUSECNT] _ 1;		! 1ST USAGE: NO SHARING
2)	%[571]%	END;	! OF OUT
2)	END
**************
 
Digital Equipment Corporation       27-OCT-77    Page 201
PCO Log Report


[FILCOM]
File 1)	LIB:DRIVER.BLI[31,4650]	created: 0836 17-DEC-1976
File 2)	DSKC:DRIVER.BLI[31,4577]	created: 1323 11-MAY-1977
 
1)1	!AUTHOR: D. B. TOLMAN/MD/JNG
1)	MODULE DRIVER (START,RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15
	,DREGS=4)=
1)	BEGIN
1)	GLOBAL BIND DRIVV = 5^24 + 0^18 + 18;	! VERSION DATE: 24-Sep-7
	6
1)	%(
****
2)1	!AUTHOR: D. B. TOLMAN/MD/JNG/SJW
2)	MODULE DRIVER (START,RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15
	,DREGS=4)=
2)	BEGIN
2)	GLOBAL BIND DRIVV = 5^24 + 1^18 + 19;	! VERSION DATE: 11-May-7
	6
2)	%(
**************
1)1	)%	!END REVISION HISTORY
****
2)1	**********	BEGIN VERSION 5A	**********
2)	19	571	22378	DEFINE AND CALL CLERIDUSECNTS AT END OF
	MRP1
2)				  TO CLEAR IDUSECNTS OF .I TEMPS SHARED
	IN
2)				  DIM TABLE
2)	)%	!END REVISION HISTORY
**************
1)1		GLOBAL ROUTINE
****
2)1	!**[571] DRIVER @3534  SJW  11-MAY-77
2)	![571]  DEFINE ROUTINE CLERIDUSECNTS BEFORE ROUTINE MRP1
2)	ROUTINE  CLERIDUSECNTS =
2)	BEGIN
2)		EXTERNAL  DTABPTR;		! HEAD OF DIM ENTRY LIST
2)		LOCAL  PTR;			! TO MARCH DOWN LIST
2)		LOCAL DIMENTRY  E;		! ONE ELEMENT ON LIST
2)		LOCAL BASE  ITEMP;		! SYM TAB ENTRY FOR .I T
	EMPORARY
2)		LABEL  CHECKTHIS;
2)		PTR _ .DTABPTR<RIGHT>;		! START AT HEAD OF LIST
2)		WHILE  .PTR NEQ 0
2)		  DO BEGIN
2)		    E _ .PTR;			! THIS DIM TABLE ENTRY
2)	CHECKTHIS:  BEGIN
2)		      IF .E [DIMNUM] LSS 2	! OFFSET SHARED IS FOR 2
	ND DIM
2)			THEN LEAVE CHECKTHIS;
2)		      IF NOT .E [ADJDIMFLG]	! SHARED ONLY IF ADJUSTA
Digital Equipment Corporation       27-OCT-77    Page 202
PCO Log Report


	BLE DIMS
2)			THEN LEAVE CHECKTHIS;
2)		      ITEMP _ .E [DFACTOR (1)];	! SYM TAB ENTRY OF .I TE
	MP
2)		      ITEMP [IDUSECNT] _ 0;	! CLEAR USE COUNT
2)		    END;			! OF CHECKTHIS
2)		    PTR _ .E [ARALINK];		! NEXT ELEMENT
2)		  END;				! OF WHILE  .PTR NEQ 0
2)	END;					! OF CLERIDUSECNTS
2)		GLOBAL ROUTINE
**************
1)1			EOPSVPOOL();	![307] SAVE BUFFERS BETWEEN PROG
	RAM UNITS
****
2)1	!**[571] MRP1 @3816  SJW  11-MAY-77
2)	%[571]%		CLERIDUSECNTS ();	! CLEAR .I USECNTS IN SH
	ARED DIM ENTRIES
2)			EOPSVPOOL();	![307] SAVE BUFFERS BETWEEN PROG
	RAM UNITS
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 203
PCO Log Report



                   *********************
                   *PCO #:10-F10   -246*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(571)

[Date Entered]          16-MAY-77

[Programmer]            STAN WHITLOCK

[Routines]              ACT1      DATALI

[Key Words]             IMPLIED DO  ACTIVE IND  FTNDIA

[Source Before Edit]    %5A  (000571)

[Source After Edit]     %5A  (000572)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-21825
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 204
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
An implied DO variable inside a DO loop (real or implied) which  is  the
same as the outer DO variable is not caught as an error.
 
Two examples are:
 
DIMENSION N(10)                    DIMENSION M(10,10)
DO 10 I=1,10                       WRITE (1) ((M(I,J),I=1,10),I=1,10)
  WRITE (1) (N(I),I=1,10)
...
 

                        **********


[DIAGNOSIS]
 
Error DIA "DO INDEX ALREADY ACTIVE" is  only  generated  for  nested  DO
statement indices, not for implied DO indices.
 

                        **********


[CURE]
 
When the iolist is being processed, check the current implied  DO  index
against the active DO index list.  Also put the current implied DO index
on this list so deeper implied loops can also be checked.  Generate  the
DIA message in case of error.
 
Digital Equipment Corporation       27-OCT-77    Page 205
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1208 11-MAY-1977
File 2)	DSKC:COMMAN.MAC[31,4577]	created: 1556 13-MAY-1977
 
1)1	TITLE	FTNCMD	%5A(571) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 11-M
	AY-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(572) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 13-M
	AY-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;572	ACT1(112)	21825	CHECK IMPLIED DO INDEX FOR ALREA
	DY ACTIVE
2)	;				  (FROM ENCLOSING IMPLIED OR REA
	L DO)
2)	;END REVISION HISTORY
**************
1)1	EDNUM==571	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==572	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 206
PCO Log Report


[FILCOM]
File 1)	LIB:ACT1.BLI[31,4650]	created: 1038 12-MAY-1977
File 2)	DSKC:ACT1.BLI[31,4577]	created: 1220 16-MAY-1977
 
1)1	GLOBAL BIND ACT1V = 5^24 + 1^18 + 111;		!VERSION DATE: 1
	1-MAY-77
1)	%(
****
2)1	GLOBAL BIND ACT1V = 5^24 + 1^18 + 112;		!VERSION DATE: 1
	3-MAY-77
2)	%(
**************
1)1	)%	!END REVISION HISTORY
****
2)1	112	572	21825	CHECK IMPLIED DO INDEX FOR ALREADY ACTIV
	E (FROM
2)				  AN ENCLOSING IMPLIED OR REAL DO)
2)	)%	!END REVISION HISTORY
**************
1)1		LOCAL SAVEBOUNDSFLG;	! TO SAVE THE VALUE OF THE "BOUN
	DS"
****
2)1	!**[572] DATALIST @4676  SJW  13-MAY-77
2)	%[572]%	EXTERNAL  CKDOINDEX;		! CHECK DO INDEX ALREADY
	 ACTIVE
2)	%[572]%	EXTERNAL  DOCHECK;		! REMOVE DO LABEL FROM A
	CTIVE DO LIST
2)	%[572]%	EXTERNAL  E21;			! DO INDEX ALREADY ACTIV
	E MESSAGE
2)	%[572]%	MACRO  ADDOLAB (X,Y) =		! PUT INDEX ON ACTIVE DO
	 LIST
2)	%[572]%		BEGIN
2)	%[572]%		EXTERNAL  LASDOLABEL;	! PTR TO END LABEL,,INDE
	X OF MOST RECENT DO
2)	%[572]%		EXTERNAL  CURDOINDEX;	! PTR TO CURRENT DO INDE
	X VARIABLE
2)	%[572]%		LOCAL BASE  TEMP;
2)	%[572]%			NAME<LEFT> _ 2;			! LINK I
	N NEW LABEL
2)	%[572]%			TEMP _ CORMAN ();
2)	%[572]%			TEMP [ELMNT] _ .LASDOLABEL;	! SAVE L
	AST
2)	%[572]%			TEMP [ELMNT1] _ .CURDOINDEX;	! SAVE I
	NDEX
2)	%[572]%			LASDOLABEL<LEFT> _ .TEMP;
2)	%[572]%			LASDOLABEL<RIGHT> _ X;
2)	%[572]%			CURDOINDEX _ Y;			! INDEX
	PTR
2)	%[572]%		END$;
2)		LOCAL SAVEBOUNDSFLG;	! TO SAVE THE VALUE OF THE "BOUN
	DS"
Digital Equipment Corporation       27-OCT-77    Page 207
PCO Log Report


**************
1)1		MACRO IOCONTNODE(X)=
1)		BEGIN
****
2)1	!**[572] DATALIST @4770  SJW  16-MAY-77  REMOVE FORMAL X
2)	%[572]%	MACRO IOCONTNODE =
2)		BEGIN
**************
1)1			X[CLINK] _ .T1; X<RIGHT> _ .T1;
1)			IOLBL _ T1[SRCLBL]_ GENLAB();
****
2)1	!**[572} DATALIST @4776  SJW  16-MAY-77  REMOVE REFERENCES TO X
2)			IOLBL _ T1[SRCLBL]_ GENLAB();
**************
1)1		LOCAL BASE LISTLINK;	!PTR TO FIRST<LEFT> AND LAST<RIG
	HT> NODES IN DATALIST CHAIN
****
2)1	!**[572] DATALIST @4781  SJW  16-MAY-77  DEFINE NEW MACRO
2)	%[572]%	MACRO ADDCONTNODE (X) =
2)	%[572]% BEGIN
2)	%[572]%		T1 _ .IOLBL [SNHDR];	! GET NODE FROM IOCONTNO
	DE
2)	%[572]%		X [CLINK] _ .T1;	! LINK IN CONT NODE AT E
	ND OF LOOP
2)	%[572]%		X<RIGHT> _ .T1;		! POINT TO NEW END OF DA
	TALIST
2)	%[572]%	END$;
2)		LOCAL BASE LISTLINK;	!PTR TO FIRST<LEFT> AND LAST<RIG
	HT> NODES IN DATALIST CHAIN
 
 
**************
1)1				LNKLST _ 0;  !INIT LOCAL
****
2)1	!**[572] DATALIST @4815  SJW  13-MAY-77
2)	%[572]%			LOCAL  BASE DONOD:IOLBL;	!LABEL O
	F CONTINUE ENDING IMPLIED DO LOOP
2)				LNKLST _ 0;  !INIT LOCAL
**************
1)1					%DON'T LET SUBSCRIPTED IMPLICIT
	DO INDECES GO UNDETECTED%
****
2)1	!**[572] DATALIST @4825  SJW  13-MAY-77
2)	%[572]%				IOCONTNODE ;		! GEN A
	CONTINUE NODE
2)					%DON'T LET SUBSCRIPTED IMPLICIT
	DO INDECES GO UNDETECTED%
**************
1)1					ELSE
1)					 IF NAMSET(VARIABL1,.T2) LSS 0 T
	HEN RETURN .VREG;
Digital Equipment Corporation       27-OCT-77    Page 208
PCO Log Report


1)					R2<LEFT>_.R2<LEFT>-2; !RESET LIS
	T PTR SO THAT LAST ITEM (INDEX PTR)
****
2)1	!**[572] DATALIST @4837  SJW  13-MAY-77
2)	%[572]%				ELSE BEGIN
2)	%[572]%				  IF CKDOINDEX (.T2)
2)	%[572]%				    THEN RETURN FATLEX (T2 [IDSY
	MBOL], E21<0,0>);	! DO INDEX ALREADY ACTIVE
2)	%[572]%				  IF NAMSET (VARIABL1,.T2) LSS 0
2)	%[572]%				    THEN RETURN .VREG;
2)	%[572]%				  ADDOLAB (.IOLBL, .T2);	
	! THIS INDEX IS CURRENTLY MOST ACTIVE
2)	%[572]%				END;
2)					R2<LEFT>_.R2<LEFT>-2; !RESET LIS
	T PTR SO THAT LAST ITEM (INDEX PTR)
**************
1)1				IF (LNKLST _ DATALIST(.R2)) LSS 0 THEN R
	ETURN .VREG;
1)				IF .R1[ELMNT1] NEQ 0 THEN	!IMPLIED
	 DO LOOP
1)				BEGIN
1)					LOCAL  BASE DONOD:IOLBL;	
	!LABEL OF CONTINUE ENDING IMPLIED DO LOOP
1)					IOCONTNODE(LNKLST);	!GEN A C
	ONTINUE NODE
1)					IODONODE(LNKLST);	!GEN A D
	O LOOP NODE
****
2)1	!**[572] DATALIST @4843  SJW  13-MAY-77
2)	%[572]%			IF (LNKLST _ DATALIST (.R2)) LSS 0
2)	%[572]%			  THEN BEGIN
2)	%[572]%			    T2 _ .VREG;
2)	%[572]%			    IF .R1 [ELMNT1] NEQ 0	! IMPLIE
	D DO LOOP
2)	%[572]%			      THEN DOCHECK (.IOLBL);	! REMOVE
	 LABEL FROM ACTIVE DO LIST
2)	%[572]%			    RETURN .T2;
2)	%[572]%			  END;
2)				IF .R1[ELMNT1] NEQ 0 THEN	!IMPLIED
	 DO LOOP
2)				BEGIN
2)	!**[572] DATALIST @4846  SJW  13-MAY-77
2)	%[572]%				DOCHECK (.IOLBL);	! REMOVE
	 LABEL FROM ACTIVE DO LIST
2)	%[572]%				ADDCONTNODE (LNKLST);	! LINK I
	N CONT NODE
2)					IODONODE(LNKLST);	!GEN A D
	O LOOP NODE
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 209
PCO Log Report



                   *********************
                   *PCO #:10-F10   -247*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(572)

[Date Entered]          16-MAY-77

[Programmer]            STAN WHITLOCK

[Routines]              DRIVER    INOUT     LEXICA    LEXSUP

[Key Words]             DBUGIT

[Source Before Edit]    %5A  (000572)

[Source After Edit]     %5A  (000573)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-NONE
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 210
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
Building FORTB with the lexical debug code present so /BUGOUT:n works is
difficult since all of FORTB must be recompiled.
 

                        **********


[DIAGNOSIS]
 
The BIND of DBUGIT which triggers the lexical debug code is in IOFLG.BLI
which is REQUIREd by FIRST.BLI which is REQUIREd by just about everyone.
This means that the  modules  that  depend  on  DBUGIT  are  not  easily
identified.
 

                        **********


[CURE]
 
Take DBUGIT out of  IOFLG  and  put  it  into  a  separate  file,  named
DBUGIT.REQ,  and  REQUIRE that file in the modules that need it, namely,
DRIVER, INOUT, LEXICA and LEXSUP.
 
Digital Equipment Corporation       27-OCT-77    Page 211
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1556 13-MAY-1977
File 2)	DSKC:COMMAN.MAC[31,4735]	created: 0923 16-MAY-1977
 
1)1	TITLE	FTNCMD	%5A(572) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 13-M
	AY-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(573) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 16-M
	AY-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;573	DBUGIT		-----	NEW REQUIRE FILE TO HOLD DBUGIT
	FLAG
2)	;	IOFLG(11)		REMOVE "BIND DBUGIT="
2)	;	DRIVER(20)		REQUIRE DBUGIT.REQ
2)	;	INOUT(40)
2)	;	LEXICA(19)
2)	;	LEXSUP(11)
2)	;END REVISION HISTORY
**************
1)1	EDNUM==572	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==573	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 212
PCO Log Report


[FILCOM]
File 1)	LIB:IOFLG.BLI[31,4650]	created: 0838 17-DEC-1976
File 2)	DSKC:IOFLG.BLI[31,4735]	created: 0912 16-MAY-1977
 
1)1	GLOBAL BIND IOFLV = 5^24 + 0^18 + 10;	! VERSION DATE: 14-OCT-7
	6
1)	%(
****
2)1	GLOBAL BIND IOFLV = 5^24 + 1^18 + 11;	! VERSION DATE: 16-MAY-7
	7
2)	%(
**************
1)1	)%
1)	BIND DBUGIT = 0;	! COMPILE IN DEBUGGING CODE IF SET, FOR
	PHASE 1
1)	EXTERNAL  BUGOUT;
****
2)1	**********	BEGIN VERSION 5A	**********
2)	11	573	-----	PUT DBUGIT BIND INTO A SEPARATE FILE REQ
	UIRED BY
2)				  ONLY THOSE MODULES THAT USE IT
2)	)%
2)	!**[573] IOFLG.BLI @45  SJW  16-MAY-77  REMOVE "BIND DBUGIT="
2)	EXTERNAL  BUGOUT;
**************
 
Digital Equipment Corporation       27-OCT-77    Page 213
PCO Log Report


[FILCOM]
File 1)	DSK:DBUGIT.REQ[31,4577]	created: 0000 01-JAN-1964
File 2)	DSKC:DBUGIT.REQ[31,4735]	created: 0850 16-MAY-1977
 
2)1	BIND DBUGIT = 1;	! COMPILE IN DEBUGGING CODE IF SET, FOR
	PHASE 1
 
Digital Equipment Corporation       27-OCT-77    Page 214
PCO Log Report


[FILCOM]
File 1)	LIB:DRIVER.BLI[31,4650]	created: 1323 11-MAY-1977
File 2)	DSKC:DRIVER.BLI[31,4735]	created: 0904 16-MAY-1977
 
1)1	GLOBAL BIND DRIVV = 5^24 + 1^18 + 19;	! VERSION DATE: 11-May-7
	6
1)	%(
****
2)1	GLOBAL BIND DRIVV = 5^24 + 1^18 + 20;	! VERSION DATE: 16-May-7
	6
2)	%(
**************
1)1	)%	!END REVISION HISTORY
1)	SWITCHES NOLIST;
****
2)1	20	573	-----	REQUIRE DBUGIT.REQ
2)	)%	!END REVISION HISTORY
2)	REQUIRE  DBUGIT.REQ;		![573]  SJW  16-MAY-77
2)	SWITCHES NOLIST;
**************
 
Digital Equipment Corporation       27-OCT-77    Page 215
PCO Log Report


[FILCOM]
File 1)	LIB:INOUT.BLI[31,4650]	created: 0838 17-DEC-1976
File 2)	DSKC:INOUT.BLI[31,4735]	created: 0907 16-MAY-1977
 
1)1	GLOBAL BIND INOUV = 5^24 + 0^18 + 37;		!VERSION DATE: 1
	-OCT-76
1)	%(
****
2)1	GLOBAL BIND INOUV = 5^24 + 1^18 + 40;		!VERSION DATE: 1
	6-MAY-77
2)	%(
**************
1)1	)%
****
2)1	**********	BEGIN VERSION 5A	**********
2)	40	573	-----	REQUIRE DBUGIT.REQ
2)	)%
**************
1)1	REQUIRE  LEXAID.BLI;
****
2)1	REQUIRE  DBUGIT.REQ;		![573]  SJW  16-MAY-77
2)	REQUIRE  LEXAID.BLI;
**************
 
Digital Equipment Corporation       27-OCT-77    Page 216
PCO Log Report


[FILCOM]
File 1)	LIB:LEXICA.BLI[31,4650]	created: 1258 12-APR-1977
File 2)	DSKC:LEXICA.BLI[31,4735]	created: 0902 16-MAY-1977
 
1)1	GLOBAL BIND LEXIV = 5^24 + 1^18 + 18;	!VERSION DATE: 12-APR-77
1)	%(
****
2)1	GLOBAL BIND LEXIV = 5^24 + 1^18 + 19;	!VERSION DATE: 16-MAY-77
2)	%(
**************
1)1	)%
****
2)1	19	573	-----	REQUIRE DBUGIT.REQ
2)	)%
**************
1)1	REQUIRE  IOFLG.BLI;
****
2)1	REQUIRE  DBUGIT.REQ;		![573]  SJW  16-MAY-77
2)	REQUIRE  IOFLG.BLI;
**************
 
Digital Equipment Corporation       27-OCT-77    Page 217
PCO Log Report


[FILCOM]
File 1)	LIB:LEXSUP.BLI[31,4650]	created: 0840 17-DEC-1976
File 2)	DSKC:LEXSUP.BLI[31,4735]	created: 1007 16-MAY-1977
 
1)1	GLOBAL BIND LEXSV = 5^24 + 0^18 + 10;	! VERSION DATE: 15-OCT-7
	6
1)	%(
****
2)1	GLOBAL BIND LEXSV = 5^24 + 1^18 + 11;	! VERSION DATE: 16-MAY-7
	7
2)	%(
**************
1)1	)%
****
2)1	**********	BEGIN VERSION 5A	**********
2)	11	573	-----	REQUIRE DBUGIT.REQ
2)	)%
**************
1)1	REQUIRE LEXNAM.BLI;
****
2)1	REQUIRE  DBUGIT.REQ;		![573]  SJW  16-MAY-77
2)	REQUIRE LEXNAM.BLI;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 218
PCO Log Report



                   *********************
                   *PCO #:10-F10   -248*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(573)

[Date Entered]          23-MAY-77

[Programmer]            STAN WHITLOCK

[Routines]              SRCA      SRCHLI

[Key Words]             ABS         IN-LINE CO

[Source Before Edit]    %5A  (000573)

[Source After Edit]     %5A  (000574)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-NONE
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 219
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
The intrinsic and generic function ABS was  NOT  expanded  into  in-line
code.
 

                        **********


[DIAGNOSIS]
 
The routine SRCHLIB which binary searches a  table  of  known  intrinsic
functions  did  not  find  ABS in the table.  The binary search had been
fixed by edit 543 so that an exit criteria which could never  have  been
met  (and  was  causing  ILL  MEM  REFs)  was  met.   Therefore when the
algorithm had TOP = 0, BOTTOM = 1 and CENTER =  1,  the  routine  exited
with a failure condition rather than check for entry 0 which was ABS.
 

                        **********


[CURE]
 
Analysis of the binary search showed that it suffered from  the  classic
problems of 1-off-ness.  Rather than waste time patching the routine, it
was replaced by a binary search that was known  to  work:   algorithm  B
from 6.2.1 of Knuth volume 3.
 
Digital Equipment Corporation       27-OCT-77    Page 220
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 0923 16-MAY-1977
File 2)	DSKC:COMMAN.MAC[31,4577]	created: 1214 24-MAY-1977
 
1)1	TITLE	FTNCMD	%5A(573) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 16-M
	AY-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(574) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 24-M
	AY-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;574	SRCA(51)	-----	REWRITE BINARY SEARCH IN SRCHLIB
	 TO WORK
2)	;				  AFTER EDIT 543
2)	;END REVISION HISTORY
**************
1)1	EDNUM==573	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==574	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 221
PCO Log Report


[FILCOM]
File 1)	LIB:SRCA.BLI[31,4650]	created: 1320 10-MAR-1977
File 2)	DSKC:SRCA.BLI[31,4577]	created: 1207 24-MAY-1977
 
1)1	!AUTHOR: F. INFANTE/HPW/NEA/DCE
1)	MODULE SERVICE(RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15,DREGS
	=4,GLOROUTINES)=
1)	BEGIN
1)	GLOBAL BIND SRCAV = 5^24 + 1^18 + 50;	!VERSION DATE: 10-MAR-77
1)	%(
****
2)1	!AUTHOR: F. INFANTE/HPW/NEA/DCE/SJW
2)	MODULE SERVICE(RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15,DREGS
	=4,GLOROUTINES)=
2)	BEGIN
2)	GLOBAL BIND SRCAV = 5^24 + 1^18 + 51;	!VERSION DATE: 24-MAY-77
2)	%(
**************
1)1	)%
1)	SWITCHES NOLIST;
****
2)1	51	574	NONE	REWRITE BINARY SEARCH IN SRCHLIB TO WORK
	 AFTER
2)				  EDIT 543
2)	)%		! END OF REVISION HISTORY
2)	SWITCHES NOLIST;
**************
1)1	GLOBAL ROUTINE SRCHLIB(NODE)=
1)	BEGIN
1)	%
1)	ROUTINE SEARCHES THE LIBRARY FUNCTION TABLE FOR THE SIXBIT
1)	NAME IN PARAM. IF FOUND THEN RETURNS THE CORRESPONDING ATTRIBUTE
1)	WORD IN LIBATTRIBUTE TABLE. IF NOT FOUND THEN RETURNS -1.
1)	%
1)	MACRO LIBCENTER= LIBFUNTAB[-1]^(-1)$; !THE SIZE OF THE LIBFUNTAB
	/2
1)	EXTERNAL LIBFUNTAB,LIBATTRIBUTES;
1)	MAP BASE NODE;
1)	OWN TOP,BOTTOM;
1)	REGISTER CENTER,PARAM;
1)		PARAM _ .NODE[IDSYMBOL];
1)		CENTER _ .LIBCENTER + LIBFUNTAB<0,0>;
1)		TOP _ LIBFUNTAB<0,0>;	!ADDRESS OF LIBFUNCTION TABLE
1)		BOTTOM _ (ONEAFTERLIB-1)<0,0>;	!BOTTOM OF LIB TABLE
1)		WHILE 1 DO
1)		BEGIN
1)			IF .PARAM EQL @@CENTER
1)			THEN
1)			BEGIN	%REJECT ANY NAMES WHICH HAVE BEEN TYPED
	IN
1)				 A CONFLICTING TYPE STATEMENT%
Digital Equipment Corporation       27-OCT-77    Page 222
PCO Log Report


1)				IF .NODE[IDATTRIBUT(INTYPE)]
1)				THEN
1)				BEGIN
1)					EXTERNAL  LIBFUNTAB;
1)					MAP LIBATTSTR LIBATTRIBUTES;
1)					IF .LIBATTRIBUTES[.CENTER<RIGHT>
	 - LIBFUNTAB<0,0>, ATTRESTYPE]
1)					   NEQ   .NODE[VALTYPE]
1)					THEN	RETURN -1
1)				END;
1)				RETURN  .CENTER<RIGHT>	!POINTER TO SIXB
	IT FUNCTION NAME
1)			END;
1)			IF .CENTER EQL .TOP THEN EXITLOOP
1)		!**;[543], SRCHLIB @3383, DCE, 10-MAR-77
1)		!**;[543], PUT IN OMITTED DOT IN BINARY SEARCH ROUTINE T
	O
1)		!**;[543], MAKE IT WORK AS WAS INTENDED
1)		%[543]%	   ELSE IF .CENTER EQL .BOTTOM THEN EXITLOOP;
1)			IF .PARAM GTR @@CENTER THEN
1)			  BEGIN
1)			  TOP _ .CENTER;	!NEW TOP
1)			  CENTER _ .CENTER + (.BOTTOM - .CENTER)/2; !NEW
	 CENTER
1)			  !NEW BOTTOM NOT NEEDED
1)			  END
1)			ELSE
1)			  BEGIN
1)			  BOTTOM _ .CENTER; !NEW BOTTOM
1)			  CENTER _ .CENTER + (.TOP - .CENTER)/2;
1)			  !NEW TOP NOT NEEDED
1)			  END;
1)			IF .PARAM LSS @@TOP THEN EXITLOOP
1)			  ELSE IF .PARAM GTR @@BOTTOM THEN EXITLOOP;
1)		END;
1)		RETURN -1
1)	END;	!OF LIBSRCH(PARAM)
1)	GLOBAL ROUTINE NEWENTRY=
****
2)1	GLOBAL ROUTINE  SRCHLIB (NODE) =
2)	BEGIN
2)	!**[574] SRCHLIB @3347  SJW  24-MAY-77
2)	![574] REPLACE ENTIRE BINARY SEARCH ROUTINE WITH ONE GUARANTEED
	TO WORK
2)	!	ROUTINE SEARCHES THE LIBRARY FUNCTION TABLE FOR THE SIXB
	IT
2)	!	    NAME IN NODE [IDSYMBOL] = PARAM
2)	!	  IF FOUND THEN RETURNS A PTR TO THE TABLE ENTRY
2)	!	  IF NOT FOUND THEN RETURNS -1
2)	![574]	BINARY SEARCH IS ALGORITHM B IN 6.2.1 OF KNUTH VOL 3
2)	MAP BASE  NODE;
Digital Equipment Corporation       27-OCT-77    Page 223
PCO Log Report


2)	EXTERNAL  LIBFUNTAB, LIBATTRIBUTES;
2)	MAP LIBATTSTR  LIBATTRIBUTES;
2)	OWN  TOP, BOTTOM;
2)	REGISTER  PARAM, CENTER;
2)		PARAM _ .NODE [IDSYMBOL];		! GET CANDIDATE
	NAME
2)		TOP _ LIBFUNTAB<0,0>;			! 1ST TABLE ENTR
	Y
2)		BOTTOM _ (ONEAFTERLIB - 2)<0,0>;	! LAST TABLE ENT
	RY (SINCE ONEAFTERLIB IS COUNTED PLIT)
2)		WHILE  TRUE
2)		  DO BEGIN
2)		    IF .BOTTOM LSS .TOP
2)		      THEN RETURN -1;			! PARAM NOT FOUN
	D
2)		    CENTER _ (.TOP + .BOTTOM) / 2;	! FIND MID-POINT
2)		    IF .PARAM EQL @@CENTER
2)		      THEN BEGIN
2)	!	REJECT NAME WHICH IS DECLARED IN A CONFLICTING TYPE STAT
	EMENT
2)			IF .NODE [IDATTRIBUT (INTYPE)]
2)			  THEN
2)			  IF .NODE [VALTYPE] NEQ
2)			     .LIBATTRIBUTES [.CENTER<RIGHT> - LIBFUNTAB<
	0,0>, ATTRESTYPE]
2)			    THEN RETURN -1;		! NAME NOT THE L
	IB FUNC
2)			RETURN .CENTER<RIGHT>;		! PTR TO TABLE E
	NTRY
2)		      END;
2)		    IF .PARAM GTR @@CENTER
2)		      THEN TOP _ .CENTER + 1		! NEW TOP: IGNOR
	E OLD TOP THRU CENTER
2)		      ELSE BOTTOM _ .CENTER - 1;	! NEW BOTTOM: IG
	NORE CENTER THRU OLD BOTTOM
2)		  END;					! OF WHILE TRUE
	DO
2)	END;						! OF SRCHLIB
2)	GLOBAL ROUTINE NEWENTRY=
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 224
PCO Log Report



                   *********************
                   *PCO #:10-F10   -249*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(574)

[Date Entered]          02-JUN-77

[Programmer]            EKLUND

[Routines]              ZAPLEV    DEFPT

[Key Words]             STACK OVER  FORTD       OPTIMIZED

[Source Before Edit]    %5A  (000574)

[Source After Edit]     %5A  (000575)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22820
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 225
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Stack overflow in FORTD when attempting to optimize a very  large
program unit which has a great deal of potential branching.
 

                        **********


[DIAGNOSIS]
 
 
     This is a case  where  a  true  stack  overflow  occurred  during
optimization of a very large program unit.  The routine ZAPLEVEL calls
itself  recursively  during  optimization,  and  for  this  particular
program, there was not enough stack space.
 

                        **********


[CURE]
 
 
     Remove the local variable from ZAPLEVEL so that one less  element
needs to be put on the stack for each recursive call - for the example
program, this change made compilation possible!
 
Digital Equipment Corporation       27-OCT-77    Page 226
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1214 24-MAY-1977
File 2)	FTN:COMMAN.575[30,4515]	created: 1334 02-JUNE-1977
 
1)1	TITLE	FTNCMD	%5A(574) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 24-M
	AY-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(575) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 2-JU
	N-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;575	DEFPT(119)	22820	REWRITE ZAPLEVEL TO PREVENT STAC
	K OVERFLOW
2)	;				FOR VERY LARGE BRANCHING PROGRAM
	.
2)	;END REVISION HISTORY
**************
1)1	EDNUM==574	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==575	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 227
PCO Log Report


[FILCOM]
File 1)	FTN:DEFPT.BLI[31,4650]	created: 0835 17-DEC-1976
File 2)	FTN:DEFPT.575[30,4515]	created: 1130 02-JUNE-1977
 
1)1	!AUTHOR NORMA ABEL/HPW/JNG
1)	MODULE DEFPT(RESERVE(0,1,2,3),SREG=#17,VREG=#15,FREG=#16,DREGS=4
	)=
1)	BEGIN
1)	GLOBAL BIND DEFPV = 5^24 + 0^18 + 118;	!VERSION DATE:	18-Sep-7
	6
1)	%(
****
2)1	!AUTHOR NORMA ABEL/HPW/JNG/DCE
2)	MODULE DEFPT(RESERVE(0,1,2,3),SREG=#17,VREG=#15,FREG=#16,DREGS=4
	)=
2)	BEGIN
2)	GLOBAL BIND DEFPV = 5^24 + 1^18 + 119;	!VERSION DATE: 2-JUN-77
2)	%(
**************
1)1	END OF REVISION HISTORY
****
2)1	***** BEGIN VERSION 5A *****
2)	119	575	22820	MAKE ZAPLEVEL MORE CLEVER IN USE OF THE
	STACK
2)				TO PREVENT STACK OVERFLOWS.
2)	END OF REVISION HISTORY
**************
1)1		LOCAL PHAZ2 PLSTPTR;
1)		!PLSTPTR IS A POINTER INTO THE PREDECESSOR LIST OF PRED.
1)		PLSTPTR_.PRED[PREDPTR];
1)		!FOR EACH PREDECESSOR ON THE LIST
1)		WHILE .PLSTPTR[CESLNK] NEQ 0 DO
1)		BEGIN
1)			!POINTER TO AN ACTUAL PREDECESSOR
1)			NODE_.PLSTPTR[CESSOR];
1)			!SET THE FLAG THAT HELPS US ITERATE INSTEAD OF R
	ECURSING
****
2)1	!**;[575], ZAPLEVEL @4058, DCE, 2-JUN-77
2)	!**;[575], REMOVE THE LOCAL SYMBOL PLSTPTR SO THAT LESS STACK SP
	ACE
2)	!**;[575], WILL BE USED DURING RECURSIVE CALLS OF THIS ROUTINE.
	 THE
2)	!**;[575], VARIABLE PRED WILL NOW DO DOUBLE DUTY - COMING IN AS
	THE
2)	!**;[575], STATEMENT NODE, AND BEING USED TO CYCLE THROUGH ALL O
	F THE
2)	!**;[575], PREDECESSORS OF THE ORIGINAL PARAMETER.  THIS CHANGE
2)	!**;[575], REDUCES THE STACK SPACE USED FROM 4 TO 3 LOCATIONS PE
	R CALL
2)	!**;[575], TO THIS ROUTINE.
Digital Equipment Corporation       27-OCT-77    Page 228
PCO Log Report


2)	%[575]%	PRED_.PRED[PREDPTR];
2)	!**;[575], PRED IS NOW THE PTR TO THE PREDECESSOR LIST OF THE OR
	IGINAL PRED
2)		!FOR EACH PREDECESSOR ON THE LIST
2)	%[575]%	WHILE .PRED[CESLNK] NEQ 0 DO
2)		BEGIN
2)			!POINTER TO AN ACTUAL PREDECESSOR
2)	%[575]%		NODE_.PRED[CESSOR];
2)			!SET THE FLAG THAT HELPS US ITERATE INSTEAD OF R
	ECURSING
**************
1)1			PLSTPTR_.PLSTPTR[CESLNK];
1)		END;		!WHILE THERE ARE PREDECESSORS
****
2)1	!**;[575], ZAPLEVEL @4106, DCE, 2-JUN-77
2)	%[575]%		PRED_.PRED[CESLNK];
2)		END;		!WHILE THERE ARE PREDECESSORS
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 229
PCO Log Report



                   *********************
                   *PCO #:10-F10   -250*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(575)

[Date Entered]          02-JUN-77

[Programmer]            EKLUND

[Routines]              MOORE     GRAPH

[Key Words]             LINE 00000  OPTIMIZATI  INFINITE L

[Source Before Edit]    %5A  (000575)

[Source After Edit]     %5A  (000576)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22796
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 230
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     On some kinds of infinite loops detected during optimization, the
line number given in the warning message is "00000".
 

                        **********


[DIAGNOSIS]
 
 
     There are quite a number of places within the optimizer which can
detect  the  occurrence  of  an  infinite  loop.   At one of these the
variable ISN is not set up  correctly  prior  to  printing  the  error
message, and the error printing routine depends upon this variable for
its line number.
 

                        **********


[CURE]
 
 
     Before attempting to print the warning, set up ISN correctly with
the  line  number  which was current at the time the infinite loop was
detected so that the user can get a better idea of where the loop  was
detected.   The  line  number  generated  in this way can occur at any
statement in the detected loop, depending upon the program graph.
 
Digital Equipment Corporation       27-OCT-77    Page 231
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 1334 02-JUNE-1977
File 2)	FTN:COMMAN.576[30,4515]	created: 1416 02-JUNE-1977
 
1)1	TITLE	FTNCMD	%5A(575) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 2-JU
	N-77
****
2)1	TITLE	FTNCMD	%5A(576) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 2-JU
	N-77
**************
1)1	;END REVISION HISTORY
****
2)1	;576	GRAPH(127)	22796	FIX LINE NUMBER GIVEN FOR INFINI
	TE LOOP
2)	;END REVISION HISTORY
**************
1)1	EDNUM==575	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==576	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 232
PCO Log Report


[FILCOM]
File 1)	FTN:GRAPH.BLI[31,4650]	created: 1452 02-MAY-1977
File 2)	FTN:GRAPH.576[30,4515]	created: 1400 02-JUNE-1977
 
1)1	GLOBAL BIND GRAPV = 5^24 + 1^18 + 126;	!VERSION DATE: 2-MAY-77
1)	%(
****
2)1	GLOBAL BIND GRAPV = 5^24 + 1^18 + 127;	!VERSION DATE: 2-JUN-77
2)	%(
**************
1)1	)%
****
2)1	127	576	22798	GIVE LINE NUMBER CORRECTLY WHEN LOOP DET
	ECTED
2)	)%
**************
1)1	%[327]%			IF .P2[POSTDOM] EQL 0 THEN OPTERR(E100);
1)				P2[LEVEL] _.HEAD[LEVEL] + 1;
****
2)1	!**;[576], MOORE @4565, DCE, 2-JUN-77
2)	!**;[576], PICK UP THE LINE NUMBER WHEN THE LOOP IS DETECTED.
2)	!**;[576], THIS MAY OR MAY NOT BE USEFUL IN ISOLATING THE LOOP.
2)	%[576]%			IF .P2[POSTDOM] EQL 0
2)	%[576]%				THEN (ISN_.P2[SRCISN]; OPTERR(E1
	00));
2)				P2[LEVEL] _.HEAD[LEVEL] + 1;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 233
PCO Log Report



                   *********************
                   *PCO #:10-F10   -251*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(576)

[Date Entered]          11-JUL-77

[Programmer]            EKLUND

[Routines]              TSTR      TESTRE

[Key Words]             DO LOOP     COMMON      INDEX       CALL STMNT

[Source Before Edit]    %5A  (000576)

[Source After Edit]     %5A  (000577)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22352
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 234
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     If a DO loop index is in COMMON or EQUIVALENCED, and if a CALL to
a  subroutine  is  made  from  within  the DO loop, then under certain
circumstances the DO loop index is not materialized prior to the  CALL
statement,  but  rather  is  allowed  to live in a register across the
CALL.  Thus the loop value would not be available to the subroutine as
it should be.
 

                        **********


[DIAGNOSIS]
 
     This is a  very  rare  case  which  arises  only  when  the  only
occurrences  of  the loop index in the loop can be optimized away into
reduction in strength operations.  If reduction in strength operations
occur,  the  loop  variable  may  "disappear" completely in favor of a
different .R variable which replaces it.  The loop is still marked  as
needing  materialization  due  to the CALL statement, and the new loop
variable will indeed get materialized!
 

                        **********


[CURE]
 
     Before the substitution of the reduction in strength variable  is
made  for  the natural loop index, check the appropriate flags, and if
the  loop  index  needs  materialization,  then  do  not   allow   the
substitution  to  occur.   This  will force the original loop index to
stay around, and be materialized for the case described above.
 
Digital Equipment Corporation       27-OCT-77    Page 235
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1416 02-JUNE-1977
File 2)	FTN:COMMAN.577[30,4515]	created: 1320 21-JUNE-1977
 
1)1	TITLE	FTNCMD	%5A(576) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 2-JU
	N-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(577) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 21-J
	UN-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;577	TSTR(54)	22352	DO LOOP WITH A CALL STATEMENT IN
	SIDE MUST
2)	;				MATERIALIZE LOOP VARIABLE IF IT
	IS IN COMMON
2)	;END REVISION HISTORY
**************
1)1	EDNUM==576	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==577	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 236
PCO Log Report


[FILCOM]
File 1)	FTN:TSTR.BLI[31,4650]	created: 0846 17-DEC-1976
File 2)	FTN:TSTR.577[30,4515]	created: 1313 21-JUNE-1977
 
1)1	GLOBAL BIND TSTRV = 5^24 + 0^18 + 53;	!VERSION DATE:	18-Oct-7
	6
1)	%(
****
2)1	GLOBAL BIND TSTRV = 5^24 + 1^18 + 54;	!VERSION DATE: 21-JUN-77
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	54	577	22352	IF DO LOOP MATERIALIZATION NEEDED, NO TE
	ST
2)				REPLACEMENT IS POSSIBLE FOR LOOP INDEX
2)	)%
**************
1)1		IF .INDVAR NEQ 0 THEN
****
2)1	!**;[577], TESTREPLACE @3616, DCE, 21-JUN-77
2)	!**;[577], IF LOOP INDEX IS MARKED FOR MATERIALIZATION (DUE TO A
	 CALL
2)	!**;[577], STATEMENT IN THE LOOP FOR INSTANCE), THEN NO TEST REP
	LACEMENT
2)	!**;[577], IS POSSIBLE, SO WE SHOULD JUST GET OUT HERE.
2)	%[577]%	IF .TOP[NEDSMATRLZ] OR .TOP[MATRLZIXONLY] THEN RETURN;
2)		IF .INDVAR NEQ 0 THEN
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 237
PCO Log Report



                   *********************
                   *PCO #:10-F10   -252*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(577)

[Date Entered]          11-JUL-77

[Programmer]            EKLUND

[Routines]              REGAL2    ALCARG    ETC

[Key Words]             STACK OVER  FORTF       LG EXPR

[Source Before Edit]    %5A  (000577)

[Source After Edit]     %5A  (000600)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22990
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 238
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Stack overflow during compilation  of  a  very  large  expression
which is continued for many lines.
 

                        **********


[DIAGNOSIS]
 
     The example given was a genuine stack overflow during FORTF which
was  caused by the size of the expression being handled.  The compiler
was  attempting  to  perform  register  allocation  for   this   large
expression when it simply ran out of stack space.
 

                        **********


[CURE]
 
 
     Rewrite sections of the register allocation routines so that they
make  more  efficient  use  of the stack.  The changes given cause the
compiler to use 22 locations per expression level instead  of  the  31
that it used previously.
 
Digital Equipment Corporation       27-OCT-77    Page 239
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 1320 21-JUNE-1977
File 2)	FTN:COMMAN.600[30,4515]	created: 1612 07-JULY-1977
 
1)1	TITLE	FTNCMD	%5A(577) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 21-J
	UN-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(600) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 8-JU
	L-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;600	REGAL2(146)	22990	MORE EFFICIENT STACK USAGE IN FO
	RTE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==577	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==600	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 240
PCO Log Report


[FILCOM]
File 1)	FTN:REGAL2.BLI[30,4515]	created: 1441 12-JULY-1977
File 2)	FTN:REGAL2.600[30,4515]	created: 1418 12-JULY-1977
 
1)1	GLOBAL BIND REGAV = 5^24 + 1^18 + 145;	!VERSION DATE: 24-MAR-77
1)	%(
****
2)1	GLOBAL BIND REGAV = 5^24 + 1^18 + 146;	!VERSION DATE: 8-JUL-77
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	146	600	22990	REWRITE TO MAKE BETTER USE OF STACK
2)	)%
**************
1)1		CNODE_.TREEPTR;
****
2)1	!**;[600], ALCA @3540, DCE, 8-JUL-77
2)	!**;[600], TO GENERATE BETTER CODE
2)	%[600]%	OWN TEMPFLG; !TO GET BETTER CODE
2)	%[600]%	ROUTINE INLCMPLXFN(RA,BSYREGS)=
2)	%[600] THIS ROUTINE HANDLES IN LINE CMPLX FNS, AND IS INTRODUCED
	 TO
2)	MINIMIZE STACK USAGE IN ALCA%
2)	%[600]%		BEGIN
2)	%[600]%			REGISTER T;
2)	%[600]%			T_SPBSYREGS(.BSYREGS);
2)	%[600]%			ALCARGS(.RA,.T,ONESCOUNT(.T));
2)	%[600]%		END;
2)		CNODE_.TREEPTR;
**************
1)1		BEGIN
1)			REGISTER T;
1)			IF .TREEPTR[OPERATOR] EQL CMPLXFNOP	!FOR THE
	 IN LINE FN CMPLX
1)			THEN		! MUST ALLOCATE THE ARGS IN SING
	LE WD MODE
1)			ALCARGS(.RA,(T_SPBSYREGS(.BSYREGS)),ONESCOUNT(.T
	))
1)			ELSE
1)			ALCARGS(.RA,.BSYREGS,.FREGCT);
1)		END;
1)		%(***IF HAVE ALREADY DETERMINED THAT CNODE SHOULD BE COM
	PUTED IN THE FN-RETURN REG,
****
2)1	!**;[600], ALCA @3566, DCE, 8-JUL-77
2)	!**;[600], CODE CHANGED FOR EFFICIENT STACK USAGE
2)	%[600]%	IF .TREEPTR[OPERATOR] EQL CMPLXFNOP	!FOR IN LINE CMP
	LX FN
2)	%[600]%		THEN INLCMPLXFN(.RA,.BSYREGS)	!ALLOCATE ARGS I
Digital Equipment Corporation       27-OCT-77    Page 241
PCO Log Report


	N SINGLE WORD MODE
2)	%[600]%		ELSE ALCARGS(.RA,.BSYREGS,.FREGCT);	!OTHERWI
	SE NORMAL
2)		%(***IF HAVE ALREADY DETERMINED THAT CNODE SHOULD BE COM
	PUTED IN THE FN-RETURN REG,
**************
1)1		IF (NOT .CNODE[A1VALFLG]) AND (.ARG1NODE[INREGFLG]) AND
	(NOT .ARG1NODE[ALCRETREGFLG])
1)		THEN
1)		BEGIN
1)			RB_.ARG1NODE[TARGTAC];
1)			%(***IF COMPUTATION OF CNODE CLOBBERS REG AFTER
	THE TARGET REG, THEN CAN
1)				ONLY USE RB IF THE REG FOLLOWING IT IS F
	REE.***)%
1)			IF (CLOBBNX(.CNODE) AND (NOT NXREGFREE(.BSYREGS,
	.RB)))
1)				OR NOT BITSET(.BSYREGS,.RB)	!IF ARG1
	 WAS LEFT IN A REG THAT CANNOT
1)								! BE USE
	D FOR  CNODE (CAN
1)								! HAPPEN
	 IF CNODE IS "CMPLX")
1)			THEN RA_REGTOUSE(.CNODE,.ARG1NODE,.CNODE[ARG2PTR
	],.RA,.BSYREGS)
1)			ELSE
 
 
1)			BEGIN
1)				RA_.RB;
1)				CNODE[A1SAMEFLG]_1;
1)			END
1)		END
1)		ELSE
1)		%(***IF ARG1 IS A VAR THAT WAS LEFT IN A REG BY A PREVIO
	US STATEMENT, USE THAT REG**)%
1)		IF (RB_REGCONTAINING(.ARG1NODE)) GEQ 0	!IF ARG1 WAS LEF
	T IN A REG
1)		THEN
1)		BEGIN
1)			IF BITSET(.BSYREGS,.RB)	!IF ITS OK TO CLOBBER RB
	 WHILE PROCESSING THIS STMNT
1)				AND .CNODE[A1NGNTFLGS] EQL 0	! AND AR
	G1 DOES NOT NEED TO
1)								! TO BE
	NEGATED OR COMPLEMENTED
1)								!AND NEX
	T REGISTER IS FREE
1)								!AND/OR
	WON'T BE CLOBBERED
1)				AND NOT (CLOBBNX(.CNODE) AND (NOT NXREGF
Digital Equipment Corporation       27-OCT-77    Page 242
PCO Log Report


	REE(.BSYREGS,.RB)))
1)			THEN
1)			BEGIN
1)				RA_.RB;	!USE THE REG CONTAINING ARG1
1)				CNODE[A1SAMEFLG]_1;	!NEEDNT RELOAD T
	HAT REG
1)			END
1)			ELSE RA_REGTOUSE(.CNODE,.ARG1NODE,.CNODE[ARG2PTR
	],.RA,.BSYREGS)
1)		END
1)		ELSE
1)		RA_REGTOUSE(.CNODE,.ARG1NODE,.CNODE[ARG2PTR],.RA,.BSYREG
	S);
1)		%(****SET UP THE TARGET FIELD OF CNODE***)%
****
2)1	!**;[600], ALCA @3586, DCE, 8-JUL-77
2)	!**;[600], REWORK CODE TO MAKE IT MORE EFFICIENT, AND TO USE LES
	S
2)	!**;[600], STACK SPACE SO THAT LARGE EXPRESSIONS WILL NOT CAUSE
2)	!**;[600], STACK OVERFLOWS.
2)	%[600]%	TEMPFLG_ (NOT .CNODE[A1VALFLG]) AND (.ARG1NODE[INREGFLG]
	) AND (NOT .ARG1NODE[ALCRETREGFLG]);
2)	%[600]%
2)	%[600]%	RB_IF .TEMPFLG THEN .ARG1NODE[TARGTAC]
2)	%[600]%			ELSE REGCONTAINING(.ARG1NODE);
2)	%[600]%
2)	%[600]%	IF .RB GEQ 0	!IF ARG1 STILL IN A REG...
2)	%[600]%	THEN
2)	%[600]%		IF(CLOBBNX(.CNODE) AND (NOT NXREGFREE(.BSYREGS,.
	RB)))
2)	%[600]%		THEN RB_-1	!NEXT REG WOULD BE CLOBBERED, SO
	 GET OUT
2)	%[600]%		ELSE
2)	%[600]%			IF NOT BITSET(.BSYREGS,.RB)
2)	%[600]%			THEN RB_-1	!CANNOT USE RB FOR CNODE
	, SO GET OUT
2)	%[600]%			ELSE
2)	%[600]%				IF (.TEMPFLG OR (.CNODE[A1NGNTFL
	GS] EQL 0))
2)	%[600]%				THEN	!ALL IS OK!
2)	%[600]%				BEGIN
2)	%[600]%					RA_.RB;	!THIS IS THE REG
	 WE WANT
2)	%[600]%					CNODE[A1SAMEFLG]_1;
2)	%[600]%				END
2)	%[600]%				ELSE RB_-1;
2)	%[600]%
2)	%[600]%	! IF REGISTER FOR ARG1 IS NO GOOD FOR CNODE, GET ANOTHER
	 REGISTER.
2)	%[600]%
2)	%[600]%	IF .RB LSS 0
Digital Equipment Corporation       27-OCT-77    Page 243
PCO Log Report


2)	%[600]%	THEN RA_REGTOUSE(.CNODE,.ARG1NODE,.CNODE[ARG2PTR],.RA,.B
	SYREGS);
 
 
2)		%(****SET UP THE TARGET FIELD OF CNODE***)%
**************
1)1		LOCAL CLOBBR1;
1)		OWN BSYRG1,FRGCT1;
****
2)1	!**;[600], ALCARGS @3718, DCE, 8-JUL-77
2)	!**;[600], REMOVE UNUSED LOCAL TO REDUCE STACK USAGE
2)	![600]	LOCAL CLOBBR1;
2)		OWN BSYRG1,FRGCT1;
**************
1)1				REGISTER BESTREGS;
1)				TREEPTR_.ARG1NODE;
****
2)1	!**;[600], ALCARGS @3927, DCE, 8-JUL-77
2)	!**;[600], REMOVE BESTREGS AND USE RB INSTEAD IN FOUR PLACES BEL
	OW.
2)	!**;[600], THIS REDUCES STACK USAGE AT COMPILE TIME.
2)	![600]			REGISTER BESTREGS;
2)				TREEPTR_.ARG1NODE;
**************
1)1				BESTREGS_CLRBIT(.BSYRG1,.RA);	!PREFER
	NOT TO USE RA
1)						! TO HOLD ARG2 - SINCE T
	HEN WONT BE
1)						! ABLE TO USE IT FOR THE
	 PARENT
1)				IF .BESTREGS EQL 0	!HOWEVER IF IT W
	AS THE ONLY REG AVAILABLE
1)				THEN BESTREGS_.BSYRG1;	! THEN MUST USE
	IT
1)	!**;[457] Change @ line 3898 in ALCARGS	JNG	24-Sep-76
****
2)1	!**;[600], ALCARGS @3948, DCE, 8-JUL-77
2)	!**;[600], USE RB INSTEAD OF BESTREGS
2)	%[600]%			RB_CLRBIT(.BSYRG1,.RA);	!PREFER NOT TO U
	SE RA
2)						! TO HOLD ARG2 - SINCE T
	HEN WONT BE
2)						! ABLE TO USE IT FOR THE
	 PARENT
2)	%[600]%			IF .RB EQL 0	!HOWEVER IF IT WAS THE O
	NLY REG AVAILABLE
2)	%[600]%			THEN RB_.BSYRG1;	! THEN MUST USE
	IT
2)	!**;[457] Change @ line 3898 in ALCARGS	JNG	24-Sep-76
**************
1)1	%[457]%			RB_AFREEREG(.BESTREGS,FALSE,.ARG2NODE[DB
Digital Equipment Corporation       27-OCT-77    Page 244
PCO Log Report


	LFLG]);
1)	%[457]%
****
2)1	!**;[600], ALCARGS @3964, DCE, 8-JUL-77
2)	!**;[600], USE RB INSTEAD OF BESTREGS
2)	%[600]%			RB_AFREEREG(.RB,FALSE,.ARG2NODE[DBLFLG])
	;
2)	%[457]%
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 245
PCO Log Report



                   *********************
                   *PCO #:10-F10   -253*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(607)

[Date Entered]          17-AUG-77

[Programmer]            EKLUND

[Routines]              P2S2      SETNEG

[Key Words]             BAD CODE    COMSUBS     NEGFLGS     ARITH IF

[Source Before Edit]    %5A  (000607)

[Source After Edit]     %5A  (000610)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-23333
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 246
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Bad code may be generated for some arithmetic  expressions  which
involve  common  subexpressions  with  negative  signs  in  them.  The
reported example involved an arithmetic IF statement  which  contained
an expression:  I-J-4 where J+4 was a potential common subexression.
 

                        **********


[DIAGNOSIS]
 
 
     During the conversion to a common subexpression, the test made to
set a particular flag was not sufficient.
 

                        **********


[CURE]
 
 
     Correct the test so that the neg flag is modified correctly.
 
Digital Equipment Corporation       27-OCT-77    Page 247
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1044 14-AUG-1977
File 2)	FTN:COMMAN.610[30,4515]	created: 1011 19-AUG-1977
 
1)1	TITLE	FTNCMD	%5A(607) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 14-A
	UG-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(610) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 18-A
	UG-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;610	P2S2(56)	23333	BAD CODE FOR COMSUB WITH NEG FLA
	G
2)	;				REPLACES EDIT 345.
2)	;END REVISION HISTORY
**************
1)1	EDNUM==607	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==610	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 248
PCO Log Report


[FILCOM]
File 1)	FTN:P2S2.BLI[31,4650]	created: 1545 22-MAR-1977
File 2)	DSKB:P2S2.610[30,4515]	created: 0844 19-AUG-1977
 
1)1	GLOBAL BIND P2S2V = 5^24 + 1^18 + 55;	!VERSION DATE: 22-MAR-77
1)	%(
****
2)1	GLOBAL BIND P2S2V = 5^24 + 1^18 + 56;	!VERSION DATE: 18-AUG-77
2)	%(
**************
1)1	)%
****
2)1	56	610	23333	FIX EDIT 52 (MUST TEST OPERCLAS TOO)
2)	)%
**************
1)1		!**;[345], SETNEG @3305, DCE, 3-FEB-76
1)		!**;[345], SIMPLY ABSORB THE NEG FOR EVEN EXPONENTIATION
1)		%[345]%		IF .PNODE[OPERSP] NEQ EXPCIOP THEN
1)				 PNODE[A1NEGFLG]_NOT .PNODE[A1NEGFLG]
****
2)1		!**;[610], SETNEG @3325, DCE, 18-AUG-77
2)		!**;[610], SIMPLY ABSORB THE NEG FOR EVEN EXPONENTIATION
2)		%[610]%		IF .PNODE[OPR1] NEQ EXPCIF THEN
2)				 PNODE[A1NEGFLG]_NOT .PNODE[A1NEGFLG]
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 249
PCO Log Report



                   *********************
                   *PCO #:10-F10   -254*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(572)

[Date Entered]          04-AUG-77

[Programmer]            STAN WHITLOCK

[Routines]              ACT1      DATALI

[Key Words]             DATA STMNT  IMPLIED DO  ALREADY AC

[Source Before Edit]    %5A  (000600)

[Source After Edit]     %5A  (000601)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-Q20-26
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 250
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
After edit 572, an implied DO loop in a DATA statement gets  the  syntax
error "DO LOOP AT LINE:0 IS ILLEGALLY NESTED".  If the listing file from
the compilation of such a statement goes to TTY:, the compiler dies with
an INTERNAL COMPILER ERROR IN FORTB.
 

                        **********


[DIAGNOSIS]
 
Edit 572 modified handling of implied DOs in I/O statements to catch  an
already active loop variable being used as the implied DO variable.  The
implied DO variable was put  on  the  stack  of  currently  active  loop
variables  and  popped off after the loop was processed.  Unfortunately,
the DO variable in an implied loop in a DATA statement was never put  on
the  stack  but  an  attempt  was  made  to  pop  it off.  The resultant
inconsistency causes the reported errors.
 

                        **********


[CURE]
 
Put the implied DO variable on the stack for "already  active"  checking
even  if  it  is  in a DATA statement.  Now the following DATA statement
will get the "DO variable already active" syntax error:
 
          DATA ((A(I,I),I=1,10),I=1,10)/.../
 
Note that this patch is  a  modification  to  edit  572,  which  was  an
implementation of a new feature and therefore never published.
 
Digital Equipment Corporation       27-OCT-77    Page 251
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1612 07-JULY-1977
File 2)	DSKC:COMMAN.MAC[31,4577]	created: 1206 04-AUG-1977
 
1)1	TITLE	FTNCMD	%5A(600) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 8-JU
	L-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(601) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 4-AU
	G-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;601	ACT1(113)	Q20-26	FIX EDIT 572 TO CHECK IMPLIED DO
	 INDEX
2)	;				  IN DATA STATEMENTS FOR ALREADY
	 ACTIVE
2)	;				  FROM ENCLOSING IMPLIED DO
2)	;END REVISION HISTORY
**************
1)1	EDNUM==600	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==601	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 252
PCO Log Report


[FILCOM]
File 1)	LIB:ACT1.BLI[31,4650]	created: 1220 16-MAY-1977
File 2)	DSKC:ACT1.BLI[31,4577]	created: 1137 04-AUG-1977
 
1)1	GLOBAL BIND ACT1V = 5^24 + 1^18 + 112;		!VERSION DATE: 1
	3-MAY-77
1)	%(
****
2)1	GLOBAL BIND ACT1V = 5^24 + 1^18 + 113;		!VERSION DATE: 4
	-AUG-77
2)	%(
**************
1)1	)%	!END REVISION HISTORY
****
2)1	113	601	Q20-26	FIX EDIT 572 TO CHECK IMPLIED DO INDEX I
	N DATA
2)				  STATEMENT FOR ALREADY ACTIVE FROM AN E
	NCLOSING
2)				  IMPLIED DO
2)	)%	!END REVISION HISTORY
**************
1)1	%[572]%				  IF CKDOINDEX (.T2)
1)	%[572]%				    THEN RETURN FATLEX (T2 [IDSY
	MBOL], E21<0,0>);	! DO INDEX ALREADY ACTIVE
1)	%[572]%				  IF NAMSET (VARIABL1,.T2) LSS 0
1)	%[572]%				    THEN RETURN .VREG;
1)	%[572]%				  ADDOLAB (.IOLBL, .T2);	
	! THIS INDEX IS CURRENTLY MOST ACTIVE
1)	%[572]%				END;
1)					R2<LEFT>_.R2<LEFT>-2; !RESET LIS
	T PTR SO THAT LAST ITEM (INDEX PTR)
****
2)1	%[572]%				  IF NAMSET (VARIABL1,.T2) LSS 0
2)	%[572]%				    THEN RETURN .VREG;
2)	%[572]%				END;
2)	!**[601] DATALIST MOVE [572] FROM @4837 TO @4840  SJW  4-AUG-77
2)	%[601]%				IF CKDOINDEX (.T2)
2)	%[601]%				  THEN RETURN FATLEX (T2 [IDSYMB
	OL], E21<0,0>);	! DO INDEX ALREADY ACTIVE
2)	%[601]%				ADDOLAB (.IOLBL, .T2);	! THIS I
	NDEX IS CURRENTLY MOST ACTIVE
2)					R2<LEFT>_.R2<LEFT>-2; !RESET LIS
	T PTR SO THAT LAST ITEM (INDEX PTR)
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 253
PCO Log Report



                   *********************
                   *PCO #:10-F10   -255*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(601)

[Date Entered]          09-AUG-77

[Programmer]            EKLUND

[Routines]              COMSUB    XPUNGE

[Key Words]             IOLISTS     SKEWED      BAD CODE    ELIST

[Source Before Edit]    %5A  (000601)

[Source After Edit]     %5A  (000602)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22700
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 254
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Bad code may be generated for a complicated I/O  list  expression
(possibly  involving  nested array references) if using the optimizer.
The generated code for the argument block will probably be an ELIST or
SLIST where none was possible.
 

                        **********


[DIAGNOSIS]
 
 
     This is a very rare case where the optimizer could  get  confused
when processing an I/O list expression which happened to have a skewed
shape.  In this case, the definition points for the two terminal nodes
would  not  be  picked  up  correctly  with  the  result being that an
expression could be moved farther out of an implied DO loop  than  was
possible.   This  would  potentially cause the entire loop to collapse
into a set of constant expressions which could then be  made  into  an
ELIST as a final result.
 

                        **********


[CURE]
 
 
     Catch the case where the shape of  the  I/O  list  expression  is
skewed, and calculate the definition points correctly!
 
Digital Equipment Corporation       27-OCT-77    Page 255
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1206 04-AUG-1977
File 2)	FTN:COMMAN.602[30,4515]	created: 0954 09-AUG-1977
 
1)1	TITLE	FTNCMD	%5A(601) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 4-AU
	G-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(602) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 9-AU
	G-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;602	COMSUB(264)	22700	OPTIMIZED IOLISTS WITH SKEWED EX
	PRESSIONS
2)	;				MAY GENERATE ELISTS INCORRECTLY
2)	;END REVISION HISTORY
**************
1)1	EDNUM==601	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==602	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 256
PCO Log Report


[FILCOM]
File 1)	FTN:COMSUB.BLI[31,4650]	created: 1226 04-MAY-1977
File 2)	FTN:COMSUB.602[30,4515]	created: 0942 09-AUG-1977
 
1)1	GLOBAL BIND COMSV = 5^24 + 1^18 + 263;	!VERSION DATE: 4-MAY-77
1)	%(
****
2)1	GLOBAL BIND COMSV = 5^24 + 1^18 + 264;	!VERSION DATE: 9-AUG-77
2)	%(
**************
1)1	)%
****
2)1	264	602	22700	FIX SKEWED EXPRESSIONS IN IOLISTS WITH
2)				CORRECT DEFINITION POINT CALCULATION
2)	)%
**************
1)1		%[405]%		IF .DF1 EQL .DF2 THEN PHI[STPT]_.DF1 !DO
	NE
****
2)1		!**;[602], XPUNGE @4881, DCE, 9-AUG-77
2)		!**;[602], IF SHAPE IS SKEW, WE NEED TO GET THE CORRECT
	DEFINITION
2)		!**;[602], POINT FOR THE LEFT HAND NODE.  AN EXAMPLE CAS
	E WHICH
2)		!**;[602], CAUSES THIS TO HAPPEN IS: A(B(L+I-1)),I=J,K
2)		!**;[602], WHERE B IS A FORMAL ARRAY!
2)		%[602]%		IF .SHAPE EQL SKEW
2)		%[602]%			THEN (CN_.CNODE[ARG1PTR];
2)		%[602]%				DF1_.CN[DEFPT2]);
2)		%[405]%		IF .DF1 EQL .DF2 THEN PHI[STPT]_.DF1 !DO
	NE
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 257
PCO Log Report



                   *********************
                   *PCO #:10-F10   -256*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(602)

[Date Entered]          09-AUG-77

[Programmer]            EKLUND

[Routines]              ACT0      EXPRLI

[Key Words]             LABEL       CONSTANT    PARAMETER   *

[Source Before Edit]    %5A  (000602)

[Source After Edit]     %5A  (000603)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   Y
                        SER/SPR Number:10-23442
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 258
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Statement label constants which are passed as  parameters  cannot
have * as their initial character.
 

                        **********


[DIAGNOSIS]
 
 
     Label constants have always been defined as starting with  either
&  or $ (page 3-6 of the FORTRAN Programmer's Reference Manual).  This
is a new feature which is added for consistency with  respect  to  the
new FORTRAN proposed standard.
 

                        **********


[CURE]
 
     Add the code to allow the new type of label constant.
 
Digital Equipment Corporation       27-OCT-77    Page 259
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 0954 09-AUG-1977
File 2)	FTN:COMMAN.603[30,4515]	created: 1110 09-AUG-1977
 
1)1	TITLE	FTNCMD	%5A(602) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 9-AU
	G-77
****
2)1	TITLE	FTNCMD	%5A(603) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 9-AU
	G-77
**************
1)1	;END REVISION HISTORY
****
2)1	;603	ACT0(53)	23442	ADD * AS INITIAL CHAR FOR LABEL
	CONSTANT
2)	;END REVISION HISTORY
**************
1)1	EDNUM==602	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==603	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 260
PCO Log Report


[FILCOM]
File 1)	FTN:ACT0.BLI[30,4515]	created: 1034 09-AUG-1977
File 2)	FTN:ACT0.603[30,4515]	created: 1046 09-AUG-1977
 
1)1	GLOBAL BIND ACT0V = 5^24+1^18+52;		!VERSION DATE: 9
	-AUG-77
1)	%(
****
2)1	GLOBAL BIND ACT0V = 5^24+1^18+53;		!VERSION DATE: 9
	-AUG-77
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	53	603	23442	ALLOW * AS NEW STATEMENT LABEL CONSTANT
2)				BEGINNING CHARACTER
2)	)%
**************
1)1			THEN (STK[SP_.SP+1]_1; !EXPRESSION
****
2)1		!**;[603], EXPRLIST @3686, DCE, 9-AUG-77
2)		!**;[603], ALLOW * AS INITIAL CHARACTER FOR LABEL TOO.
2)		%[603]%	AND (.LEXL<LEFT> NEQ ASTERISK)
2)			THEN (STK[SP_.SP+1]_1; !EXPRESSION
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 261
PCO Log Report



                   *********************
                   *PCO #:10-F10   -257*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(603)

[Date Entered]          09-AUG-77

[Programmer]            EKLUND

[Routines]              OUTMOD    ALLCOM

[Key Words]             COMMON      LISTING     BAD         EXTRA CR

[Source Before Edit]    %5A  (000603)

[Source After Edit]     %5A  (000604)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 262
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     In the listing of COMMON blocks of a FORTRAN  program,  an  extra
carriage  return  may be given after the first element of a new COMMON
block if the preceding block just filled a line (5 elements).
 

                        **********


[DIAGNOSIS]
 
 
     The number of elements already printed for the current  line  was
not  getting  reset properly after the last line for each COMMON block
if the block contained exactly five elements.
 

                        **********


[CURE]
 
 
     Reset the count so that we start off clean with each  new  COMMON
block listing.
 
Digital Equipment Corporation       27-OCT-77    Page 263
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 1110 09-AUG-1977
File 2)	FTN:COMMAN.604[30,4515]	created: 1447 09-AUG-1977
 
1)1	TITLE	FTNCMD	%5A(603) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 9-AU
	G-77
****
2)1	TITLE	FTNCMD	%5A(604) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 9-AU
	G-77
**************
1)1	;END REVISION HISTORY
****
2)1	;604	OUTMOD(72)	23425	FIX LISTING OF COMMON BLOCK SO T
	HAT WE
2)	;				DO NOT GET AN EXTRA CARRIAGE RET
	URN
2)	;END REVISION HISTORY
**************
1)1	EDNUM==603	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==604	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 264
PCO Log Report


[FILCOM]
File 1)	FTN:OUTMOD.BLI[31,4650]	created: 0841 17-DEC-1976
File 2)	FTN:OUTMOD.604[30,4515]	created: 1132 09-AUG-1977
 
1)1	GLOBAL BIND OPMOV = 4^24 + 2^18 + 71;		!VERSION DATE: 1
	1-OCT-76
1)	%(
****
2)1	GLOBAL BIND OPMOV = 5^24 + 1^18 + 72;		!VERSION DATE: 9
	-AUG-77
2)	%(
**************
1)1		)%
****
2)1	***** BEGIN VERSION 5A *****
2)	72	604	23425	FIX LISTING OF COMMON BLOCK ELEMENTS
2)		)%
**************
1)1		%[474]%		(IF .ICNT NEQ 0 THEN (CRLF; HEADCHK());
1)		%[474]%			EXITLOOP);
****
2)1		!**;[604], ALLCOM @3565, DCE, 9-AUG-77
2)		!**;[604], RESET ICNT SO THAT WE DO NOT GET LINE WITH SI
	NGLE
2)		!**;[604], ELEMENT BY ACCIDENT!
2)		%[604][474]%		(IF .ICNT NEQ 0 THEN (ICNT_0; CR
	LF; HEADCHK());
2)		%[474]%			EXITLOOP);
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 265
PCO Log Report



                   *********************
                   *PCO #:10-F10   -258*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(604)

[Date Entered]          10-AUG-77

[Programmer]            EKLUND

[Routines]              TSTR      REDUCE

[Key Words]             ASGNMNT ST  BAD CODE    SUBSCRIPT   I/2,I**5

[Source Before Edit]    %5A  (000604)

[Source After Edit]     %5A  (000605)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-23478
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 266
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Bad code may be generated by  the  optimizer  for  an  assignment
statement  which  has  the  left  hand  side  an array reference whose
subscript contains a variable divided by a constant power of two or  a
variable raised to a constant integer power.  Examples are:
 
 
     A(I/2)=10
 
     B(I**5)=12
 

                        **********


[DIAGNOSIS]
 
     There are four special operators which may be used internally  by
the compiler, two of which are multiplications (power of two and power
of two plus one), one of which is division (by power of two), and  one
of  which  is  exponentiation (to a constant integer power).  When the
optimizer   is   attempting   to   perform   reduction   in   strength
optimizations, it cannot use these forms without first converting them
back  to  a  multiply  operator  (if  possible).   The  conversion  is
performed without checking whether the subtype of the special operator
is division or exponentiation.
 

                        **********


[CURE]
 
 
     Before converting back  to  the  multiply  operation,  check  for
division  and exponentiation, and simply get out if these are present,
for nothing can be done with these!
 
Digital Equipment Corporation       27-OCT-77    Page 267
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 1447 09-AUG-1977
File 2)	FTN:COMMAN.605[30,4515]	created: 1033 10-AUG-1977
 
1)1	TITLE	FTNCMD	%5A(604) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 9-AU
	G-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(605) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 10-A
	UG-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;605	TSTR(55)	23478	BAD CODE WITH /OPT FOR ASGMNT ST
	MNT WITH
2)	;				LHS LIKE A(I/2) OR A(I**5)
2)	;END REVISION HISTORY
**************
1)1	EDNUM==604	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==605	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 268
PCO Log Report


[FILCOM]
File 1)	FTN:TSTR.BLI[31,4650]	created: 1313 21-JUNE-1977
File 2)	FTN:TSTR.605[30,4515]	created: 0926 10-AUG-1977
 
1)1	GLOBAL BIND TSTRV = 5^24 + 1^18 + 54;	!VERSION DATE: 21-JUN-77
1)	%(
****
2)1	GLOBAL BIND TSTRV = 5^24 + 1^18 + 55;	!VERSION DATE: 10-AUG-77
2)	%(
**************
1)1	)%
****
2)1	55	605	23478	REDUCE MUST BE MORE CAREFUL WITH SPECOPS
2)	)%
**************
1)1			!PICK UP POWER OF 2
****
2)1		!**;[605], REDUCE @4064, DCE, 10-AUG-77
2)		!**;[605], THE COMMENT ABOVE IS NOT CORRECT, FOR WE DO N
	OT
2)		!**;[605], KNOW HERE WHETHER WE HAVE SPECOPS WHICH ARE C
	OMING
2)		!**;[605], FROM MULTIPLICATIONS OR DIVISIONS, ETC.
2)		!**;[605], WE ONLY WANT TO PROCEED IF WE HAVE POTENTIAL
	MULTIPLIES.
2)		%[605]%	IF .CNODE[OPERSP] EQL P2DIVOP OR .CNODE[OPERSP]
	EQL EXPCIOP
2)		%[605]%	THEN RETURN(.CNODE); !NO REDUCTION POSSIBLE
2)			!PICK UP POWER OF 2
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 269
PCO Log Report



                   *********************
                   *PCO #:10-F10   -259*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(605)

[Date Entered]          11-AUG-77

[Programmer]            EKLUND

[Routines]              CNSTCM    EXPRL

[Key Words]             OVERFLOW    UNDERFLOW   EXPONENTIA  NO WARNING

[Source Before Edit]    %5A  (000605)

[Source After Edit]     %5A  (000606)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22795
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 270
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     During compilation, constant  folding  of  expressions  involving
exponentiation  may  cause overflows/underflows which go by unnoticed.
Furthermore, the resulting constant generated is incorrect.  The power
involved  in  the exponentiation must be greater than two.  An example
is during the evaluation of (9.9E20)**3 which reports no error whereas
(9.9E20)**2 gives both a warning and a correct result!
 

                        **********


[DIAGNOSIS]
 
 
     During the folding of a constant such as those  described  above,
the  multiplications  are  all  done  prior  to  the  testing  of  any
underflow/overflow flags.  If the error condition happens  during  the
first  multiply  and  the  last multiply does not also raise the error
condition  flags,   then   the   underflow/overflow   condition   goes
undetected, and the constant generated is unpredictable.
 

                        **********


[CURE]
 
 
     During the folding of the constant  expressions,  check  at  each
stage  along  the  way  to  make sure that the error conditions do not
occur.  If they do, get out immediately so that the flags do  not  get
reset  during future multiplications.  This will cause the right thing
to happen in the calling routine, namely, the error will be  reported,
and  the constant will be considered to be the largest possible number
or zero depending upon the error condition.
 
Digital Equipment Corporation       27-OCT-77    Page 271
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[30,4515]	created: 1033 10-AUG-1977
File 2)	FTN:COMMAN.606[30,4515]	created: 1541 11-AUG-1977
 
1)1	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 10-A
	UG-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 11-A
	UG-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;606	CNSTCM(67)	22795	SOME OVERFLOWS DURING CONSTANT F
	OLDING
2)	;				NOT DETECTED AND POOR CODE GIVEN
	.
2)	;END REVISION HISTORY
**************
1)1	EDNUM==605	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==606	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 272
PCO Log Report


[FILCOM]
File 1)	FTN:CNSTCM.MAC[31,4650]	created: 0834 17-DEC-1976
File 2)	FTN:CNSTCM.606[30,4515]	created: 1537 11-AUG-1977
 
1)1		SUBTTL	S. MURPHY/SRM/HPW/NEA/HPW/SJW
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
1)		INTERN	CNSTCV
1)		CNSTCV= BYTE (3)0(9)5(6)0(18)^D66	;VERSION DATE: 2
	3-JUL-76
1)		SUBTTL	REVISION HISTORY
****
2)1		SUBTTL	S. MURPHY/SRM/HPW/NEA/HPW/SJW/DCE
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
2)		INTERN	CNSTCV
2)		CNSTCV= BYTE (3)0(9)5(6)0(18)^D67	;VERSION DATE: 1
	1-AUG-77
2)		SUBTTL	REVISION HISTORY
**************
1)1		SUBTTL	COMBIND CONSTANTS
****
2)1	;************	VERSION 5A
2)	;67	606	22795	CATCH ALL OVERFLOWS AND UNDERFLOWS IN EX
	PRL
2)		SUBTTL	COMBIND CONSTANTS
**************
1)1		POP	SREG,T		;RESTORE
****
2)1	;**[606], INSERT @EXPRL2+11L, DCE, 11-AUG-77
2)	;**[606], TEST FOR OVERFLOW/UNDERFLOW AND GET OUT IF THERE IS.
2)		JSP	T,.+1		;[606] USE T AS TEMP FOR FLAGS
2)		TLNE	T,440140	;[606] TEST FOR TROUBLE!
2)		JRST	EXPRL4		;[606] TIME TO GET OUT
2)		POP	SREG,T		;RESTORE
**************
1)1		POP	SREG,T		;RESTORE T
1)		JRST	EXPRL2		;REPEAT
1)	EXPRL3:	POP	SREG,0(SREG)	;FIX STACK
****
2)1	;**[606], INSERT @EXPRL3-3L, DCE, 11-AUG-77
2)		JSP	T,.+1		;[606] USE T AS TEMP FOR FLAGS
2)		TLNE	T,440140	;[606] TEST FOR TROUBLE!
2)		JRST	EXPRL4		;[606] TIME TO GET OUT
2)		POP	SREG,T		;RESTORE T
2)		JRST	EXPRL2		;REPEAT
2)	;**[606], INSERT @EXPRL3-1L, DCE, 11-AUG-77
2)	EXPRL4:	POP	SREG,T		;[606] RESTORE T
2)					;[606] THIS IS OVERFLOW/UNDERFLO
	W EXIT
2)	EXPRL3:	POP	SREG,0(SREG)	;FIX STACK
Digital Equipment Corporation       27-OCT-77    Page 273
PCO Log Report


**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 274
PCO Log Report



                   *********************
                   *PCO #:10-F10   -260*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A

[Date Entered]          15-AUG-77

[Programmer]            STAN WHITLOCK

[Routines]              GLOBAL    CGDO      CGSTMN    PHA3

[Key Words]             ZERO ARG    BLOCK

[Source Before Edit]    %5A  (000606)

[Source After Edit]     %5A  (000607)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22685
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 275
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
A zero argument block (2 words of zero) is  generated  in  each  program
unit even if this argument block is not referenced.
 

                        **********


[DIAGNOSIS]
 
A zero argument block (count word = 0,,0 and first argument word = 0,,0)
is  generated for subroutine calls with no arguments, for END statements
(which generate "CALL EXIT") and for STOP and PAUSE statements  with  no
arguments.   Only one zero argument block is generated regardless of the
number of references to it.  However, the zero argument block is  always
generated  even  if  there are no references.  Although this only WASTES
two words, it looks sloppy.
 

                        **********


[CURE]
 
Flag the fact that there is a reference to the zero argument block  and,
only then, generate the zero argument block.
 
Digital Equipment Corporation       27-OCT-77    Page 276
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1656 12-AUG-1977
File 2)	DSKC:COMMAN.MAC[31,4577]	created: 1044 14-AUG-1977
 
1)1	TITLE	FTNCMD	%5A(606) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 11-A
	UG-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(607) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 14-A
	UG-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;607	GLOBAL(100)	22685	MAKE NEW GLOBAL NEDZER TO INDICA
	TE IF
2)	;				  ZERO-ARG-BLOCK NEEDED
2)	;	CGDO(137)		SET NEDZER IN CGSBPRGM TO "0-A-B
	 NEEDED"
2)	;	CGSTMN(131)		SET NEDZER IN CGEND, CGSTOP & CG
	PAUS TO
2)	;				  "0-A-B NEEDED"
2)	;	PHA3(52)		GENERATE 0-A-B ONLY IF NEEDED
2)	;END REVISION HISTORY
**************
1)1	EDNUM==606	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==607	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 277
PCO Log Report


[FILCOM]
File 1)	LIB:GLOBAL.BLI[31,4650]	created: 0837 17-DEC-1976
File 2)	DSKC:GLOBAL.BLI[31,4577]	created: 0950 14-AUG-1977
 
1)1	GLOBAL BIND GLOBV = 5^24 + 0^18 + 77;	!VERSION DATE: 29-SEP-76
1)	%(
****
2)1	GLOBAL BIND GLOBV = 5^24 + 1^18 + 100;	!VERSION DATE: 14-AUG-77
2)	%(
**************
1)1		464	QA754	MAKE NEW GLOBALS LMLINO, LMRONO, LMCONO
	FOR
1)			  780	  LINEMAP IN FORTG
1)	)%
****
2)1	77	464	QA754	MAKE NEW GLOBALS LMLINO, LMRONO, LMCONO
	FOR
2)			  780	  LINEMAP IN FORTG
2)	100	607	22685	MAKE NEW GLOBAL NEDZER TO INDICATE IF
2)				  ZERO-ARG-BLOCK IS NEEDED
2)	)%
**************
1)1	GLOBAL ZERBLK;		!PTR TO LABEL TABLE ENTRY FOR LABEL ON A
****
2)1	GLOBAL NEDZER;		![607] FLAG TO INDICATE IF ZERO-ARG-BLOC
	K NEEDED
2)	GLOBAL ZERBLK;		!PTR TO LABEL TABLE ENTRY FOR LABEL ON A
**************
 
Digital Equipment Corporation       27-OCT-77    Page 278
PCO Log Report


[FILCOM]
File 1)	LIB:CGDO.BLI[31,4650]	created: 0833 17-DEC-1976
File 2)	DSKC:CGDO.BLI[31,4577]	created: 1011 14-AUG-1977
 
1)1	!AUTHOR NORMA ABEL/HPW/MD/DCE
1)	MODULE CGDO(RESERVE(0,1,2,3),SREG=#17,VREG=#15,FREG=#16,DREGS=4)
	=
1)	BEGIN
1)	GLOBAL BIND CGDOV = 4^24 + 2^18 + 136;	!VERSION DATE: 22-MAR-76
1)	%(
****
2)1	!AUTHOR NORMA ABEL/HPW/MD/DCE/SJW
2)	MODULE CGDO(RESERVE(0,1,2,3),SREG=#17,VREG=#15,FREG=#16,DREGS=4)
	=
2)	BEGIN
2)	GLOBAL BIND CGDOV = 5^24 + 1^18 + 137;	!VERSION DATE: 14-AUG-77
2)	%(
**************
1)1	)%
****
2)1	******	BEGIN VERSION 5A	******
2)	137	607	22685	SET GLOBAL FLAG NEDZER IN CGSBPRGM TO IN
	DICATE
2)				  ZERO-ARG-BLOCK NEEDED
2)	)%
**************
1)1		EXTERNAL A1NODE,CALLER,TBLSEARCH,REGFORCOMP,OPGSTA,OPGST
	I;
****
2)1	%[607]%	EXTERNAL NEDZER;	! FLAG TO INDICATE IF ZERO-ARG-B
	LOCK NEEDED
2)		EXTERNAL A1NODE,CALLER,TBLSEARCH,REGFORCOMP,OPGSTA,OPGST
	I;
**************
1)1			A1LABEL_.ZERBLK;
1)		!FOR A FORMAL FUNCTION SET THE INDIRECT BIT IN TH SYMBOL
	 TABLE
****
2)1	%[607]%		(NEDZER _ 1; A1LABEL_.ZERBLK;);	! FLAG ZERO-ARG-
	BLOCK NEEDED
2)		!FOR A FORMAL FUNCTION SET THE INDIRECT BIT IN TH SYMBOL
	 TABLE
**************
 
Digital Equipment Corporation       27-OCT-77    Page 279
PCO Log Report


[FILCOM]
File 1)	LIB:CGSTMN.BLI[31,4650]	created: 1452 29-APR-1977
File 2)	DSKC:CGSTMN.BLI[31,4577]	created: 1020 14-AUG-1977
 
1)1	GLOBAL BIND CGSTV = 5^24 + 1^18 + 130;	!VERSION DATE: 29-APR-77
1)	%(
****
2)1	GLOBAL BIND CGSTV = 5^24 + 1^18 + 131;	!VERSION DATE: 14-AUG-77
2)	%(
**************
1)1	)%
****
2)1	131	607	22685	SET GLOBAL FLAG NEDZER IN CGEND, CGSTOP
	& CGPAUS
2)				  TO INDICATE ZERO-ARG-BLOCK NEEDED
2)	)%
**************
1)1			OPGENDISP;
****
2)1	%[607]%		NEDZER,	! FLAG TO INDICATE IF ZERO-ARG-BLOCK NEE
	DED
2)			OPGENDISP;
**************
1)1		EXTERNAL ZERBLK;
****
2)1	%[607]%	EXTERNAL NEDZER;	! FLAG TO INDICATE IF ZERO-ARG-B
	LOCK NEEDED
2)		EXTERNAL ZERBLK;
**************
1)1			A1LABEL_.ZERBLK;	!ARGLIST FOR CALL TO EXI
	T IS ALWAYS
****
2)1	%[607]%		NEDZER _ 1;		! FLAG ZERO-ARG-BLOCK NE
	EDED
2)			A1LABEL_.ZERBLK;	!ARGLIST FOR CALL TO EXI
	T IS ALWAYS
**************
1)1		EXTERNAL ZERBLK;
****
2)1	%[607]%	EXTERNAL NEDZER;	! FLAG TO INDICATE IF ZERO-ARG-B
	LOCK NEEDED
2)		EXTERNAL ZERBLK;
**************
1)1				THEN .ZERBLK
1)				ELSE GENLAB() );	!IF HAVE AN ARG
	TO
****
2)1	%[607]%			THEN (NEDZER _ 1; .ZERBLK)	! FLAG Z
	ERO-ARG-BLOCK NEEDED
2)				ELSE GENLAB() );	!IF HAVE AN ARG
	TO
Digital Equipment Corporation       27-OCT-77    Page 280
PCO Log Report


**************
1)1		EXTERNAL ZERBLK;
****
2)1	%[607]%	EXTERNAL NEDZER;	! FLAG TO INDICATE IF ZERO-ARG-B
	LOCK NEEDED
2)		EXTERNAL ZERBLK;
**************
1)1				THEN .ZERBLK
1)				ELSE GENLAB() );	!IF HAVE AN ARG
	TO
****
2)1	%[607]%			THEN (NEDZER _ 1; .ZERBLK)	! FLAG Z
	ERO-ARG-BLOCK NEEDED
2)				ELSE GENLAB() );	!IF HAVE AN ARG
	TO
**************
 
Digital Equipment Corporation       27-OCT-77    Page 281
PCO Log Report


[FILCOM]
File 1)	LIB:PHA3.BLI[31,4650]	created: 0843 17-DEC-1976
File 2)	DSKC:PHA3.BLI[31,4577]	created: 1042 14-AUG-1977
 
1)1	GLOBAL BIND PHA3V = 5^24 + 0^18 + 51;		!VERSION DATE: 1
	4-OCT-76
1)	%(
****
2)1	GLOBAL BIND PHA3V = 5^24 + 1^28 + 52;		!VERSION DATE: 1
	4-AUG-77
2)	%(
**************
1)1	)%
****
2)1	******	BEGIN VERSION 5A	******
2)	52	607	22685	GENERATE ZERO-ARG-BLOCK ONLY IF NEEDED (
	IE, IF
2)				  NEDZER SET)
2)	)%
**************
1)1		EXTERNAL ZERBLK;
****
2)1	%[607]%	EXTERNAL NEDZER;	! FLAG TO INDICATE IF ZERO-ARG-B
	LOCK NEEDED
2)		EXTERNAL ZERBLK;
**************
1)1		ZERBLK_GENLAB();
****
2)1	%[607]%	NEDZER _ 0;	! INITIALIZE TO "ZERO-ARG-BLOCK NOT NEED
	ED"
2)		ZERBLK_GENLAB();
**************
1)1		PSYMPTR_PBF2NOSYM;
1)		PBOPWD_0;
1)		OBUFFA();
1)		DEFLAB(.ZERBLK);
1)		PSYMPTR_PBF2NOSYM;
1)		PBOPWD_0;
1)		OBUFFA();
1)		%(OUTPUT THE ARGUMENT BLOCKS FOR ANY CALL STATEMENTS
****
2)1	%[607]%	IF .NEDZER NEQ 0		! IS ZERO-ARG-BLOCK NEED
	ED ?
2)	%[607]%	  THEN BEGIN
2)		    PSYMPTR_PBF2NOSYM;
2)		    PBOPWD_0;
2)		    OBUFFA();
2)		    DEFLAB(.ZERBLK);
2)		    PSYMPTR_PBF2NOSYM;
2)		    PBOPWD_0;
2)		    OBUFFA();
Digital Equipment Corporation       27-OCT-77    Page 282
PCO Log Report


2)	%[607]%	  END;		! OF IF .NEDZER NEQ 0 THEN BEGIN
2)		%(OUTPUT THE ARGUMENT BLOCKS FOR ANY CALL STATEMENTS
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 283
PCO Log Report



                   *********************
                   *PCO #:10-F10   -261*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(610)

[Date Entered]          30-AUG-77

[Programmer]            EKLUND

[Routines]              OPGNTA

[Key Words]             ICE         COMPLEX CN  CODE GENER

[Source Before Edit]    %5A  (000610)

[Source After Edit]     %5A  (000611)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-23662
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 284
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Certain compile  time  constants  which  require  calculation  at
compile   time   can   cause  internal  compiler  errors  during  code
generation.  The constants are of the form:  P2P1*(INT,0.0) where P2P1
is  a  constant which is a power of two plus one and INT is a constant
which has an internal representation whose right half  is  zero  (like
1.0, 4.0, etc.)
 

                        **********


[DIAGNOSIS]
 
 
     Code generation was not prepared to handle  this  rather  obscure
case  (if  the  program  is  optimized,  for  example, the constant is
completely folded early during the compilation,  and  no  problem  can
result!).
 

                        **********


[CURE]
 
 
     Add the code generation templates in code generation so  that  no
error will be reported, and correct code generated.
 
Digital Equipment Corporation       27-OCT-77    Page 285
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1011 19-AUG-1977
File 2)	FTN:COMMAN.611[30,4515]	created: 1440 30-AUG-1977
 
1)1	TITLE	FTNCMD	%5A(610) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 18-A
	UG-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(611) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 30-A
	UG-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;611	OPGNTA(120)	23662	IMMEDIATE SIZE COMPLEX CONSTANTS
	 CAUSE
2)	;				TROUBLE FOR CODE GENERATION.
2)	;END REVISION HISTORY
**************
1)1	EDNUM==610	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==611	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 286
PCO Log Report


[FILCOM]
File 1)	FTN:OPGNTA.MAC[31,4650]	created: 0841 17-DEC-1976
File 2)	FTN:OPGNTA.611[30,4515]	created: 1551 29-AUG-1977
 
1)1		SUBTTL	S. MURPHY/SRM/HPW		10-APR-75
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
1)		INTERN	OPGNV
1)		OPGNV= BYTE (3)0(9)4(6)1(18)^D119		;VERSION
	DATE: 10-APR-75
1)		SUBTTL	REVISION HISTORY
****
2)1		SUBTTL	S. MURPHY/SRM/HPW/DCE			29-AUG-7
	7
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
2)		INTERN	OPGNV
2)		OPGNV= BYTE (3)0(9)5(6)1(18)^D120		;VERSION
	DATE: 29-AUG-77
2)		SUBTTL	REVISION HISTORY
**************
1)1		SUBTTL	CODE GENERATORS
****
2)1	;***** BEGIN VERSION 5A *****
2)	;120	611	23662	MULTIPLY OF COMPLEX CONSTANT BY POWER OF
	 TWO
2)	;			PLUS 1 IS NOT IMPLEMENTED.
2)		SUBTTL	CODE GENERATORS
**************
1)1		ILG		;IMMED COMPLEX SHOULD NEVER OCCUR
1)	;	  (P2PL1MUL NEGATED)
****
2)1	;**;[611], OPP21I+3L, DCE, 29-AUG-77
2)	;**;[611], ADD IMMEDIATE COMPLEX CONSTANTS - RARE, BUT DO OCCUR.
2)		-2,,P21ICM	;[611] IMMED, COMPLEX
2)	;	  (P2PL1MUL NEGATED)
**************
1)1		ILG		;IMMED, COMPLEX IS ILLEGAL
1)	;
****
2)1	;**;[611], OPP21I+7L, DCE, 29-AUG-77
2)	;**;[611], ADD IMMED COMPLEX NEGATIVE POWER OF TWO PLUS 1
2)		-2,,P21INM	;[611] IMMED, NEGATED, COMPLEX
2)	;
**************
1)1	;
****
2)1	;**;[611], BEFORE P21INX=., DCE, 29-AUG-77
2)	;**;[611], ADD COMPLEX CASE
2)		P21ICM=.	;[611] COMPLEX IMMED, MULTIPLIED BY POWE
	R OF 2 PLUS 1
Digital Equipment Corporation       27-OCT-77    Page 287
PCO Log Report


2)		FRRFC,,PTRA2	;[611]
2)		FSC	0,0	;[611]
2)	;
2)		FRRFC,,A1CNST	;[611]
2)		FADRI	0,0	;[611]
2)	;
**************
1)1	;
****
2)1	;**;[611], BEFORE P21MFX=., DCE, 29-AUG-77
2)	;**;[611], ADD CASE FOR COMPLEX
2)		P21INM=.	;[611] COMPLEX NEGATED MULTIPLIED BY
2)				;[611] POWER OF TWO PLUS 1
2)		FRRFC,,PTRA2	;[611]
2)		FSC	0,0	;[611]
2)	;
 
 
2)		FRRFC,,A1CNST	;[611]
2)		FSBRI	0,0	;[611]
2)	;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 288
PCO Log Report



                   *********************
                   *PCO #:10-F10   -262*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(611)

[Date Entered]          02-SEP-77

[Programmer]            EKLUND

[Routines]              IOPT      IOCLEA

[Key Words]             LOW CORE    OVERWRITTE  IOLIST      ARRCOUNT

[Source Before Edit]    %5A  (000611)

[Source After Edit]     %5A  (000612)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-23263
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 289
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Very uncommon problem which results  from  overwriting  a  single
location  in  low  core  during  compilation while processing I/O list
array element.  Actual symptom varies from internal compiler error  to
bad code.
 

                        **********


[DIAGNOSIS]
 
 
     Edit 406 introduced variable ARRCOUNT for the detection of nested
array references in I/O lists, but the edit omitted the initialization
of ARRCOUNT.  If a previous segment  of  the  compilation  happens  to
leave the value one in this location, then unexpected results occur.
 

                        **********


[CURE]
 
 
     Initialize ARRCOUNT properly in IOCLEAR.
 
Digital Equipment Corporation       27-OCT-77    Page 290
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1440 30-AUG-1977
File 2)	FTN:COMMAN.612[30,4515]	created: 1358 02-SEPT-1977
 
1)1	TITLE	FTNCMD	%5A(611) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 30-A
	UG-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(612) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 2-SE
	P-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;612	IOPT(52)	23263	INITIALIZE ARRCOUNT IN IOCLEAR (
	THIS
2)	;				COMPLETES EDIT 406).
2)	;END REVISION HISTORY
**************
 
Digital Equipment Corporation       27-OCT-77    Page 291
PCO Log Report


[FILCOM]
File 1)	FTN:IOPT.BLI[31,4650]	created: 0838 17-DEC-1976
File 2)	FTN:IOPT.612[30,4515]	created: 1337 02-SEPT-1977
 
1)1	GLOBAL BIND IOPTV = 5^24 + 0^18 + 51;	!VERSION DATE:	14-Oct-7
	6
1)	%(
****
2)1	GLOBAL BIND IOPTV = 5^24 + 0^18 + 52;	!VERSION DATE:	2-SEP-77
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	52	612	23263	EDIT 406 NEEDS INITIALIZATION OF ARRCOUN
	T.
2)	)%
**************
1)1	IF (PREVELEM_.STMT[IOLIST]) NEQ 0 THEN
****
2)1	!**;[612], IOCLEAR @7301, DCE, 2-SEP-77
2)	!**;[612], EDIT 406 DID NOT INITIALIZE ARRCOUNT - DO IT HERE
2)	ARRCOUNT _ 0;	![612]
2)	IF (PREVELEM_.STMT[IOLIST]) NEQ 0 THEN
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 292
PCO Log Report



                   *********************
                   *PCO #:10-F10   -263*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(612)

[Date Entered]          04-SEP-77

[Programmer]            STAN WHITLOCK

[Routines]              CGDO      CGPROE

[Key Words]             ENTRY       PROLOGUE    FORMALFUNC

[Source Before Edit]    %5A  (000612)

[Source After Edit]     %5A  (000613)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-QA2114
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 293
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
An ENTRY statement with a formal parameter which is a function (ie, used
in  a  CALL statement), following a CALL to that formal (from a previous
ENTRY, SUBROUTINE or FUNCTION statement which  passes  the  same  formal
parameter), generates incorrectly a store INDIRECT when making the local
copy of the actual parameter.  This results in a branch to location 0 at
runtime.
 

                        **********


[DIAGNOSIS]
 
The address target field in  the  symbol  table  entry  for  the  formal
parameter  has the indirect bit set after the first CALL statement which
references the formal.  The code generated by CGPROEPI uses  the  target
field  as the store address, incorrectly setting the indirect bit, which
means the actual parameter is stored into location 0 and not  the  local
at  runtime  so  a CALL tries branching indirect through a word of 0 and
ends up at location 0.
 

                        **********


[CURE]
 
The indirect bit in the target field must stay on to ensure correct code
generation  for  all statements except ENTRY.  Therefore when generating
the prologue for ENTRY type statements, ignore the indirect bit  in  the
target field address of the formal parameter being prologued.
 
Digital Equipment Corporation       27-OCT-77    Page 294
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1358 02-SEPT-1977
File 2)	DSKC:COMMAN.MAC[31,4577]	created: 1325 04-SEPT-1977
 
1)1	TITLE	FTNCMD	%5A(612) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 2-SE
	P-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(613) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 4-SE
	P-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;613	CGDO(140)	QA2114	IGNORE INDIRECT BIT IN FORMAL FU
	NCTION
2)	;				  TARGET IN ENTRY PROLOGUE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==612	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==613	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 295
PCO Log Report


[FILCOM]
File 1)	LIB:CGDO.BLI[31,4650]	created: 1011 14-AUG-1977
File 2)	DSKC:CGDO.BLI[31,4577]	created: 1347 04-SEPT-1977
 
1)1	GLOBAL BIND CGDOV = 5^24 + 1^18 + 137;	!VERSION DATE: 14-AUG-77
1)	%(
****
2)1	GLOBAL BIND CGDOV = 5^24 + 1^18 + 140;	!VERSION DATE: 4-SEP-77
2)	%(
**************
1)1	)%
****
2)1	140	613	QA2114	IGNORE INDIRECT BIT IN FORMAL FUNCTION T
	ARGET
2)				  ON ENTRY PROLOGUE
2)	)%
**************
1)1					IF NOT .ARGLSTPT[.I,ENTGALLOCFLG
	] THEN
1)						CGOPGEN();
1)				END;
****
2)1	!**[613] CGPROEPI @3745  SJW  4-SEP-77
2)	%[613]%				IF NOT .ARGLSTPT [.I, ENTGALLOCF
	LG]
2)	%[613]%				  THEN BEGIN
2)	%[613]%				    NEDTOSAV _ .A1NODE [IDTARGET
	] AND INDBIT;			! SAVE CURRENT INDIRECT FLAG OF
	FORMAL
2)	%[613]%				    A1NODE [IDTARGET] _ .A1NODE
	[IDTARGET] AND (NOT INDBIT);	! TURN OFF INDIRECT FLAG
2)	%[613]%				    CGOPGEN ();			
					! GENERATE STORE CODE
2)	%[613]%				    A1NODE [IDTARGET] _ .A1NODE
	[IDTARGET] OR .NEDTOSAV;	! RESTORE INDIRECT FLAG
2)	%[613]%				  END;
2)				END;
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 296
PCO Log Report



                   *********************
                   *PCO #:10-F10   -264*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5A(613)

[Date Entered]          04-SEP-77

[Programmer]            STAN WHITLOCK

[Routines]              LISTOU    LINEMA

[Key Words]             /LNMAP      BLANKLINES  WASTE

[Source Before Edit]    %5A  (000613)

[Source After Edit]     %5A  (000614)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-23760
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 297
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
The line-number/octal-location map generated by /LNMAP contains numerous
blank  lines  and wastes much paper when the input file is sequenced (eg
with SOS) with a large increment.
 

                        **********


[DIAGNOSIS]
 
Even though the documentation warns of such a situation,  large  amounts
of paper can be wasted.
 

                        **********


[CURE]
 
The code which computes the next line to output should not print any row
labels until the next line-number falls in that output row.
 
Digital Equipment Corporation       27-OCT-77    Page 298
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1325 04-SEPT-1977
File 2)	DSKC:COMMAN.MAC[31,4577]	created: 1500 04-SEPT-1977
 
1)1	TITLE	FTNCMD	%5A(613) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 4-SE
	P-77
****
2)1	TITLE	FTNCMD	%5A(614) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 4-SE
	P-77
**************
1)1	;END REVISION HISTORY
****
2)1	;614	LISTOU(61)	23760	OUTPUT ONLY NON-BLANK LINES ON /
	LNMAP
2)	;END REVISION HISTORY
**************
1)1	EDNUM==613	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==614	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 299
PCO Log Report


[FILCOM]
File 1)	LIB:LISTOU.BLI[31,4650]	created: 1646 31-MAR-1977
File 2)	DSKC:LISTOU.BLI[31,4577]	created: 1437 04-SEPT-1977
 
1)1	GLOBAL BIND LISOV = 5^24 + 1^18 + 60;		!VERSION DATE: 3
	1-MAR-77
1)	%(
****
2)1	GLOBAL BIND LISOV = 5^24 + 1^18 + 61;		!VERSION DATE: 4
	-SEP-77
2)	%(
**************
1)1	)%
****
2)1	61	23760	614	OUTPUT ONLY NON-BLANK LINES IN /LNMAP
2)	)%
**************
1)1			    IF .LMRONO LSS 999
1)			      THEN BEGIN
****
2)1	!**[614]  LINEMAP @3683  SJW  4-SEP-77
2)	%[614]%		    IF (LMRONO _ (.IISN DIV 10) - 1) LSS 999
2)			      THEN BEGIN
**************
1)1			  END
****
2)1	!**[614]  LINEMAP @BEFORE 3703  SJW  4-SEP-77
2)	%[614]%		    LMLINO _ .LMRONO * 10 - 1;
2)			  END
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 300
PCO Log Report



                   *********************
                   *PCO #:10-F10   -265*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(614)

[Date Entered]          19-SEP-77

[Programmer]            EKLUND

[Routines]              PH3G      GETPRE

[Key Words]             OPTIMIZER   BAD CODE    PRELOAD     REGISTERS

[Source Before Edit]    %5A  (000614)

[Source After Edit]     %5A  (000615)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-23116
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 301
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Bad  code  may  be  generated  when  using  the  optimizer  on  a
subroutine  which begins with a labeled statement.  There must be a DO
loop soon after the beginning of the subroutine, and the MACRO listing
of  the  program  will  erroneously  have placed the initial label one
statement too far down in the listing.
 

                        **********


[DIAGNOSIS]
 
 
     This appears to be a rare case where the optimizer gets a  little
confused  when  preloading registers for a DO loop.  The preloading of
registers is attempted as far back before the DO loop as possible,  in
particular, just prior to the previous basic block if possible.  There
is a need, therefore, to move the label (if any) which might occur  on
such a basic block to the beginning of the preload code, provided this
code does indeed precede the basic block.   There  are  a  few  cases,
however,  where  the preload is done just after the first statement of
the basic block, in which case the label which  occurs  on  the  first
statement  of  the  basic  block  need not be moved - in fact bad code
results if it is moved!
 

                        **********


[CURE]
 
 
     Do not move the label in the case outlined above.
 
Digital Equipment Corporation       27-OCT-77    Page 302
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1500 04-SEPT-1977
File 2)	FTN:COMMAN.615[30,4515]	created: 1537 19-SEPT-1977
 
1)1	TITLE	FTNCMD	%5A(614) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 4-SE
	P-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(615) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 19-S
	EP-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;615	PH3G(245)	23116	BE CAREFUL WITH LABELS WHEN PREL
	OADING
2)	;END REVISION HISTORY
**************
1)1	EDNUM==614	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==615	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 303
PCO Log Report


[FILCOM]
File 1)	FTN:PH3G.BLI[31,4650]	created: 0937 11-FEB-1977
File 2)	FTN:PH3G.615[30,4515]	created: 1539 19-SEPT-1977
 
1)1	GLOBAL BIND PH3GV = 5^24 + 0^18 + 244;	!VERSION DATE: 25-OCT-76
1)	%(
****
2)1	GLOBAL BIND PH3GV = 5^24 + 1^18 + 245;	!VERSION DATE: 19-SEP-77
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	245	23116	615	WHEN PRELOADING REGISTERS, BE CAREFUL WI
	TH
2)				THE PLACEMENT OF LABELS.
2)	)%
**************
1)1			BEGIN
****
2)1	!**;[615], GETPRELOAD @5088, DCE, 19-SEP-77
2)	!**;[615], WE MUST BE MORE CAREFUL HERE IN CASE THE PRELOAD HAS
	BEEN
2)	!**;[615], DONE AFTER THE STATEMENT AT PREVBB.  THIS MAY BE THE
2)	!**;[615], CASE IF THE PREVIOUS BASIC BLOCK BEGINS THE SUBROUTIN
	E,
2)	!**;[615], AND IS LABELED.  IN THIS CASE, THE DANGER IS THAT THE
	 LABEL
2)	!**;[615], WOULD BE MOVED DOWN IN THE CODE TO THE PRELOAD LOCATI
	ON WHICH
2)	!**;[615], IS NOT THE INTENT!
2)	%[615]%		IF .PREVBB[SRCLINK] NEQ .PRELLOC THEN
2)			BEGIN
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 304
PCO Log Report



                   *********************
                   *PCO #:10-F10   -266*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(615)

[Date Entered]          21-SEP-77

[Programmer]            EKLUND

[Routines]              STREGA    ALCIOC

[Key Words]             ICE         IO LIST     REG ALLOC

[Source Before Edit]    %5A  (000615)

[Source After Edit]     %5A  (000616)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-22345
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 305
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Internal compiler error may result while attempting  to  allocate
registers  for  I/O  lists  which  uses exactly all the remaining free
registers.  In general this is rare, but might occur  more  frequently
for  programs  which  use  double precision heavily or which have very
large I/O lists.
 

                        **********


[DIAGNOSIS]
 
 
     While allocating registers for I/O list elememts, there may be  a
set of registers which are already allocated which contain some of the
elements in the list.  In  this  case,  no  actual  allocation  of  an
additional  register is required, nor is it performed.  Unfortunately,
the algorithm used to allocate for the list elements first attempts to
get  a  free  register  to  use  (without  making enough checks to see
whether it needs a new register).  If all registers are in  use,  this
results in the internal compiler error termination.
 

                        **********


[CURE]
 
 
     Before getting a free register (which may not  exist),  check  to
see  if  one  is  really  needed  in the case that the list element is
already living in a register.
 
Digital Equipment Corporation       27-OCT-77    Page 306
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1537 19-SEPT-1977
File 2)	DSKB:COMMAN.616[30,4515]	created: 1313 21-SEPT-1977
 
1)1	TITLE	FTNCMD	%5A(615) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 19-S
	EP-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(616) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 21-S
	EP-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;616	STREGA(218)	22345	I/O LIST UNDER REGISTER SCARCITY
	 GIVES ICE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==615	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==616	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 307
PCO Log Report


[FILCOM]
File 1)	FTN:STREGA.BLI[30,4515]	created: 1340 20-SEPT-1977
File 2)	DSKB:STREGA.616[30,4515]	created: 1307 21-SEPT-1977
 
1)1	GLOBAL BIND STREV = 5^24 + 1^18 + 217;	!VERSION DATE: 14-MAR-77
1)	%(
****
2)1	GLOBAL BIND STREV = 5^24 + 1^18 + 218;	!VERSION DATE: 21-SEP-77
2)	%(
**************
1)1	)%
****
2)1	218	616	22345	BE CAREFUL ALLOCATING NEW REGISTER FOR I
	/O LIST ELEMENT
2)	)%
**************
1)1	%[NEW]%	THEN IF .ARGNODE[OPRCLS] NEQ REGCONTENTS
1)				THEN	![311] THE VALUE OF THIS ITEM
****
2)1	!**;[616], ALCIOCALL @5622, DCE, 21-SEP-77
2)	!**;[616], DO NOT NEED TO GET A NEW REGISTER IF THIS ELEMENT IS
	A REGCONTENTS NODE
2)			%[616]%	THEN IF .ARGNODE[OPRCLS] NEQ REGCONTENTS
2)				THEN	![311] THE VALUE OF THIS ITEM
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 308
PCO Log Report



                   *********************
                   *PCO #:10-F10   -267*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(616)

[Date Entered]          22-SEP-77

[Programmer]            STAN WHITLOCK

[Routines]              UTIL      LEAFSU

[Key Words]             ARRAYREF    FUNC ACTUA  CONST SUBS

[Source Before Edit]    %5A  (000616)

[Source After Edit]     %5A  (000617)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-QA2121
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 309
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
Bad code is generated by the optimizer for the address of an array  with
a  constant  subscript  which  is an actual argument to a function which
has, as another argument, a constant expression.  The function call must
be inside a DO loop.
 

                        **********


[DIAGNOSIS]
 
When the optimizer tries to move the constant expression in the function
call  actual  out  of the loop, it searches the entire function argument
list looking for candidates.  Since the subscript on the array reference
is  a constant, the subscript pointer (ARG2PTR) is 0 but the "is a leaf"
flag (A2VALFLG) is set.  LEAFSUBSTITUTE always tries to do the  constant
expression  substitution  on the subscript field without checking to see
if there is a subscript present.  LOKA2 does  the  actual  substitution,
and  finds that a null entry in the substitution list (ie, a value of 0)
matches the subscript pointer and substitutes garbage.
 

                        **********


[CURE]
 
Fix LEAFSUBSTITUTE to try substitution on  the  subscript  field  of  an
array reference only if it is not 0.
 
Digital Equipment Corporation       27-OCT-77    Page 310
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1313 21-SEPT-1977
File 2)	DSKC:COMMAN.MAC[31,4577]	created: 0954 22-SEPT-1977
 
1)1	TITLE	FTNCMD	%5A(616) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 21-S
	EP-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(617) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 22-S
	EP-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;617	UTIL(87)	QA2121	ONLY TRY TO SUBSTITUTE THE SUBSC
	RIPT OF
2)	;				  AN ARRAYREF IF IT ISN'T A CONS
	TANT
2)	;END REVISION HISTORY
**************
1)1	EDNUM==616	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==617	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 311
PCO Log Report


[FILCOM]
File 1)	LIB:UTIL.BLI[31,4650]	created: 0847 17-DEC-1976
File 2)	DSKC:UTIL.BLI[31,4577]	created: 0945 22-SEPT-1977
 
1)1	!AUTHORS: NORMA ABEL AND SARA MURPHY/HPW/DCE
1)	MODULE UTIL(RESERVE(0,1,2,3),SREG=#17,VREG=#15,FREG=#16,DREGS=4,
	GLOROUTINES)=
1)	BEGIN
1)	GLOBAL BIND UTILV = 5^24 + 0^18 + 86;	!VERSION DATE:	27-Sep-7
	6
1)	%(
****
2)1	!AUTHORS: NORMA ABEL AND SARA MURPHY/HPW/DCE/SJW
2)	MODULE UTIL(RESERVE(0,1,2,3),SREG=#17,VREG=#15,FREG=#16,DREGS=4,
	GLOROUTINES)=
2)	BEGIN
2)	GLOBAL BIND UTILV = 5^24 + 1^18 + 87;	!VERSION DATE:	22-Sep-7
	7
2)	%(
**************
1)1	)%
****
2)1	*****	BEGIN VERSION 5A	*****
2)	87	617	QA2121	ONLY TRY TO SUBSTITUTE THE SUBSCRIPT OF
	AN
2)				  ARRAYREF IF IT ISN'T A CONSTANT
2)	)%
**************
1)1		LOKA2(.EXPR);
1)	!CMNSUB
****
2)1	!**[617] LEAFSUBSTITUTE @3674  SJW  22-SEP-77
2)	![617] IF SUBSCRIPT IS CONSTANT, ARG2PTR = 0 AND CAN'T SUBSTITUT
	E
2)	%[617]%	IF .EXPR [ARG2PTR] NEQ 0
2)	%[617]%	  THEN LOKA2 (.EXPR);
2)	!CMNSUB
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 312
PCO Log Report



                   *********************
                   *PCO #:10-F10   -268*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(617)

[Date Entered]          22-SEP-77

[Programmer]            EKLUND

[Routines]              COMSUB    CMNLNK

[Key Words]             ICE         IO LIST     DOUBLE      PRECISION

[Source Before Edit]    %5A  (000617)

[Source After Edit]     %5A  (000620)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-23720
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 313
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     Various  kinds  of  internal  compiler  errors  may  occur  while
compiling  a program which contains double precision arrays in READ or
WRITE statement lists.  The array may or may not be subscripted in the
I/O  list,  and  if  the  same  program  is  compiled unoptimized, the
offending statement code will  reveal  that  some  minimum  amount  of
calculation was necessary to set up the array reference(s).
 

                        **********


[DIAGNOSIS]
 
 
     This  is  strictly  an  internal  error   which   occurs   during
optimization due to the to the way in which the I/O list is optimized.
What happened was that a transformation was done to an expression node
whose  parent  node  was  of  type  IOLSCLS,  and  when  the resulting
transformed expression node attempts to replace its older version, the
pointer  is  deposited  in  the  wrong  location  in  the  parent node
resulting in unpredictable results later on.
 

                        **********


[CURE]
 
 
     When linking in such a transformed node to  the  parent,  make  a
special  check  for  a  parent  which  is an IOLSCLS node, and link in
correctly!
 
Digital Equipment Corporation       27-OCT-77    Page 314
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 0954 22-SEPT-1977
File 2)	FTN:COMMAN.620[30,4515]	created: 1457 22-SEPT-1977
 
1)1	TITLE	FTNCMD	%5A(617) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 22-S
	EP-77
****
2)1	TITLE	FTNCMD	%5A(620) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 22-S
	EP-77
**************
1)1	;END REVISION HISTORY
****
2)1	;620	COMSUB(265)	23720	D.P. ARRAY REF IN IO LIST CAUSES
	 PROBLEMS
2)	;				DURING OPTIMIZATION (IOLSCLS NOD
	E PTRS)
2)	;END REVISION HISTORY
**************
1)1	EDNUM==617	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==620	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 315
PCO Log Report


[FILCOM]
File 1)	FTN:COMSUB.BLI[31,4650]	created: 0942 09-AUG-1977
File 2)	FTN:COMSUB.620[30,4515]	created: 1447 22-SEPT-1977
 
1)1	GLOBAL BIND COMSV = 5^24 + 1^18 + 264;	!VERSION DATE: 9-AUG-77
1)	%(
****
2)1	GLOBAL BIND COMSV = 5^24 + 1^18 + 265;	!VERSION DATE: 22-SEP-77
2)	%(
**************
1)1	)%
****
2)1	265	620	23720	D.P. ARRAY REF IN IO LIST CAUSES PROBLEM
	S
2)	)%
**************
1)1			IF .QQ[ARG1PTR] EQL .CNODE AND .QQ[OPRCLS] NEQ A
	RRAYREF THEN
****
2)1	!**;[620], CMNLNK @4431, DCE, 22-SEP-77
2)	!**;[620], IF THIS IS AN IOLSCLS NODE, WE HAVE TO BE VERY CAREFU
	L
2)	!**;[620], WITH WHERE WE TIE IN THE POINTER!
2)	%[620]%		IF .QQ[OPRCLS] EQL IOLSCLS THEN
2)	%[620]%		BEGIN
2)	%[620]%			IF .NAN THEN (T_.NEGT; FLAG_1);
2)	%[620]%			IF .QQ[SCALLELEM] EQL .CNODE
2)	%[620]%				THEN QQ[SCALLELEM]_.T
2)	%[620]%			ELSE IF .QQ[SCALLCT] EQL .CNODE
2)	%[620]%				THEN QQ[SCALLCT]_.T;
2)	%[620]%		END ELSE
2)			IF .QQ[ARG1PTR] EQL .CNODE AND .QQ[OPRCLS] NEQ A
	RRAYREF THEN
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page 316
PCO Log Report



                   *********************
                   *PCO #:10-F10   -269*
                   *********************


[Program Data]          System:   F10
                        Component:F10

[Validity]         5(515), TESTED IN 5A(620)

[Date Entered]          30-SEP-77

[Programmer]            EKLUND

[Routines]              LINESE    LISTNG

[Key Words]             LOOPING     PAGE MARK   EOF

[Source Before Edit]    %5A  (000620)

[Source After Edit]     %5A  (000621)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-QA2120
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page 317
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     If an input file ends with a page mark,  the  compiler  may  loop
around  the  last  input buffer since the end of file condition is not
detected.
 

                        **********


[DIAGNOSIS]
 
 
     After edit 561 is installed, it is  possible  to  make  recursive
calls  within the routine LINESEQNO to process consecutive page marks.
Before this recursion occurs, however, an  additional  check  must  be
made  to  see  if  the  line sequence bit is on in the next word to be
processed since LINESEQNO assumes that this check has been made  prior
to its being called.
 

                        **********


[CURE]
 
     Make the test to prevent cycling when end of file occurs after  a
page mark.
 
Digital Equipment Corporation       27-OCT-77    Page 318
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1457 22-SEPT-1977
File 2)	FTN:COMMAN.621[30,4515]	created: 1046 30-SEPT-1977
 
1)1	TITLE	FTNCMD	%5A(620) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 22-S
	EP-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(621) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 30-S
	EP-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;621	LISTNG(19)	QAR2120	ACCOUNT FOR PAGE MARKS AT END OF
	 FILE.
2)	;END REVISION HISTORY
**************
1)1	EDNUM==620	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==621	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page 319
PCO Log Report


[FILCOM]
File 1)	FTN:LISTNG.BLI[31,4650]	created: 1243 12-APR-1977
File 2)	FTN:LISTNG.621[30,4515]	created: 1042 30-SEPT-1977
 
1)1	GLOBAL BIND LISTV = 5^24 + 1^18 + 18;	! VERSION DATE: 12-APR-7
	7
1)	%(
****
2)1	GLOBAL BIND LISTV = 5^24 + 1^18 + 19;	! VERSION DATE: 30-SEP-7
	7
2)	%(
**************
1)1	)%
****
2)1	19	621	QAR2120	MODIFY EDIT 561 IN CASE PAGE MARK ENDS F
	ILE.
2)	)%
**************
1)1	%[561]%				RETURN LINESEQNO(@PTRPTR); ! GET
	 REAL LSN
1)	%[561]%			END
****
2)1	!**;[621], LINESEQNO @532 (IN EDIT 621), DCE, 30-SEP-77
2)	!**;[621], BEFORE RECURSION, CHECK LINE SEQUENCE BIT (MAY BE AT
	END OF FILE).
2)	%[621]%				IF @@@PTRPTR THEN RETURN LINESEQ
	NO(@PTRPTR); ! GET REAL LSN
2)	%[561]%			END
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page   1
PCO Log Report



                   *********************
                   *PCO #:20-FORTRA-002*
                   *********************


[Program Data]          System:   F20
                        Component:FORTRA

[Validity]         5A(540)

[Date Entered]          08-MAR-77

[Programmer]            STAN WHITLOCK

[Routines]              READTX    LISTNG

[Key Words]             TTY: INPUT  LASTCHARAC  CONTROL-Z

[Source Before Edit]    %5A  (000540)

[Source After Edit]     %5A  (000541)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:20-NONE
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page   2
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
On the -20 only, after giving a command which gets its source file  from
TTY:,  if  the next command specifies TTY:  for source input, FORTRAN-20
responds with only an *.
 

                        **********


[DIAGNOSIS]
 
The TTY:  source input for the  -20  simulates  end-of-file  by  setting
LASTCHARACTER  to  a  control-Z.   LASTCHARACTER  is  then  checked  for
end-of-file but never cleared before the next command  line  is  gotten.
Therefore,  if the next command line uses TTY:  for the source file, the
source  input  routine  thinks  end-of-file  has  been   sensed   (since
LASTCHARACTER  is  still  control-Z)  and  simply  returns  for the next
command.
 

                        **********


[CURE]
 
Clear LASTCHARACTER in READTXT in  LISTNG.BLI  after  the  TTY:   source
input routine senses control-Z.
 
Digital Equipment Corporation       27-OCT-77    Page   3
PCO Log Report


[FILCOM]
File 1)	DSKC:COMMAN.MAC[31,4577]	created: 1029 08-MAR-1977
File 2)	LIB:COMMAN.MAC[31,4650]	created: 0818 08-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(540) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 7-MA
	R-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(541) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 8-MA
	R-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;541	LISTNG(16)	-----	-20 ONLY: CLEAR LASTCHARACTER IN
	 READTXT
2)	;				  AFTER ^Z SEEN SO MORE TTY: INP
	UT MAY
2)	;				  BE DONE
2)	;END REVISION HISTORY
**************
1)1	EDNUM==540	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==541	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page   4
PCO Log Report


[FILCOM]
File 1)	DSKC:LISTNG.BLI[31,4577]	created: 1026 08-MAR-1977
File 2)	LIB:LISTNG.BLI[31,4650]	created: 0758 08-MAR-1977
 
1)1	GLOBAL BIND LISTV = 5^24 + 1^18 + 15;	! VERSION DATE: 23-FEB-7
	7
1)	%(
****
2)1	GLOBAL BIND LISTV = 5^24 + 1^18 + 16;	! VERSION DATE: 8-MAR-77
2)	%(
**************
1)1	)%
****
2)1	16	541	-----	-20 ONLY: CLEAR LASTCHARACTER IN READTXT
	 AFTER
2)				  ^Z SEEN SO MORE TTY: INPUT MAY BE DONE
2)	)%
**************
1)1		THEN	RETURN	CHK4MORE();
1)		R1 _  .XDEVJFN(SRC);
****
2)1	!**[541]  READTXT @865  SJW  8-MAR-77
2)	!**[541]  -20 ONLY: CLEAR LASTCHARACTER AFTER ^Z SO MORE TTY: IN
	PUT MAY BE DONE
2)	%[541]%	  THEN BEGIN
2)	%[541]%	    LASTCHARACTER _ 0;
2)	%[541]%	    RETURN CHK4MORE ();
2)	%[541]%	  END;
2)		R1 _  .XDEVJFN(SRC);
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page   5
PCO Log Report



                   *********************
                   *PCO #:20-FORTRA-003*
                   *********************


[Program Data]          System:   F20
                        Component:FORTRA

[Validity]         4A(317), 5(515), TESTED IN 5A(543)

[Date Entered]          10-MAR-77

[Programmer]            EKLUND

[Routines]              FINDST    FIRST

[Key Words]             FIND STMNT  ICE         CORE OVERW

[Source Before Edit]    %5A  (000543)

[Source After Edit]     %5A  (000544)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:20-10290
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page   6
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     The reported symptom was an internal compiler  error,  but  there
could  be other symptoms since one word of core is being inadvertently
overwritten for each FIND statement in the user program.
 

                        **********


[DIAGNOSIS]
 
 
     When allocating space for a FIND statement node, only seven words
are  allocated when eight are needed.  This causes the next word to be
overwritten during the processing of the FIND statement, and depending
upon what is there, one will get unexpected results.
 

                        **********


[CURE]
 
 
     Change the size of the FIND statement node  so  that  it  is  big
enough  to  hold  all  the fields necessary.  Notice that one needs to
recompile the module STA1.BLI to install this patch correctly.
 
Digital Equipment Corporation       27-OCT-77    Page   7
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1325 10-MAR-1977
File 2)	FTN:COMMAN.544[30,4515]	created: 1628 10-MAR-1977
 
1)1	TITLE	FTNCMD	%5A(543) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 10-M
	AR-77
****
2)1	TITLE	FTNCMD	%5A(544) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 10-M
	AR-77
**************
1)1	;END REVISION HISTORY
****
2)1	;544	FIRST(127)	10290	FIND STMNT NODE TOO SMALL - EXPA
	ND IT
2)	;END REVISION HISTORY
**************
1)1	EDNUM==543	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==544	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page   8
PCO Log Report


[FILCOM]
File 1)	FTN:FIRST.BLI[31,4650]	created: 0836 17-DEC-1976
File 2)	FTN:FIRST.544[30,4515]	created: 1601 10-MAR-1977
 
1)1	!FIRST VERSION #40
1)	GLOBAL BIND FIRSV =2^24+0^18+126;	!VERSION DATE: 18-APR-74
1)	%(
****
2)1	GLOBAL BIND FIRSV =5^24+1^18+127;	!VERSION DATE: 10-MAR-77
2)	%(
**************
1)1	)%
****
2)1	***** BEGIN VERSION 5A *****
2)	127	544	10290	FIND STATEMENT NEEDS MORE ROOM FOR ERR A
	ND END
2)	)%
**************
1)1			FINDSIZ = 3,
1)			READSIZ = 4,
****
2)1		!**;[544], FIRST @538 LINES,DCE, 10-MAR-77
2)		!**;[544], THE FIND STATEMENT NEEDS MORE ROOM FOR IOERR
	AND IOEND
2)		%[544]%	FINDSIZ = 4,
2)			READSIZ = 4,
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page   9
PCO Log Report



                   *********************
                   *PCO #:20-FORTRA-004*
                   *********************


[Program Data]          System:   F20
                        Component:FORTRA

[Validity]         5A(557)

[Date Entered]          11-APR-77

[Programmer]            STAN WHITLOCK

[Routines]              COMMAN    XFILCV

[Key Words]             PPN         PPNST       DIRST

[Source Before Edit]    %5A  (000557)

[Source After Edit]     %5A  (000560)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:20-NONE
                        Critical:      Y


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  10
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
 
 
Fortran-20 does not recognize -10 style ppn's as file qualifiers in  the
command line.
 

                        **********


[DIAGNOSIS]
 
When Fortran-20 was partially JSYSized, ppn's were  ignored  since  they
were a -10 relic which was to vanish.  Of course, they didn't.
 

                        **********


[CURE]
 
-20 SCAN gets the ppn correctly but Fortran uses a GTJFN to  select  its
files.  Therefore, the ppn must be translated back into a directory name
for the GTJFN.  Under version 1B of TOPS-20, the DIRST JSYS  does  this.
For  version  2  of  TOPS-20, the PPNST JSYS does it in a different way.
Since PPNST is not defined under  1B,  if  PPNST  fails  because  it  is
undefined, assume we are under 1B and use DIRST.
 
Digital Equipment Corporation       27-OCT-77    Page  11
PCO Log Report


[FILCOM]
File 1)	LIB:COMMAN.MAC[31,4650]	created: 1417 06-APR-1977
File 2)	DSKC:COMMAN.MAC[31,4577]	created: 1448 11-APR-1977
 
1)1	TITLE	FTNCMD	%5A(557) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 6-AP
	R-77
****
2)1	TITLE	FTNCMD	%5A(560) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 6-AP
	R-77
**************
1)1	;END REVISION HISTORY
****
2)1	;560	COMMAN(560)	-----	-20 ONLY: HANDLE PPNS IN THE COM
	MAND LINE CORRECTLY
2)	;END REVISION HISTORY
**************
1)1	EDNUM==557	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==560	;EDIT NUMBER
2)	JOBVER=137
**************
1)1	;**;[271],COMMAN,JNT,02-MAY-75
****
2)1	;**[560] INSERT AFTER "SEARCH FTTENX"  SJW  6-APR-77
2)		IFN FTTENX,<	SEARCH MONSYM	>	;[560]
2)		IF2,<
2)			IFE FTTENX, <PRINTX ASSEMBLING FORTRAN-10 COMMAN
	>
2)			IFN FTTENX, <PRINTX ASSEMBLING FORTRAN-20 COMMAN
	>
2)		>				;[560]
2)	;**;[271],COMMAN,JNT,02-MAY-75
**************
1)1		MOVE	T3,[POINT 7,FILSPC]	;INITIAL POINTER
1)		;DEVICE
1)		SKIPN	T2,F.DEV(P1)	;GET DEVICE NAME
1)		JRST	NODEV		;NONE THERE
1)		PUSHJ	P,X6.7CV	;CONVERT
1)		MOVEI	T1,":"		;PUT IN COLON
1)		IDPB	T1,T3
1)	NODEV:
1)		SKIPN	T2,F.NAME(P1)		;FILE NAME
1)		JRST	NONAM			;NOPE
1)		PUSHJ	P,X6.7CV			;CONVERT IT
1)	NONAM:
****
Digital Equipment Corporation       27-OCT-77    Page  12
PCO Log Report


2)1	;**[560] @XFILCV  SJW  6-APR-77
2)		MOVE	T1,[ASCIZ /DSK:/]	;[560] DEFAULT DEVICE
2)		MOVEM	T1,FILSPC		;[560]  FOR PPNST
2)		MOVE	T3,[POINT 7,FILSPC,27]	;[560] PTR TO AFTER DEFA
	ULT DEV:
2)		SKIPN	T2,F.DEV(P1)		;GET DEVICE NAME
2)		JRST	NODEV			;NONE THERE
2)	;**[560] @XFILCV + 2.5L  SJW  6-APR-77
2)		SETZM	T1,FILSPC		;[560] CLEAR DEFAULT DEV
	ICE
2)		MOVE	T3,[POINT 7,FILSPC]	;[560] INITIAL POINTER
2)		PUSHJ	P,X6.7CV		;CONVERT
2)		MOVEI	T1,":"			;PUT IN COLON
2)		IDPB	T1,T3
2)	NODEV:
2)	;**[560] @NODEV  SJW  6-APR-77
2)		MOVX	T2,FX.DIR		;[560]
2)		TDNN	T2,.FXMOD(P1)		;[560] IS THERE A PPN?
2)		JRST	NOPPN			;[560] NO
2)		MOVE	T2,F.DIRM(P1)		;[560] IS PPN WILD?
2)		AOJN	T2,E.WILD		;[560] YES == ERROR
2)		MOVE	T1,[POINT 7,FILSPC]	;[560] PUT ANSWER HERE
2)		MOVE	T2,F.DIR(P1)		;[560] GET PPN
2)		MOVE	T4,T3			;[560] SAVE PTR TO AFTER
	 DEV: FOR DIRST
2)		MOVE	T3,T1			;[560] POINT TO DEV:
2)		PPNST				;[560] PPN TO DIRECTORY
2)		ERJMP	CHK1B			;[560] DIDN'T WORK: CHEC
	K FOR 1B
2)	PPNOK:					;[560]
2)		MOVE	T3,T1			;[560] T3 IS OUR FILE SP
	EC PTR
2)	NOPPN:					;[560]
2)		SKIPN	T2,F.NAME(P1)		;FILE NAME
2)		JRST	NONAM			;NOPE
2)		PUSHJ	P,X6.7CV		;CONVERT IT
2)	NONAM:
**************
1)1		;ROUTINE TO CONVERT 6BIT TO 7BIT
****
2)1	;**[560] INSERT @NULEXT + 3.5L  SJW  6-APR-77
2)	;[560] PPNST FAILED: IF IT FAILED BECAUSE THE JSYS WAS UNDEFINED
	,
2)	;[560]   THEN WE MUST BE RUNNING ON VERSION 1B MONITOR AND CAN U
	SE
2)	;[560]   DIRST TO CONVERT THE PPN TO A DIRECTORY
2)	CHK1B:					;[560]
2)		HRRZI	T1,400000		;[560] GET PROCESS HANDL
	E
2)		GETER				;[560] WHY DID PPNST FAI
	L?
Digital Equipment Corporation       27-OCT-77    Page  13
PCO Log Report


2)		HRRZ	T2,T2			;[560] REMOVE PROCESS HA
	NDLE
2)		CAIE	T2,ILINS2		;[560] IS PPNST JSYS DEF
	INED?
2)		JRST	FILERR			;[560] YES == VERSION 2
	ERROR
2)		HLRZ	T2,F.DIR(P1)		;[560] CHECK PROJECT #
2)		CAIE	T2,4			;[560] IS PROJ # = 4?
2)		JRST	PPN4ER			;[560] NO == ERROR
2)		HRRZ	T2,F.DIR(P1)		;[560] GET PROG # = DIRE
	CTORY #
2)		MOVE	T1,T4			;[560] GET PTR TO AFTER
	DEV: SAVED ABOVE
2)		MOVEI	T3,"<"			;[560]
2)		IDPB	T3,T1			;[560] PUT IN PUNCTUATIO
	N
2)		DIRST				;[560] PROG # TO DIRECTO
	RY
2)		  JRST	FILERR			;[560] PPN ERROR
2)		MOVEI	T3,">"			;[560]
2)		IDPB	T3,T1			;[560] PUT IN PUNCTUATIO
	N
2)		JRST	PPNOK			;[560]
2)		;ROUTINE TO CONVERT 6BIT TO 7BIT
**************
1)1	ERRST:			;ERROR ENTRY
****
2)1	;**[560] INSERT BEFORE ERRST  SJW  6-APR-77
2)	;[560] ROUTINE TO PROCESS WILD PPN ERRORS
2)	E.WILD:	MOVE	T1,[POINT 7,WLDERR]	;[560] GET ERROR MESSAGE
2)		PSOUT				;[560] DISPLAY IT
2)		JRST	ERRST			;[560] GET OUT
2)	WLDERR:	ASCIZ	/?FTNNWD Incorrect use of * or % in ppn
2)	/					;[560]
2)	;[560] PROJECT # MUST = 4 FOR DIRST JSYS ON TOPS-20 V1B
2)	PPN4ER:					;[560]
2)		MOVE	T1,[POINT 7,PRJERR]	;[560] GET ERROR MESSAGE
2)		PSOUT				;[560] DISPLAY IT
2)		JRST	ERRST			;[560] GET OUT
2)	PRJERR:	ASCIZ	/?FTNPN4 Project number must be 4 in ppn
2)	/					;[560]
2)	ERRST:			;ERROR ENTRY
**************
1)1		M.FAID	<FTNNCF Not enouGH core for file specs. Total K
	needed=>
1)					; FOR ERROR MESSAGES.
****
2)1		M.FAID	<FTNNCF Not enough core for file specs. Total K
	needed=>
2)					; FOR ERROR MESSAGES.
**************
Digital Equipment Corporation       27-OCT-77    Page  14
PCO Log Report



[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  15
PCO Log Report



                   *********************
                   *PCO #:20-FORTRA-005*
                   *********************


[Program Data]          System:   F20
                        Component:FORTRA

[Validity]         5(515), TESTED IN 5A(560)

[Date Entered]          12-APR-77

[Programmer]            EKLUND

[Routines]              LEXICA    LISTNG    LINESE    SPURFF

[Key Words]             PAGE MARKS  FORM FEEDS  CONTINUATI  LINES

[Source Before Edit]    %5A  (000560)

[Source After Edit]     %5A  (000561)

[Test File Data]            :           [        ]

[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:20-10429
                        Critical:      N


************************************************************************

[Notes]
Digital Equipment Corporation       27-OCT-77    Page  16
PCO Log Report

[PCO Write-up]



                        **********


[SYMPTOM]
 
 
     The FORTRAN compiler does not handle page marks and form feeds in
a  graceful  way.  The page mark causes an extra line to be printed at
the bottom of the previous page with zero line number,  and  both  the
page  mark  and  the  form  feed will not allow a continuation line to
follow them.
 

                        **********


[DIAGNOSIS]
 
 
     It is documented that a form feed character  (and  hence  a  page
mark  which  contains  a  form  feed) is a line terminator, and that a
blank line terminates a continuation sequence.  Thus the occurrence of
a  page mark has always been treated as a termination of any potential
continuation lines unless there was no other line terminator preceding
it  (which  is  difficult to achieve).  Since it is possible to insert
page marks in  an  indiscriminate  way  (every  50  source  lines  for
example),  it  seems  only  reasonable  that such insertion should not
cause a working program to not compile due  to  a  page  mark  falling
before  a  continuation  line.   Thus  this  case needs to be changed.
Furthermore, if such a file with page marks is unsequenced,  then  the
resulting file should also compile correctly which implies that a form
feed character should not terminate a  continuation  sequence  either.
The  form feed character is still treated as a line terminator too, as
has always been the case.  This change simply means that when  looking
for a continuation line, the compiler will be more flexible in the set
of characters which it is willing to skip over.
 

                        **********


[CURE]
 
 
     Allow form feed characters and page marks to occur  in  a  source
file  without  causing  the  termination  of  a potential continuation
sequence, and suppress the printing of the zero sequence number at the
bottom of pages terminated by a page mark.
Digital Equipment Corporation       27-OCT-77    Page  18
PCO Log Report


[FILCOM]
File 1)	FTN:COMMAN.MAC[31,4650]	created: 1448 11-APR-1977
File 2)	FTN:COMMAN.561[30,4515]	created: 1323 12-APR-1977
 
1)1	TITLE	FTNCMD	%5A(560) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
1)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 6-AP
	R-77
1)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
****
2)1	TITLE	FTNCMD	%5A(561) COMMAND SCANNER INTERFACE FOR FORTRAN C
	OMPILER
2)	SUBTTL	DONALD LEWINE/DAL/FI/HPW/DBT/NEA/MD/JNT/DCE/SJW/JNG 12-A
	PR-77
2)	;***COPYRIGHT 1972,1973,1974,1975,1976,1977 DIGITAL EQUIPMENT CO
	RP., MAYNARD, MASS. ***
**************
1)1	;END REVISION HISTORY
****
2)1	;561	LISTNG(18)	10429	ALLOW CONTINUATION LINES AFTER P
	AGE
2)	;	LEXICA(18)		MARKS AND FORM FEEDS
2)	;END REVISION HISTORY
**************
1)1	EDNUM==560	;EDIT NUMBER
1)	JOBVER=137
****
2)1	EDNUM==561	;EDIT NUMBER
2)	JOBVER=137
**************
 
Digital Equipment Corporation       27-OCT-77    Page  19
PCO Log Report


[FILCOM]
File 1)	FTN:LISTNG.BLI[31,4650]	created: 1551 31-MAR-1977
File 2)	FTN:LISTNG.561[30,4515]	created: 1243 12-APR-1977
 
1)1	GLOBAL BIND LISTV = 5^24 + 1^18 + 17;	! VERSION DATE: 31-MAR-7
	7
1)	%(
****
2)1	GLOBAL BIND LISTV = 5^24 + 1^18 + 18;	! VERSION DATE: 12-APR-7
	7
2)	%(
**************
1)1	)%
****
2)1	18	561	10429	PAGE MARKS SHOULD BE IGNORED DURING CONT
	INUATION
2)				LINE PROCESSING
2)	)%
**************
1)1	%[506]%	IF .T1 NEQ "	" THEN DECREMENT(@PTRPTR);
1)	%[506]%
****
2)1	!**;[561], LINESEQNO @534, DCE, 12-APR-77
2)	!**;[561], WE HAVE JUST SCANNED PAST A LINE SEQUENCE NUMBER, AND
	 NOW ARE
2)	!**;[561], LOOKING FOR A POTENTIAL TAB.  IT IS POSSIBLE THAT THE
	 LINE
2)	!**;[561], SEQUENCE NUMBER WAS REALLY PART OF A PAGE MARK IN WHI
	CH CASE
2)	!**;[561], THE NEXT WORD IS A CARRIAGE RETURN, FORM FEED, NUL, N
	UL, NUL.
2)	!**;[561], IF THIS IS THE CASE, SCAN PAST THIS ENTIRE WORD, PUTT
	ING OUT
2)	!**;[561], A NEW PAGE HEADER AS WE GO, AND LOOK FOR THE NEXT LIN
	E SEQUENCE
2)	!**;[561], NUMBER INSTEAD OF THE ZERO ONE WHICH WE HAVE JUST SEE
	N.
2)	%[561]%	IF .T1 NEQ "	"
2)	%[561]%	THEN
2)	%[561]%		IF (@@@PTRPTR EQL #643^#30 AND .LINESAVE EQL 0)
	THEN
2)	%[561]%			BEGIN ! A PAGE MARK HAS BEEN SEEN
2)	%[561]%				(@PTRPTR)<RIGHT>_@@PTRPTR+1;
2)	%[561]%				(@PTRPTR)<LEFT>_#440700;
2)	%[561]%				FNDFF_1;
2)	%[561]%				IF .FLGREG<LISTING> THEN (CHAROU
	T(FF); HEADING());
2)	%[561]%				RETURN LINESEQNO(@PTRPTR); ! GET
	 REAL LSN
2)	%[561]%			END
2)	%[561]%			ELSE DECREMENT(@PTRPTR);
Digital Equipment Corporation       27-OCT-77    Page  20
PCO Log Report


2)	%[506]%
**************
 
Digital Equipment Corporation       27-OCT-77    Page  21
PCO Log Report


[FILCOM]
File 1)	FTN:LEXICA.BLI[31,4650]	created: 1445 17-MAR-1977
File 2)	FTN:LEXICA.561[30,4515]	created: 1258 12-APR-1977
 
1)1	GLOBAL BIND LEXIV = 5^24 + 1^18 + 17;	!VERSION DATE: 17-MAR-77
1)	%(
****
2)1	GLOBAL BIND LEXIV = 5^24 + 1^18 + 18;	!VERSION DATE: 12-APR-77
2)	%(
**************
1)1	)%
****
2)1	18	561	10429	ALLOW CONTINUATION LINES AFTER FORM FEED
	S
2)				USED SOLELY TO SEPARATE PAGES.
2)	)%
**************
1)1		IF NOT SPURCR()
1)		THEN
****
2)1	!**;[561], MACRO ACMCLABLT @1324, DCE, 12-APR-77
2)	!**;[561], WE WANT TO IGNORE FORM FEEDS HERE - OTHERWISE THEY WI
	LL
2)	!**;[561], PREVENT CONTINUATION LINES AFTERWARDS
2)	%[561]%	IF NOT ( SPURCR() OR SPURFF())
2)		THEN
**************
1)1		 ROUTINE
1)	SPURCR  =
1)	BEGIN	% DETECTS SPURIOUS CR.  RETURNS 1 IF SPUR CR ,OUTPUTS ME
	SSAGE AND 0 IF NO SPURIOUSCR%
****
2)1	!**;[561], LEXICA @5478 (BEFORE ROUTINE SPURCR), DCE, 12-APR-77
2)	!**;[561], ADD NEW ROUTINE TO SCAN PAST FORM FEEDS WHICH ARE ENC
	OUNTERED
2)	!**;[561], WHILE ATTEMPTING TO FIND A CONTINUATION LINE.
2)	%[561]%	EXTERNAL FNDFF,CHAROUT,HEADING;
2)	%[561]%	ROUTINE SPURFF =
2)	%[561]%	BEGIN !DETECTS FORM FEED WHEN ATTEMPTING TO DETECT CONTI
	NUATION LINE.
2)	%[561]%		!THIS CONDITION WILL CAUSE PAGE HEADER TO BE PRI
	NTED, BUT
2)	%[561]%		!WILL NOT PROHIBIT A CONTINUATION LINE AFTER THI
	S!
2)	%[561]%
2)	%[561]%		REGISTER CHAR=3;
2)	%[561]%		IF .CHAR EQL FF
2)	%[561]%		THEN
2)	%[561]%			BEGIN
2)	%[561]%				LINEPTR_CONTPTR_.CURPTR;
2)	%[561]%				ISCAN(CHAR,CURPTR);
Digital Equipment Corporation       27-OCT-77    Page  22
PCO Log Report


2)	%[561]%				FNDFF_1;
2)	%[561]%				IF .FLGREG<LISTING> THEN (CHAROU
	T(FF); HEADING());
2)	%[561]%				RETURN 1;
2)	%[561]%			END
2)	%[561]%		ELSE RETURN 0;
2)	%[561]%	END; !OF ROUTINE SPURFF
2)	%[561]%
2)	%[561]%	ROUTINE SPURCR =
2)	BEGIN	% DETECTS SPURIOUS CR.  RETURNS 1 IF SPUR CR ,OUTPUTS ME
	SSAGE AND 0 IF NO SPURIOUSCR%
**************

[End PCO Write-up]
Digital Equipment Corporation       27-OCT-77    Page  23
PCO Log Report