From 0e9e3a8b78c5e8f59542d62945ec227fab3e8afd Mon Sep 17 00:00:00 2001 From: Gabriel Dos Reis Date: Sun, 22 Jun 2003 08:05:39 +0000 Subject: [PATCH] diagnostic.h (output_host_wide_integer): Declare. * 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 | 7 +++++++ gcc/diagnostic.c | 28 ++++++++++++++++++++++++++++ gcc/diagnostic.h | 1 + 3 files changed, 36 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b630e292a11..2287e10805a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-06-22 Gabriel Dos Reis + + * 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 * config.gcc (*-*-netbsd*): Add t-libgcc-pic to tmake_file. diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 35fbb6f2288..ac7b9a05963 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -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)) diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h index 1b6c1721035..80d6a44d68d 100644 --- a/gcc/diagnostic.h +++ b/gcc/diagnostic.h @@ -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 *);