Skip to content
Snippets Groups Projects
  1. Oct 13, 2003
  2. Oct 12, 2003
    • gerd's avatar
      (defun foo (c) · 40847b05
      gerd authored
      	  (declare (type (integer 46156191457 126998564334) c))
      	  (truncate c (min -1 0)))
      	 => code being generated that falls through to invalid argument
      	    count trap.
      
      	This is caused by a transformer bug causing type derivation
      	inconsistencies that can be seen by setting c::*check-consistency*
      	to true.
      
      	* src/compiler/srctran.lisp (truncate) <deftransform>: Fix the
      	case of x >= 0, y < 0.
      40847b05
  3. Oct 11, 2003
    • gerd's avatar
      ANSI test misc.14 · cd94d2e4
      gerd authored
      	 => case failure in continuation-proven-type
      
      	* src/compiler/ir1opt.lisp (continuation-proven-type):
      	Return *empty-type* for unused continuations.
      cd94d2e4
    • gerd's avatar
      ANSI test misc.16 · 4e34c8ae
      gerd authored
      	 => assertion failure in insert-let-body
      
      	* src/compiler/locall.lisp (maybe-let-convert): Don't convert
      	if the call's block doesn't have successors and we are not
      	converting for interpretation.
      4e34c8ae
    • gerd's avatar
      ANSI test misc.9 and others · 4f8cab88
      gerd authored
      	 => assertion failure in delete-block
      
      	* src/compiler/ir1util.lisp (delete-lambda): Mark blocks of
      	lambda-refs for deletion.  Protect the unlink of the bind-block
      	against it being marked for deletion.
      	(delete-block) <entry>: Mark blocks of exits for deletion.
      	Delete the entry from lambda-entries.
      4f8cab88
    • gerd's avatar
      (compile nil '(lambda () · db41c940
      gerd authored
      	    (flet ((%f13 () (rem 1 (min 0 (return-from %f13 17)))))
      	      (%f13))))
      	 => nil is not of type node
      
      	* src/compiler/locall.lisp (unconvert-tail-calls): Ignore
      	refs whose values aren't used.
      db41c940
  4. Oct 10, 2003
    • gerd's avatar
      (funcall (compile nil · aab6df3b
      gerd authored
       	  '(lambda () (flet ((%f2 () 288213285))
       	                 (+ (%f2) (* 13 (%f2)))))))
      	 => segmentation violation
      
      	(funcall (compile nil
      	  '(lambda ()
      	      (let ((v9 (labels ((%f13 () nil)) nil)))
      		 (let ((v3 (logandc2 97 3)))
      		      (* v3 (- 37391897 (logand v3 -66))))))))
      	 => invalid argument count
      
      	* src/compiler/srctran.lisp (*) <deftransform>: #+nil because it's
      	lying to the compiler, leading to compiler inconsistencies.
      	Reported by Paul Dietz.
      aab6df3b
  5. Oct 09, 2003
  6. Oct 08, 2003
    • toy's avatar
      o The Sparc port was not correctly scavenging the interrupt handlers. · 45de6763
      toy authored
        Use the same code as used for x86.
      o Clean up the code a bit, adding the functions
        scavenge_interrupt_handlers and scavenge_control_stack.  Move some
        printing noise into those functions.
      
      There are still bugs here that are exercised by Eric Marsden's
      cl-bench with cpu performance counter library.
      45de6763
    • toy's avatar
      Fix the bug where undefined functions would cause bus errors on Sparc · 20c04637
      toy authored
      with :linkage-tables:
      
      	(defun foo () (bar))
      
      	* compiler/sparc/alloc.lisp ((make-fdefn)): VOP wasn't properly
      	handling the fixup for undefined_tramp when using linkage-tables.
      	Need to load up the address from the linkage-table.
      
      	* compiler/generic/new-genesis.lisp (init-foreign-linkage): Need
      	to register undefined_tramp so it exists early.  Also did
      	closure_tramp too, just in case.
      20c04637
  7. Oct 06, 2003
    • toy's avatar
      72581c4e
    • toy's avatar
      o Clean up and correct description address map. · 846ddb1c
      toy authored
      o Moved definition of SPARSE_BLOCK_SIZE from solaris-os.c to here, so
        we can use it in defining the sizes of the various spaces.
      o With GENCGC, we can use the space that was allocated for dynamic
        space 1, so make it 2GB.  (Not that I've ever had to use that much
        space.)
      846ddb1c
    • gerd's avatar
      FIXME: Dead code elimination sometimes leaves spurious references · b3816280
      gerd authored
      	to unused lambda-vars.  Unused vars are not packed, and so have a
      	tn but a null tn-offset.  Some of these cases have been fixed, but
      	not all of them, and since it's not sure if/when all of them will
      	be fixed, add a hack for these cases.
      
      	* src/compiler/debug-dump.lisp (dump-1-variable): If the
      	tn-offset of a tn is null, set the tn to nil.
      
      	(compile nil
                '(lambda (a b)
                   (declare (optimize (speed 3) (debug 1)))
                   (let ((v7
                          (let ((v2 (block b5 (return-from b5 (if t b -4)))))
                               a)))
                        -65667836)))
      	 => error nil is not integer, in dump-1-variable.
      
      	This is caused by an exit from the return-from being deleted,
      	while leaving the exit's value untouched, which leads to a
      	remaining reference to lambda-var b, which is unused and therefore
      	not being packed.
      
      	* src/compiler/ir1opt.lisp (maybe-delete-exit): When no node
      	receives the value of the exit, flush the dest of the exit's
      	value.
      b3816280
  8. Oct 05, 2003
    • gerd's avatar
      (compile nil · 56fd6636
      gerd authored
      	 '(lambda (a b c)
      		  (declare (notinline logandc2 not))
      		  (declare (optimize (safety 3)))
      		  (declare (optimize (speed 0)))
      		  (declare (optimize (debug 0)))
      		  (let ((v10
      			 (let ((v5 (if (not nil) -4 (logandc2 68392 c))))
      			      c)))
      		       a)))
      	 => assertion failure, (not (block-delete-p block))
      
      	* src/compiler/ir1opt.lisp (recognize-known-call): Treat
      	:inline and :maybe-inline like :notinline if byte-compiling
      	or converting for interpreter.  Reported by Paul Dietz.
      56fd6636
    • gerd's avatar
      Improve interrupt safety. · a7ed2dae
      gerd authored
      	* src/compiler/globaldb.lisp (get-info-value):
      	* src/code/extensions.lisp (define-hash-cache): Use
      	without-interrupts.
      a7ed2dae
  9. Oct 04, 2003
    • gerd's avatar
      (compile nil '(lambda (c) · 05271223
      gerd authored
      	                (flet ((%f16 () (setq c 1)))
      	                  (+ (%f16) (%f16)))))
      	 => assertion failure, c not found in environment
      
      	Found by Paul Dietz (similar cases).
      
      	* src/compiler/envanal.lisp (compute-closure): Don't close
      	over unused variables from sets.  Not really a port from
      	SBCL because I needed to debug this to the point where the
      	cause was clear; SBCL does the same though.
      05271223
  10. Oct 03, 2003
    • gerd's avatar
      (compile nil '(lambda (b) · 58c6aaf8
      gerd authored
      	                (declare (type (integer -290488443 2) b)
      	                         (optimize (speed 3) (safety 1) (debug 1)))
                              (let ((v3 (min -1720 b)))
      	                  (max v3 (logcount (if (= v3 b) b b))))))
      	 => error in function lisp::assert-error:
                  the assertion (eq c::env
                            (c::lambda-environment
                             (c::lambda-var-home c::thing))) failed.
      
      	Found by Paul Dietz.  Fix from SBCL/Alexey Dejneka.
      
      	* src/compiler/constraint.lisp (constrain-ref-type):
      	Don't change a ref to an unused leaf.
      58c6aaf8
  11. Oct 02, 2003
    • gerd's avatar
      (compile nil · 5d00555f
      gerd authored
      	  '(lambda (c) (declare (optimize (speed 3) (debug 1)))
      	     (flet ((%f18 () -36))
      	        (flet ((%f13 () (let () (block b8 (return-from b8 c)))))
      	          (%f18)))))
      	 => error nil is not an integer, in dump-1-variable
      
      	Found by Paul Dietz.
      
      	This is caused by a lambda-var being passed to dump-1-variable
      	which hasn't been packed, and so has a null tn-offset.  A ref to
      	this lambda-var remains at this point because it is referenced
      	from a different component.  The ref is deleted when that
      	component is compiled.  The problem is that there shouldn't have
      	been two components to begin with, which we prevent by recording
      	additional DFO dependencies for closed-over variables and entries.
      
      	Port from SBCL, basically.
      
      	Does not require a bootstrap file, but a full build is necessary
      	due to the renamed clambda structure slot.
      
      	* src/compiler/dfo.lisp (dfo-walk-call-graph): Process
      	new dfo dependencies.
      
      	* src/compiler/node.lisp (clambda): Rename slot `calls'
      	to `dfo-dependencies'.
      
      	* src/compiler/locall.lisp (convert-call, convert-mv-call):
      	Call note-dfo-dependency.
      	(merge-lets): Change for new clambda slot name.
      	(unconvert-tail-calls): Handle the case of non-clambdas in
      	the dfo dependencies.
      
      	* src/compiler/ir1util.lisp (continuation-home-lambda)
      	(note-dfo-dependency): New functions.
      
      	* src/compiler/ir1tran.lisp (ir1-convert-variable)
      	(return-from, go, setq): Call note-dfo-dependency.
      
      	* src/compiler/xref.lisp (lambda-called-p): New function.
      	(prettiest-caller-name): Use lambda-called-p instead of
      	lambda-calls.
      5d00555f
  12. Sep 29, 2003
  13. Sep 26, 2003
Loading