make clear TYPE_SIZE may be non-constant or null
diff mbox series

Message ID 5cd8de93-060d-3117-6600-4afad233571c@gmail.com
State New
Headers show
Series
  • make clear TYPE_SIZE may be non-constant or null
Related show

Commit Message

Martin Sebor Aug. 15, 2019, 4:56 p.m. UTC
The comment for DECL_SIZE makes it clear it may be non-constant
but not that it may be null.  The comment for TYPE_SIZE mentions
neither.

The attached update adds a few sentences to make these caveats
clear.  If no one has any suggestions I'll commit it as obvious
today or tomorrow.

Thanks
Martin

Comments

Jeff Law Aug. 15, 2019, 6:10 p.m. UTC | #1
On 8/15/19 10:56 AM, Martin Sebor wrote:
> The comment for DECL_SIZE makes it clear it may be non-constant
> but not that it may be null.  The comment for TYPE_SIZE mentions
> neither.
> 
> The attached update adds a few sentences to make these caveats
> clear.  If no one has any suggestions I'll commit it as obvious
> today or tomorrow.
OK
jeff

Patch
diff mbox series

gcc/ChangeLog:

	* tree.def (TYPE_SIZE): Clarify.
	* tree.h (TYPE_SIZE, TYPE_SIZE_UNIT, DECL_SIZE): Add comments.

Index: gcc/tree.def
===================================================================
--- gcc/tree.def	(revision 274541)
+++ gcc/tree.def	(working copy)
@@ -77,7 +77,10 @@  DEFTREECODE (BLOCK, "block", tcc_exceptional, 0)
 /* Each data type is represented by a tree node whose code is one of
    the following:  */
 /* Each node that represents a data type has a component TYPE_SIZE
-   containing a tree that is an expression for the size in bits.
+   that evaluates either to a tree that is a (potentially non-constant)
+   expression representing the type size in bits, or to a null pointer
+   when the size of the type is unknown (for example, for incomplete
+   types such as arrays of unspecified bound).
    The TYPE_MODE contains the machine mode for values of this type.
    The TYPE_POINTER_TO field contains a type for a pointer to this type,
      or zero if no such has been created yet.
Index: gcc/tree.h
===================================================================
--- gcc/tree.h	(revision 274541)
+++ gcc/tree.h	(working copy)
@@ -1952,7 +1952,10 @@  class auto_suppress_location_wrappers
    so they must be checked as well.  */
 
 #define TYPE_UID(NODE) (TYPE_CHECK (NODE)->type_common.uid)
+/* Type size in bits as a tree expression.  Need not be constant
+   and may be null.  */
 #define TYPE_SIZE(NODE) (TYPE_CHECK (NODE)->type_common.size)
+/* Likewise, type size in bytes.  */
 #define TYPE_SIZE_UNIT(NODE) (TYPE_CHECK (NODE)->type_common.size_unit)
 #define TYPE_POINTER_TO(NODE) (TYPE_CHECK (NODE)->type_common.pointer_to)
 #define TYPE_REFERENCE_TO(NODE) (TYPE_CHECK (NODE)->type_common.reference_to)
@@ -2480,7 +2483,7 @@  extern machine_mode vector_type_mode (const_tree);
 #define DECL_INITIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.initial)
 
 /* Holds the size of the datum, in bits, as a tree expression.
-   Need not be constant.  */
+   Need not be constant and may be null.  */
 #define DECL_SIZE(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.size)
 /* Likewise for the size in bytes.  */
 #define DECL_SIZE_UNIT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.size_unit)