00001 /* GCC core type declarations. 00002 Copyright (C) 2002, 2004 Free Software Foundation, Inc. 00003 00004 This file is part of GCC. 00005 00006 GCC is free software; you can redistribute it and/or modify it under 00007 the terms of the GNU General Public License as published by the Free 00008 Software Foundation; either version 2, or (at your option) any later 00009 version. 00010 00011 GCC is distributed in the hope that it will be useful, but WITHOUT ANY 00012 WARRANTY; without even the implied warranty of MERCHANTABILITY or 00013 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00014 for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with GCC; see the file COPYING. If not, write to the Free 00018 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 00019 02111-1307, USA. */ 00020 00021 /* Provide forward declarations of core types which are referred to by 00022 most of the compiler. This allows header files to use these types 00023 (e.g. in function prototypes) without concern for whether the full 00024 definitions are visible. Some other declarations that need to be 00025 universally visible are here, too. 00026 00027 In the context of tconfig.h, most of these have special definitions 00028 which prevent them from being used except in further type 00029 declarations. This is a kludge; the right thing is to avoid 00030 including the "tm.h" header set in the context of tconfig.h, but 00031 we're not there yet. */ 00032 00033 #ifndef GCC_CORETYPES_H 00034 #define GCC_CORETYPES_H 00035 00036 #define GTY(x) /* nothing - marker for gengtype */ 00037 00038 #ifndef USED_FOR_TARGET 00039 00040 struct rtx_def; 00041 typedef struct rtx_def *rtx; 00042 struct rtvec_def; 00043 typedef struct rtvec_def *rtvec; 00044 union tree_node; 00045 typedef union tree_node *tree; 00046 00047 /* Provide forward struct declaration so that we don't have to include 00048 all of cpplib.h whenever a random prototype includes a pointer. 00049 Note that the cpp_reader typedef remains part of cpplib.h. */ 00050 00051 struct cpp_reader; 00052 00053 /* The thread-local storage model associated with a given VAR_DECL 00054 or SYMBOL_REF. This isn't used much, but both trees and RTL refer 00055 to it, so it's here. */ 00056 enum tls_model { 00057 TLS_MODEL_GLOBAL_DYNAMIC = 1, 00058 TLS_MODEL_LOCAL_DYNAMIC, 00059 TLS_MODEL_INITIAL_EXEC, 00060 TLS_MODEL_LOCAL_EXEC 00061 }; 00062 00063 #else 00064 00065 struct _dont_use_rtx_here_; 00066 struct _dont_use_rtvec_here_; 00067 union _dont_use_tree_here_; 00068 #define rtx struct _dont_use_rtx_here_ * 00069 #define rtvec struct _dont_use_rtvec_here * 00070 #define tree union _dont_use_tree_here_ * 00071 00072 #endif 00073 00074 #endif /* coretypes.h */ 00075
1.5.6