Kill dead registers when not doing control merge.
authorChris Hanson <org/chris-hanson/cph>
Mon, 7 Nov 1988 23:50:50 +0000 (23:50 +0000)
committerChris Hanson <org/chris-hanson/cph>
Mon, 7 Nov 1988 23:50:50 +0000 (23:50 +0000)
v7/src/compiler/back/lapgn1.scm

index bf2a5c4da05d48efa71c6f51d4deb465f937fc84..fd2d28dd28a3e6c5e4f86919cd39cef1d40305f3 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/back/lapgn1.scm,v 4.5 1988/11/07 14:08:14 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/back/lapgn1.scm,v 4.6 1988/11/07 23:50:50 cph Rel $
 
 Copyright (c) 1987, 1988 Massachusetts Institute of Technology
 
@@ -83,7 +83,14 @@ MIT in each case. |#
                   ;; register map at this point.
                   (loop next (empty-register-map)))
                  ((null? (cdr previous))
-                  (loop next (bblock-register-map (edge-left-node edge))))
+                  (loop
+                   next
+                   (let ((previous (edge-left-node edge)))
+                     (delete-pseudo-registers
+                      (bblock-register-map previous)
+                      (regset->list
+                       (regset-difference (bblock-live-at-exit previous)
+                                          (bblock-live-at-entry next)))))))
                  (else
                   (let ((entry
                          (or (assq next *pending-bblocks*)