aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandra Loosemore <sandra@codesourcery.com>2006-10-01 19:38:08 -0400
committerSandra Loosemore <sandra@gcc.gnu.org>2006-10-01 19:38:08 -0400
commita40776a29588b73758d83ced0bf31488023de9ad (patch)
tree0dcdbe9bee62c2eda67530a05289abfffb121b64
parent3397327cdcfe7b878320228cee615615260390a7 (diff)
downloadgcc-a40776a29588b73758d83ced0bf31488023de9ad.zip
gcc-a40776a29588b73758d83ced0bf31488023de9ad.tar.gz
gcc-a40776a29588b73758d83ced0bf31488023de9ad.tar.bz2
tree.h (DECL_FIELD_OFFSET, [...]): Fix comments to reflect actual behavior and relationship between...
2006-10-01 Sandra Loosemore <sandra@codesourcery.com> * 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
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/doc/c-tree.texi20
-rw-r--r--gcc/tree.h7
3 files changed, 28 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e957ecb..14e3af7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2006-10-01 Sandra Loosemore <sandra@codesourcery.com>
+
+ * 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 <rmansfield@qnx.com>
PR c/20533
diff --git a/gcc/doc/c-tree.texi b/gcc/doc/c-tree.texi
index 06dcc82..bc4d9b6 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 72a8e46..c2ea479 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