From be7ac47149a21472cdb7f7085d795d8c40507fb9 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Sat, 20 Dec 2003 00:00:39 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/c-format.c | 28 ++++++++++++++-------------- gcc/testsuite/ChangeLog | 5 +++++ 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 c761cccf53b..da213a32708 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-12-19 Joseph S. Myers + + * c-format.c (print_char_table): Allow 'I' flag on floating point + decimal formats. + 2003-12-19 Stuart Hastings * 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 269be1795db..a532259750c 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 dd131336e93..bb7bce642a7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-12-19 Joseph S. Myers + + * gcc.dg/format/ext-1.c: Allow 'I' flag on floating point decimal + formats. + 2003-12-19 Mark Mitchell PR c++/12795 diff --git a/gcc/testsuite/gcc.dg/format/ext-1.c b/gcc/testsuite/gcc.dg/format/ext-1.c index e69e756085c..3b020892afd 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" } */ -- 2.30.2