1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

Fix truthy expression analysis in CSE

* module/language/cps/cse.scm (compute-truthy-expressions): The "meet"
  function here is union, not intersection.
This commit is contained in:
Andy Wingo 2020-05-28 09:53:55 +02:00
parent a5421d2bb6
commit 11878e1603

View file

@ -1,6 +1,6 @@
;;; Continuation-passing style (CPS) intermediate language (IL) ;;; Continuation-passing style (CPS) intermediate language (IL)
;; Copyright (C) 2013-2019 Free Software Foundation, Inc. ;; Copyright (C) 2013-2020 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
@ -88,7 +88,7 @@ false. It could be that both true and false proofs are available."
(define (propagate boolv succ out) (define (propagate boolv succ out)
(let* ((in (intmap-ref boolv succ (lambda (_) #f))) (let* ((in (intmap-ref boolv succ (lambda (_) #f)))
(in* (if in (intset-intersect in out) out))) (in* (if in (intset-union in out) out)))
(if (eq? in in*) (if (eq? in in*)
(values '() boolv) (values '() boolv)
(values (list succ) (values (list succ)