* diagnostic.h (output_host_wide_integer): Declare.
authorgdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 22 Jun 2003 08:05:39 +0000 (08:05 +0000)
committergdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 22 Jun 2003 08:05:39 +0000 (08:05 +0000)
* diagnostic.c (output_long_long_decicaml): New function.
(output_host_wide_integer): Likewise.
(output_format): Use them.  Handle "%ll" and "%w".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68323 138bc75d-0d04-0410-961f-82ee72b054a4

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

index b630e29..2287e10 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 35fbb6f..ac7b9a0 100644 (file)
@@ -335,6 +335,18 @@ output_long_hexadecimal (output_buffer *buffer, long unsigned int 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)
 {
   output_formatted_scalar (buffer, HOST_PTR_PRINTF, 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 1b6c172..80d6a44 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 *);