]>
Commit | Line | Data |
---|---|---|
4977bab6 | 1 | /* GCC core type declarations. |
7a9bf9a4 JM |
2 | Copyright (C) 2002, 2004, 2007, 2008, 2009, 2010 |
3 | Free Software Foundation, Inc. | |
4977bab6 ZW |
4 | |
5 | This file is part of GCC. | |
6 | ||
7 | GCC is free software; you can redistribute it and/or modify it under | |
8 | the terms of the GNU General Public License as published by the Free | |
9dcd6f09 | 9 | Software Foundation; either version 3, or (at your option) any later |
4977bab6 ZW |
10 | version. |
11 | ||
12 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 | for more details. | |
16 | ||
748086b7 JJ |
17 | Under Section 7 of GPL version 3, you are granted additional |
18 | permissions described in the GCC Runtime Library Exception, version | |
19 | 3.1, as published by the Free Software Foundation. | |
20 | ||
21 | You should have received a copy of the GNU General Public License and | |
22 | a copy of the GCC Runtime Library Exception along with this program; | |
23 | see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
9dcd6f09 | 24 | <http://www.gnu.org/licenses/>. */ |
4977bab6 ZW |
25 | |
26 | /* Provide forward declarations of core types which are referred to by | |
27 | most of the compiler. This allows header files to use these types | |
28 | (e.g. in function prototypes) without concern for whether the full | |
29 | definitions are visible. Some other declarations that need to be | |
30 | universally visible are here, too. | |
31 | ||
32 | In the context of tconfig.h, most of these have special definitions | |
33 | which prevent them from being used except in further type | |
34 | declarations. This is a kludge; the right thing is to avoid | |
35 | including the "tm.h" header set in the context of tconfig.h, but | |
36 | we're not there yet. */ | |
37 | ||
38 | #ifndef GCC_CORETYPES_H | |
39 | #define GCC_CORETYPES_H | |
40 | ||
d1b38208 | 41 | #ifndef GTY |
4977bab6 | 42 | #define GTY(x) /* nothing - marker for gengtype */ |
d1b38208 | 43 | #endif |
4977bab6 ZW |
44 | |
45 | #ifndef USED_FOR_TARGET | |
46 | ||
912f2dac DB |
47 | struct bitmap_head_def; |
48 | typedef struct bitmap_head_def *bitmap; | |
a57193e8 | 49 | typedef const struct bitmap_head_def *const_bitmap; |
7a8cba34 SB |
50 | struct simple_bitmap_def; |
51 | typedef struct simple_bitmap_def *sbitmap; | |
52 | typedef const struct simple_bitmap_def *const_sbitmap; | |
4977bab6 ZW |
53 | struct rtx_def; |
54 | typedef struct rtx_def *rtx; | |
a57193e8 | 55 | typedef const struct rtx_def *const_rtx; |
4977bab6 ZW |
56 | struct rtvec_def; |
57 | typedef struct rtvec_def *rtvec; | |
a57193e8 | 58 | typedef const struct rtvec_def *const_rtvec; |
4977bab6 ZW |
59 | union tree_node; |
60 | typedef union tree_node *tree; | |
726a989a RB |
61 | union gimple_statement_d; |
62 | typedef union gimple_statement_d *gimple; | |
a57193e8 | 63 | typedef const union tree_node *const_tree; |
726a989a | 64 | typedef const union gimple_statement_d *const_gimple; |
d6b5193b RS |
65 | union section; |
66 | typedef union section section; | |
46625112 | 67 | struct gcc_options; |
ab442df7 MM |
68 | struct cl_target_option; |
69 | struct cl_optimization; | |
7a9bf9a4 JM |
70 | struct cl_option; |
71 | struct cl_decoded_option; | |
5f20c657 | 72 | struct cl_option_handlers; |
1ebe4b4f JM |
73 | struct diagnostic_context; |
74 | typedef struct diagnostic_context diagnostic_context; | |
355a7673 MM |
75 | typedef gimple gimple_seq; |
76 | typedef gimple const_gimple_seq; | |
4977bab6 | 77 | |
09e881c9 BE |
78 | /* Address space number for named address space support. */ |
79 | typedef unsigned char addr_space_t; | |
80 | ||
81 | /* The value of addr_space_t that represents the generic address space. */ | |
82 | #define ADDR_SPACE_GENERIC 0 | |
83 | #define ADDR_SPACE_GENERIC_P(AS) ((AS) == ADDR_SPACE_GENERIC) | |
84 | ||
52bca999 SB |
85 | /* The major intermediate representations of GCC. */ |
86 | enum ir_type { | |
87 | IR_GIMPLE, | |
88 | IR_RTL_CFGRTL, | |
89 | IR_RTL_CFGLAYOUT | |
90 | }; | |
91 | ||
e150159c SS |
92 | /* Provide forward struct declaration so that we don't have to include |
93 | all of cpplib.h whenever a random prototype includes a pointer. | |
5950c3c9 BE |
94 | Note that the cpp_reader and cpp_token typedefs remain part of |
95 | cpplib.h. */ | |
e150159c SS |
96 | |
97 | struct cpp_reader; | |
5950c3c9 | 98 | struct cpp_token; |
e150159c | 99 | |
61b60ed0 ZW |
100 | /* The thread-local storage model associated with a given VAR_DECL |
101 | or SYMBOL_REF. This isn't used much, but both trees and RTL refer | |
102 | to it, so it's here. */ | |
103 | enum tls_model { | |
c2f7fa15 | 104 | TLS_MODEL_NONE, |
feb60f03 NS |
105 | TLS_MODEL_EMULATED, |
106 | TLS_MODEL_REAL, | |
107 | TLS_MODEL_GLOBAL_DYNAMIC = TLS_MODEL_REAL, | |
61b60ed0 ZW |
108 | TLS_MODEL_LOCAL_DYNAMIC, |
109 | TLS_MODEL_INITIAL_EXEC, | |
110 | TLS_MODEL_LOCAL_EXEC | |
111 | }; | |
112 | ||
6ba74c2d RH |
113 | /* Types of unwind/exception handling info that can be generated. */ |
114 | ||
115 | enum unwind_info_type | |
116 | { | |
117 | UI_NONE, | |
118 | UI_SJLJ, | |
119 | UI_DWARF2, | |
120 | UI_TARGET | |
121 | }; | |
122 | ||
f16d3f39 JH |
123 | /* Callgraph node profile representation. */ |
124 | enum node_frequency { | |
125 | /* This function most likely won't be executed at all. | |
126 | (set only when profile feedback is available or via function attribute). */ | |
127 | NODE_FREQUENCY_UNLIKELY_EXECUTED, | |
128 | /* For functions that are known to be executed once (i.e. constructors, destructors | |
129 | and main function. */ | |
130 | NODE_FREQUENCY_EXECUTED_ONCE, | |
131 | /* The default value. */ | |
132 | NODE_FREQUENCY_NORMAL, | |
133 | /* Optimize this function hard | |
134 | (set only when profile feedback is available or via function attribute). */ | |
135 | NODE_FREQUENCY_HOT | |
136 | }; | |
137 | ||
647a1567 RH |
138 | /* Possible initialization status of a variable. When requested |
139 | by the user, this information is tracked and recorded in the DWARF | |
140 | debug information, along with the variable's location. */ | |
141 | enum var_init_status | |
142 | { | |
143 | VAR_INIT_STATUS_UNKNOWN, | |
144 | VAR_INIT_STATUS_UNINITIALIZED, | |
145 | VAR_INIT_STATUS_INITIALIZED | |
146 | }; | |
147 | ||
f16d3f39 | 148 | |
a3710436 JH |
149 | struct edge_def; |
150 | typedef struct edge_def *edge; | |
151 | typedef const struct edge_def *const_edge; | |
152 | struct basic_block_def; | |
153 | typedef struct basic_block_def *basic_block; | |
154 | typedef const struct basic_block_def *const_basic_block; | |
10692477 RS |
155 | |
156 | #define obstack_chunk_alloc ((void *(*) (long)) xmalloc) | |
157 | #define obstack_chunk_free ((void (*) (void *)) free) | |
158 | #define OBSTACK_CHUNK_SIZE 0 | |
159 | #define gcc_obstack_init(OBSTACK) \ | |
160 | _obstack_begin ((OBSTACK), OBSTACK_CHUNK_SIZE, 0, \ | |
161 | obstack_chunk_alloc, \ | |
162 | obstack_chunk_free) | |
163 | ||
a87cf97e JR |
164 | /* enum reg_class is target specific, so it should not appear in |
165 | target-independent code or interfaces, like the target hook declarations | |
166 | in target.h. */ | |
167 | typedef int reg_class_t; | |
168 | ||
4977bab6 ZW |
169 | #else |
170 | ||
171 | struct _dont_use_rtx_here_; | |
172 | struct _dont_use_rtvec_here_; | |
173 | union _dont_use_tree_here_; | |
174 | #define rtx struct _dont_use_rtx_here_ * | |
a57193e8 | 175 | #define const_rtx struct _dont_use_rtx_here_ * |
4977bab6 | 176 | #define rtvec struct _dont_use_rtvec_here * |
a57193e8 | 177 | #define const_rtvec struct _dont_use_rtvec_here * |
4977bab6 | 178 | #define tree union _dont_use_tree_here_ * |
a57193e8 | 179 | #define const_tree union _dont_use_tree_here_ * |
4977bab6 ZW |
180 | |
181 | #endif | |
182 | ||
86951993 AM |
183 | /* Memory model types for the __atomic* builtins. |
184 | This must match the order in libstdc++-v3/include/bits/atomic_base.h. */ | |
185 | enum memmodel | |
186 | { | |
187 | MEMMODEL_RELAXED = 0, | |
188 | MEMMODEL_CONSUME = 1, | |
189 | MEMMODEL_ACQUIRE = 2, | |
190 | MEMMODEL_RELEASE = 3, | |
191 | MEMMODEL_ACQ_REL = 4, | |
192 | MEMMODEL_SEQ_CST = 5, | |
193 | MEMMODEL_LAST = 6 | |
194 | }; | |
195 | ||
5dcfdccd KY |
196 | /* Suppose that higher bits are target dependant. */ |
197 | #define MEMMODEL_MASK ((1<<16)-1) | |
198 | ||
4977bab6 ZW |
199 | #endif /* coretypes.h */ |
200 |