guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 02/05: Add fabricated expressions for u64-s64 conversion


From: Andy Wingo
Subject: [Guile-commits] 02/05: Add fabricated expressions for u64-s64 conversion
Date: Tue, 28 Nov 2017 16:36:55 -0500 (EST)

wingo pushed a commit to branch master
in repository guile.

commit aeb7c18b9944f1a13bc987ab514341b390567f1c
Author: Andy Wingo <address@hidden>
Date:   Mon Nov 27 16:51:31 2017 +0100

    Add fabricated expressions for u64-s64 conversion
    
    * module/language/cps/cse.scm (compute-equivalent-subexpressions): Add
      cases for u64->s64 and s64->u64.
---
 module/language/cps/cse.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/module/language/cps/cse.scm b/module/language/cps/cse.scm
index 512c3a2..bb19597 100644
--- a/module/language/cps/cse.scm
+++ b/module/language/cps/cse.scm
@@ -312,7 +312,9 @@ false.  It could be that both true and false proofs are 
available."
            ;; NB: These definitions rely on U having top 2 bits equal to
            ;; 3rd (sign) bit.
            ((s <- tag-fixnum #f u)           (u <- scm->s64 #f s)
-                                             (u <- untag-fixnum #f s)))))
+                                             (u <- untag-fixnum #f s))
+           ((s <- u64->s64 #f u)             (u <- s64->u64 #f s))
+           ((u <- s64->u64 #f s)             (s <- u64->s64 #f u)))))
 
       (define (visit-label label equiv-labels var-substs)
         (match (intmap-ref conts label)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]