X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fir2opt.lisp;h=8fef8ec4e1b18362c7cc8afef13147a424cd43ae;hb=74cf7a4d01664fbf72a662ba093ad67ca243b524;hp=9919074ac7ae493f0f0202c7506ea681e0c907b1;hpb=5cf3c4259d529e180d75d4d140f344e600d2b06b;p=sbcl.git diff --git a/src/compiler/ir2opt.lisp b/src/compiler/ir2opt.lisp index 9919074..8fef8ec 100644 --- a/src/compiler/ir2opt.lisp +++ b/src/compiler/ir2opt.lisp @@ -128,13 +128,11 @@ (delete-vop vop) (flet ((load-and-coerce (dst src) (when (and dst (neq dst src)) - (let ((end (ir2-block-last-vop 2block)) - (move (template-or-lose 'move))) - (multiple-value-bind (first last) - (funcall (template-emit-function move) node 2block - move (reference-tn src nil) - (reference-tn dst t)) - (insert-vop-sequence first last 2block end)))))) + (emit-and-insert-vop node 2block + (template-or-lose 'move) + (reference-tn src nil) + (reference-tn dst t) + (ir2-block-last-vop 2block))))) (load-and-coerce arg-if value-if) (load-and-coerce arg-else value-else)) (emit-template node 2block (template-or-lose cmove-vop) @@ -181,7 +179,7 @@ (maybe-convert-one-cmov 2block))) (defun delete-unused-ir2-blocks (component) - (declare (component component)) + (declare (type component component)) (let ((live-2blocks (make-hash-table))) (labels ((mark-2block (2block) (declare (type ir2-block 2block)) @@ -211,7 +209,9 @@ (do ((2block (ir2-block-next 2block) (ir2-block-next 2block))) ((null 2block) nil) - (cond ((eq target (ir2-block-%label 2block)) + (cond ((ir2-block-%trampoline-label 2block) + (return nil)) + ((eq target (ir2-block-%label 2block)) (return t)) ((ir2-block-start-vop 2block) (return nil)))))))