This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: fix documentation for FIELD_DECL macros


I decided I couldn't commit this documentation patch as "obvious", since I've spent most of the past week trying to figure out what the behavior really is. :-P Any comments? Is this OK, or am I still hopelessly confused?

-Sandra

2006-09-29  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.


Index: gcc/doc/c-tree.texi
===================================================================
*** gcc/doc/c-tree.texi	(revision 117310)
--- gcc/doc/c-tree.texi	(working copy)
*************** ordinary type might be @code{short} whil
*** 967,978 ****
  
  @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.
  
  @item NAMESPACE_DECL
  @xref{Namespaces}.
--- 967,986 ----
  
  @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 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}.
Index: gcc/tree.h
===================================================================
*** gcc/tree.h	(revision 117310)
--- gcc/tree.h	(working copy)
*************** struct tree_decl_with_rtl GTY(())
*** 2648,2658 ****
  };
  
  /* 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.  */
  #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.  */
  #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
--- 2648,2661 ----
  };
  
  /* In a FIELD_DECL, this is the field position, counting in bytes, of the
!    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.  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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]