@@ -30,6 +30,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
3030
3131#include <stdint.h> /* For int32_t. */
3232
33+ #if __GNUC__ >= 8
34+ #define GCC_GE_8 1
35+ #endif
36+
37+ #if __GNUC__ >= 7
38+ #define GCC_GE_7 1
39+ #endif
40+
3341/* GNU Fortran's array descriptor. Keep in sync with libgfortran.h. To be
3442 replaced by TS29113's ISO_Fortran_binding.h with CFI_cdesc_t. */
3543
@@ -79,9 +87,10 @@ typedef struct gfc_descriptor_t {
7987#define GFC_DTYPE_TYPE_MASK 0x70
8088#define GFC_DTYPE_SIZE_SHIFT 7
8189
82- #define GFC_DESCRIPTOR_RANK (desc ) ((desc)->dtype.rank)
83- #define GFC_DESCRIPTOR_TYPE (desc ) (((desc)->dtype.type)
84- #define GFC_DESCRIPTOR_SIZE (desc ) ((desc)->dtype.elem_len)
90+ #define GFC_DESCRIPTOR_RANK (desc ) (desc)->dtype.rank
91+ #define GFC_DESCRIPTOR_TYPE (desc ) (desc)->dtype.type
92+ #define GFC_DESCRIPTOR_SIZE (desc ) (desc)->dtype.elem_len
93+ #define GFC_DTYPE_TYPE_SIZE (desc ) (desc)->dtype.elem_len
8594
8695#else
8796
@@ -95,15 +104,14 @@ typedef struct gfc_descriptor_t {
95104#define GFC_DESCRIPTOR_TYPE (desc ) (((desc)->dtype & GFC_DTYPE_TYPE_MASK) \
96105 >> GFC_DTYPE_TYPE_SHIFT)
97106#define GFC_DESCRIPTOR_SIZE (desc ) ((desc)->dtype >> GFC_DTYPE_SIZE_SHIFT)
107+ #define GFC_DTYPE_TYPE_SIZE (desc ) ((desc)->dtype & GFC_DTYPE_TYPE_SIZE_MASK)
98108
99109#endif
100110
101111#define GFC_DTYPE_SIZE_MASK \
102112 ((~((ptrdiff_t) 0) >> GFC_DTYPE_SIZE_SHIFT) << GFC_DTYPE_SIZE_SHIFT)
103113#define GFC_DTYPE_TYPE_SIZE_MASK (GFC_DTYPE_SIZE_MASK | GFC_DTYPE_TYPE_MASK)
104114
105- #define GFC_DTYPE_TYPE_SIZE (desc ) ((desc)->dtype & GFC_DTYPE_TYPE_SIZE_MASK)
106-
107115#define GFC_DTYPE_INTEGER_1 ((BT_INTEGER << GFC_DTYPE_TYPE_SHIFT) \
108116 | (sizeof(int8_t) << GFC_DTYPE_SIZE_SHIFT))
109117#define GFC_DTYPE_INTEGER_2 ((BT_INTEGER << GFC_DTYPE_TYPE_SHIFT) \
0 commit comments