diff --git a/compiler/pack.lisp b/compiler/pack.lisp index 6e449b14ed390406cdb8980e9d5f668615d21bc9..2c69765ddc3ff66a5eb3007c4aeaf1a62de1c183 100644 --- a/compiler/pack.lisp +++ b/compiler/pack.lisp @@ -819,8 +819,12 @@ (let ((op (tn-ref-tn ref))) (when (and (eq (sc-sb (tn-sc op)) sb) (eql (tn-offset op) loc)) + (return nil))) + (let ((ltn (tn-ref-load-tn ref))) + (when (and ltn + (eq (sc-sb (tn-sc ltn)) sb) + (eql (tn-offset ltn) loc)) (return nil)))) - (let ((victim (svref (finite-sb-live-tns sb) loc))) (assert victim) (save-complex-writer-tn victim vop) @@ -983,7 +987,7 @@ (pack-tn tn nil) (pack-targeting-tns tn))))) - (pack-load-tns block) - (emit-saves block))) + (emit-saves block) + (pack-load-tns block))) (undefined-value)))