Commit 57883245 by Jason Merrill

(finish_struct): Don't mess with the type of bitfields.

From-SVN: r10673
parent 953776a3
......@@ -5690,27 +5690,6 @@ finish_struct (t, fieldlist, attributes)
TYPE_ALIGN (x) = TYPE_ALIGN (t);
}
/* Promote each bit-field's type to int if it is narrower than that. */
for (x = fieldlist; x; x = TREE_CHAIN (x))
if (DECL_BIT_FIELD (x)
&& (C_PROMOTING_INTEGER_TYPE_P (TREE_TYPE (x))
|| DECL_FIELD_SIZE (x) < TYPE_PRECISION (integer_type_node)))
{
tree type = TREE_TYPE (x);
/* Preserve unsignedness if traditional
or if not really getting any wider. */
if (TREE_UNSIGNED (type)
&& (flag_traditional
||
(TYPE_PRECISION (type) == TYPE_PRECISION (integer_type_node)
&&
DECL_FIELD_SIZE (x) == TYPE_PRECISION (integer_type_node))))
TREE_TYPE (x) = unsigned_type_node;
else
TREE_TYPE (x) = integer_type_node;
}
/* If this was supposed to be a transparent union, but we can't
make it one, warn and turn off the flag. */
if (TREE_CODE (t) == UNION_TYPE
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment