From: Nathan Sidwell Date: Tue, 8 Dec 2020 18:23:44 +0000 (-0800) Subject: Raw tree accessors X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5312fa0fd95aab112abe40f2a5cdb70a76e89fbf;p=gcc.git 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. --- diff --git a/gcc/tree.h b/gcc/tree.h index 7faa49d42ba..b44039f61ff 100644 --- a/gcc/tree.h +++ b/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)