functions with both inline expansions and compiler optimizations
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Confirmed
|
Low
|
Unassigned |
Bug Description
(do-all-symbols (s)
(flet ((scan-name (s)
(let* ((inline-exp (sb-int:info :function :inline-
(when (and inline-exp
(scan-name s)
(scan-name `(setf ,s))))
finds the following
(%POW :INLINE :TRANSFORMS NIL :TEMPLATES T)
(FLOOR :MAYBE-INLINE :TRANSFORMS T :TEMPLATES NIL)
(MOD :INLINE :TRANSFORMS T :TEMPLATES NIL)
(NTHCDR :MAYBE-INLINE :TRANSFORMS T :TEMPLATES NIL)
(CEILING :MAYBE-INLINE :TRANSFORMS T :TEMPLATES NIL)
(ARRAY-
(KEYWORDP :MAYBE-INLINE :TRANSFORMS T :TEMPLATES NIL)
(REM :INLINE :TRANSFORMS T :TEMPLATES NIL)
The problem is that inlining defeats the compiler transforms, which could probably do a better job.
For some just nuking the inline expansion is probably TRT, but for some we may want to keep a %FOO version available for inlining if all transforms fails and no templates apply. Who knows, maybe it's the compiler magic that should go in some cases.