In `two-arg-register-operation', don't delete reused alias of first
authorChris Hanson <org/chris-hanson/cph>
Wed, 14 Mar 1990 21:05:05 +0000 (21:05 +0000)
committerChris Hanson <org/chris-hanson/cph>
Wed, 14 Mar 1990 21:05:05 +0000 (21:05 +0000)
operand until the second operand's reference has been computed.  This
prevents the reused alias from being mistakenly re-allocated for use
by the second operand.

v7/src/compiler/machines/bobcat/lapgen.scm

index 831e53264a8093060c0c23d03b12f939aeaa76c4..53889da5df062533eec277559d993dee077853f9 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/lapgen.scm,v 4.29 1990/03/13 00:20:45 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/lapgen.scm,v 4.30 1990/03/14 21:05:05 cph Exp $
 
 Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
 
@@ -451,11 +451,12 @@ MIT in each case. |#
                ,@(operate target source2)))))
     (reuse-machine-target! target-type target
       (lambda (target)
-       (reuse-pseudo-register-alias! source1 target-type
+       (reuse-pseudo-register-alias source1 target-type
          (lambda (alias)
            (let ((source2 (if (= source1 source2)
                               (register-reference alias)
                               (source-reference source2))))
+             (delete-register! alias)
              (delete-dead-registers!)
              (add-pseudo-register-alias! target alias)
              (operate (register-reference alias) source2)))