If the idea is to avoid having to do a conversion of an integer_type_node to another type (and hence waste node), why doesn't it call force_fit_type to ensure that the constant doesn't overflow the requested type?