Google
 

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