aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@cygnus.com>1998-12-14 15:32:49 +0000
committerTom Tromey <tromey@gcc.gnu.org>1998-12-14 15:32:49 +0000
commit11b8962251b584202478b1d3d0d2413f6d335dd4 (patch)
treeee6a2b7b903b6955eef8a2fd68d8055738db2dd3
parenta5c23b031d6ace01a4a6e9557e7746918ed04bed (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/java/gjavah.c47
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:
{