Trailing-Edge
-
PDP-10 Archives
-
-
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