1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

DCE ignores setters to dead objects

* module/language/cps/dce.scm (compute-live-code): Add the new
higher-level object mutators.
This commit is contained in:
Andy Wingo 2023-06-22 12:16:59 +02:00
parent 125cb9fa6d
commit 26b43f35c5

View file

@ -1,6 +1,6 @@
;;; Continuation-passing style (CPS) intermediate language (IL) ;;; Continuation-passing style (CPS) intermediate language (IL)
;; Copyright (C) 2013-2021 Free Software Foundation, Inc. ;; Copyright (C) 2013-2021, 2023 Free Software Foundation, Inc.
;;;; This library is free software; you can redistribute it and/or ;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public ;;;; modify it under the terms of the GNU Lesser General Public
@ -197,8 +197,13 @@ sites."
(match exp (match exp
(($ $primcall (($ $primcall
(or 'scm-set! 'scm-set!/tag 'scm-set!/immediate (or 'scm-set! 'scm-set!/tag 'scm-set!/immediate
'word-set! 'word-set!/immediate) _ 'word-set! 'word-set!/immediate
(obj . _)) 'vector-set! 'vector-set!/immediate
'set-car! 'set-cdr!
'box-set!
'struct-set!
'closure-set!)
_ (obj . _))
(or (var-live? obj live-vars) (or (var-live? obj live-vars)
(not (intset-ref known-allocations obj)))) (not (intset-ref known-allocations obj))))
(_ #t))))) (_ #t)))))