+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
{
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;
}