diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/diagnostic.c | 28 | ||||
-rw-r--r-- | gcc/diagnostic.h | 1 |
3 files changed, 36 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b630e29..2287e10 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 35fbb6f..ac7b9a0 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -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)) diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h index 1b6c172..80d6a44 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 *); |