stor-layout.c (layout_decl): Do not bump the alignment of a bit-field to more than byte alignment if...
* stor-layout.c (layout_decl): Do not bump the alignment of a bit-field to more than byte alignment if it is packed. From-SVN: r132614
This commit is contained in:
parent
9dd39a15b8
commit
d4cba6d442
2 changed files with 9 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
|||
2008-02-25 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* stor-layout.c (layout_decl): Do not bump the alignment of a
|
||||
bit-field to more than byte alignment if it is packed.
|
||||
|
||||
2008-02-24 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* config/rs6000/rs6000.c (processor_costs): Add cache costs for
|
||||
|
|
|
@ -388,13 +388,13 @@ layout_decl (tree decl, unsigned int known_align)
|
|||
{
|
||||
enum machine_mode xmode
|
||||
= mode_for_size_tree (DECL_SIZE (decl), MODE_INT, 1);
|
||||
unsigned int xalign = GET_MODE_ALIGNMENT (xmode);
|
||||
|
||||
if (xmode != BLKmode
|
||||
&& (known_align == 0
|
||||
|| known_align >= GET_MODE_ALIGNMENT (xmode)))
|
||||
&& !(xalign > BITS_PER_UNIT && DECL_PACKED (decl))
|
||||
&& (known_align == 0 || known_align >= xalign))
|
||||
{
|
||||
DECL_ALIGN (decl) = MAX (GET_MODE_ALIGNMENT (xmode),
|
||||
DECL_ALIGN (decl));
|
||||
DECL_ALIGN (decl) = MAX (xalign, DECL_ALIGN (decl));
|
||||
DECL_MODE (decl) = xmode;
|
||||
DECL_BIT_FIELD (decl) = 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue