https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82897 --- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> --- There is "type generic" attribute which disables certain promotions I think (or at least float -> double).