diff options
author | Joseph Myers <joseph@codesourcery.com> | 2005-07-16 17:01:57 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2005-07-16 17:01:57 +0100 |
commit | 0b359b010308064ecce067200e66662b354d3b7d (patch) | |
tree | 5f32a34bba8e5b6ed4a7e93f9ba7f8ff1df01cd4 /gcc/c-pretty-print.c | |
parent | 8fcef540f3a1600c26bc7dbebed9c6142f3da7e8 (diff) | |
download | gcc-0b359b010308064ecce067200e66662b354d3b7d.zip gcc-0b359b010308064ecce067200e66662b354d3b7d.tar.gz gcc-0b359b010308064ecce067200e66662b354d3b7d.tar.bz2 |
re PR c/22421 (problems with -Wformat and bit-fields)
PR c/22421
* c-decl.c (c_build_bitfield_integer_type): New function.
(finish_struct): Call it.
* c-pretty-print.c (pp_c_type_specifier): Handle bit-field types.
testsuite:
* gcc.dg/format/bitfld-1.c: New test.
From-SVN: r102091
Diffstat (limited to 'gcc/c-pretty-print.c')
-rw-r--r-- | gcc/c-pretty-print.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/gcc/c-pretty-print.c b/gcc/c-pretty-print.c index ebd917e..6276923 100644 --- a/gcc/c-pretty-print.c +++ b/gcc/c-pretty-print.c @@ -315,10 +315,21 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t) case INTEGER_TYPE: case REAL_TYPE: if (TYPE_NAME (t)) - t = TYPE_NAME (t); + { + t = TYPE_NAME (t); + pp_c_type_specifier (pp, t); + } else - t = c_common_type_for_mode (TYPE_MODE (t), TYPE_UNSIGNED (t)); - pp_c_type_specifier (pp, t); + { + int prec = TYPE_PRECISION (t); + t = c_common_type_for_mode (TYPE_MODE (t), TYPE_UNSIGNED (t)); + pp_c_type_specifier (pp, t); + if (TYPE_PRECISION (t) != prec) + { + pp_string (pp, ":"); + pp_decimal_int (pp, prec); + } + } break; case TYPE_DECL: |