1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 22:10:21 +02:00

Better f64 unboxing for loop vars that might flow to $ktail

* module/language/cps/specialize-numbers.scm (compute-specializable-f64-vars):
  Tweak to allow f64 values to flow directly to return sites.
This commit is contained in:
Andy Wingo 2015-10-29 14:50:59 +00:00
parent 5b9835e1f8
commit 80f2726310

View file

@ -178,14 +178,20 @@
(match exp
(($ $primcall 'scm->f64 (var))
(intset-add f64-uses var))
(($ $values (var))
(($ $values vars)
(match (intmap-ref cps k)
(($ $kargs (_) (def))
(if (intset-ref f64-defs def)
(intset-add f64-uses var)
f64-uses))
;; Could be $ktail.
(_ f64-uses)))
(($ $kargs _ defs)
(fold (lambda (var def f64-uses)
(if (intset-ref f64-defs def)
(intset-add f64-uses var)
f64-uses))
f64-uses vars defs))
(($ $ktail)
;; Assume return is rare and that any f64-valued def can
;; be reboxed when leaving the procedure.
(fold (lambda (var f64-uses)
(intset-add f64-uses var))
f64-uses vars))))
(_ f64-uses)))
(_ f64-uses)))
body empty-intset))