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:
parent
5b9835e1f8
commit
80f2726310
1 changed files with 13 additions and 7 deletions
|
@ -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))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue