Opened 7 years ago
Last modified 6 years ago
#1604 closed defect
fixnum arithmetic is ignored — at Version 1
| Reported by: | sjamaan | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | 5.1 |
| Component: | compiler | Version: | 5.0.0 |
| Keywords: | Cc: | ||
| Estimated difficulty: | medium |
Description (last modified by )
As reported by chickendan on IRC:
;; csc -O5 -strict-types -fixnum-arithmetic: 7.964s
;; csc -O5 -strict-types: 8.105s
;; csc -O5 -strict-types (and fx functions): 0.246s
;;; c/nim -O3 baseline: 0.211s
(define (fib n)
(if (or (= n 0) (= n 1))
n
(+ (fib (- n 1)) (fib (- n 2)))))
(let loop ((n 0))
(when (< n 35)
(print "n=" n " => " (fib n))
(loop (+ n 1))))
This program should use fixnum ops when declaring fixnum arithmetic. Also, when wrapping fib's body in an assume, it still compiles to C_s_a_i_plus calls rather than C_a_i_fixnum_plus or even just C_s_a_u_i_integer_plus.
I think we should take a look before releasing 5.1, the fact fixnum-arithmetic is ignored may not be a big issue, but it is rather worrying that the specializations aren't used.
Note: See
TracTickets for help on using
tickets.
