Google
 

Trailing-Edge - PDP-10 Archives - -
Click to see without markup as text/plain
There are no other files named in the archive.
00100	If EQQ were `EQ' then BUG1 would give the same error as BUG3 and BUG4.
00200	As it is, however, it give an `(X . 13) LOSTVAR-ILOC1' error.
00300	
00400	(DEFPROP BUG1
00500		 (LAMBDA (NAME)
00600			 (PROG (X)
00700			       (SETQ X
00800				     (APPEND
00900				      X
01000				      (PROG (&V)
01100				       LOOP (COND ((NOT (EQQ (SETQ X (READCH))
01200							     T))
01300						   (SETQ &V
01400							 (APPEND &V (LIST X))))
01500						  (T (RETURN &V)))
01600					    (GO LOOP))))))
01700		 EXPR)
01800	
01900	If NACS is set to 3 then BUG2 results in a NOAC-RESTORE error.
02000	
02100	(DEFPROP BUG2
02200		 (LAMBDA NIL
02300			 (PROG (X)
02400			       (SETQ X
02500				     (CONS X
02600					   (PROG (&V)
02700					    LOOP (COND ((SETQ X T)
02800							(SETQ &V (LIST X)))
02900						       (T (RETURN &V)))
03000						 (GO LOOP))))))
03100		 EXPR)
03200	
03300	BUG3 and BUG4 both produce extra pushes and pops.
03400	
03500	(DEFPROP BUG3 (LAMBDA NIL (PROG (X) (CONS X (COND ((SETQ X T) X))))) EXPR)
03600	
03700	(DEFPROP BUG4 (LAMBDA (X) (PROG NIL (CONS X (COND ((SETQ X T) X))))) EXPR)
03800	
     
00100	This bug comes from Hearn.  It involves a variable being loaded as an 
00200	argument by an EXCH, which leaves the only copy in the AC, then protected
00300	by pushing which gives trouble.
00400	
00500	CB1 is a simple case which produces a MOVE then a MOVEM.
00600	
00700	(DEFPROP CB1 (LAMBDA (A) (PROG (B) TAG (SETQ A A) (RETURN B))) EXPR)
00800	
00900	CB2 generates the erronious EXCH then stops.
01000	
01100	(DEFPROP CB2
01200		 (LAMBDA (A) (PROG (B) TAG (SETQ B A) (SETQ A A) (RETURN B)))
01300		 EXPR)
01400	
01500	CB3 continues from the error of CB2 into a disaster.
01600	
01700	(DEFPROP CB3
01800		 (LAMBDA (A)
01900			 (PROG (B)
02000			  TAG1 (SETQ B A)
02100			       (SETQ A A)
02200			       (COND ((FUN A B) (GO TAG3)))
02300			  TAG2 (RETURN B)
02400			  TAG3))
02500		 EXPR)
02600	
     
00100	
00200	Daryl Lewis of U.C. Irvine contributed the folling bug.
00300	The L is clobbered by the internal lambda to NIL.
00400	This was fixed by modification of INTERNALLAMBDA on 24July72.
00500	
00600	(DE IRVBUG NIL (CONS L ((LAMBDA (L) NIL) NIL)))
00700	
00800	This bug has been patched out of the compiler by keeping varlist empty.
00900	
01000	(DEFPROP VLBUG 
01100	 (LAMBDA NIL
01200		 (PROG (I) (AND (CAR (SETQ I (CAR I)))
01300				(SETQ I (CADR I))
01400				(EQ (CAR I) 4)))) 
01500	EXPR)
01600	
01700	This appeared in the course of debugging a new compiler.  An element
01800	of the CCLST is saved in the middle of the computation of a NOT.
01900	This is because the CCLST is cleared by OUTJMP but not by P2BOOL.
02000	
02100	(DEFPROP T1 
02200		 (LAMBDA (X) (FUN (CAR X) (CONS (NOT X) X)))
02300		 EXPR)
02400	
     
00100	This file was recovered from Summer 71 and expanded.
00200	I believe that the bugs of RLOSS and CATEGORISE have been fixed.
00300	HEARNBUG is the original form of CB1,2and3 in CBUGS.
00400	VLBUG been patched by keeping VARLIST empty and the function has been
00500	copied into CBUGS.
00600	
00700	(DEFPROP VLBUG 
00800	 (LAMBDA NIL
00900		 (PROG (I) (AND (CAR (SETQ I (CAR I)))
01000				(SETQ I (CADR I))
01100				(EQ (CAR I) 4)))) 
01200	EXPR)
01300	
01400	(DEFPROP RLOSS 
01500	 (LAMBDA (OP) (PROG NIL (AND SP1 (CDR (RPLACD SP2 (COND (T OP))))))) 
01600	EXPR)
01700	 
01800	(DEFPROP CATEGORISE
01900	 (LAMBDA NIL
02000	  (PROG (CATEG CATEGORY)
02100	        (PROG (&V)
02200	         LOOP (SETQ &V
02300	                    (AND (SETQ CATEG (QUOTE ""))
02400	                         (PROG (&V)
02500	                          LOOP (SETQ &V (SETQ CATEG (CAT CATEG (READCH))))
02600	                               (COND ((SETQ CATEGORY (COMPARE (AT CATEG) CATEGLIST)) (RETURN &V))
02700	                                     (T (GO LOOP)))))))))
02800	EXPR)
     
00100	This bug comes from Hearn.  It involves a variable being loaded as an 
00200	argument by an EXCH, which leaves the only copy in the AC, then protected
00300	by pushing which gives trouble.
00400	
00500	(DEFPROP HEARNBUG
00600	 (LAMBDA (A B)
00700	  (PROG (C E I J K M N VAR)
00800		(COND ((OR (ATOM B) (ATOM A)) (RETURN 1)))
00900		(COND ((GEQ (CDAAR A) (CDAAR B)) (GO A0)))
01000		(SETQ I A)
01100		(SETQ A B)
01200		(SETQ B I)
01300	   A0	(SETQ VAR (CAAAR A))
01400		(SETQ M (CDAAR A))
01500		(SETQ N (CDAAR B))
01600		(SETQ A (REDLIST A))
01700		(SETQ B (REDLIST B))
01800	   A1	(SETQ E (GFINV (CAR B)))
01900	   A2	(SETQ C (GFTIMES (CAR A) E))
02000		(SETQ A (RPLACA A 0))
02100		(SETQ I (CDR A))
02200		(SETQ J (CDR B))
02300		(SETQ K 1)
02400	   G0142(COND ((GREATERP K N) (GO A4)))
02500		(RPLACA I (GFDIF (CAR I) (GFTIMES C (CAR J))))
02600		(SETQ I (CDR I))
02700		(SETQ J (CDR J))
02800		(SETQ K (PLUS K 1))
02900		(GO G0142)
03000	   A4	(COND ((NEQ (CAR A) 0) (GO A5)))
03100		(SETQ A (CDR A))
03200		(SETQ M (DIFFERENCE M 1))
03300		(COND ((GREATERP M 0) (GO A4)))
03400		(COND ((EQUAL (CAR A) 0) (GO A6)) (T (RETURN 1)))
03500	   A5	(COND ((GEQ M N) (GO A2)))
03600		(SETQ I A)
03700		(SETQ A B)
03800		(SETQ B I)
03900		(SETQ I N)
04000		(SETQ N M)
04100		(SETQ M I)
04200		(GO A1)
04300	   A6	(SETQ I B)
04400		(SETQ E (GFINV (CAR B)))
04500	   A7	(RPLACA I (GFTIMES E (CAR I)))
04600		(COND ((SETQ I (CDR I)) (GO A7)))
04700		(SETQ I B)
04800	   A8	(RPLACA I (CONS (CONS VAR N) (CAR I)))
04900	   A9	(COND ((EQUAL (SETQ N (DIFFERENCE N 1)) 0)
05000		       (RETURN (PROG2 (RPLACD I
05100					      (COND ((EQUAL (CADR I) 0) NIL)
05200						    (T (CADR I))))
05300				      B))))
05400		(SETQ I (CDR I))
05500		(COND ((EQUAL (CAR I) 0) (GO A9)) (T (GO A8)))))
05600	 EXPR)
     
00100	This bug comes from John Allan.  It is a result of RSL getting
00200	rebound in the non value boolean case.
00300	
00400	(DEFPROP JRABUG
00500	 (LAMBDA (X) (COND ((NULL X) (ONE)) ((MEMQ NIL X) (TWO)))) 
00600	EXPR)
00700	
00800	This is a simple error in P2PROG2.  The case for test is screwed up.
00900	
01000	(DEFPROP BLFBUG
01100	 (LAMBDA NIL
01200	  (PROG (HOLDL SUFF SL)
01300	        (COND ((AND (PROG2 (SETQ SL (STRLEN SUFF))
01400				   (NOT (*LESS HOLDL (*PLUS SL 2))))))))) 
01500	 EXPR)
01600	
01700	I found this bug in the process of debugging JRABUG and BLFBUG.
01800	The last occurence of G is free but is not recognized as such.
01900	This bug is classic dating all the way back to Blatt compilers.
02000	
02100	(DEFPROP NEXTSYM T *FSUBR)
02200	
02300	(DE WDBUG (XPR VALAC TEST)
02400	 (PROG NIL
02500	       (CLEARBOTH)
02600	       (COND ((NOT (NULL VALAC))
02700		      (RETURN (PROG (CTAG RSL G)
02800				    (PUTPROP (SETQ G (NEXTSYM TAG)) T (QUOTE SET))
02900				    (BOOLEXPR XPR VALAC (CONS T G))
03000				    (RETURN (TESTJUMP (BOOLVALUE VALAC G)
03100						      TEST))))))
03200	       (BOOLEXPR XPR VALAC TEST)
03300	       (COND ((NULL TEST) (OUTENDTAG G)))))
03400