From 106975f9a02248bcf07dd3c3d5aad478fd546eb5 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Thu, 15 Dec 1988 17:27:22 +0000 Subject: [PATCH] Fix bug in `instruction-dead?': an assignment whose RHS contains side effects cannot be considered dead. --- v7/src/compiler/rtlopt/rlife.scm | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/v7/src/compiler/rtlopt/rlife.scm b/v7/src/compiler/rtlopt/rlife.scm index 9aaf0bf7b..435c109a2 100644 --- a/v7/src/compiler/rtlopt/rlife.scm +++ b/v7/src/compiler/rtlopt/rlife.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rlife.scm,v 1.59 1988/06/14 08:44:45 cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rlife.scm,v 1.60 1988/12/15 17:27:22 cph Rel $ Copyright (c) 1987 Massachusetts Institute of Technology @@ -37,9 +37,7 @@ MIT in each case. |# (declare (usual-integrations)) -(package (lifetime-analysis mark-set-registers!) - -(define-export (lifetime-analysis rgraphs) +(define (lifetime-analysis rgraphs) (for-each walk-rgraph rgraphs)) (define (walk-rgraph rgraph) @@ -113,9 +111,9 @@ MIT in each case. |# (for-each-regset-member old register-crosses-call!)) (if (instruction-dead? rtl old) (set-rinst-rtl! rinst false) - (begin (update-live-registers! old dead live rtl bblock rinst) - (for-each-regset-member old - increment-register-live-length!)))))) + (begin + (update-live-registers! old dead live rtl bblock rinst) + (for-each-regset-member old increment-register-live-length!)))))) (bblock-perform-deletions! bblock)) (define (propagation-loop bblock procedure) @@ -181,10 +179,10 @@ MIT in each case. |# (and (rtl:register? address) (let ((register (rtl:register-number address))) (and (pseudo-register? register) - (not (regset-member? needed register)))))))) + (not (regset-member? needed register)))))) + (not (rtl:expression-contains? (rtl:assign-expression rtl) + rtl:volatile-expression?)))) (define (interesting-register? expression) (and (rtl:register? expression) - (pseudo-register? (rtl:register-number expression)))) - -) \ No newline at end of file + (pseudo-register? (rtl:register-number expression)))) \ No newline at end of file -- 2.25.1