diff --git a/gcc/intl/ChangeLog b/gcc/intl/ChangeLog
index 48d0d7069acd975e2faeca18c8968f249a861aab..1754c116dd3ff77ad440476ef0f5fd51585f4170 100644
--- a/gcc/intl/ChangeLog
+++ b/gcc/intl/ChangeLog
@@ -1,3 +1,7 @@
+2000-09-05  John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+	* gettext.h (nls_uint32): Choose via INT_MAX instead of UINT_MAX.
+
 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
 
 	* dcgettext.c (find_msg): Initialize act before loop.
diff --git a/gcc/intl/gettext.h b/gcc/intl/gettext.h
index 3cd23d7d6ad91ed58bd3580c674c2c51182e0520..7daee9417ec319812168ebbad70a4135d93ce800 100644
--- a/gcc/intl/gettext.h
+++ b/gcc/intl/gettext.h
@@ -39,30 +39,27 @@
    alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
    doing that would require that the configure script compile and *run*
    the resulting executable.  Locally running cross-compiled executables
-   is usually not possible.  */
+   is usually not possible.  We use the maximum values for signed int's
+   for the test to avoid using `U' suffixes.  */
 
-#if __STDC__
-# define UINT_MAX_32_BITS 4294967295U
-#else
-# define UINT_MAX_32_BITS 0xFFFFFFFF
-#endif
+#define INT_MAX_32_BITS 2147483647
 
-/* If UINT_MAX isn't defined, assume it's a 32-bit type.
+/* If INT_MAX isn't defined, assume it's a 32-bit type.
    This should be valid for all systems GNU cares about because
    that doesn't include 16-bit systems, and only modern systems
    (that certainly have <limits.h>) have 64+-bit integral types.  */
 
-#ifndef UINT_MAX
-# define UINT_MAX UINT_MAX_32_BITS
+#ifndef INT_MAX
+# define INT_MAX INT_MAX_32_BITS
 #endif
 
-#if UINT_MAX == UINT_MAX_32_BITS
+#if INT_MAX == INT_MAX_32_BITS
 typedef unsigned nls_uint32;
 #else
-# if USHRT_MAX == UINT_MAX_32_BITS
+# if SHRT_MAX == INT_MAX_32_BITS
 typedef unsigned short nls_uint32;
 # else
-#  if ULONG_MAX == UINT_MAX_32_BITS
+#  if LONG_MAX == INT_MAX_32_BITS
 typedef unsigned long nls_uint32;
 #  else
   /* The following line is intended to throw an error.  Using #error is