0.8.3.55:
[sbcl.git] / src / compiler / float-tran.lisp
index f2880de..42f18fa 100644 (file)
 (defknown %single-float (real) single-float (movable foldable flushable))
 (defknown %double-float (real) double-float (movable foldable flushable))
 
-(deftransform float ((n &optional f) (* &optional single-float) *)
+(deftransform float ((n f) (* single-float) *)
   '(%single-float n))
 
 (deftransform float ((n f) (* double-float) *)
   '(%double-float n))
 
+(deftransform float ((n) *)
+  '(if (floatp n)
+       n
+       (%single-float n)))
+
 (deftransform %single-float ((n) (single-float) *)
   'n)