Fix algorithm so that it handles CFG joins correctly.
authorChris Hanson <org/chris-hanson/cph>
Thu, 18 Dec 1986 12:11:09 +0000 (12:11 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 18 Dec 1986 12:11:09 +0000 (12:11 +0000)
v7/src/compiler/rtlopt/rcse1.scm
v7/src/compiler/rtlopt/rlife.scm

index c599350ea49d6fa3d8acda222cc9ab533bf12371..b64e968c583c407dea67e3888eeac0b43eca44d8 100644 (file)
@@ -38,7 +38,7 @@
 ;;;; RTL Common Subexpression Elimination
 ;;;  Based on the GNU C Compiler
 
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcse1.scm,v 1.94 1986/12/17 08:00:35 cph Exp $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcse1.scm,v 1.95 1986/12/18 12:10:53 cph Exp $
 
 (declare (usual-integrations))
 (using-syntax (access compiler-syntax-table compiler-package)
@@ -54,6 +54,7 @@
   (walk-rnode block))
 
 (define (walk-rnode rnode)
+  (if (node-previous>1? rnode) (state:reset!)) ;Easy non-optimal solution.
   ((vector-method rnode walk-rnode) rnode))
 
 (define-vector-method rtl-snode-tag walk-rnode
index 091a244e2582df3c3a48592b8222b3d1b92342a7..17340727d2b562355b73c8cfe1f39854bc9a5c75 100644 (file)
@@ -38,7 +38,7 @@
 ;;;; RTL Register Lifetime Analysis
 ;;;  Based on the GNU C Compiler
 
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rlife.scm,v 1.51 1986/12/18 06:11:04 cph Exp $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rlife.scm,v 1.52 1986/12/18 12:11:09 cph Exp $
 
 (declare (usual-integrations))
 (using-syntax (access compiler-syntax-table compiler-package)
                     (not (regset-member? needed register))))))))
 
 (define (rtl-snode-delete! rnode)
-  (let ((previous (node-previous-disconnect! rnode))
-       (next (snode-next-disconnect! rnode))
+  (let ((previous (node-previous rnode))
+       (next (snode-next rnode))
        (bblock (rnode-bblock rnode)))
+    (snode-delete! rnode)
     (if (eq? rnode (bblock-entry bblock))
        (if (eq? rnode (bblock-exit bblock))
            (set! *bblocks* (delq! bblock *bblocks*))