X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fir2opt.lisp;h=8fef8ec4e1b18362c7cc8afef13147a424cd43ae;hb=69e6aef5e6fb3bd682c7a2cbf774034d2ea58ee8;hp=6c0e764d0ce5c441643c46c489548af1379a4331;hpb=da5a7ccd58c2bf3c5287a11fb41e01403e5745e8;p=sbcl.git diff --git a/src/compiler/ir2opt.lisp b/src/compiler/ir2opt.lisp index 6c0e764..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) @@ -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)))))))