[gnu.gcc.bug] INT_MIN should be negative

eggert@twinsun.com (Paul Eggert) (02/03/90)

The following function should yield 1.  But under GCC 1.36 (SPARCstation 1,
SunOS 4.0.3c), it yields 0.

	#include <limits.h>
	main() { return INT_MIN < 0; }

The problem is that INT_MIN yields an unsigned value.  This contradicts ANSI C
2.2.4.2, which says that INT_MIN shall ``have the same type as would an
expression that is an object of the corresponding type converted according to
the integral promotions.'' Here is a fix.

*** old/limits.h	Mon Sep 25 15:00:53 1989
--- new/limits.h	Fri Feb  2 12:40:56 1990
***************
*** 28,34 ****
  #define USHRT_MAX 65535U
  
  /* Minimum and maximum values a `signed int' can hold.  */
! #define INT_MIN -2147483648
  #define INT_MAX 2147483647
  
  /* Maximum value an `unsigned int' can hold.  (Minimum is 0).  */
--- 28,34 ----
  #define USHRT_MAX 65535U
  
  /* Minimum and maximum values a `signed int' can hold.  */
! #define INT_MIN (-INT_MAX-1)
  #define INT_MAX 2147483647
  
  /* Maximum value an `unsigned int' can hold.  (Minimum is 0).  */