1/* Copyright (C) 2001-2015 Free Software Foundation, Inc. 2 3This file is part of GCC. 4 5GCC is free software; you can redistribute it and/or modify it under 6the terms of the GNU General Public License as published by the Free 7Software Foundation; either version 3, or (at your option) any later 8version. 9 10GCC is distributed in the hope that it will be useful, but WITHOUT ANY 11WARRANTY; without even the implied warranty of MERCHANTABILITY or 12FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13for more details. 14 15You should have received a copy of the GNU General Public License 16along with GCC; see the file COPYING3. If not see 17<http://www.gnu.org/licenses/>. */ 18 19/* This header contains a subset of ../builtin-types.def needed for 20 Fortran frontend builtins. 21 22 Before including this header, you must define the following macros: 23 24 DEF_PRIMITIVE_TYPE (ENUM, TYPE) 25 26 The ENUM is an identifier indicating which type is being defined. 27 TYPE is an expression for a `tree' that represents the type. 28 29 DEF_FUNCTION_TYPE_0 (ENUM, RETURN) 30 DEF_FUNCTION_TYPE_1 (ENUM, RETURN, ARG1) 31 DEF_FUNCTION_TYPE_2 (ENUM, RETURN, ARG1, ARG2) 32 [...] 33 34 These macros describe function types. ENUM is as above. The 35 RETURN type is one of the enumerals already defined. ARG1, ARG2, 36 and ARG3 give the types of the arguments, similarly. 37 38 DEF_FUNCTION_TYPE_VAR_0 (ENUM, RETURN) 39 40 Similar, but for function types that take variable arguments. 41 42 DEF_POINTER_TYPE (ENUM, TYPE) 43 44 This macro describes a pointer type. ENUM is as above; TYPE is 45 the type pointed to. */ 46 47DEF_PRIMITIVE_TYPE (BT_VOID, void_type_node) 48DEF_PRIMITIVE_TYPE (BT_BOOL, 49 (*lang_hooks.types.type_for_size) (BOOL_TYPE_SIZE, 1)) 50DEF_PRIMITIVE_TYPE (BT_INT, integer_type_node) 51DEF_PRIMITIVE_TYPE (BT_UINT, unsigned_type_node) 52DEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node) 53DEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node) 54DEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 1)) 55DEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node) 56 57DEF_PRIMITIVE_TYPE (BT_I1, builtin_type_for_size (BITS_PER_UNIT*1, 1)) 58DEF_PRIMITIVE_TYPE (BT_I2, builtin_type_for_size (BITS_PER_UNIT*2, 1)) 59DEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size (BITS_PER_UNIT*4, 1)) 60DEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1)) 61DEF_PRIMITIVE_TYPE (BT_I16, builtin_type_for_size (BITS_PER_UNIT*16, 1)) 62 63DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node) 64DEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node) 65DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR, 66 build_pointer_type 67 (build_qualified_type (void_type_node, 68 TYPE_QUAL_VOLATILE))) 69DEF_PRIMITIVE_TYPE (BT_CONST_VOLATILE_PTR, 70 build_pointer_type 71 (build_qualified_type (void_type_node, 72 TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST))) 73DEF_POINTER_TYPE (BT_PTR_LONG, BT_LONG) 74DEF_POINTER_TYPE (BT_PTR_ULONGLONG, BT_ULONGLONG) 75DEF_POINTER_TYPE (BT_PTR_PTR, BT_PTR) 76DEF_FUNCTION_TYPE_0 (BT_FN_BOOL, BT_BOOL) 77DEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR) 78DEF_FUNCTION_TYPE_0 (BT_FN_INT, BT_INT) 79DEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT) 80DEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID) 81 82DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR) 83DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTRPTR, BT_VOID, BT_PTR_PTR) 84DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR) 85DEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT) 86DEF_FUNCTION_TYPE_1 (BT_FN_UINT_UINT, BT_UINT, BT_UINT) 87DEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR) 88DEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT) 89DEF_FUNCTION_TYPE_1 (BT_FN_BOOL_INT, BT_BOOL, BT_INT) 90 91DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR, BT_FN_VOID_PTR) 92 93DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_LONGPTR_LONGPTR, 94 BT_BOOL, BT_PTR_LONG, BT_PTR_LONG) 95DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, 96 BT_BOOL, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) 97DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1) 98DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2) 99DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4) 100DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8) 101DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16) 102DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR) 103DEF_FUNCTION_TYPE_2 (BT_FN_I1_CONST_VPTR_INT, BT_I1, BT_CONST_VOLATILE_PTR, 104 BT_INT) 105DEF_FUNCTION_TYPE_2 (BT_FN_I2_CONST_VPTR_INT, BT_I2, BT_CONST_VOLATILE_PTR, 106 BT_INT) 107DEF_FUNCTION_TYPE_2 (BT_FN_I4_CONST_VPTR_INT, BT_I4, BT_CONST_VOLATILE_PTR, 108 BT_INT) 109DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_VPTR_INT, BT_I8, BT_CONST_VOLATILE_PTR, 110 BT_INT) 111DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_VPTR_INT, BT_I16, BT_CONST_VOLATILE_PTR, 112 BT_INT) 113DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VPTR_INT, BT_VOID, BT_VOLATILE_PTR, BT_INT) 114DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_VPTR_INT, BT_BOOL, BT_VOLATILE_PTR, BT_INT) 115DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_SIZE_CONST_VPTR, BT_BOOL, BT_SIZE, 116 BT_CONST_VOLATILE_PTR) 117DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_INT_BOOL, BT_BOOL, BT_INT, BT_BOOL) 118DEF_FUNCTION_TYPE_2 (BT_FN_VOID_UINT_UINT, BT_VOID, BT_UINT, BT_UINT) 119 120DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR) 121 122DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR, 123 BT_I1, BT_I1) 124DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR, 125 BT_I2, BT_I2) 126DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR, 127 BT_I4, BT_I4) 128DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR, 129 BT_I8, BT_I8) 130DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I16_I16, BT_BOOL, BT_VOLATILE_PTR, 131 BT_I16, BT_I16) 132DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1) 133DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2) 134DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4) 135DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8) 136DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_I16, BT_I16, BT_VOLATILE_PTR, 137 BT_I16, BT_I16) 138DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_INT, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_INT) 139DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_INT, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_INT) 140DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_INT, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_INT) 141DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_INT, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_INT) 142DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_INT, BT_I16, BT_VOLATILE_PTR, BT_I16, BT_INT) 143DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I1_INT, BT_VOID, BT_VOLATILE_PTR, BT_I1, BT_INT) 144DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I2_INT, BT_VOID, BT_VOLATILE_PTR, BT_I2, BT_INT) 145DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I4_INT, BT_VOID, BT_VOLATILE_PTR, BT_I4, BT_INT) 146DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I8_INT, BT_VOID, BT_VOLATILE_PTR, BT_I8, BT_INT) 147DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I16_INT, BT_VOID, BT_VOLATILE_PTR, BT_I16, BT_INT) 148 149DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT, 150 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT) 151DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR, 152 BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR) 153DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_VOID, BT_SIZE, 154 BT_VOLATILE_PTR, BT_PTR, BT_INT) 155DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, BT_VOID, BT_SIZE, 156 BT_CONST_VOLATILE_PTR, BT_PTR, BT_INT) 157 158DEF_FUNCTION_TYPE_5 (BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, 159 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT, 160 BT_UINT) 161DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR, 162 BT_BOOL, BT_LONG, BT_LONG, BT_LONG, 163 BT_PTR_LONG, BT_PTR_LONG) 164DEF_FUNCTION_TYPE_5 (BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, BT_VOID, BT_SIZE, 165 BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT) 166DEF_FUNCTION_TYPE_5 (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR, 167 BT_VOID, BT_INT, BT_SIZE, BT_PTR, BT_PTR, BT_PTR) 168 169DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR, 170 BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG, 171 BT_PTR_LONG, BT_PTR_LONG) 172DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR, 173 BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG, 174 BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) 175DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT, 176 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I1, BT_BOOL, BT_INT, 177 BT_INT) 178DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT, 179 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I2, BT_BOOL, BT_INT, 180 BT_INT) 181DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT, 182 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I4, BT_BOOL, BT_INT, 183 BT_INT) 184DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT, 185 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I8, BT_BOOL, BT_INT, 186 BT_INT) 187DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT, 188 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I16, BT_BOOL, BT_INT, 189 BT_INT) 190DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT, BT_BOOL, BT_SIZE, 191 BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT) 192DEF_FUNCTION_TYPE_6 (BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR, 193 BT_VOID, BT_INT, BT_PTR, BT_SIZE, BT_PTR, BT_PTR, BT_PTR) 194 195DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT, 196 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, 197 BT_LONG, BT_LONG, BT_LONG, BT_UINT) 198DEF_FUNCTION_TYPE_7 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR, 199 BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG, 200 BT_ULONGLONG, BT_ULONGLONG, 201 BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) 202DEF_FUNCTION_TYPE_7 (BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR, 203 BT_VOID, BT_INT, BT_PTR_FN_VOID_PTR, BT_PTR, BT_SIZE, 204 BT_PTR, BT_PTR, BT_PTR) 205 206DEF_FUNCTION_TYPE_8 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT, 207 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, 208 BT_LONG, BT_LONG, BT_LONG, BT_LONG, BT_UINT) 209DEF_FUNCTION_TYPE_8 (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR, 210 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, 211 BT_PTR_FN_VOID_PTR_PTR, BT_LONG, BT_LONG, 212 BT_BOOL, BT_UINT, BT_PTR) 213 214DEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID) 215 216DEF_FUNCTION_TYPE_VAR_2 (BT_FN_VOID_INT_INT_VAR, BT_VOID, BT_INT, BT_INT) 217 218DEF_FUNCTION_TYPE_VAR_7 (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR_INT_INT_VAR, 219 BT_VOID, BT_INT, BT_SIZE, BT_PTR, BT_PTR, 220 BT_PTR, BT_INT, BT_INT) 221 222DEF_FUNCTION_TYPE_VAR_11 (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR, 223 BT_VOID, BT_INT, BT_PTR_FN_VOID_PTR, BT_SIZE, 224 BT_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT, BT_INT, 225 BT_INT, BT_INT) 226