From 3510ab66743b0e1343c773d125569c7ed6167a5d Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Wed, 14 Mar 1990 21:05:05 +0000 Subject: [PATCH] In `two-arg-register-operation', don't delete reused alias of first 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 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/v7/src/compiler/machines/bobcat/lapgen.scm b/v7/src/compiler/machines/bobcat/lapgen.scm index 831e53264..53889da5d 100644 --- a/v7/src/compiler/machines/bobcat/lapgen.scm +++ b/v7/src/compiler/machines/bobcat/lapgen.scm @@ -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))) -- 2.25.1