aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2006-05-29 10:00:57 +0000
committerJakub Jelinek <jakub@redhat.com>2006-05-29 10:00:57 +0000
commit163f3e1d9bd1648a1bad74fce42af1223366ed4e (patch)
treed5de1e81f4cd7c3c63c71a36cb3ef049c7abad17
parent271cb64927be7c8dc662d29c29d53f2204414268 (diff)
svn merge -r114190:114191 svn+ssh://gcc.gnu.org/svn/gcc/trunk
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_1-branch@114194 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/java/ChangeLog7
-rw-r--r--gcc/java/javaop.h29
-rw-r--r--gcc/java/jcf-dump.c2
3 files changed, 37 insertions, 1 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 3e473ecc989..c3b23e0497f 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-24 Release Manager
* GCC 4.1.1 released.
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;
}