From d4c40650c2b74ed0bd3c17970e7d38f64c91a3cd Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Tue, 30 Jun 1992 03:10:06 +0000 Subject: [PATCH] *** empty log message *** From-SVN: r1355 --- gcc/stor-layout.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 16d1dab63bd..abf8638ea75 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -40,6 +40,10 @@ tree size_zero_node; tree size_one_node; +/* If nonzero, this is an upper limit on alignment of structure fields. + The value is measured in bits. */ +int maximum_field_alignment; + #define GET_MODE_ALIGNMENT(MODE) \ MIN (BIGGEST_ALIGNMENT, \ MAX (1, (GET_MODE_UNIT_SIZE (MODE) * BITS_PER_UNIT))) @@ -198,7 +202,12 @@ layout_decl (decl, known_align) /* Conditions are: a fixed size that is correct for another mode and occupying a complete byte or bytes on proper boundary. */ if (code == FIELD_DECL) - DECL_BIT_FIELD_TYPE (decl) = DECL_BIT_FIELD (decl) ? type : 0; + { + DECL_BIT_FIELD_TYPE (decl) = DECL_BIT_FIELD (decl) ? type : 0; + if (maximum_field_alignment != 0) + DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), maximum_field_alignment); + } + if (DECL_BIT_FIELD (decl) && TYPE_SIZE (type) != 0 && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST) -- 2.30.2