Trailing-Edge
-
PDP-10 Archives
-
FORTRAN-10_Alpha_31-jul-86
-
gopt2.bli
There are 12 other files named gopt2.bli in the archive. Click here to see a list.
!COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1973, 1986
!ALL RIGHTS RESERVED.
!
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
!ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
!INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
!COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
!OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
!TRANSFERRED.
!
!THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
!AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
!CORPORATION.
!
!DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
!SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
!AUTHOR: NORMA ABEL/AlB/CDM
MODULE GOP2(RESERVE(0,1,2,3),SREG=#17,VREG=#15,FREG=#16,DREGS=4)=
BEGIN
!MODULE CONTAINS UTILITY ROUTINES USED BY FORTD AND FORTE ONLY.
GLOBAL BIND GOPT2V = #11^24 + 0^18 + #2507; ! Version Date: 21-Dec-84
%(
***** Begin Revision History *****
***** Begin Version 10 *****
2427 AlB 17-Jul-84
REGSTUFF used to be defined in CLEANUP so as to clear fields in the
left half of STE word 2. REGSTUFF was also defined (differently)
in DFCLEANUP of module VER5 to clear some other fields.
This edit replaces REGSTUFF with IDCLEANB, which is now defined
in FIRST. The fields being cleared have been moved out of STE word 2
and into STE word 8.
Note that this is the first edit to this module since 13-Jan-74
(Deep sigh!).
2507 CDM 21-Dec-84
Move IDDOTF to FIRST.
***** End V10 Development *****
***** End Revision History *****
)%
SWITCHES NOLIST;
REQUIRE FIRST.BLI;
REQUIRE TABLES.BLI;
SWITCHES LIST;
GLOBAL ROUTINE CLEANUP=
BEGIN
!GO THROUGH THE SYMBOL TABLES AND ZERO THE FIELDS THAT
!A USED BY THE OPTIMIZER AND THE GLOBAL REGISTER ALLOCATOR.
!CALLED FROM THE DEFINITION POINT ALGORITHM AND GLOBAL ALLOCATOR
INCR I FROM 0 TO SSIZ-1 DO
BEGIN
REGISTER BASE T;
T_.SYMTBL[.I];
WHILE .T NEQ 0 DO
BEGIN
!KLUDGE BECAUSE OF THE %&$#() STATEMENT FUNCTION
!"OPTIMIZATIONS"
IF .T[IDDOTF] NEQ SIXBIT".F" THEN
BEGIN
%2427% T[IDCLEANB]=0;
!IF THIS IS A FORMAL ARRAY THE PSEUDO
!ENTRY MUST ALSO BE ZEROED IF NOT ADJUSTABLY
!DIMENSIONED
IF .T[OPERSP] EQL FORMLARRAY THEN
BEGIN
REGISTER BASE ET;
ET_.T[IDDIM];
IF NOT .ET[ADJDIMFLG] THEN
BEGIN
ET_.ET[ARADDRVAR];
!THIS PSEUDO ENTRY IS POINTED TO BY THE
!ARADDRVAR FIELD OF THE DIMENNSION TABLE ENTRY
%2427% ET[IDCLEANB]=0;
END;
END; !SPECIAL STUFF FOR FORMAL ARAYS
END; !SFN KLUDGE
T_.T[CLINK];
END; !WHILE ON T
END; !INCR LOOP
END; !CLEANUP
GLOBAL ROUTINE MAKCONTINUE=
BEGIN
!MAKE AND RETURN A CONTINUE STATEMENT NODE
EXTERNAL QQ;
MAP BASE QQ;
EXTERNAL NAME,CORMAN;
NAME<LEFT>_SRCSIZ+CONTSIZ;
QQ_CORMAN();
!FILL IS SRCID
QQ[OPRCLS]_STATEMENT;
QQ[SRCID]_CONTID;
.QQ
END;
GLOBAL ROUTINE MAKASGN(LHEXPR,RHEXPR)=
BEGIN
!MAKE AN ASSIGNMENT STATEMENT NODE OF THE FORM
!LHEXPR=RHEXPR
EXTERNAL CORMAN;
MAP BASE LHEXPR:RHEXPR;
EXTERNAL BASE QQ;
!ALSO SET THE VAL FLAGS
NAME<LEFT>_SRCSIZ+ASGNSIZ;
QQ_CORMAN();
QQ[OPRCLS]_STATEMENT;
QQ[SRCID]_ASGNID;
QQ[LHEXP]_.LHEXPR;
QQ[RHEXP]_.RHEXPR;
IF .LHEXPR[OPRCLS] EQL DATAOPR THEN
QQ[A1VALFLG]_1;
IF .RHEXPR[OPRCLS] EQL DATAOPR OR
.RHEXPR[OPRCLS] EQL CMNSUB
OR .RHEXPR[OPRCLS] EQL REGCONTENTS THEN
QQ[A2VALFLG]_1;
.QQ
END;
END
ELUDOM