annotate gcc/cp/cp-objcp-common.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Some code common to C++ and ObjC++ front ends.
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2 Copyright (C) 2004-2020 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
3 Contributed by Ziemowit Laski <zlaski@apple.com>
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 This file is part of GCC.
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 GCC is free software; you can redistribute it and/or modify it under
kono
parents:
diff changeset
8 the terms of the GNU General Public License as published by the Free
kono
parents:
diff changeset
9 Software Foundation; either version 3, or (at your option) any later
kono
parents:
diff changeset
10 version.
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
kono
parents:
diff changeset
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
kono
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
kono
parents:
diff changeset
15 for more details.
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
kono
parents:
diff changeset
18 along with GCC; see the file COPYING3. If not see
kono
parents:
diff changeset
19 <http://www.gnu.org/licenses/>. */
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 #include "config.h"
kono
parents:
diff changeset
22 #include "system.h"
kono
parents:
diff changeset
23 #include "coretypes.h"
kono
parents:
diff changeset
24 #include "cp-tree.h"
kono
parents:
diff changeset
25 #include "cp-objcp-common.h"
kono
parents:
diff changeset
26 #include "dwarf2.h"
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
27 #include "stringpool.h"
111
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 /* Special routine to get the alias set for C++. */
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 alias_set_type
kono
parents:
diff changeset
32 cxx_get_alias_set (tree t)
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 if (IS_FAKE_BASE_TYPE (t))
kono
parents:
diff changeset
35 /* The base variant of a type must be in the same alias set as the
kono
parents:
diff changeset
36 complete type. */
kono
parents:
diff changeset
37 return get_alias_set (TYPE_CONTEXT (t));
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 /* Punt on PMFs until we canonicalize functions properly. */
kono
parents:
diff changeset
40 if (TYPE_PTRMEMFUNC_P (t)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
41 || (INDIRECT_TYPE_P (t)
111
kono
parents:
diff changeset
42 && TYPE_PTRMEMFUNC_P (TREE_TYPE (t))))
kono
parents:
diff changeset
43 return 0;
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 return c_common_get_alias_set (t);
kono
parents:
diff changeset
46 }
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 /* Called from check_global_declaration. */
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 bool
kono
parents:
diff changeset
51 cxx_warn_unused_global_decl (const_tree decl)
kono
parents:
diff changeset
52 {
kono
parents:
diff changeset
53 if (TREE_CODE (decl) == FUNCTION_DECL && DECL_DECLARED_INLINE_P (decl))
kono
parents:
diff changeset
54 return false;
kono
parents:
diff changeset
55 if (DECL_IN_SYSTEM_HEADER (decl))
kono
parents:
diff changeset
56 return false;
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 return true;
kono
parents:
diff changeset
59 }
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 /* Langhook for tree_size: determine size of our 'x' and 'c' nodes. */
kono
parents:
diff changeset
62 size_t
kono
parents:
diff changeset
63 cp_tree_size (enum tree_code code)
kono
parents:
diff changeset
64 {
kono
parents:
diff changeset
65 gcc_checking_assert (code >= NUM_TREE_CODES);
kono
parents:
diff changeset
66 switch (code)
kono
parents:
diff changeset
67 {
kono
parents:
diff changeset
68 case PTRMEM_CST: return sizeof (ptrmem_cst);
kono
parents:
diff changeset
69 case BASELINK: return sizeof (tree_baselink);
kono
parents:
diff changeset
70 case TEMPLATE_PARM_INDEX: return sizeof (template_parm_index);
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
71 case DEFERRED_PARSE: return sizeof (tree_deferred_parse);
111
kono
parents:
diff changeset
72 case DEFERRED_NOEXCEPT: return sizeof (tree_deferred_noexcept);
kono
parents:
diff changeset
73 case OVERLOAD: return sizeof (tree_overload);
kono
parents:
diff changeset
74 case STATIC_ASSERT: return sizeof (tree_static_assert);
kono
parents:
diff changeset
75 case TYPE_ARGUMENT_PACK:
kono
parents:
diff changeset
76 case TYPE_PACK_EXPANSION: return sizeof (tree_type_non_common);
kono
parents:
diff changeset
77 case NONTYPE_ARGUMENT_PACK:
kono
parents:
diff changeset
78 case EXPR_PACK_EXPANSION: return sizeof (tree_exp);
kono
parents:
diff changeset
79 case ARGUMENT_PACK_SELECT: return sizeof (tree_argument_pack_select);
kono
parents:
diff changeset
80 case TRAIT_EXPR: return sizeof (tree_trait_expr);
kono
parents:
diff changeset
81 case LAMBDA_EXPR: return sizeof (tree_lambda_expr);
kono
parents:
diff changeset
82 case TEMPLATE_INFO: return sizeof (tree_template_info);
kono
parents:
diff changeset
83 case CONSTRAINT_INFO: return sizeof (tree_constraint_info);
kono
parents:
diff changeset
84 case USERDEF_LITERAL: return sizeof (tree_userdef_literal);
kono
parents:
diff changeset
85 case TEMPLATE_DECL: return sizeof (tree_template_decl);
kono
parents:
diff changeset
86 default:
kono
parents:
diff changeset
87 switch (TREE_CODE_CLASS (code))
kono
parents:
diff changeset
88 {
kono
parents:
diff changeset
89 case tcc_declaration: return sizeof (tree_decl_non_common);
kono
parents:
diff changeset
90 case tcc_type: return sizeof (tree_type_non_common);
kono
parents:
diff changeset
91 default: gcc_unreachable ();
kono
parents:
diff changeset
92 }
kono
parents:
diff changeset
93 }
kono
parents:
diff changeset
94 /* NOTREACHED */
kono
parents:
diff changeset
95 }
kono
parents:
diff changeset
96
kono
parents:
diff changeset
97 /* Returns true if T is a variably modified type, in the sense of C99.
kono
parents:
diff changeset
98 FN is as passed to variably_modified_p.
kono
parents:
diff changeset
99 This routine needs only check cases that cannot be handled by the
kono
parents:
diff changeset
100 language-independent logic in tree.c. */
kono
parents:
diff changeset
101
kono
parents:
diff changeset
102 bool
kono
parents:
diff changeset
103 cp_var_mod_type_p (tree type, tree fn)
kono
parents:
diff changeset
104 {
kono
parents:
diff changeset
105 /* If TYPE is a pointer-to-member, it is variably modified if either
kono
parents:
diff changeset
106 the class or the member are variably modified. */
kono
parents:
diff changeset
107 if (TYPE_PTRMEM_P (type))
kono
parents:
diff changeset
108 return (variably_modified_type_p (TYPE_PTRMEM_CLASS_TYPE (type), fn)
kono
parents:
diff changeset
109 || variably_modified_type_p (TYPE_PTRMEM_POINTED_TO_TYPE (type),
kono
parents:
diff changeset
110 fn));
kono
parents:
diff changeset
111
kono
parents:
diff changeset
112 /* All other types are not variably modified. */
kono
parents:
diff changeset
113 return false;
kono
parents:
diff changeset
114 }
kono
parents:
diff changeset
115
kono
parents:
diff changeset
116 /* This compares two types for equivalence ("compatible" in C-based languages).
kono
parents:
diff changeset
117 This routine should only return 1 if it is sure. It should not be used
kono
parents:
diff changeset
118 in contexts where erroneously returning 0 causes problems. */
kono
parents:
diff changeset
119
kono
parents:
diff changeset
120 int
kono
parents:
diff changeset
121 cxx_types_compatible_p (tree x, tree y)
kono
parents:
diff changeset
122 {
kono
parents:
diff changeset
123 return same_type_ignoring_top_level_qualifiers_p (x, y);
kono
parents:
diff changeset
124 }
kono
parents:
diff changeset
125
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
126 static GTY((cache)) type_tree_cache_map *debug_type_map;
111
kono
parents:
diff changeset
127
kono
parents:
diff changeset
128 /* Return a type to use in the debug info instead of TYPE, or NULL_TREE to
kono
parents:
diff changeset
129 keep TYPE. */
kono
parents:
diff changeset
130
kono
parents:
diff changeset
131 tree
kono
parents:
diff changeset
132 cp_get_debug_type (const_tree type)
kono
parents:
diff changeset
133 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
134 tree dtype = NULL_TREE;
111
kono
parents:
diff changeset
135
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
136 if (TYPE_PTRMEMFUNC_P (type) && !typedef_variant_p (type))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
137 dtype = build_offset_type (TYPE_PTRMEMFUNC_OBJECT_TYPE (type),
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
138 TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (type)));
111
kono
parents:
diff changeset
139
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
140 /* We cannot simply return the debug type here because the function uses
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
141 the type canonicalization hashtable, which is GC-ed, so its behavior
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
142 depends on the actual collection points. Since we are building these
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
143 types on the fly for the debug info only, they would not be attached
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
144 to any GC root and always be swept, so we would make the contents of
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
145 the debug info depend on the collection points. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
146 if (dtype)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
147 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
148 tree ktype = CONST_CAST_TREE (type);
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
149 if (tree *slot = hash_map_safe_get (debug_type_map, ktype))
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
150 return *slot;
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
151 hash_map_safe_put<hm_ggc> (debug_type_map, ktype, dtype);
111
kono
parents:
diff changeset
152 }
kono
parents:
diff changeset
153
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
154 return dtype;
111
kono
parents:
diff changeset
155 }
kono
parents:
diff changeset
156
kono
parents:
diff changeset
157 /* Return -1 if dwarf ATTR shouldn't be added for DECL, or the attribute
kono
parents:
diff changeset
158 value otherwise. */
kono
parents:
diff changeset
159 int
kono
parents:
diff changeset
160 cp_decl_dwarf_attribute (const_tree decl, int attr)
kono
parents:
diff changeset
161 {
kono
parents:
diff changeset
162 if (decl == NULL_TREE)
kono
parents:
diff changeset
163 return -1;
kono
parents:
diff changeset
164
kono
parents:
diff changeset
165 switch (attr)
kono
parents:
diff changeset
166 {
kono
parents:
diff changeset
167 case DW_AT_explicit:
kono
parents:
diff changeset
168 if (TREE_CODE (decl) == FUNCTION_DECL
kono
parents:
diff changeset
169 && DECL_LANG_SPECIFIC (STRIP_TEMPLATE (decl))
kono
parents:
diff changeset
170 && DECL_NONCONVERTING_P (decl))
kono
parents:
diff changeset
171 return 1;
kono
parents:
diff changeset
172 break;
kono
parents:
diff changeset
173
kono
parents:
diff changeset
174 case DW_AT_deleted:
kono
parents:
diff changeset
175 if (TREE_CODE (decl) == FUNCTION_DECL
kono
parents:
diff changeset
176 && DECL_LANG_SPECIFIC (STRIP_TEMPLATE (decl))
kono
parents:
diff changeset
177 && DECL_DELETED_FN (decl))
kono
parents:
diff changeset
178 return 1;
kono
parents:
diff changeset
179 break;
kono
parents:
diff changeset
180
kono
parents:
diff changeset
181 case DW_AT_defaulted:
kono
parents:
diff changeset
182 if (TREE_CODE (decl) == FUNCTION_DECL
kono
parents:
diff changeset
183 && DECL_LANG_SPECIFIC (STRIP_TEMPLATE (decl))
kono
parents:
diff changeset
184 && DECL_DEFAULTED_FN (decl))
kono
parents:
diff changeset
185 {
kono
parents:
diff changeset
186 if (DECL_DEFAULTED_IN_CLASS_P (decl))
kono
parents:
diff changeset
187 return DW_DEFAULTED_in_class;
kono
parents:
diff changeset
188
kono
parents:
diff changeset
189 if (DECL_DEFAULTED_OUTSIDE_CLASS_P (decl))
kono
parents:
diff changeset
190 return DW_DEFAULTED_out_of_class;
kono
parents:
diff changeset
191 }
kono
parents:
diff changeset
192 break;
kono
parents:
diff changeset
193
kono
parents:
diff changeset
194 case DW_AT_const_expr:
kono
parents:
diff changeset
195 if (VAR_OR_FUNCTION_DECL_P (decl) && DECL_DECLARED_CONSTEXPR_P (decl))
kono
parents:
diff changeset
196 return 1;
kono
parents:
diff changeset
197 break;
kono
parents:
diff changeset
198
kono
parents:
diff changeset
199 case DW_AT_reference:
kono
parents:
diff changeset
200 if (TREE_CODE (decl) == FUNCTION_DECL
kono
parents:
diff changeset
201 && DECL_NONSTATIC_MEMBER_FUNCTION_P (decl)
kono
parents:
diff changeset
202 && FUNCTION_REF_QUALIFIED (TREE_TYPE (decl))
kono
parents:
diff changeset
203 && !FUNCTION_RVALUE_QUALIFIED (TREE_TYPE (decl)))
kono
parents:
diff changeset
204 return 1;
kono
parents:
diff changeset
205 break;
kono
parents:
diff changeset
206
kono
parents:
diff changeset
207 case DW_AT_rvalue_reference:
kono
parents:
diff changeset
208 if (TREE_CODE (decl) == FUNCTION_DECL
kono
parents:
diff changeset
209 && DECL_NONSTATIC_MEMBER_FUNCTION_P (decl)
kono
parents:
diff changeset
210 && FUNCTION_REF_QUALIFIED (TREE_TYPE (decl))
kono
parents:
diff changeset
211 && FUNCTION_RVALUE_QUALIFIED (TREE_TYPE (decl)))
kono
parents:
diff changeset
212 return 1;
kono
parents:
diff changeset
213 break;
kono
parents:
diff changeset
214
kono
parents:
diff changeset
215 case DW_AT_inline:
kono
parents:
diff changeset
216 if (VAR_P (decl) && DECL_INLINE_VAR_P (decl))
kono
parents:
diff changeset
217 {
kono
parents:
diff changeset
218 if (DECL_VAR_DECLARED_INLINE_P (decl))
kono
parents:
diff changeset
219 return DW_INL_declared_inlined;
kono
parents:
diff changeset
220 else
kono
parents:
diff changeset
221 return DW_INL_inlined;
kono
parents:
diff changeset
222 }
kono
parents:
diff changeset
223 break;
kono
parents:
diff changeset
224
kono
parents:
diff changeset
225 case DW_AT_export_symbols:
kono
parents:
diff changeset
226 if (TREE_CODE (decl) == NAMESPACE_DECL
kono
parents:
diff changeset
227 && (DECL_NAMESPACE_INLINE_P (decl)
kono
parents:
diff changeset
228 || (DECL_NAME (decl) == NULL_TREE && dwarf_version >= 5)))
kono
parents:
diff changeset
229 return 1;
kono
parents:
diff changeset
230 break;
kono
parents:
diff changeset
231
kono
parents:
diff changeset
232 default:
kono
parents:
diff changeset
233 break;
kono
parents:
diff changeset
234 }
kono
parents:
diff changeset
235
kono
parents:
diff changeset
236 return -1;
kono
parents:
diff changeset
237 }
kono
parents:
diff changeset
238
kono
parents:
diff changeset
239 /* Return -1 if dwarf ATTR shouldn't be added for TYPE, or the attribute
kono
parents:
diff changeset
240 value otherwise. */
kono
parents:
diff changeset
241 int
kono
parents:
diff changeset
242 cp_type_dwarf_attribute (const_tree type, int attr)
kono
parents:
diff changeset
243 {
kono
parents:
diff changeset
244 if (type == NULL_TREE)
kono
parents:
diff changeset
245 return -1;
kono
parents:
diff changeset
246
kono
parents:
diff changeset
247 switch (attr)
kono
parents:
diff changeset
248 {
kono
parents:
diff changeset
249 case DW_AT_reference:
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
250 if (FUNC_OR_METHOD_TYPE_P (type)
111
kono
parents:
diff changeset
251 && FUNCTION_REF_QUALIFIED (type)
kono
parents:
diff changeset
252 && !FUNCTION_RVALUE_QUALIFIED (type))
kono
parents:
diff changeset
253 return 1;
kono
parents:
diff changeset
254 break;
kono
parents:
diff changeset
255
kono
parents:
diff changeset
256 case DW_AT_rvalue_reference:
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
257 if (FUNC_OR_METHOD_TYPE_P (type)
111
kono
parents:
diff changeset
258 && FUNCTION_REF_QUALIFIED (type)
kono
parents:
diff changeset
259 && FUNCTION_RVALUE_QUALIFIED (type))
kono
parents:
diff changeset
260 return 1;
kono
parents:
diff changeset
261 break;
kono
parents:
diff changeset
262
kono
parents:
diff changeset
263 default:
kono
parents:
diff changeset
264 break;
kono
parents:
diff changeset
265 }
kono
parents:
diff changeset
266
kono
parents:
diff changeset
267 return -1;
kono
parents:
diff changeset
268 }
kono
parents:
diff changeset
269
kono
parents:
diff changeset
270 /* Return the unit size of TYPE without reusable tail padding. */
kono
parents:
diff changeset
271
kono
parents:
diff changeset
272 tree
kono
parents:
diff changeset
273 cp_unit_size_without_reusable_padding (tree type)
kono
parents:
diff changeset
274 {
kono
parents:
diff changeset
275 if (CLASS_TYPE_P (type))
kono
parents:
diff changeset
276 return CLASSTYPE_SIZE_UNIT (type);
kono
parents:
diff changeset
277 return TYPE_SIZE_UNIT (type);
kono
parents:
diff changeset
278 }
kono
parents:
diff changeset
279
kono
parents:
diff changeset
280 /* Stubs to keep c-opts.c happy. */
kono
parents:
diff changeset
281 void
kono
parents:
diff changeset
282 push_file_scope (void)
kono
parents:
diff changeset
283 {
kono
parents:
diff changeset
284 }
kono
parents:
diff changeset
285
kono
parents:
diff changeset
286 void
kono
parents:
diff changeset
287 pop_file_scope (void)
kono
parents:
diff changeset
288 {
kono
parents:
diff changeset
289 }
kono
parents:
diff changeset
290
kono
parents:
diff changeset
291 /* c-pragma.c needs to query whether a decl has extern "C" linkage. */
kono
parents:
diff changeset
292 bool
kono
parents:
diff changeset
293 has_c_linkage (const_tree decl)
kono
parents:
diff changeset
294 {
kono
parents:
diff changeset
295 return DECL_EXTERN_C_P (decl);
kono
parents:
diff changeset
296 }
kono
parents:
diff changeset
297
kono
parents:
diff changeset
298 /* Return true if stmt can fall through. Used by block_may_fallthru
kono
parents:
diff changeset
299 default case. */
kono
parents:
diff changeset
300
kono
parents:
diff changeset
301 bool
kono
parents:
diff changeset
302 cxx_block_may_fallthru (const_tree stmt)
kono
parents:
diff changeset
303 {
kono
parents:
diff changeset
304 switch (TREE_CODE (stmt))
kono
parents:
diff changeset
305 {
kono
parents:
diff changeset
306 case EXPR_STMT:
kono
parents:
diff changeset
307 return block_may_fallthru (EXPR_STMT_EXPR (stmt));
kono
parents:
diff changeset
308
kono
parents:
diff changeset
309 case THROW_EXPR:
kono
parents:
diff changeset
310 return false;
kono
parents:
diff changeset
311
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
312 case IF_STMT:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
313 if (block_may_fallthru (THEN_CLAUSE (stmt)))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
314 return true;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
315 return block_may_fallthru (ELSE_CLAUSE (stmt));
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
316
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
317 case SWITCH_STMT:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
318 return (!SWITCH_STMT_ALL_CASES_P (stmt)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
319 || !SWITCH_STMT_NO_BREAK_P (stmt)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
320 || block_may_fallthru (SWITCH_STMT_BODY (stmt)));
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
321
111
kono
parents:
diff changeset
322 default:
kono
parents:
diff changeset
323 return true;
kono
parents:
diff changeset
324 }
kono
parents:
diff changeset
325 }
kono
parents:
diff changeset
326
kono
parents:
diff changeset
327 /* Return the list of decls in the global namespace. */
kono
parents:
diff changeset
328
kono
parents:
diff changeset
329 tree
kono
parents:
diff changeset
330 cp_get_global_decls ()
kono
parents:
diff changeset
331 {
kono
parents:
diff changeset
332 return NAMESPACE_LEVEL (global_namespace)->names;
kono
parents:
diff changeset
333 }
kono
parents:
diff changeset
334
kono
parents:
diff changeset
335 /* Push DECL into the current scope. */
kono
parents:
diff changeset
336
kono
parents:
diff changeset
337 tree
kono
parents:
diff changeset
338 cp_pushdecl (tree decl)
kono
parents:
diff changeset
339 {
kono
parents:
diff changeset
340 return pushdecl (decl);
kono
parents:
diff changeset
341 }
kono
parents:
diff changeset
342
kono
parents:
diff changeset
343 /* Get the global value binding of NAME. Called directly from
kono
parents:
diff changeset
344 c-common.c, not via a hook. */
kono
parents:
diff changeset
345
kono
parents:
diff changeset
346 tree
kono
parents:
diff changeset
347 identifier_global_value (tree name)
kono
parents:
diff changeset
348 {
kono
parents:
diff changeset
349 return get_global_binding (name);
kono
parents:
diff changeset
350 }
kono
parents:
diff changeset
351
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
352 /* Similarly, but return struct/class/union NAME instead. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
353
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
354 tree
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
355 identifier_global_tag (tree name)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
356 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
357 tree ret = lookup_qualified_name (global_namespace, name, /*prefer_type*/2,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
358 /*complain*/false);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
359 if (ret == error_mark_node)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
360 return NULL_TREE;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
361 return ret;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
362 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
363
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
364 /* Returns true if NAME refers to a built-in function or function-like
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
365 operator. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
366
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
367 bool
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
368 names_builtin_p (const char *name)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
369 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
370 tree id = get_identifier (name);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
371 if (tree binding = get_global_binding (id))
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
372 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
373 if (TREE_CODE (binding) == FUNCTION_DECL && DECL_IS_BUILTIN (binding))
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
374 return true;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
375
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
376 /* Handle the case when an overload for a built-in name exists. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
377 if (TREE_CODE (binding) != OVERLOAD)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
378 return false;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
379
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
380 for (ovl_iterator it (binding); it; ++it)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
381 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
382 tree decl = *it;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
383 if (DECL_IS_BUILTIN (decl))
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
384 return true;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
385 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
386 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
387
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
388 /* Also detect common reserved C++ words that aren't strictly built-in
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
389 functions. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
390 switch (C_RID_CODE (id))
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
391 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
392 case RID_ADDRESSOF:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
393 case RID_BUILTIN_CONVERTVECTOR:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
394 case RID_BUILTIN_HAS_ATTRIBUTE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
395 case RID_BUILTIN_SHUFFLE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
396 case RID_BUILTIN_LAUNDER:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
397 case RID_OFFSETOF:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
398 case RID_HAS_NOTHROW_ASSIGN:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
399 case RID_HAS_NOTHROW_CONSTRUCTOR:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
400 case RID_HAS_NOTHROW_COPY:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
401 case RID_HAS_TRIVIAL_ASSIGN:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
402 case RID_HAS_TRIVIAL_CONSTRUCTOR:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
403 case RID_HAS_TRIVIAL_COPY:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
404 case RID_HAS_TRIVIAL_DESTRUCTOR:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
405 case RID_HAS_UNIQUE_OBJ_REPRESENTATIONS:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
406 case RID_HAS_VIRTUAL_DESTRUCTOR:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
407 case RID_IS_ABSTRACT:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
408 case RID_IS_AGGREGATE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
409 case RID_IS_BASE_OF:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
410 case RID_IS_CLASS:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
411 case RID_IS_EMPTY:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
412 case RID_IS_ENUM:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
413 case RID_IS_FINAL:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
414 case RID_IS_LITERAL_TYPE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
415 case RID_IS_POD:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
416 case RID_IS_POLYMORPHIC:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
417 case RID_IS_SAME_AS:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
418 case RID_IS_STD_LAYOUT:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
419 case RID_IS_TRIVIAL:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
420 case RID_IS_TRIVIALLY_ASSIGNABLE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
421 case RID_IS_TRIVIALLY_CONSTRUCTIBLE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
422 case RID_IS_TRIVIALLY_COPYABLE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
423 case RID_IS_UNION:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
424 case RID_IS_ASSIGNABLE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
425 case RID_IS_CONSTRUCTIBLE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
426 case RID_UNDERLYING_TYPE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
427 return true;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
428 default:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
429 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
430 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
431
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
432 return false;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
433 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
434
111
kono
parents:
diff changeset
435 /* Register c++-specific dumps. */
kono
parents:
diff changeset
436
kono
parents:
diff changeset
437 void
kono
parents:
diff changeset
438 cp_register_dumps (gcc::dump_manager *dumps)
kono
parents:
diff changeset
439 {
kono
parents:
diff changeset
440 class_dump_id = dumps->dump_register
kono
parents:
diff changeset
441 (".class", "lang-class", "lang-class", DK_lang, OPTGROUP_NONE, false);
kono
parents:
diff changeset
442
kono
parents:
diff changeset
443 raw_dump_id = dumps->dump_register
kono
parents:
diff changeset
444 (".raw", "lang-raw", "lang-raw", DK_lang, OPTGROUP_NONE, false);
kono
parents:
diff changeset
445 }
kono
parents:
diff changeset
446
kono
parents:
diff changeset
447 void
kono
parents:
diff changeset
448 cp_common_init_ts (void)
kono
parents:
diff changeset
449 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
450 /* With type. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
451 MARK_TS_TYPED (PTRMEM_CST);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
452 MARK_TS_TYPED (LAMBDA_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
453 MARK_TS_TYPED (TYPE_ARGUMENT_PACK);
111
kono
parents:
diff changeset
454
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
455 /* Random new trees. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
456 MARK_TS_COMMON (BASELINK);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
457 MARK_TS_COMMON (DECLTYPE_TYPE);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
458 MARK_TS_COMMON (OVERLOAD);
111
kono
parents:
diff changeset
459 MARK_TS_COMMON (TEMPLATE_PARM_INDEX);
kono
parents:
diff changeset
460 MARK_TS_COMMON (TYPENAME_TYPE);
kono
parents:
diff changeset
461 MARK_TS_COMMON (TYPEOF_TYPE);
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
462 MARK_TS_COMMON (UNBOUND_CLASS_TEMPLATE);
111
kono
parents:
diff changeset
463 MARK_TS_COMMON (UNDERLYING_TYPE);
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
464
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
465 /* New decls. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
466 MARK_TS_DECL_COMMON (TEMPLATE_DECL);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
467 MARK_TS_DECL_COMMON (WILDCARD_DECL);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
468 MARK_TS_DECL_COMMON (CONCEPT_DECL);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
469
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
470 MARK_TS_DECL_NON_COMMON (USING_DECL);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
471
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
472 /* New Types. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
473 MARK_TS_TYPE_NON_COMMON (BOUND_TEMPLATE_TEMPLATE_PARM);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
474 MARK_TS_TYPE_NON_COMMON (TEMPLATE_TEMPLATE_PARM);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
475 MARK_TS_TYPE_NON_COMMON (TEMPLATE_TYPE_PARM);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
476 MARK_TS_TYPE_NON_COMMON (TYPE_ARGUMENT_PACK);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
477 MARK_TS_TYPE_NON_COMMON (TYPE_PACK_EXPANSION);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
478
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
479 /* Statements. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
480 MARK_TS_EXP (BREAK_STMT);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
481 MARK_TS_EXP (CLEANUP_STMT);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
482 MARK_TS_EXP (CONTINUE_STMT);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
483 MARK_TS_EXP (DO_STMT);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
484 MARK_TS_EXP (EH_SPEC_BLOCK);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
485 MARK_TS_EXP (FOR_STMT);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
486 MARK_TS_EXP (HANDLER);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
487 MARK_TS_EXP (IF_STMT);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
488 MARK_TS_EXP (OMP_DEPOBJ);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
489 MARK_TS_EXP (RANGE_FOR_STMT);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
490 MARK_TS_EXP (SWITCH_STMT);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
491 MARK_TS_EXP (TRY_BLOCK);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
492 MARK_TS_EXP (USING_STMT);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
493 MARK_TS_EXP (WHILE_STMT);
111
kono
parents:
diff changeset
494
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
495 /* Random expressions. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
496 MARK_TS_EXP (ADDRESSOF_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
497 MARK_TS_EXP (AGGR_INIT_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
498 MARK_TS_EXP (ALIGNOF_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
499 MARK_TS_EXP (ARROW_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
500 MARK_TS_EXP (AT_ENCODE_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
501 MARK_TS_EXP (CAST_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
502 MARK_TS_EXP (CONST_CAST_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
503 MARK_TS_EXP (CTOR_INITIALIZER);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
504 MARK_TS_EXP (DELETE_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
505 MARK_TS_EXP (DOTSTAR_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
506 MARK_TS_EXP (DYNAMIC_CAST_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
507 MARK_TS_EXP (EMPTY_CLASS_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
508 MARK_TS_EXP (EXPR_STMT);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
509 MARK_TS_EXP (IMPLICIT_CONV_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
510 MARK_TS_EXP (MEMBER_REF);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
511 MARK_TS_EXP (MODOP_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
512 MARK_TS_EXP (MUST_NOT_THROW_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
513 MARK_TS_EXP (NEW_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
514 MARK_TS_EXP (NOEXCEPT_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
515 MARK_TS_EXP (NON_DEPENDENT_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
516 MARK_TS_EXP (OFFSETOF_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
517 MARK_TS_EXP (OFFSET_REF);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
518 MARK_TS_EXP (PSEUDO_DTOR_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
519 MARK_TS_EXP (REINTERPRET_CAST_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
520 MARK_TS_EXP (SCOPE_REF);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
521 MARK_TS_EXP (STATIC_CAST_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
522 MARK_TS_EXP (STMT_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
523 MARK_TS_EXP (TAG_DEFN);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
524 MARK_TS_EXP (TEMPLATE_ID_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
525 MARK_TS_EXP (THROW_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
526 MARK_TS_EXP (TRAIT_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
527 MARK_TS_EXP (TYPEID_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
528 MARK_TS_EXP (TYPE_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
529 MARK_TS_EXP (UNARY_PLUS_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
530 MARK_TS_EXP (VEC_DELETE_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
531 MARK_TS_EXP (VEC_INIT_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
532 MARK_TS_EXP (VEC_NEW_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
533 MARK_TS_EXP (SPACESHIP_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
534
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
535 /* Fold expressions. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
536 MARK_TS_EXP (BINARY_LEFT_FOLD_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
537 MARK_TS_EXP (BINARY_RIGHT_FOLD_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
538 MARK_TS_EXP (EXPR_PACK_EXPANSION);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
539 MARK_TS_EXP (NONTYPE_ARGUMENT_PACK);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
540 MARK_TS_EXP (UNARY_LEFT_FOLD_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
541 MARK_TS_EXP (UNARY_RIGHT_FOLD_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
542
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
543 /* Constraints. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
544 MARK_TS_EXP (CHECK_CONSTR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
545 MARK_TS_EXP (COMPOUND_REQ);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
546 MARK_TS_EXP (CONJ_CONSTR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
547 MARK_TS_EXP (DISJ_CONSTR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
548 MARK_TS_EXP (ATOMIC_CONSTR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
549 MARK_TS_EXP (NESTED_REQ);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
550 MARK_TS_EXP (REQUIRES_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
551 MARK_TS_EXP (SIMPLE_REQ);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
552 MARK_TS_EXP (TYPE_REQ);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
553
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
554 MARK_TS_EXP (CO_AWAIT_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
555 MARK_TS_EXP (CO_YIELD_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
556 MARK_TS_EXP (CO_RETURN_EXPR);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
557
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
558 c_common_init_ts ();
111
kono
parents:
diff changeset
559 }
kono
parents:
diff changeset
560
kono
parents:
diff changeset
561 #include "gt-cp-cp-objcp-common.h"