136ac495dSmrg /* Support routines shared by all runtimes. 2*8feb0f0bSmrg Copyright (C) 2011-2020 Free Software Foundation, Inc. 336ac495dSmrg Contributed by Iain Sandoe 436ac495dSmrg 536ac495dSmrg This file is part of GCC. 636ac495dSmrg 736ac495dSmrg GCC is free software; you can redistribute it and/or modify 836ac495dSmrg it under the terms of the GNU General Public License as published by 936ac495dSmrg the Free Software Foundation; either version 3, or (at your option) 1036ac495dSmrg any later version. 1136ac495dSmrg 1236ac495dSmrg GCC is distributed in the hope that it will be useful, 1336ac495dSmrg but WITHOUT ANY WARRANTY; without even the implied warranty of 1436ac495dSmrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1536ac495dSmrg GNU General Public License for more details. 1636ac495dSmrg 1736ac495dSmrg You should have received a copy of the GNU General Public License 1836ac495dSmrg along with GCC; see the file COPYING3. If not see 1936ac495dSmrg <http://www.gnu.org/licenses/>. */ 2036ac495dSmrg 2136ac495dSmrg #ifndef _OBJC_RUNTIME_SHARED_SUPPORT_H_ 2236ac495dSmrg #define _OBJC_RUNTIME_SHARED_SUPPORT_H_ 2336ac495dSmrg 2436ac495dSmrg /* Left in obj-act.c for now... */ 2536ac495dSmrg 2636ac495dSmrg extern tree objc_start_struct (tree); 2736ac495dSmrg extern tree objc_finish_struct (tree, tree); 2836ac495dSmrg extern tree add_field_decl (tree, const char *, tree **); 2936ac495dSmrg extern tree build_sized_array_type (tree, int); 3036ac495dSmrg 3136ac495dSmrg extern tree lookup_interface (tree); 3236ac495dSmrg extern tree objc_build_constructor (tree, vec<constructor_elt, va_gc> *); 3336ac495dSmrg 3436ac495dSmrg extern tree start_var_decl (tree, const char *); 3536ac495dSmrg extern void finish_var_decl (tree, tree); 3636ac495dSmrg 3736ac495dSmrg extern tree my_build_string (int, const char *); 3836ac495dSmrg extern tree my_build_string_pointer (int, const char *); 3936ac495dSmrg extern tree add_objc_string (tree ident, string_section); 4036ac495dSmrg extern tree get_objc_string_decl (tree, string_section); 4136ac495dSmrg 4236ac495dSmrg extern void add_class_reference (tree); 4336ac495dSmrg 4436ac495dSmrg #ifdef OBJCPLUS 4536ac495dSmrg extern void objc_start_function (tree, tree, tree, tree); 4636ac495dSmrg extern tree objc_get_parm_info (int, tree); 4736ac495dSmrg #else 4836ac495dSmrg extern void objc_start_function (tree, tree, tree, struct c_arg_info *); 4936ac495dSmrg extern struct c_arg_info *objc_get_parm_info (int, tree); 5036ac495dSmrg #endif 5136ac495dSmrg extern void objc_push_parm (tree); 5236ac495dSmrg 5336ac495dSmrg extern tree build_function_type_for_method (tree, tree, int, bool); 5436ac495dSmrg 5536ac495dSmrg extern char *objc_build_property_setter_name (tree); 5636ac495dSmrg 5736ac495dSmrg /* Stuff that should be migrated to shared support (or some v1-only file). */ 5836ac495dSmrg extern void build_super_template (void); 5936ac495dSmrg 6036ac495dSmrg extern tree objc_build_component_ref (tree, tree); 6136ac495dSmrg 6236ac495dSmrg extern tree build_descriptor_table_initializer (tree, tree); 6336ac495dSmrg extern tree build_method_prototype_list_template (tree, int); 6436ac495dSmrg extern tree build_protocol_initializer (tree, tree, tree, tree, tree); 6536ac495dSmrg 6636ac495dSmrg /* Moved or new routines in objc-runtime-shared-support.c */ 6736ac495dSmrg 6836ac495dSmrg extern tree build_selector (tree); 6936ac495dSmrg extern tree build_method_template (void); 7036ac495dSmrg extern tree build_method_prototype_template (void); 7136ac495dSmrg extern tree build_method_list_template (tree, int); 7236ac495dSmrg 7336ac495dSmrg extern tree build_dispatch_table_initializer (tree, tree); 7436ac495dSmrg extern void diagnose_missing_method (tree, location_t); 7536ac495dSmrg extern void build_next_selector_translation_table (void); 7636ac495dSmrg extern void generate_protocol_references (tree); 7736ac495dSmrg extern void build_module_descriptor (long, tree); 7836ac495dSmrg extern tree build_ivar_list_initializer (tree, tree); 7936ac495dSmrg extern tree build_ivar_list_template (tree, int); 8036ac495dSmrg extern tree build_ivar_template (void); 8136ac495dSmrg 8236ac495dSmrg extern void generate_strings (void); 8336ac495dSmrg 8436ac495dSmrg extern void dump_interface (FILE *, tree); 8536ac495dSmrg extern FILE *gen_declaration_file; 8636ac495dSmrg 8736ac495dSmrg #endif /* _OBJC_RUNTIME_SHARED_SUPPORT_H_ */ 88