#| -*-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
(declare (usual-integrations))
\f
-(package (lifetime-analysis mark-set-registers!)
-
-(define-export (lifetime-analysis rgraphs)
+(define (lifetime-analysis rgraphs)
(for-each walk-rgraph rgraphs))
(define (walk-rgraph rgraph)
(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)
(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