-/* Do we need int (for 32-bit or 64-bit systems) or long (16-bit or
- normally 32-bit) for f2c-type integers? */
-
-#ifndef BITS_PER_WORD
-#define BITS_PER_WORD 32
-#endif
-
-#ifndef CHAR_TYPE_SIZE
-#define CHAR_TYPE_SIZE BITS_PER_UNIT
-#endif
-
-#ifndef SHORT_TYPE_SIZE
-#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
-#endif
-
-#ifndef INT_TYPE_SIZE
-#define INT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef LONG_LONG_TYPE_SIZE
-#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef WCHAR_UNSIGNED
-#define WCHAR_UNSIGNED 0
-#endif
-
-#ifndef FLOAT_TYPE_SIZE
-#define FLOAT_TYPE_SIZE BITS_PER_WORD
-#endif
-
-#ifndef DOUBLE_TYPE_SIZE
-#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#ifndef LONG_DOUBLE_TYPE_SIZE
-#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-#endif
-
-#if LONG_TYPE_SIZE == FLOAT_TYPE_SIZE
-# define FFECOM_f2cINTEGER FFECOM_f2ccodeLONG
-# define FFECOM_f2cLOGICAL FFECOM_f2ccodeLONG
-#elif INT_TYPE_SIZE == FLOAT_TYPE_SIZE
-# define FFECOM_f2cINTEGER FFECOM_f2ccodeINT
-# define FFECOM_f2cLOGICAL FFECOM_f2ccodeINT
-#else
-# error Cannot find a suitable type for FFECOM_f2cINTEGER
-#endif
-
-#if LONG_TYPE_SIZE == (FLOAT_TYPE_SIZE * 2)
-# define FFECOM_f2cLONGINT FFECOM_f2ccodeLONG
-#elif LONG_LONG_TYPE_SIZE == (FLOAT_TYPE_SIZE * 2)
-# define FFECOM_f2cLONGINT FFECOM_f2ccodeLONGLONG
-#else
-# error Cannot find a suitable type for FFECOM_f2cLONGINT
-#endif
+/* The C front-end provides __g77_integer and __g77_uinteger types so that
+ the appropriately-sized signed and unsigned integer types are available
+ for libf2c. If you change this, also the definitions of those types
+ in ../c-decl.c. */
+#define FFECOM_f2cINTEGER \
+ (LONG_TYPE_SIZE == FLOAT_TYPE_SIZE \
+ ? FFECOM_f2ccodeLONG \
+ : (INT_TYPE_SIZE == FLOAT_TYPE_SIZE \
+ ? FFECOM_f2ccodeINT \
+ : (abort (), -1)))
+
+#define FFECOM_f2cLOGICAL FFECOM_f2cINTEGER
+
+/* The C front-end provides __g77_longint and __g77_ulongint types so that
+ the appropriately-sized signed and unsigned integer types are available
+ for libf2c. If you change this, also the definitions of those types
+ in ../c-decl.c. */
+#define FFECOM_f2cLONGINT \
+ (LONG_TYPE_SIZE == (FLOAT_TYPE_SIZE * 2) \
+ ? FFECOM_f2ccodeLONG \
+ : (LONG_LONG_TYPE_SIZE == (FLOAT_TYPE_SIZE * 2) \
+ ? FFECOM_f2ccodeLONGLONG \
+ : (abort (), -1)))