comparison gcc/cp/name-lookup.h @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 /* Declarations for C++ name lookup routines. 1 /* Declarations for -*- C++ -*- name lookup routines.
2 Copyright (C) 2003-2018 Free Software Foundation, Inc. 2 Copyright (C) 2003-2020 Free Software Foundation, Inc.
3 Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net> 3 Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
4 4
5 This file is part of GCC. 5 This file is part of GCC.
6 6
7 GCC is free software; you can redistribute it and/or modify 7 GCC is free software; you can redistribute it and/or modify
174 and typedef types. These are in the reverse of the order 174 and typedef types. These are in the reverse of the order
175 supplied. There may be OVERLOADs on this list, too, but they 175 supplied. There may be OVERLOADs on this list, too, but they
176 are wrapped in TREE_LISTs; the TREE_VALUE is the OVERLOAD. */ 176 are wrapped in TREE_LISTs; the TREE_VALUE is the OVERLOAD. */
177 tree names; 177 tree names;
178 178
179 /* A list of USING_DECL nodes. */
180 tree usings;
181
182 /* Using directives. */ 179 /* Using directives. */
183 vec<tree, va_gc> *using_directives; 180 vec<tree, va_gc> *using_directives;
184 181
185 /* For the binding level corresponding to a class, the entities 182 /* For the binding level corresponding to a class, the entities
186 declared in the class or its base classes. */ 183 declared in the class or its base classes. */
234 on leaving the class definition to allow for the scope 231 on leaving the class definition to allow for the scope
235 to be subsequently re-used as a non-defining scope for 232 to be subsequently re-used as a non-defining scope for
236 'this_entity'. */ 233 'this_entity'. */
237 unsigned defining_class_p : 1; 234 unsigned defining_class_p : 1;
238 235
239 /* 23 bits left to fill a 32-bit word. */ 236 /* true for SK_FUNCTION_PARMS of immediate functions. */
237 unsigned immediate_fn_ctx_p : 1;
238
239 /* 22 bits left to fill a 32-bit word. */
240 }; 240 };
241 241
242 /* The binding level currently in effect. */ 242 /* The binding level currently in effect. */
243 243
244 #define current_binding_level \ 244 #define current_binding_level \
285 extern void set_global_binding (tree decl); 285 extern void set_global_binding (tree decl);
286 inline tree get_global_binding (tree id) 286 inline tree get_global_binding (tree id)
287 { 287 {
288 return get_namespace_binding (NULL_TREE, id); 288 return get_namespace_binding (NULL_TREE, id);
289 } 289 }
290 extern tree lookup_qualified_name (tree, tree, int, bool, /*hidden*/bool = false); 290 extern tree lookup_qualified_name (tree, tree, int = 0, bool = true, /*hidden*/bool = false);
291 extern tree lookup_qualified_name (tree t, const char *p, int = 0, bool = true, bool = false);
291 extern tree lookup_name_nonclass (tree); 292 extern tree lookup_name_nonclass (tree);
292 extern bool is_local_extern (tree); 293 extern bool is_local_extern (tree);
293 extern bool pushdecl_class_level (tree); 294 extern bool pushdecl_class_level (tree);
294 extern tree pushdecl_namespace_level (tree, bool); 295 extern tree pushdecl_namespace_level (tree, bool);
295 extern bool push_class_level_binding (tree, tree); 296 extern bool push_class_level_binding (tree, tree);
301 extern void pop_decl_namespace (void); 302 extern void pop_decl_namespace (void);
302 extern void do_namespace_alias (tree, tree); 303 extern void do_namespace_alias (tree, tree);
303 extern tree do_class_using_decl (tree, tree); 304 extern tree do_class_using_decl (tree, tree);
304 extern tree lookup_arg_dependent (tree, tree, vec<tree, va_gc> *); 305 extern tree lookup_arg_dependent (tree, tree, vec<tree, va_gc> *);
305 extern tree search_anon_aggr (tree, tree, bool = false); 306 extern tree search_anon_aggr (tree, tree, bool = false);
306 extern tree get_class_binding_direct (tree, tree, int type_or_fns = -1); 307 extern tree get_class_binding_direct (tree, tree, bool want_type = false);
307 extern tree get_class_binding (tree, tree, int type_or_fns = -1); 308 extern tree get_class_binding (tree, tree, bool want_type = false);
308 extern tree *find_member_slot (tree klass, tree name); 309 extern tree *find_member_slot (tree klass, tree name);
309 extern tree *add_member_slot (tree klass, tree name); 310 extern tree *add_member_slot (tree klass, tree name);
310 extern void resort_type_member_vec (void *, void *, 311 extern void resort_type_member_vec (void *, void *,
311 gt_pointer_operator, void *); 312 gt_pointer_operator, void *);
312 extern void set_class_bindings (tree, unsigned extra = 0); 313 extern void set_class_bindings (tree, unsigned extra = 0);
313 extern void insert_late_enum_def_bindings (tree, tree); 314 extern void insert_late_enum_def_bindings (tree, tree);
314 extern tree innermost_non_namespace_value (tree); 315 extern tree innermost_non_namespace_value (tree);
315 extern cxx_binding *outer_binding (tree, cxx_binding *, bool); 316 extern cxx_binding *outer_binding (tree, cxx_binding *, bool);
316 extern void cp_emit_debug_info_for_using (tree, tree); 317 extern void cp_emit_debug_info_for_using (tree, tree);
317 318
318 extern void finish_namespace_using_decl (tree, tree, tree); 319 extern void finish_nonmember_using_decl (tree scope, tree name);
319 extern void finish_local_using_decl (tree, tree, tree); 320 extern void finish_using_directive (tree target, tree attribs);
320 extern void finish_namespace_using_directive (tree, tree);
321 extern void finish_local_using_directive (tree, tree);
322 extern tree pushdecl (tree, bool is_friend = false); 321 extern tree pushdecl (tree, bool is_friend = false);
323 extern tree pushdecl_outermost_localscope (tree); 322 extern tree pushdecl_outermost_localscope (tree);
324 extern tree pushdecl_top_level (tree, bool is_friend = false); 323 extern tree pushdecl_top_level (tree, bool is_friend = false);
325 extern tree pushdecl_top_level_and_finish (tree, tree); 324 extern tree pushdecl_top_level_and_finish (tree, tree);
326 extern tree pushtag (tree, tree, tag_scope); 325 extern tree pushtag (tree, tree, tag_scope);
328 extern void pop_namespace (void); 327 extern void pop_namespace (void);
329 extern void push_nested_namespace (tree); 328 extern void push_nested_namespace (tree);
330 extern void pop_nested_namespace (tree); 329 extern void pop_nested_namespace (tree);
331 extern void push_to_top_level (void); 330 extern void push_to_top_level (void);
332 extern void pop_from_top_level (void); 331 extern void pop_from_top_level (void);
332 extern void maybe_save_operator_binding (tree);
333 extern void push_operator_bindings (void);
334 extern void discard_operator_bindings (tree);
333 335
334 #endif /* GCC_CP_NAME_LOOKUP_H */ 336 #endif /* GCC_CP_NAME_LOOKUP_H */