CHAR/STRING open-coding, bug fix
authorHenry M. Wu <edu/mit/csail/zurich/mhwu>
Tue, 10 May 1988 00:38:45 +0000 (00:38 +0000)
committerHenry M. Wu <edu/mit/csail/zurich/mhwu>
Tue, 10 May 1988 00:38:45 +0000 (00:38 +0000)
v7/src/compiler/machines/bobcat/rules1.scm

index 3670cd43ddd8d79c5e593a2e569daea6c8dd2401..fc8a2442a7cd255f9ddb549ead7c81059b3c995d 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-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
 
@@ -293,14 +293,15 @@ MIT in each case. |#
 (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))