diff options
author | Joseph Myers <jsm@polyomino.org.uk> | 2003-12-20 00:00:39 +0000 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2003-12-20 00:00:39 +0000 |
commit | be7ac47149a21472cdb7f7085d795d8c40507fb9 (patch) | |
tree | 64a0ab4c53fb87562e46a75c1284f6876aad3388 /gcc | |
parent | 0f901c4c23669ad6a7dde805042e6566793c8eea (diff) | |
download | gcc-be7ac47149a21472cdb7f7085d795d8c40507fb9.zip gcc-be7ac47149a21472cdb7f7085d795d8c40507fb9.tar.gz gcc-be7ac47149a21472cdb7f7085d795d8c40507fb9.tar.bz2 |
c-format.c (print_char_table): Allow 'I' flag on floating point decimal formats.
* c-format.c (print_char_table): Allow 'I' flag on floating point
decimal formats.
testsuite:
* gcc.dg/format/ext-1.c: Allow 'I' flag on floating point decimal
formats.
From-SVN: r74860
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-format.c | 28 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/format/ext-1.c | 14 |
4 files changed, 31 insertions, 21 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c761ccc..da213a3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-12-19 Joseph S. Myers <jsm@polyomino.org.uk> + + * c-format.c (print_char_table): Allow 'I' flag on floating point + decimal formats. + 2003-12-19 Stuart Hastings <stuart@apple.com> * gcc/config/i386/i386.c (ix86_expand_call, x86_output_mi_thunk): Trivial fixes for i386.c on Darwin/x86. diff --git a/gcc/c-format.c b/gcc/c-format.c index 269be17..a532259 100644 --- a/gcc/c-format.c +++ b/gcc/c-format.c @@ -755,23 +755,23 @@ static const format_flag_pair strfmon_flag_pairs[] = static const format_char_info print_char_table[] = { /* C89 conversion specifiers. */ - { "di", 0, STD_C89, { T89_I, T99_SC, T89_S, T89_L, T9L_LL, TEX_LL, T99_SST, T99_PD, T99_IM }, "-wp0 +'I", "i" }, - { "oxX", 0, STD_C89, { T89_UI, T99_UC, T89_US, T89_UL, T9L_ULL, TEX_ULL, T99_ST, T99_UPD, T99_UIM }, "-wp0#", "i" }, - { "u", 0, STD_C89, { T89_UI, T99_UC, T89_US, T89_UL, T9L_ULL, TEX_ULL, T99_ST, T99_UPD, T99_UIM }, "-wp0'I", "i" }, - { "fgG", 0, STD_C89, { T89_D, BADLEN, BADLEN, T99_D, BADLEN, T89_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#'", "" }, - { "eE", 0, STD_C89, { T89_D, BADLEN, BADLEN, T99_D, BADLEN, T89_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#", "" }, - { "c", 0, STD_C89, { T89_I, BADLEN, BADLEN, T94_WI, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "" }, - { "s", 1, STD_C89, { T89_C, BADLEN, BADLEN, T94_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "cR" }, - { "p", 1, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "c" }, - { "n", 1, STD_C89, { T89_I, T99_SC, T89_S, T89_L, T9L_LL, BADLEN, T99_SST, T99_PD, T99_IM }, "", "W" }, + { "di", 0, STD_C89, { T89_I, T99_SC, T89_S, T89_L, T9L_LL, TEX_LL, T99_SST, T99_PD, T99_IM }, "-wp0 +'I", "i" }, + { "oxX", 0, STD_C89, { T89_UI, T99_UC, T89_US, T89_UL, T9L_ULL, TEX_ULL, T99_ST, T99_UPD, T99_UIM }, "-wp0#", "i" }, + { "u", 0, STD_C89, { T89_UI, T99_UC, T89_US, T89_UL, T9L_ULL, TEX_ULL, T99_ST, T99_UPD, T99_UIM }, "-wp0'I", "i" }, + { "fgG", 0, STD_C89, { T89_D, BADLEN, BADLEN, T99_D, BADLEN, T89_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#'I", "" }, + { "eE", 0, STD_C89, { T89_D, BADLEN, BADLEN, T99_D, BADLEN, T89_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#I", "" }, + { "c", 0, STD_C89, { T89_I, BADLEN, BADLEN, T94_WI, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "" }, + { "s", 1, STD_C89, { T89_C, BADLEN, BADLEN, T94_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "cR" }, + { "p", 1, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "c" }, + { "n", 1, STD_C89, { T89_I, T99_SC, T89_S, T89_L, T9L_LL, BADLEN, T99_SST, T99_PD, T99_IM }, "", "W" }, /* C99 conversion specifiers. */ - { "F", 0, STD_C99, { T99_D, BADLEN, BADLEN, T99_D, BADLEN, T99_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#'", "" }, - { "aA", 0, STD_C99, { T99_D, BADLEN, BADLEN, T99_D, BADLEN, T99_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#", "" }, + { "F", 0, STD_C99, { T99_D, BADLEN, BADLEN, T99_D, BADLEN, T99_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#'I", "" }, + { "aA", 0, STD_C99, { T99_D, BADLEN, BADLEN, T99_D, BADLEN, T99_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#", "" }, /* X/Open conversion specifiers. */ - { "C", 0, STD_EXT, { TEX_WI, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "" }, - { "S", 1, STD_EXT, { TEX_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "R" }, + { "C", 0, STD_EXT, { TEX_WI, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "" }, + { "S", 1, STD_EXT, { TEX_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "R" }, /* GNU conversion specifiers. */ - { "m", 0, STD_EXT, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "" }, + { "m", 0, STD_EXT, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "" }, { NULL, 0, 0, NOLENGTHS, NULL, NULL } }; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dd13133..bb7bce6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-12-19 Joseph S. Myers <jsm@polyomino.org.uk> + + * gcc.dg/format/ext-1.c: Allow 'I' flag on floating point decimal + formats. + 2003-12-19 Mark Mitchell <mark@codesourcery.com> PR c++/12795 diff --git a/gcc/testsuite/gcc.dg/format/ext-1.c b/gcc/testsuite/gcc.dg/format/ext-1.c index e69e756..3b02089 100644 --- a/gcc/testsuite/gcc.dg/format/ext-1.c +++ b/gcc/testsuite/gcc.dg/format/ext-1.c @@ -92,7 +92,7 @@ foo (quad_t q, u_quad_t uq, quad_t *qn, size_t z, size_t *zn, long long int ll, */ printf ("%*2$.*1$m", i, i); printf ("%1$*2$.*1$m", i, i); /* { dg-warning "no argument" "printf %1\$m" } */ - /* As an extension, glibc includes the "I" flag for decimal integer + /* As an extension, glibc includes the "I" flag for decimal formats, to output using the locale's digits (e.g. in Arabic). In GCC, we require this to be in the standard place for flags, though glibc allows it also after width or precision. @@ -102,12 +102,12 @@ foo (quad_t q, u_quad_t uq, quad_t *qn, size_t z, size_t *zn, long long int ll, printf ("%Ix", u); /* { dg-warning "flag" "bad use of I flag" } */ printf ("%IX", u); /* { dg-warning "flag" "bad use of I flag" } */ printf ("%In", n); /* { dg-warning "flag" "bad use of I flag" } */ - printf ("%If", d); /* { dg-warning "flag" "bad use of I flag" } */ - printf ("%IF", d); /* { dg-warning "flag" "bad use of I flag" } */ - printf ("%Ie", d); /* { dg-warning "flag" "bad use of I flag" } */ - printf ("%IE", d); /* { dg-warning "flag" "bad use of I flag" } */ - printf ("%Ig", d); /* { dg-warning "flag" "bad use of I flag" } */ - printf ("%IG", d); /* { dg-warning "flag" "bad use of I flag" } */ + printf ("%If", d); + printf ("%IF", d); + printf ("%Ie", d); + printf ("%IE", d); + printf ("%Ig", d); + printf ("%IG", d); printf ("%Ia", d); /* { dg-warning "flag" "bad use of I flag" } */ printf ("%IA", d); /* { dg-warning "flag" "bad use of I flag" } */ printf ("%Ic", i); /* { dg-warning "flag" "bad use of I flag" } */ |