2006-10-23 Paul Brook <paul@codesourcery.com>
gcc/
* stor-layout.c (start_record_layout): maximum_field_alignment
overrides STRUCTURE_SIZE_BOUNDARY.
gcc/testsuite/
* gcc.dg/pragma-pack-5.c: New test.
From-SVN: r117977
+2006-10-23 Paul Brook <paul@codesourcery.com>
+
+ * stor-layout.c (start_record_layout): maximum_field_alignment
+ overrides STRUCTURE_SIZE_BOUNDARY.
+
2006-10-23 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/predicates.md ("bras_sym_operand"): Do not accept
#ifdef STRUCTURE_SIZE_BOUNDARY
/* Packed structures don't need to have minimum size. */
if (! TYPE_PACKED (t))
- rli->record_align = MAX (rli->record_align, (unsigned) STRUCTURE_SIZE_BOUNDARY);
+ {
+ unsigned tmp;
+
+ /* #pragma pack overrides STRUCTURE_SIZE_BOUNDARY. */
+ tmp = (unsigned) STRUCTURE_SIZE_BOUNDARY;
+ if (maximum_field_alignment != 0)
+ tmp = MIN (tmp, maximum_field_alignment);
+ rli->record_align = MAX (rli->record_align, tmp);
+ }
#endif
rli->offset = size_zero_node;
+2006-10-23 Paul Brook <paul@codesourcery.com>
+
+ * gcc.dg/pragma-pack-5.c: New test.
+
2006-10-23 Ulrich Weigand <uweigand@de.ibm.com>
* g++.dg/other/s390-1.C: New testcase.
--- /dev/null
+/* Check that pragma pack overrides STRUCTURE_SIZE_BOUNDARY. */
+/* { dg-do compile } */
+
+#pragma pack(1)
+struct S
+{
+ char a;
+};
+
+int test[sizeof(struct S) == 1 ? 1: -1];