From a40776a29588b73758d83ced0bf31488023de9ad Mon Sep 17 00:00:00 2001 From: Sandra Loosemore Date: Sun, 1 Oct 2006 19:38:08 -0400 Subject: [PATCH] tree.h (DECL_FIELD_OFFSET, [...]): Fix comments to reflect actual behavior and relationship between... 2006-10-01 Sandra Loosemore * gcc/tree.h (DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET): Fix comments to reflect actual behavior and relationship between DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET, and DECL_OFFSET_ALIGN. * gcc/doc/c-tree.texi (Working with declarations): Fix documentation of FIELD_DECL likewise. From-SVN: r117352 --- gcc/ChangeLog | 9 +++++++++ gcc/doc/c-tree.texi | 20 ++++++++++++++------ gcc/tree.h | 7 +++++-- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e957ecb4f9e..14e3af7981c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2006-10-01 Sandra Loosemore + + * tree.h (DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET): Fix + comments to reflect actual behavior and relationship between + DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET, and DECL_OFFSET_ALIGN. + + * doc/c-tree.texi (Working with declarations): Fix documentation + of FIELD_DECL likewise. + 2006-10-01 Ryan Mansfield PR c/20533 diff --git a/gcc/doc/c-tree.texi b/gcc/doc/c-tree.texi index 06dcc82fe23..bc4d9b67fa8 100644 --- a/gcc/doc/c-tree.texi +++ b/gcc/doc/c-tree.texi @@ -967,12 +967,20 @@ ordinary type might be @code{short} while the @code{DECL_ARG_TYPE} is @item FIELD_DECL These nodes represent non-static data members. The @code{DECL_SIZE} and -@code{DECL_ALIGN} behave as for @code{VAR_DECL} nodes. The -@code{DECL_FIELD_BITPOS} gives the first bit used for this field, as an -@code{INTEGER_CST}. These values are indexed from zero, where zero -indicates the first bit in the object. - -If @code{DECL_C_BIT_FIELD} holds, this field is a bit-field. +@code{DECL_ALIGN} behave as for @code{VAR_DECL} nodes. +The position of the field within the parent record is specified by a +combination of three attributes. @code{DECL_FIELD_OFFSET} is the position, +counting in bytes, of the @code{DECL_OFFSET_ALIGN}-bit sized word containing +the bit of the field closest to the beginning of the structure. +@code{DECL_FIELD_BIT_OFFSET} is the bit offset of the first bit of the field +within this word; this may be nonzero even for fields that are not bit-fields, +since @code{DECL_OFFSET_ALIGN} may be greater than the natural alignment +of the field's type. + +If @code{DECL_C_BIT_FIELD} holds, this field is a bit-field. In a bit-field, +@code{DECL_BIT_FIELD_TYPE} also contains the type that was originally +specified for it, while DECL_TYPE may be a modified type with lesser precision, +according to the size of the bit field. @item NAMESPACE_DECL @xref{Namespaces}. diff --git a/gcc/tree.h b/gcc/tree.h index 72a8e46bd03..c2ea4798a59 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -2648,11 +2648,14 @@ struct tree_decl_with_rtl GTY(()) }; /* In a FIELD_DECL, this is the field position, counting in bytes, of the - byte containing the bit closest to the beginning of the structure. */ + DECL_OFFSET_ALIGN-bit-sized word containing the bit closest to the beginning + of the structure. */ #define DECL_FIELD_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.offset) /* In a FIELD_DECL, this is the offset, in bits, of the first bit of the - field from DECL_FIELD_OFFSET. */ + field from DECL_FIELD_OFFSET. This field may be nonzero even for fields + that are not bit fields (since DECL_OFFSET_ALIGN may be larger than the + natural alignment of the field's type). */ #define DECL_FIELD_BIT_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_offset) /* In a FIELD_DECL, this indicates whether the field was a bit-field and -- 2.11.4.GIT