This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gfortran] Disable "long double" real kind on mingw32


Hi all,

The Windows printf doesn't handle "long double" right, and since this all floating-point values are passed to the library as long double, gfortran is unusable on mingw32 if it thinks it has a long double type. For more than one year, I've been building my gfortran mingw32 binaries with a hack in the front-end not to use them. I'd like to install that on mainline, by defining a GFORTRAN_WITHOUT_LONGDOUBLE macro in the mingw32 config file.

Do I need approval for the config/ part of the patch? (it defines a macro that only the Fortran front-end will use)

Otherwise, and unless someone objects to the following patch in the next few days, I'll commit it to mainline.

Thanks,
FX



Index: fortran/trans-types.c
===================================================================
--- fortran/trans-types.c (revision 118930)
+++ fortran/trans-types.c (working copy)
@@ -172,8 +172,10 @@
library assumes these are the only floating point types. */
if (mode != TYPE_MODE (float_type_node)
- && (mode != TYPE_MODE (double_type_node))
- && (mode != TYPE_MODE (long_double_type_node)))
+#ifdef GFORTRAN_WITHOUT_LONGDOUBLE
+ && (mode != TYPE_MODE (long_double_type_node))
+#endif
+ && (mode != TYPE_MODE (double_type_node)))
continue;
/* Let the kind equal the precision divided by 8, rounding up. Again,
Index: config/i386/mingw32.h
===================================================================
--- config/i386/mingw32.h (revision 118930)
+++ config/i386/mingw32.h (working copy)
@@ -116,3 +116,7 @@
/* mingw32 atexit function is safe to use in shared libraries. Use it
to register C++ static destructors. */
#define TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT hook_bool_void_true
+
+/* mingw32 doesn't have proper I/O support for long double. */
+#undef GFORTRAN_WITHOUT_LONGDOUBLE
+#define GFORTRAN_WITHOUT_LONGDOUBLE



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]