[LLVMdev] Constants.cpp:368: error: `INT8_MAX' undeclared(firstuse this function)

Henrik Bach henrik_bach_llvm at hotmail.com
Thu Jul 15 15:26:45 PDT 2004


>From: Chris Lattner <sabre at nondot.org>
>Date: Wed, 14 Jul 2004 14:49:01 -0500 (CDT)

>
>There is currently support for building in non-cygwin windows environments
>protected by _MSC_VER.  You just need to broaden the scope of the #ifndef
>to include internix.
>

Sorry Chris, but my DataTypes.h.in seems to be outdated (due to I'm porting 
LLVM 1.2), so I'm not at the moment able to edit the file. Anyway, at this 
moment, I don't know how to hack it, before I know more about autoconf. I'll 
edit later when 1.3 is released.

Hi

I've found that the min and max values for integral data types, for Interix 
3.5 (gcc automatic macro is __INTERIX), are defined in the system header 
file: '/usr/include/limits.h':

--- /usr/include/limits.h ---------------------
...
#define SCHAR_MIN	(-128)		/* min value for a signed char */
#define SCHAR_MAX	  127		/* max value for a signed char */
#define UCHAR_MAX	 0xff		/* max value for a unsigned char */

#if defined(_CHAR_UNSIGNED) || defined(__CHAR_UNSIGNED__)
#define CHAR_MIN	0
#define CHAR_MAX	UCHAR_MAX
#else
#define CHAR_MIN	SCHAR_MIN	/* mim value for a char */
#define CHAR_MAX	SCHAR_MAX	/* max value for a char */
#endif	/* _CHAR_UNSIGNED */


#define SHRT_MIN	(-32768)	/* min value for (signed) short */
#define SHRT_MAX	  32767 	/* max value for (signed) short */
#define USHRT_MAX	 0xffff	        /* max value for unsigned short */

#define INT_MIN 	(-2147483647-1) /* min value for (signed) int */
#define INT_MAX 	  2147483647	/* max value for (signed) int */
#define UINT_MAX	  0xffffffff	/* max value for unsigned int */

#define LONG_MIN	(-2147483647L-1) /* minimum (signed) long */
#define LONG_MAX	  2147483647L	/* maximum (signed) long */
#define ULONG_MAX	  0xffffffffUL	/* maximum unsigned long */

#if defined(_ALL_SOURCE) \
	|| (__STDC__ - 0 == 0) && !defined(_POSIX_C_SOURCE)  \
			       && !defined(_XOPEN_SOURCE)
/*
* Minimum and maximum values for 64-bit types
* Define all the various well-known flavors of symbols
*
*/
#define ULLONG_MAX       ((u_quad_t)0-1)	    /* 0xffffffffffffffff */
#define LLONG_MAX        ((quad_t)(ULLONG_MAX>>1))  /* 0x7fffffffffffffff */
#define LLONG_MIN        ((quad_t)((-LLONG_MAX)-1)) /* 0x8000000000000000 */


#define  LONG_LONG_MIN	 LLONG_MIN
#define  LONG_LONG_MAX	 LLONG_MAX
#define ULONG_LONG_MAX	 ULLONG_MAX


#define QUAD_MIN 	LLONG_MIN
#define QUAD_MAX 	LLONG_MAX
#define UQUAD_MAX 	ULLONG_MAX
...
--- /usr/include/limits.h ---------------------

Which defintions do you think encompasses LLVMs expectations?:

INT8_MAX 	-	SCHAR_MAX	//signed
INT8_MIN 	-	SCHAR_MIN	//signed
INT16_MAX 	-	SHRT_MAX	//signed
INT16_MIN 	-	SHRT_MIN	//signed
INT32_MAX 	-	LONG_MAX	//signed
INT32_MIN 	-	LONG_MIN	//signed
...
UINT8_MAX 	-	CHAR_MIN	//unsigned - #define _CHAR_UNSIGNED || 
__CHAR_UNSIGNED__
UINT8_MIN	-	(implicitly 0?)
UINT16_MAX 	-	USHRT_MAX	//unsigned
UINT16_MIN	-	(implicitly 0?)
UINT32_MAX 	-	ULONG_MAX	//unsigned
UINT32_MIN	-	(implicitly 0?)


/Henrik

_________________________________________________________________
Få alle de nye og sjove ikoner med MSN Messenger http://www.msn.dk/messenger




More information about the llvm-dev mailing list