https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99355
--- Comment #3 from Nick <nickpapior at gmail dot com> --- Yes, real*4 -> real*16. I agree that the option semantics are not clear. However, the documentation says: Promote all REAL(KIND=M) entities to REAL(KIND=N) entities. If REAL(KIND=N) is unavailable, then an error will be issued. All other real kind types are unaffected by this option. These options should be used with care and may not be suitable for your codes. Areas of possible concern include calls to external procedures, alignment in EQUIVALENCE and/or COMMON, generic interfaces, BOZ literal constant conversion, and I/O. Inspection of the intermediate representation of the translated Fortran code, produced by -fdump-tree-original, is suggested. >From this I read that no *double* promotions are done. However, the text isn't clear either. I would just not assume that *everything* gets promoted, especially since there is a -freal-4-real-16 option, so users can already be explicit. I guess this also applies to the -finteger-4-integer-8 and friends (untested)