mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-14 11:50:01 +08:00
Raw tree accessors
Here are the couple of raw accessors I make use of in the module streaming. gcc/ * tree.h (DECL_ALIGN_RAW): New. (DECL_ALIGN): Use it. (DECL_WARN_IF_NOT_ALIGN_RAW): New. (DECL_WARN_IF_NOT_ALIGN): Use it. (SET_DECL_WARN_IF_NOT_ALIGN): Likewise.
This commit is contained in:
parent
f1b6e17b3f
commit
5312fa0fd9
21
gcc/tree.h
21
gcc/tree.h
@ -2529,25 +2529,28 @@ extern tree vector_element_bits_tree (const_tree);
|
||||
#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)
|
||||
#define DECL_ALIGN_RAW(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.align)
|
||||
/* Returns the alignment required for the datum, in bits. It must
|
||||
be a power of two, but an "alignment" of zero is supported
|
||||
(e.g. as "uninitialized" sentinel). */
|
||||
#define DECL_ALIGN(NODE) \
|
||||
(DECL_COMMON_CHECK (NODE)->decl_common.align \
|
||||
? ((unsigned)1) << ((NODE)->decl_common.align - 1) : 0)
|
||||
#define DECL_ALIGN(NODE) \
|
||||
(DECL_ALIGN_RAW (NODE) \
|
||||
? ((unsigned)1) << (DECL_ALIGN_RAW (NODE) - 1) : 0)
|
||||
/* Specify that DECL_ALIGN(NODE) is X. */
|
||||
#define SET_DECL_ALIGN(NODE, X) \
|
||||
(DECL_COMMON_CHECK (NODE)->decl_common.align = ffs_hwi (X))
|
||||
(DECL_ALIGN_RAW (NODE) = ffs_hwi (X))
|
||||
|
||||
/* The minimum alignment necessary for the datum, in bits, without
|
||||
warning. */
|
||||
#define DECL_WARN_IF_NOT_ALIGN(NODE) \
|
||||
(DECL_COMMON_CHECK (NODE)->decl_common.warn_if_not_align \
|
||||
? ((unsigned)1) << ((NODE)->decl_common.warn_if_not_align - 1) : 0)
|
||||
#define DECL_WARN_IF_NOT_ALIGN_RAW(NODE) \
|
||||
(DECL_COMMON_CHECK (NODE)->decl_common.warn_if_not_align)
|
||||
#define DECL_WARN_IF_NOT_ALIGN(NODE) \
|
||||
(DECL_WARN_IF_NOT_ALIGN_RAW (NODE) \
|
||||
? ((unsigned)1) << (DECL_WARN_IF_NOT_ALIGN_RAW (NODE) - 1) : 0)
|
||||
|
||||
/* Specify that DECL_WARN_IF_NOT_ALIGN(NODE) is X. */
|
||||
#define SET_DECL_WARN_IF_NOT_ALIGN(NODE, X) \
|
||||
(DECL_COMMON_CHECK (NODE)->decl_common.warn_if_not_align = ffs_hwi (X))
|
||||
#define SET_DECL_WARN_IF_NOT_ALIGN(NODE, X) \
|
||||
(DECL_WARN_IF_NOT_ALIGN_RAW (NODE) = ffs_hwi (X))
|
||||
|
||||
/* The alignment of NODE, in bytes. */
|
||||
#define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT)
|
||||
|
Loading…
Reference in New Issue
Block a user