Opened 6 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.