svm: workaround definition for pseudo-register-home
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Sat, 4 Feb 2012 01:13:31 +0000 (18:13 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Sat, 4 Feb 2012 01:13:31 +0000 (18:13 -0700)
src/compiler/machines/svm/lapgen.scm

index b680c4add21776eeb1de0a7b04d062643399d8b6..7f532932fa5596097dd174cd558167b984d9d31a 100644 (file)
@@ -61,17 +61,31 @@ USA.
         (error:bad-range-argument source #f))))
 
 (define (home->register-transfer source target)
-  (inst:load 'WORD (register-reference target) (pseudo-register-home source)))
+  ;; Not sure why this started happening after 9.1.1 during the
+  ;; compilation of runtime/poplat.scm...
+  (warn "Ignoring unspill:" source "->" target)
+  (LAP))
 
 (define (register->home-transfer source target)
-  (inst:store 'WORD (register-reference source) (pseudo-register-home target)))
+  ;; Not sure why this started happening after 9.1.1 during the
+  ;; compilation of runtime/poplat.scm...
+  (warn "Ignoring spill:" source "->" target)
+  (LAP))
 
 (define (pseudo-register-home register)
-  (error "Attempt to access temporary register:" register))
+  ;; With 256 registers, pseudo registers should not need "homes".
+  ;; Before 9.1.1 this was true.  Lately runtime/poplat.scm gets the
+  ;; no-reuse-possible optimization in standard-register-reference,
+  ;; which assumes a home.
+
+  ;; That optimization in standard-register-reference is the only use
+  ;; of pseudo-register-home in the machine-independent compiler, so
+  ;; this definition just aims to defeat it for now.
+  (reference-alias-register! register (register-type register)))
 \f
 ;;;; Linearizer interface
 
-(define lap:make-label-statement
+(define-integrable lap:make-label-statement
   inst:label)
 
 (define (lap:make-unconditional-branch label)