Trailing-Edge
-
PDP-10 Archives
-
BB-4157D-BM
-
documentation/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*