]>
Commit | Line | Data |
---|---|---|
4977bab6 | 1 | /* GCC core type declarations. |
f30278e8 | 2 | Copyright (C) 2002, 2004 Free Software Foundation, Inc. |
4977bab6 ZW |
3 | |
4 | This file is part of GCC. | |
5 | ||
6 | GCC is free software; you can redistribute it and/or modify it under | |
7 | the terms of the GNU General Public License as published by the Free | |
8 | Software Foundation; either version 2, or (at your option) any later | |
9 | version. | |
10 | ||
11 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
12 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 | for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
17 | along with GCC; see the file COPYING. If not, write to the Free | |
18 | Software Foundation, 59 Temple Place - Suite 330, Boston, MA | |
19 | 02111-1307, USA. */ | |
20 | ||
21 | /* Provide forward declarations of core types which are referred to by | |
22 | most of the compiler. This allows header files to use these types | |
23 | (e.g. in function prototypes) without concern for whether the full | |
24 | definitions are visible. Some other declarations that need to be | |
25 | universally visible are here, too. | |
26 | ||
27 | In the context of tconfig.h, most of these have special definitions | |
28 | which prevent them from being used except in further type | |
29 | declarations. This is a kludge; the right thing is to avoid | |
30 | including the "tm.h" header set in the context of tconfig.h, but | |
31 | we're not there yet. */ | |
32 | ||
33 | #ifndef GCC_CORETYPES_H | |
34 | #define GCC_CORETYPES_H | |
35 | ||
36 | #define GTY(x) /* nothing - marker for gengtype */ | |
37 | ||
38 | #ifndef USED_FOR_TARGET | |
39 | ||
40 | struct rtx_def; | |
41 | typedef struct rtx_def *rtx; | |
42 | struct rtvec_def; | |
43 | typedef struct rtvec_def *rtvec; | |
44 | union tree_node; | |
45 | typedef union tree_node *tree; | |
46 | ||
e150159c SS |
47 | /* Provide forward struct declaration so that we don't have to include |
48 | all of cpplib.h whenever a random prototype includes a pointer. | |
49 | Note that the cpp_reader typedef remains part of cpplib.h. */ | |
50 | ||
51 | struct cpp_reader; | |
52 | ||
61b60ed0 ZW |
53 | /* The thread-local storage model associated with a given VAR_DECL |
54 | or SYMBOL_REF. This isn't used much, but both trees and RTL refer | |
55 | to it, so it's here. */ | |
56 | enum tls_model { | |
57 | TLS_MODEL_GLOBAL_DYNAMIC = 1, | |
58 | TLS_MODEL_LOCAL_DYNAMIC, | |
59 | TLS_MODEL_INITIAL_EXEC, | |
60 | TLS_MODEL_LOCAL_EXEC | |
61 | }; | |
62 | ||
4977bab6 ZW |
63 | #else |
64 | ||
65 | struct _dont_use_rtx_here_; | |
66 | struct _dont_use_rtvec_here_; | |
67 | union _dont_use_tree_here_; | |
68 | #define rtx struct _dont_use_rtx_here_ * | |
69 | #define rtvec struct _dont_use_rtvec_here * | |
70 | #define tree union _dont_use_tree_here_ * | |
71 | ||
72 | #endif | |
73 | ||
74 | #endif /* coretypes.h */ | |
75 |