[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 01/01: Better f64 unboxing for loop vars that might flow
From: |
Andy Wingo |
Subject: |
[Guile-commits] 01/01: Better f64 unboxing for loop vars that might flow to $ktail |
Date: |
Thu, 29 Oct 2015 14:51:45 +0000 |
wingo pushed a commit to branch wip-2.1.2
in repository guile.
commit 7a7e74c0dd8ff16ee77dfbbb64de001e8157a95b
Author: Andy Wingo <address@hidden>
Date: Thu Oct 29 14:50:59 2015 +0000
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.
---
module/language/cps/specialize-numbers.scm | 20 +++++++++++++-------
1 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/module/language/cps/specialize-numbers.scm
b/module/language/cps/specialize-numbers.scm
index 6d61f5b..9aa8035 100644
--- a/module/language/cps/specialize-numbers.scm
+++ b/module/language/cps/specialize-numbers.scm
@@ -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))