1/* Copyright (C) 2001-2013 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 DEF_FUNCTION_TYPE_3 (ENUM, RETURN, ARG1, ARG2, ARG3) 33 DEF_FUNCTION_TYPE_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4) 34 DEF_FUNCTION_TYPE_5 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5) 35 DEF_FUNCTION_TYPE_6 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) 36 DEF_FUNCTION_TYPE_7 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) 37 38 These macros describe function types. ENUM is as above. The 39 RETURN type is one of the enumerals already defined. ARG1, ARG2, 40 and ARG3 give the types of the arguments, similarly. 41 42 DEF_FUNCTION_TYPE_VAR_0 (ENUM, RETURN) 43 44 Similar, but for function types that take variable arguments. 45 46 DEF_POINTER_TYPE (ENUM, TYPE) 47 48 This macro describes a pointer type. ENUM is as above; TYPE is 49 the type pointed to. */ 50 51DEF_PRIMITIVE_TYPE (BT_VOID, void_type_node) 52DEF_PRIMITIVE_TYPE (BT_BOOL, 53 (*lang_hooks.types.type_for_size) (BOOL_TYPE_SIZE, 1)) 54DEF_PRIMITIVE_TYPE (BT_INT, integer_type_node) 55DEF_PRIMITIVE_TYPE (BT_UINT, unsigned_type_node) 56DEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node) 57DEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node) 58DEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 1)) 59DEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node) 60 61DEF_PRIMITIVE_TYPE (BT_I1, builtin_type_for_size (BITS_PER_UNIT*1, 1)) 62DEF_PRIMITIVE_TYPE (BT_I2, builtin_type_for_size (BITS_PER_UNIT*2, 1)) 63DEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size (BITS_PER_UNIT*4, 1)) 64DEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1)) 65DEF_PRIMITIVE_TYPE (BT_I16, builtin_type_for_size (BITS_PER_UNIT*16, 1)) 66 67DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node) 68DEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node) 69DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR, 70 build_pointer_type 71 (build_qualified_type (void_type_node, 72 TYPE_QUAL_VOLATILE))) 73DEF_PRIMITIVE_TYPE (BT_CONST_VOLATILE_PTR, 74 build_pointer_type 75 (build_qualified_type (void_type_node, 76 TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST))) 77DEF_POINTER_TYPE (BT_PTR_LONG, BT_LONG) 78DEF_POINTER_TYPE (BT_PTR_ULONGLONG, BT_ULONGLONG) 79DEF_POINTER_TYPE (BT_PTR_PTR, BT_PTR) 80DEF_FUNCTION_TYPE_0 (BT_FN_BOOL, BT_BOOL) 81DEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR) 82DEF_FUNCTION_TYPE_0 (BT_FN_INT, BT_INT) 83DEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT) 84DEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID) 85 86DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR) 87DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTRPTR, BT_VOID, BT_PTR_PTR) 88DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR) 89DEF_FUNCTION_TYPE_1 (BT_FN_UINT_UINT, BT_UINT, BT_UINT) 90DEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR) 91DEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT) 92 93 94DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR, BT_FN_VOID_PTR) 95 96DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_LONGPTR_LONGPTR, 97 BT_BOOL, BT_PTR_LONG, BT_PTR_LONG) 98DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, 99 BT_BOOL, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) 100DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1) 101DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2) 102DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4) 103DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8) 104DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16) 105DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR) 106DEF_FUNCTION_TYPE_2 (BT_FN_I1_CONST_VPTR_INT, BT_I1, BT_CONST_VOLATILE_PTR, 107 BT_INT) 108DEF_FUNCTION_TYPE_2 (BT_FN_I2_CONST_VPTR_INT, BT_I2, BT_CONST_VOLATILE_PTR, 109 BT_INT) 110DEF_FUNCTION_TYPE_2 (BT_FN_I4_CONST_VPTR_INT, BT_I4, BT_CONST_VOLATILE_PTR, 111 BT_INT) 112DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_VPTR_INT, BT_I8, BT_CONST_VOLATILE_PTR, 113 BT_INT) 114DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_VPTR_INT, BT_I16, BT_CONST_VOLATILE_PTR, 115 BT_INT) 116DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VPTR_INT, BT_VOID, BT_VOLATILE_PTR, BT_INT) 117DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_VPTR_INT, BT_BOOL, BT_VOLATILE_PTR, BT_INT) 118DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_SIZE_CONST_VPTR, BT_BOOL, BT_SIZE, 119 BT_CONST_VOLATILE_PTR) 120 121 122DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR) 123 124DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR, 125 BT_I1, BT_I1) 126DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR, 127 BT_I2, BT_I2) 128DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR, 129 BT_I4, BT_I4) 130DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR, 131 BT_I8, BT_I8) 132DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I16_I16, BT_BOOL, BT_VOLATILE_PTR, 133 BT_I16, BT_I16) 134DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1) 135DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2) 136DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4) 137DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8) 138DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_I16, BT_I16, BT_VOLATILE_PTR, 139 BT_I16, BT_I16) 140DEF_FUNCTION_TYPE_3 (BT_FN_VOID_OMPFN_PTR_UINT, BT_VOID, BT_PTR_FN_VOID_PTR, 141 BT_PTR, BT_UINT) 142DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_INT, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_INT) 143DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_INT, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_INT) 144DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_INT, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_INT) 145DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_INT, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_INT) 146DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_INT, BT_I16, BT_VOLATILE_PTR, BT_I16, BT_INT) 147DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I1_INT, BT_VOID, BT_VOLATILE_PTR, BT_I1, BT_INT) 148DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I2_INT, BT_VOID, BT_VOLATILE_PTR, BT_I2, BT_INT) 149DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I4_INT, BT_VOID, BT_VOLATILE_PTR, BT_I4, BT_INT) 150DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I8_INT, BT_VOID, BT_VOLATILE_PTR, BT_I8, BT_INT) 151DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I16_INT, BT_VOID, BT_VOLATILE_PTR, BT_I16, BT_INT) 152 153DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT, 154 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT) 155DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR, 156 BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR) 157DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_VOID, BT_SIZE, 158 BT_VOLATILE_PTR, BT_PTR, BT_INT) 159DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, BT_VOID, BT_SIZE, 160 BT_CONST_VOLATILE_PTR, BT_PTR, BT_INT) 161 162DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR, 163 BT_BOOL, BT_LONG, BT_LONG, BT_LONG, 164 BT_PTR_LONG, BT_PTR_LONG) 165DEF_FUNCTION_TYPE_5 (BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, BT_VOID, BT_SIZE, 166 BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT) 167 168DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR, 169 BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG, 170 BT_PTR_LONG, BT_PTR_LONG) 171DEF_FUNCTION_TYPE_6 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG, 172 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, 173 BT_LONG, BT_LONG, BT_LONG) 174DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR, 175 BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG, 176 BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) 177DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT, 178 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I1, BT_BOOL, BT_INT, 179 BT_INT) 180DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT, 181 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I2, BT_BOOL, BT_INT, 182 BT_INT) 183DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT, 184 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I4, BT_BOOL, BT_INT, 185 BT_INT) 186DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT, 187 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I8, BT_BOOL, BT_INT, 188 BT_INT) 189DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT, 190 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I16, BT_BOOL, BT_INT, 191 BT_INT) 192DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT, BT_BOOL, BT_SIZE, 193 BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT) 194 195DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, 196 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, 197 BT_LONG, BT_LONG, BT_LONG, BT_LONG) 198DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT, 199 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, 200 BT_PTR_FN_VOID_PTR_PTR, BT_LONG, BT_LONG, 201 BT_BOOL, BT_UINT) 202DEF_FUNCTION_TYPE_7 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR, 203 BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG, 204 BT_ULONGLONG, BT_ULONGLONG, 205 BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) 206 207DEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID) 208