[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