diff options
| author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-05-29 09:51:15 +0000 |
|---|---|---|
| committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-05-29 09:51:15 +0000 |
| commit | 9c513eee5eca2f3089eb947a45e42bfbeaaaf1bb (patch) | |
| tree | 1dbd8c40d78908a06409ce554ddfc92c1874751e | |
| parent | e5a0d2e27ffede7e5ff8d5ab92595aa932b373e1 (diff) | |
| download | ppe42-gcc-9c513eee5eca2f3089eb947a45e42bfbeaaaf1bb.tar.gz ppe42-gcc-9c513eee5eca2f3089eb947a45e42bfbeaaaf1bb.zip | |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114191 138bc75d-0d04-0410-961f-82ee72b054a4
| -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 9c8373333ce..0c17d5836f1 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 18c3a288634..12e001600be 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 b02dfceabe2..b3246daff5a 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; } |

