aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-pretty-print.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2005-07-16 17:01:57 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2005-07-16 17:01:57 +0100
commit0b359b010308064ecce067200e66662b354d3b7d (patch)
tree5f32a34bba8e5b6ed4a7e93f9ba7f8ff1df01cd4 /gcc/c-pretty-print.c
parent8fcef540f3a1600c26bc7dbebed9c6142f3da7e8 (diff)
downloadgcc-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.c17
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: