Comment 2 for bug 495467

Revision history for this message
Nikodemus Siivola (nikodemus) wrote : Re: [Bug 495467] [NEW] check-type and (declare (type ...)) annotates different type information?

  status confirmed
  tag optimization compiler
  importance low
  summary "CHECK-TYPE doesn't allow optimization in all cases?"
  done

CHECK-TYPE and DECLARE are really quite different -- that is to be expected. That said, all is not as it should be. With just CHECK-TYPE I get among other things

; (- DIGIT-LENGTH-LIMIT (LENGTH QUOTIENT-PART))
;
; note: forced to do GENERIC-- (cost 10)
; unable to do inline fixnum arithmetic (cost 2) because:
; The first argument is a T, not a FIXNUM.
; The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T)

where the compiler should certainly be able to tell that the first argument is indeed a fixnum.

Haven't looked into why yet.