diagnostic.h (output_host_wide_integer): Declare.
authorGabriel Dos Reis <gdr@integrable-solutions.net>
Sun, 22 Jun 2003 08:05:39 +0000 (08:05 +0000)
committerGabriel Dos Reis <gdr@gcc.gnu.org>
Sun, 22 Jun 2003 08:05:39 +0000 (08:05 +0000)
* diagnostic.h (output_host_wide_integer): Declare.
* diagnostic.c (output_long_long_decicaml): New function.
(output_host_wide_integer): Likewise.
(output_format): Use them.  Handle "%ll" and "%w".

From-SVN: r68323

gcc/ChangeLog
gcc/diagnostic.c
gcc/diagnostic.h

index b630e292a1183f3fe7ef6ae868273fcec7e85bc7..2287e10805a5c81c9485d56153933d68131ce0f9 100644 (file)
@@ -1,3 +1,10 @@
+2003-06-22  Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+       * diagnostic.h (output_host_wide_integer): Declare.
+       * diagnostic.c (output_long_long_decicaml): New function.
+       (output_host_wide_integer): Likewise.
+       (output_format): Use them.  Handle "%ll" and "%w".
+
 2003-06-21  Jason Thorpe  <thorpej@wasabisystems.com>
 
        * config.gcc (*-*-netbsd*): Add t-libgcc-pic to tmake_file.
index 35fbb6f2288c5444c3485b02bee00101b2b9474c..ac7b9a05963a455658cdfe7fed89c2657f5c6690 100644 (file)
@@ -334,6 +334,18 @@ output_long_hexadecimal (output_buffer *buffer, long unsigned int i)
   output_formatted_scalar (buffer, "%lx", i);
 }
 
+static inline void
+output_long_long_decimal (output_buffer *buffer, long long int i)
+{
+  output_formatted_scalar (buffer, "%lld", i);
+}
+
+void
+output_host_wide_integer (output_buffer *buffer, HOST_WIDE_INT i)
+{
+  output_formatted_scalar (buffer, HOST_WIDE_INT_PRINT_DEC, i);
+}
+
 static inline void
 output_pointer (output_buffer *buffer, void *p)
 {
@@ -457,6 +469,8 @@ output_buffer_to_stream (output_buffer *buffer)
    %o: unsigned integer in base eight.
    %x: unsigned integer in base sixteen.
    %ld, %li, %lo, %lu, %lx: long versions of the above.
+   %ll: long long int.
+   %w: and integer of type HOST_WIDE_INT.
    %c: character.
    %s: string.
    %p: pointer.
@@ -542,6 +556,15 @@ output_format (output_buffer *buffer, text_info *text)
               (buffer, va_arg (*text->args_ptr, unsigned int));
          break;
 
+        case 'l':
+          if (long_integer)
+            output_long_long_decimal
+              (buffer, va_arg (*text->args_ptr, long long));
+          else
+            /* Sould not happen. */
+            abort();
+          break;
+
        case 'm':
          output_add_string (buffer, xstrerror (text->err_no));
          break;
@@ -575,6 +598,11 @@ output_format (output_buffer *buffer, text_info *text)
          }
          break;
 
+        case 'w':
+          output_host_wide_integer
+            (buffer, va_arg (*text->args_ptr, HOST_WIDE_INT));
+          break;                                   
+
        default:
          if (!buffer->format_decoder
               || !(*buffer->format_decoder) (buffer, text))
index 1b6c1721035089c7fc1aebf1dc298424b932b87c..80d6a44d68daee2b93a638ccd5322c4b4441e6b9 100644 (file)
@@ -315,6 +315,7 @@ extern int output_space_left (const output_buffer *);
 extern void output_append (output_buffer *, const char *, const char *);
 extern void output_add_character (output_buffer *, int);
 extern void output_decimal (output_buffer *, int);
+extern void output_host_wide_integer (output_buffer *, HOST_WIDE_INT);
 extern void output_add_string (output_buffer *, const char *);
 extern void output_add_identifier (output_buffer *, tree);
 extern const char *output_finalize_message (output_buffer *);