1132718Skan/* GCC core type declarations. 2169689Skan Copyright (C) 2002, 2004 Free Software Foundation, Inc. 3132718Skan 4132718SkanThis file is part of GCC. 5132718Skan 6132718SkanGCC is free software; you can redistribute it and/or modify it under 7132718Skanthe terms of the GNU General Public License as published by the Free 8132718SkanSoftware Foundation; either version 2, or (at your option) any later 9132718Skanversion. 10132718Skan 11132718SkanGCC is distributed in the hope that it will be useful, but WITHOUT ANY 12132718SkanWARRANTY; without even the implied warranty of MERCHANTABILITY or 13132718SkanFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14132718Skanfor more details. 15132718Skan 16132718SkanYou should have received a copy of the GNU General Public License 17132718Skanalong with GCC; see the file COPYING. If not, write to the Free 18169689SkanSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 19169689Skan02110-1301, USA. */ 20132718Skan 21132718Skan/* Provide forward declarations of core types which are referred to by 22132718Skan most of the compiler. This allows header files to use these types 23132718Skan (e.g. in function prototypes) without concern for whether the full 24132718Skan definitions are visible. Some other declarations that need to be 25132718Skan universally visible are here, too. 26132718Skan 27132718Skan In the context of tconfig.h, most of these have special definitions 28132718Skan which prevent them from being used except in further type 29132718Skan declarations. This is a kludge; the right thing is to avoid 30132718Skan including the "tm.h" header set in the context of tconfig.h, but 31132718Skan we're not there yet. */ 32132718Skan 33132718Skan#ifndef GCC_CORETYPES_H 34132718Skan#define GCC_CORETYPES_H 35132718Skan 36132718Skan#define GTY(x) /* nothing - marker for gengtype */ 37132718Skan 38132718Skan#ifndef USED_FOR_TARGET 39132718Skan 40169689Skanstruct bitmap_head_def; 41169689Skantypedef struct bitmap_head_def *bitmap; 42132718Skanstruct rtx_def; 43132718Skantypedef struct rtx_def *rtx; 44132718Skanstruct rtvec_def; 45132718Skantypedef struct rtvec_def *rtvec; 46132718Skanunion tree_node; 47132718Skantypedef union tree_node *tree; 48169689Skanunion section; 49169689Skantypedef union section section; 50132718Skan 51132718Skan/* Provide forward struct declaration so that we don't have to include 52132718Skan all of cpplib.h whenever a random prototype includes a pointer. 53132718Skan Note that the cpp_reader typedef remains part of cpplib.h. */ 54132718Skan 55132718Skanstruct cpp_reader; 56132718Skan 57169689Skan/* The thread-local storage model associated with a given VAR_DECL 58169689Skan or SYMBOL_REF. This isn't used much, but both trees and RTL refer 59169689Skan to it, so it's here. */ 60169689Skanenum tls_model { 61169689Skan TLS_MODEL_NONE, 62169689Skan TLS_MODEL_GLOBAL_DYNAMIC, 63169689Skan TLS_MODEL_LOCAL_DYNAMIC, 64169689Skan TLS_MODEL_INITIAL_EXEC, 65169689Skan TLS_MODEL_LOCAL_EXEC 66169689Skan}; 67169689Skan 68132718Skan#else 69132718Skan 70132718Skanstruct _dont_use_rtx_here_; 71132718Skanstruct _dont_use_rtvec_here_; 72132718Skanunion _dont_use_tree_here_; 73132718Skan#define rtx struct _dont_use_rtx_here_ * 74132718Skan#define rtvec struct _dont_use_rtvec_here * 75132718Skan#define tree union _dont_use_tree_here_ * 76132718Skan 77132718Skan#endif 78132718Skan 79132718Skan#endif /* coretypes.h */ 80132718Skan 81