Trailing-Edge
-
PDP-10 Archives
-
BB-L014E-BM
-
autopatch/graph.c05
There are no other files named graph.c05 in the archive.
REP 5/1 ;05C1
!COPYRIGHT (C) 1972,1981 BY DIGITAL EQUIPMENT CORPORATION
!AUTHOR NORMA ABEL/DCE/SJW/JNG/AHM
WIT
!COPYRIGHT (C) 1972,1981,1982 BY DIGITAL EQUIPMENT CORPORATION
!AUTHOR NORMA ABEL/DCE/SJW/JNG/AHM/HAS
REP 13/1 ;05C2
GLOBAL BIND GRAPHV = 6^24 + 0^18 + 138; ! Version Date: 21-Oct-81
WIT
GLOBAL BIND GRAPHV = 6^24 + 0^18 + #1164; ! Version Date: 12-Jul-82
INS 105/1 ;05C3
***** End V6 Development *****
139 1150 DCE 16-Feb-82 20-17292
Handle programs with ASSIGN statements properly.
Avoid unjustified error messages.
1164 HAS 12-Jul-82
Prevent loop in (the) SWAMP caused by incorrect information being
setup for LOKEXIT. In particular, for certain nested loops, allow
LOKEXIT to correctly determine it has a branch back into an inner
loop, instead of thinking it has an exit. This change brings the
code in line with the comments at the end of GRAPH.
INS 791/1 ;05C4
%[1164]% !ALSO UPDATE THE SNEXTND FIELD OF THE LABEL
%[1164]% !TABLE ENTRIES FOR ANY INNER LOOPS TO POINT TO
%[1164]% !THE OUTER-MORE LOOP WE ARE NOW COLLAPSING.
INS 832/1 ;05C5
%[1164]% !Now walk any inner DOs
%[1164]% IF .P[SRCID] EQL DOID THEN
%[1164]% BEGIN
%[1164]% PB_.P[DOLBL]; !Get terminus node of inner loop
%[1164]% PB_.PB[SNHDR];
%[1164]% WHILE .P NEQ .PB DO !Until end of this inner loop
%[1164]% BEGIN !Graph elements discarded
%[1164]% ! during earlier collapse
%[1164]% IF .P[SRCLBL] NEQ 0 !If labeled, point
%[1164]% THEN !label at this loop
%[1164]% BEGIN
%[1164]% PA_.P[SRCLBL];
%[1164]% PA[SNEXTND]_.LOOP
%[1164]% END;
%[1164]% PREV_.P; !Keep track of one node back
%[1164]% P_.P[SRCLINK] !Next node in inner loop
%[1164]% END;
%[1164]% !Include the inner terminus label
%[1164]% PA_.P[SRCLBL];
%[1164]% PA[SNEXTND]_.LOOP;
%[1164]% P_.PREV !Drop back a node to allow
%[1164]% !outer loop to clean up graph
%[1164]% !elements for inner terminus
%[1164]% END;
INS 902/1 ;05C6
%[1150]% IF NOT .PA[SNASSIGNED] THEN
REP 1033/1 ;05C7
!THAT ARE DEFINED WITHIN IT. BUT WE WANT TO
!UPDATE THE SNEXTND FIELD OF THE LABEL TABLE ENTRIES
!FOR THEM TO POINT TO THE OUTER-MORE LOOP WE ARE
!NOW PROCESSING. ALSO BE CAREFUL THAT THIS IS NOT
!THE MAIN PROGRAM.
WIT
%[1164]% !THAT ARE DEFINED WITHIN IT.
REP 1041/1 ;05C8
PB_.P[DOLBL];
!UNTIL WE ARE OUT OF THIS INNER MORE LOOP
WHILE .P[SRCLBL] NEQ .PB DO
BEGIN
IF .P[SRCLBL] NEQ 0 AND .LOOP NEQ 0 THEN
BEGIN
!GET THE LABEL TABLE POINTER
PA_.P[SRCLBL];
PA[SNEXTND]_.LOOP;
END;
!LOOK AT NEXT ENTRY
P_.P[SRCLINK];
END;
!INCLUDE THE LABEL TERMINATING THE LOOP!
%[1052]% IF .LOOP NEQ 0 THEN
%[1052]% BEGIN
%[1052]% PA_.P[SRCLBL];
%[1052]% PA[SNEXTND]_.LOOP
%[1052]% END;
WIT
P_.P[DOLBL];
%[1164]% P_.P[SNHDR]
SUM 195588