#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules1.scm,v 4.8 1988/05/10 00:10:33 mhwu Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules1.scm,v 4.9 1988/05/10 00:38:45 mhwu Exp $
Copyright (c) 1987 Massachusetts Institute of Technology
(define-rule statement
(ASSIGN (REGISTER (? target)) (CHAR->ASCII (REGISTER (? source))))
(QUALIFIER (pseudo-register? target))
- (let ((machine-register
- (if (machine-register? source)
- source
- (register-alias source false))))
+ (let ((machine-register (if (machine-register? source)
+ source
+ (register-alias source false))))
(if machine-register
- (LAP (BFEXTU ,(register-reference source)
- (& 0) (& 8)
- ,(register-reference (allocate-alias-register! target 'DATA))))
+ (let ((source-ref (register-reference machine-register)))
+ (delete-dead-registers!)
+ (let ((target-ref
+ (register-reference (allocate-alias-register! target 'DATA))))
+ (LAP (BFEXTU ,source-ref (& 0) (& 8) ,target-ref))))
(byte-offset->register
(indirect-char/ascii-reference! regnum:regs-pointer
(pseudo-register-offset source))