2016-01-21 Jason Merrill <jason@redhat.com>
+ PR c++/40751
+ PR c++/64987
+ * decl.c (copy_type_enum): Respect TYPE_USER_ALIGN.
+
PR c++/43407
* decl.c (start_enum): Add attributes parameter.
* parser.c (cp_parser_enum_specifier): Pass it.
TYPE_SIZE_UNIT (t) = TYPE_SIZE_UNIT (src);
SET_TYPE_MODE (dst, TYPE_MODE (src));
TYPE_PRECISION (t) = TYPE_PRECISION (src);
- TYPE_ALIGN (t) = TYPE_ALIGN (src);
- TYPE_USER_ALIGN (t) = TYPE_USER_ALIGN (src);
+ unsigned valign = TYPE_ALIGN (src);
+ if (TYPE_USER_ALIGN (t))
+ valign = MAX (valign, TYPE_ALIGN (t));
+ else
+ TYPE_USER_ALIGN (t) = TYPE_USER_ALIGN (src);
+ TYPE_ALIGN (t) = valign;
TYPE_UNSIGNED (t) = TYPE_UNSIGNED (src);
}
}