Changeset 16538


Ignore:
Timestamp:
Sep 8, 2015, 8:04:36 PM (4 years ago)
Author:
gb
Message:

if we eliminate some nodes from the flow graph, eliminate those nodes'
vinsns (and those vinsns' register tracking info) as well.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/lscan/source/compiler/vinsn.lisp

    r16535 r16538  
    953953      (setf (vinsn-list-flow-graph vinsns) (refine-flow-graph nodes)))))
    954954
     955(defun remove-block-vinsns (fgn)
     956  (do-tail-dll-nodes (vinsn fgn) (elide-vinsn vinsn)))
     957
    955958(defun refine-flow-graph (fg)
    956959  (dfs-walk fg)
     960  (dolist (block fg) (unless (fgn-visited block) (remove-block-vinsns block)))
    957961  (remove-if-not #'fgn-visited fg))
    958962
     
    15481552(defun find-spill-candidate (intervals regtype  at)
    15491553  (let* ((max at) (best nil))
    1550     (do-dll-nodes (interval intervals (or best (error "no interval to spill")))
     1554    (do-dll-nodes (interval intervals (or best (progn (break)(linear-scan-bailout "no interval to spill"))))
    15511555      (let* ((lreg (interval-lreg interval)))
    15521556        (unless (or (lreg-wired lreg) (lreg-local-p lreg) (not (eql regtype (interval-regtype interval))))
Note: See TracChangeset for help on using the changeset viewer.