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);