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

Add fabricated expressions for u64-s64 conversion

* module/language/cps/cse.scm (compute-equivalent-subexpressions): Add
  cases for u64->s64 and s64->u64.
This commit is contained in:
Andy Wingo 2017-11-27 16:51:31 +01:00
parent bc1fdf73db
commit aeb7c18b99

View file

@ -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)