diff options
author | Adam Nemet <anemet@caviumnetworks.com> | 2009-01-23 06:29:54 +0000 |
---|---|---|
committer | Adam Nemet <nemet@gcc.gnu.org> | 2009-01-23 06:29:54 +0000 |
commit | 2cd36c22d3d16e24f342829a989ac35f2f442656 (patch) | |
tree | f2ccff5eab03e65287a19a85ac3f6e9c2d8e320d /gcc/c-common.c | |
parent | 5cf9cc965f9307beeed14acf4814677041e5bad7 (diff) | |
download | gcc-2cd36c22d3d16e24f342829a989ac35f2f442656.zip gcc-2cd36c22d3d16e24f342829a989ac35f2f442656.tar.gz gcc-2cd36c22d3d16e24f342829a989ac35f2f442656.tar.bz2 |
c-decl.c (finish_struct): Move code to set DECL_PACKED after DECL_BIT_FIELD is alreay known.
* c-decl.c (finish_struct): Move code to set DECL_PACKED after
DECL_BIT_FIELD is alreay known. Also inherit packed for bitfields
regardless of their type.
* c-common.c (handle_packed_attribute): Don't ignore packed on
bitfields.
* c.opt (Wpacked-bitfield-compat): New warning option.
* stor-layout.c (place_field): Warn if offset of a field changed.
* doc/extend.texi (packed): Mention the ABI change.
* doc/invoke.texi (-Wpacked-bitfield-compat): Document.
(Warning Options): Add it to the list.
cp/
* class.c (check_field_decls): Also inherit packed for bitfields
regardless of their type.
testsuite/
* gcc.dg/bitfld-15.c, gcc.dg/bitfld-16.c,
gcc.dg/bitfld-17.c,gcc.dg/bitfld-18.c: New tests.
* g++.dg/ext/bitfield2.C, g++.dg/ext/bitfield3.C,
g++.dg/ext/bitfield4.C, g++.dg/ext/bitfield5.C: New tests.
From-SVN: r143584
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r-- | gcc/c-common.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index 5eed1dc..81992d4 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -5113,7 +5113,9 @@ handle_packed_attribute (tree *node, tree name, tree ARG_UNUSED (args), } else if (TREE_CODE (*node) == FIELD_DECL) { - if (TYPE_ALIGN (TREE_TYPE (*node)) <= BITS_PER_UNIT) + if (TYPE_ALIGN (TREE_TYPE (*node)) <= BITS_PER_UNIT + /* Still pack bitfields. */ + && ! DECL_INITIAL (*node)) warning (OPT_Wattributes, "%qE attribute ignored for field of type %qT", name, TREE_TYPE (*node)); |