diff options
author | Tom Tromey <tromey@cygnus.com> | 1998-12-14 15:32:49 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1998-12-14 15:32:49 +0000 |
commit | 11b8962251b584202478b1d3d0d2413f6d335dd4 (patch) | |
tree | ee6a2b7b903b6955eef8a2fd68d8055738db2dd3 | |
parent | a5c23b031d6ace01a4a6e9557e7746918ed04bed (diff) | |
download | gcc-11b8962251b584202478b1d3d0d2413f6d335dd4.zip gcc-11b8962251b584202478b1d3d0d2413f6d335dd4.tar.gz gcc-11b8962251b584202478b1d3d0d2413f6d335dd4.tar.bz2 |
gjavah.c (print_field_info): If value to print is the smallest value of its size...
* gjavah.c (print_field_info): If value to print is the smallest
value of its size, then print as hex to avoid later warnings from
C++ compiler.
From-SVN: r24313
-rw-r--r-- | gcc/java/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/java/gjavah.c | 47 |
2 files changed, 40 insertions, 13 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index f81222f..a289309 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,5 +1,11 @@ 1998-12-14 Tom Tromey <tromey@cygnus.com> + * gjavah.c (print_field_info): If value to print is the smallest + value of its size, then print as hex to avoid later warnings from + C++ compiler. + +1998-12-14 Tom Tromey <tromey@cygnus.com> + * gjavah.c (decompile_method): Decompile `return null'. (process_file): Generate `#pragma interface'. (method_declared): New global. diff --git a/gcc/java/gjavah.c b/gcc/java/gjavah.c index 8fa0d0e..af9a6c7 100644 --- a/gcc/java/gjavah.c +++ b/gcc/java/gjavah.c @@ -299,27 +299,48 @@ DEFUN(print_field_info, (stream, jcf, name_index, sig_index, flags), { if (current_field_value > 0) { - jlong num; char buffer[25]; generate_access (stream, flags); switch (JPOOL_TAG (jcf, current_field_value)) { case CONSTANT_Integer: - fputs (" static const jint ", out); - print_name (out, jcf, name_index); - fputs (" = ", out); - num = JPOOL_INT (jcf, current_field_value); - format_int (buffer, num, 10); - fprintf (out, "%sL;\n", buffer); + { + jint num; + fputs (" static const jint ", out); + print_name (out, jcf, name_index); + fputs (" = ", out); + num = JPOOL_INT (jcf, current_field_value); + /* We single out the most negative number to print in + hex. That avoids later warnings from g++. */ + if (num == 0x80000000) + { + strcpy (buffer, "0x"); + format_uint (buffer + 2, (jlong) (uint32) num, 16); + } + else + format_int (buffer, (jlong) num, 10); + fprintf (out, "%sL;\n", buffer); + } break; case CONSTANT_Long: - fputs (" static const jlong ", out); - print_name (out, jcf, name_index); - fputs (" = ", out); - num = JPOOL_LONG (jcf, current_field_value); - format_int (buffer, num, 10); - fprintf (out, "%sLL;\n", buffer); + { + jlong num; + fputs (" static const jlong ", out); + print_name (out, jcf, name_index); + fputs (" = ", out); + num = JPOOL_LONG (jcf, current_field_value); + /* We single out the most negative number to print in + hex. That avoids later warnings from g++. */ + if (num == 0x8000000000000000LL) + { + strcpy (buffer, "0x"); + format_uint (buffer + 2, num, 16); + } + else + format_int (buffer, num, 10); + fprintf (out, "%sLL;\n", buffer); + } break; case CONSTANT_Float: { |