coerce compiler macro does not apply the optimization for same types
It seems that the compiler has necessary paths to optimize
(defun maybe-maybe (x y)
(declare (speed 3) (debug 0) (ext:assume-no-errors))
(check-type x single-float)
(check-type y fixnum)
(cons (coerce x 'single-float)
(coerce y 'single-float)))
so that (coerce x 'single-float) is x, but disassembling the compiled file shows that it is not optimized and we have
T0 = ecl_make_single_float(ecl_to_float(v1x));
T1 = ecl_make_single_float(ecl_to_float(v2y));
value0 = CONS(T0,T1);