diff --git a/compiler/life.lisp b/compiler/life.lisp
index fdc8f3b3e714f7b6abf6e6c752c902bafbc3b592..b2a91586e057857a38fe5ff9ff9f15e6ba5ca4d6 100644
--- a/compiler/life.lisp
+++ b/compiler/life.lisp
@@ -635,27 +635,24 @@
       (live-bits live-list)
       (compute-initial-conflicts block)
     (let ((ltns (ir2-block-local-tns block)))
-
+      
       (do ((vop (ir2-block-last-vop block)
 		(vop-prev vop)))
 	  ((null vop))
-
+	
 	(let ((save-p (vop-info-save-p (vop-info vop))))
 	  (when save-p
-	    (let ((save-set (compute-save-set vop block live-list)))
-	      (ecase save-p
-		(:force-to-stack
-		 (dolist (tn save-set)
-		   (force-tn-to-stack tn)
-		   (convert-to-environment-tn tn)))
-		((t :compute-only)
-		 (setf (first (vop-codegen-info vop)) save-set))))))
-
+	    (setf (vop-save-set vop) (copy-bit-vector live-bits))
+	    (when (eq save-p :force-to-stack)
+	      (dolist (tn (compute-save-set vop block live-list))
+		(force-tn-to-stack tn)
+		(convert-to-environment-tn tn)))))
+	
 	(do ((ref (vop-refs vop) (tn-ref-next-ref ref)))
 	    ((null ref))
 	  (let* ((tn (tn-ref-tn ref))
 		 (num (tn-local-number tn)))
-	      
+	    
 	    (cond
 	     ((not num))
 	     ((not (zerop (sbit live-bits num)))
@@ -667,7 +664,7 @@
 	     ((tn-ref-write-p ref)
 	      (note-conflicts live-bits live-list tn num))
 	     (t
-              (note-conflicts live-bits live-list tn num)
+	      (note-conflicts live-bits live-list tn num)
 	      (frob-more-tns (note-conflicts live-bits live-list mtn num))
 	      (setf (sbit live-bits num) 1)
 	      (push-in tn-next* tn live-list)