diff options
author | Jakub Jelinek <jakub@redhat.com> | 2006-05-29 11:51:15 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2006-05-29 11:51:15 +0200 |
commit | a6404080f569a05ed19727415aa3548f67cb1f8b (patch) | |
tree | 1dbd8c40d78908a06409ce554ddfc92c1874751e /gcc/java | |
parent | 5139e1e9762dc63949c26a406aa70a7c366dc010 (diff) | |
download | gcc-a6404080f569a05ed19727415aa3548f67cb1f8b.zip gcc-a6404080f569a05ed19727415aa3548f67cb1f8b.tar.gz gcc-a6404080f569a05ed19727415aa3548f67cb1f8b.tar.bz2 |
javaop.h (int16, [...]): Define to exactly 16 (resp.
* javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64)
bit wide type.
(jword): Define to uint64 on 64-bit arches.
* jcf-dump.c (print_constant): Cast JPOOL_UINT to long.
From-SVN: r114191
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/java/javaop.h | 29 | ||||
-rw-r--r-- | gcc/java/jcf-dump.c | 2 |
3 files changed, 37 insertions, 1 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 9c83733..0c17d58 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,10 @@ +2006-05-29 Jakub Jelinek <jakub@redhat.com> + + * javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64) + bit wide type. + (jword): Define to uint64 on 64-bit arches. + * jcf-dump.c (print_constant): Cast JPOOL_UINT to long. + 2006-05-28 Kazu Hirata <kazu@codesourcery.com> * class.c, except.c, expr.c, java-gimplify.c: Fix comment diff --git a/gcc/java/javaop.h b/gcc/java/javaop.h index 18c3a28..12e0016 100644 --- a/gcc/java/javaop.h +++ b/gcc/java/javaop.h @@ -30,18 +30,40 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */ typedef unsigned char uint8; #ifndef int16 +#if __SHRT_MAX__ == 32767 #define int16 short +#elif __INT_MAX__ == 32767 +#define int16 int +#elif __LONG_MAX__ == 32767 +#define int16 long +#else +#define int16 short +#endif #endif typedef unsigned int16 uint16; #ifndef int32 +#if __INT_MAX__ == 2147483647 +#define int32 int +#elif __LONG_MAX__ == 2147483647 #define int32 long +#elif __SHRT_MAX__ == 2147483647 +#define int32 short +#else +#define int32 int +#endif #endif typedef unsigned int32 uint32; /* A signed 64-bit (or more) integral type, suitable for Java's 'long'. */ #ifndef int64 +#if __LONG_MAX__ == 9223372036854775807LL +#define int64 long +#elif __LONG_LONG_MAX__ == 9223372036854775807LL #define int64 long long +#else +#define int64 long long +#endif #endif /* An unsigned 64-bit (or more) integral type, same length as int64. */ #ifndef uint64 @@ -82,8 +104,15 @@ typedef struct _jdouble { #ifndef jword +#if defined (__LP64__) || defined (__alpha__) || defined (__MMIX__) \ + || (defined (_ARCH_PPC) && defined (__64BIT__)) \ + || defined (__powerpc64__) || defined (__s390x__) || defined (__x86_64__) \ + || defined (__sparcv9) || (defined (__sparc__) && defined (__arch64__)) +#define jword uint64 +#else #define jword uint32 #endif +#endif #ifndef IMMEDIATE_u1 #define IMMEDIATE_u1 (PC++, CHECK_PC_IN_RANGE(PC), BCODE[PC-1]) diff --git a/gcc/java/jcf-dump.c b/gcc/java/jcf-dump.c index b02dfce..b3246da 100644 --- a/gcc/java/jcf-dump.c +++ b/gcc/java/jcf-dump.c @@ -574,7 +574,7 @@ print_constant (FILE *out, JCF *jcf, int index, int verbosity) } if (verbosity > 1) - fprintf (out, ", bits = 0x%08lx", JPOOL_UINT (jcf, index)); + fprintf (out, ", bits = 0x%08lx", (long) JPOOL_UINT (jcf, index)); break; } |