110d565efSmrg /* Default macros to initialize the lang_hooks data structure.
2*ec02198aSmrg    Copyright (C) 2001-2020 Free Software Foundation, Inc.
310d565efSmrg    Contributed by Alexandre Oliva  <aoliva@redhat.com>
410d565efSmrg 
510d565efSmrg This file is part of GCC.
610d565efSmrg 
710d565efSmrg GCC is free software; you can redistribute it and/or modify
810d565efSmrg it under the terms of the GNU General Public License as published by
910d565efSmrg the Free Software Foundation; either version 3, or (at your option)
1010d565efSmrg any later version.
1110d565efSmrg 
1210d565efSmrg GCC is distributed in the hope that it will be useful,
1310d565efSmrg but WITHOUT ANY WARRANTY; without even the implied warranty of
1410d565efSmrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1510d565efSmrg GNU General Public License for more details.
1610d565efSmrg 
1710d565efSmrg You should have received a copy of the GNU General Public License
1810d565efSmrg along with GCC; see the file COPYING3.  If not see
1910d565efSmrg <http://www.gnu.org/licenses/>.  */
2010d565efSmrg 
2110d565efSmrg #ifndef GCC_LANG_HOOKS_DEF_H
2210d565efSmrg #define GCC_LANG_HOOKS_DEF_H
2310d565efSmrg 
2410d565efSmrg #include "hooks.h"
2510d565efSmrg 
2610d565efSmrg struct diagnostic_info;
2710d565efSmrg class substring_loc;
2810d565efSmrg 
2910d565efSmrg /* Note to creators of new hooks:
3010d565efSmrg 
3110d565efSmrg    The macros in this file should NOT be surrounded by a
3210d565efSmrg    #ifdef...#endif pair, since this file declares the defaults.  Each
3310d565efSmrg    front end overrides any hooks it wishes to, in the file containing
3410d565efSmrg    its struct lang_hooks, AFTER including this file.  */
3510d565efSmrg 
3610d565efSmrg /* See langhooks.h for the definition and documentation of each hook.  */
3710d565efSmrg 
3810d565efSmrg extern void lhd_do_nothing (void);
3910d565efSmrg extern void lhd_do_nothing_t (tree);
4010d565efSmrg extern void lhd_do_nothing_f (struct function *);
4110d565efSmrg extern tree lhd_pass_through_t (tree);
42c7a68eb7Smrg extern void lhd_register_dumps (gcc::dump_manager *);
4310d565efSmrg extern bool lhd_post_options (const char **);
4410d565efSmrg extern alias_set_type lhd_get_alias_set (tree);
4510d565efSmrg extern tree lhd_return_null_tree (tree);
4610d565efSmrg extern tree lhd_return_null_const_tree (const_tree);
4710d565efSmrg extern tree lhd_do_nothing_iii_return_null_tree (int, int, int);
4810d565efSmrg extern void lhd_print_tree_nothing (FILE *, tree, int);
4910d565efSmrg extern const char *lhd_decl_printable_name (tree, int);
5010d565efSmrg extern const char *lhd_dwarf_name (tree, int);
5110d565efSmrg extern int lhd_types_compatible_p (tree, tree);
5210d565efSmrg extern void lhd_print_error_function (diagnostic_context *,
5310d565efSmrg 				      const char *, struct diagnostic_info *);
54c7a68eb7Smrg extern void lhd_set_decl_assembler_name (tree decl);
55c7a68eb7Smrg extern void lhd_overwrite_decl_assembler_name (tree decl, tree name);
5610d565efSmrg extern bool lhd_warn_unused_global_decl (const_tree);
57*ec02198aSmrg extern tree lhd_simulate_enum_decl (location_t, const char *,
58*ec02198aSmrg 				    vec<string_int_pair>);
5910d565efSmrg extern tree lhd_type_for_size (unsigned precision, int unsignedp);
6010d565efSmrg extern void lhd_incomplete_type_error (location_t, const_tree, const_tree);
6110d565efSmrg extern tree lhd_type_promotes_to (tree);
6210d565efSmrg extern void lhd_register_builtin_type (tree, const char *);
6310d565efSmrg extern bool lhd_decl_ok_for_sibcall (const_tree);
6410d565efSmrg extern size_t lhd_tree_size (enum tree_code);
6510d565efSmrg extern HOST_WIDE_INT lhd_to_target_charset (HOST_WIDE_INT);
6610d565efSmrg extern tree lhd_expr_to_decl (tree, bool *, bool *);
6710d565efSmrg extern tree lhd_builtin_function (tree);
6810d565efSmrg extern tree lhd_enum_underlying_base_type (const_tree);
6910d565efSmrg 
7010d565efSmrg /* Declarations of default tree inlining hooks.  */
7110d565efSmrg extern void lhd_initialize_diagnostics (diagnostic_context *);
7210d565efSmrg extern void lhd_init_options (unsigned int,
7310d565efSmrg 			      struct cl_decoded_option *);
7410d565efSmrg extern bool lhd_complain_wrong_lang_p (const struct cl_option *);
750fc04c29Smrg extern bool lhd_handle_option (size_t, const char *, HOST_WIDE_INT, int,
760fc04c29Smrg 			       location_t, const struct cl_option_handlers *);
7710d565efSmrg 
7810d565efSmrg 
7910d565efSmrg /* Declarations for tree gimplification hooks.  */
8010d565efSmrg extern int lhd_gimplify_expr (tree *, gimple_seq *, gimple_seq *);
8110d565efSmrg extern enum omp_clause_default_kind lhd_omp_predetermined_sharing (tree);
8210d565efSmrg extern tree lhd_omp_assignment (tree, tree, tree);
8310d565efSmrg extern void lhd_omp_finish_clause (tree, gimple_seq *);
8410d565efSmrg struct gimplify_omp_ctx;
8510d565efSmrg extern void lhd_omp_firstprivatize_type_sizes (struct gimplify_omp_ctx *,
8610d565efSmrg 					       tree);
8710d565efSmrg extern bool lhd_omp_mappable_type (tree);
8810d565efSmrg extern bool lhd_omp_scalar_p (tree);
8910d565efSmrg 
9010d565efSmrg extern const char *lhd_get_substring_location (const substring_loc &,
9110d565efSmrg 					       location_t *out_loc);
9210d565efSmrg extern int lhd_decl_dwarf_attribute (const_tree, int);
9310d565efSmrg extern int lhd_type_dwarf_attribute (const_tree, int);
9410d565efSmrg 
9510d565efSmrg #define LANG_HOOKS_NAME			"GNU unknown"
9610d565efSmrg #define LANG_HOOKS_IDENTIFIER_SIZE	sizeof (struct lang_identifier)
9710d565efSmrg #define LANG_HOOKS_INIT			hook_bool_void_false
9810d565efSmrg #define LANG_HOOKS_FINISH		lhd_do_nothing
9910d565efSmrg #define LANG_HOOKS_PARSE_FILE		lhd_do_nothing
10010d565efSmrg #define LANG_HOOKS_OPTION_LANG_MASK	hook_uint_void_0
10110d565efSmrg #define LANG_HOOKS_INIT_OPTIONS_STRUCT	hook_void_gcc_optionsp
10210d565efSmrg #define LANG_HOOKS_INIT_OPTIONS		lhd_init_options
10310d565efSmrg #define LANG_HOOKS_INITIALIZE_DIAGNOSTICS lhd_initialize_diagnostics
104c7a68eb7Smrg #define LANG_HOOKS_REGISTER_DUMPS	lhd_register_dumps
10510d565efSmrg #define LANG_HOOKS_COMPLAIN_WRONG_LANG_P lhd_complain_wrong_lang_p
10610d565efSmrg #define LANG_HOOKS_HANDLE_OPTION	lhd_handle_option
10710d565efSmrg #define LANG_HOOKS_POST_OPTIONS		lhd_post_options
10810d565efSmrg #define LANG_HOOKS_MISSING_NORETURN_OK_P hook_bool_tree_true
10910d565efSmrg #define LANG_HOOKS_GET_ALIAS_SET	lhd_get_alias_set
11010d565efSmrg #define LANG_HOOKS_FINISH_INCOMPLETE_DECL lhd_do_nothing_t
11110d565efSmrg #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL lhd_do_nothing_t
11210d565efSmrg #define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME lhd_set_decl_assembler_name
113c7a68eb7Smrg #define LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME lhd_overwrite_decl_assembler_name
11410d565efSmrg #define LANG_HOOKS_PRINT_STATISTICS	lhd_do_nothing
11510d565efSmrg #define LANG_HOOKS_PRINT_XNODE		lhd_print_tree_nothing
11610d565efSmrg #define LANG_HOOKS_PRINT_DECL		lhd_print_tree_nothing
11710d565efSmrg #define LANG_HOOKS_PRINT_TYPE		lhd_print_tree_nothing
11810d565efSmrg #define LANG_HOOKS_PRINT_IDENTIFIER	lhd_print_tree_nothing
11910d565efSmrg #define LANG_HOOKS_PRINT_ERROR_FUNCTION lhd_print_error_function
12010d565efSmrg #define LANG_HOOKS_DECL_PRINTABLE_NAME	lhd_decl_printable_name
12110d565efSmrg #define LANG_HOOKS_DWARF_NAME		lhd_dwarf_name
12210d565efSmrg #define LANG_HOOKS_FREE_LANG_DATA	lhd_do_nothing_t
12310d565efSmrg #define LANG_HOOKS_TREE_SIZE		lhd_tree_size
12410d565efSmrg #define LANG_HOOKS_TYPES_COMPATIBLE_P	lhd_types_compatible_p
12510d565efSmrg #define LANG_HOOKS_BUILTIN_FUNCTION	lhd_builtin_function
12610d565efSmrg #define LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE	LANG_HOOKS_BUILTIN_FUNCTION
127*ec02198aSmrg #define LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL LANG_HOOKS_BUILTIN_FUNCTION
12810d565efSmrg #define LANG_HOOKS_EXPR_TO_DECL		lhd_expr_to_decl
12910d565efSmrg #define LANG_HOOKS_TO_TARGET_CHARSET	lhd_to_target_charset
13010d565efSmrg #define LANG_HOOKS_INIT_TS		lhd_do_nothing
13110d565efSmrg #define LANG_HOOKS_EH_PERSONALITY	lhd_gcc_personality
13210d565efSmrg #define LANG_HOOKS_EH_RUNTIME_TYPE	lhd_pass_through_t
13310d565efSmrg #define LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS	NULL
13410d565efSmrg #define LANG_HOOKS_BLOCK_MAY_FALLTHRU	hook_bool_const_tree_true
13510d565efSmrg #define LANG_HOOKS_EH_USE_CXA_END_CLEANUP	false
13610d565efSmrg #define LANG_HOOKS_DEEP_UNSHARING	false
13710d565efSmrg #define LANG_HOOKS_CUSTOM_FUNCTION_DESCRIPTORS	false
138c7a68eb7Smrg #define LANG_HOOKS_EMITS_BEGIN_STMT	false
13910d565efSmrg #define LANG_HOOKS_RUN_LANG_SELFTESTS   lhd_do_nothing
14010d565efSmrg #define LANG_HOOKS_GET_SUBSTRING_LOCATION lhd_get_substring_location
14110d565efSmrg 
14210d565efSmrg /* Attribute hooks.  */
14310d565efSmrg #define LANG_HOOKS_ATTRIBUTE_TABLE		NULL
14410d565efSmrg #define LANG_HOOKS_COMMON_ATTRIBUTE_TABLE	NULL
14510d565efSmrg #define LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE	NULL
14610d565efSmrg 
14710d565efSmrg /* Tree inlining hooks.  */
14810d565efSmrg #define LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P \
14910d565efSmrg   hook_bool_tree_tree_false
15010d565efSmrg 
15110d565efSmrg #define LANG_HOOKS_TREE_INLINING_INITIALIZER { \
15210d565efSmrg   LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P, \
15310d565efSmrg }
15410d565efSmrg 
15510d565efSmrg /* Hooks for tree gimplification.  */
15610d565efSmrg #define LANG_HOOKS_GIMPLIFY_EXPR lhd_gimplify_expr
15710d565efSmrg 
15810d565efSmrg /* Tree dump hooks.  */
15910d565efSmrg extern bool lhd_tree_dump_dump_tree (void *, tree);
16010d565efSmrg extern int lhd_tree_dump_type_quals (const_tree);
16110d565efSmrg extern tree lhd_make_node (enum tree_code);
16210d565efSmrg 
16310d565efSmrg #define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN lhd_tree_dump_dump_tree
16410d565efSmrg #define LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN lhd_tree_dump_type_quals
16510d565efSmrg 
16610d565efSmrg #define LANG_HOOKS_TREE_DUMP_INITIALIZER { \
16710d565efSmrg   LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN, \
16810d565efSmrg   LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN \
16910d565efSmrg }
17010d565efSmrg 
17110d565efSmrg /* Types hooks.  There are no reasonable defaults for most of them,
17210d565efSmrg    so we create a compile-time error instead.  */
17310d565efSmrg extern tree lhd_unit_size_without_reusable_padding (tree);
17410d565efSmrg 
17510d565efSmrg #define LANG_HOOKS_MAKE_TYPE lhd_make_node
176*ec02198aSmrg #define LANG_HOOKS_SIMULATE_ENUM_DECL	lhd_simulate_enum_decl
17710d565efSmrg #define LANG_HOOKS_CLASSIFY_RECORD	NULL
17810d565efSmrg #define LANG_HOOKS_TYPE_FOR_SIZE	lhd_type_for_size
17910d565efSmrg #define LANG_HOOKS_INCOMPLETE_TYPE_ERROR lhd_incomplete_type_error
18010d565efSmrg #define LANG_HOOKS_GENERIC_TYPE_P	hook_bool_const_tree_false
18110d565efSmrg #define LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS hook_tree_const_tree_null
18210d565efSmrg #define LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS hook_tree_const_tree_null
18310d565efSmrg #define LANG_HOOKS_FUNCTION_PARAMETER_PACK_P hook_bool_const_tree_false
18410d565efSmrg #define LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS hook_tree_const_tree_null
18510d565efSmrg #define LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P hook_bool_const_tree_false
18610d565efSmrg #define LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P \
18710d565efSmrg 					hook_bool_tree_tree_false
18810d565efSmrg #define LANG_HOOKS_GET_GENERIC_FUNCTION_DECL hook_tree_const_tree_null
18910d565efSmrg #define LANG_HOOKS_TYPE_PROMOTES_TO lhd_type_promotes_to
19010d565efSmrg #define LANG_HOOKS_REGISTER_BUILTIN_TYPE lhd_register_builtin_type
19110d565efSmrg #define LANG_HOOKS_TYPE_MAX_SIZE	lhd_return_null_const_tree
19210d565efSmrg #define LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES \
19310d565efSmrg   lhd_omp_firstprivatize_type_sizes
19410d565efSmrg #define LANG_HOOKS_OMP_MAPPABLE_TYPE	lhd_omp_mappable_type
19510d565efSmrg #define LANG_HOOKS_TYPE_HASH_EQ		NULL
19610d565efSmrg #define LANG_HOOKS_COPY_LANG_QUALIFIERS NULL
19710d565efSmrg #define LANG_HOOKS_GET_ARRAY_DESCR_INFO	NULL
19810d565efSmrg #define LANG_HOOKS_GET_SUBRANGE_BOUNDS	NULL
19910d565efSmrg #define LANG_HOOKS_GET_TYPE_BIAS	NULL
20010d565efSmrg #define LANG_HOOKS_DESCRIPTIVE_TYPE	NULL
20110d565efSmrg #define LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE reconstruct_complex_type
20210d565efSmrg #define LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE lhd_enum_underlying_base_type
20310d565efSmrg #define LANG_HOOKS_GET_DEBUG_TYPE	NULL
20410d565efSmrg #define LANG_HOOKS_GET_FIXED_POINT_TYPE_INFO NULL
20510d565efSmrg #define LANG_HOOKS_TYPE_DWARF_ATTRIBUTE	lhd_type_dwarf_attribute
20610d565efSmrg #define LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING lhd_unit_size_without_reusable_padding
20710d565efSmrg 
20810d565efSmrg #define LANG_HOOKS_FOR_TYPES_INITIALIZER { \
20910d565efSmrg   LANG_HOOKS_MAKE_TYPE, \
210*ec02198aSmrg   LANG_HOOKS_SIMULATE_ENUM_DECL, \
21110d565efSmrg   LANG_HOOKS_CLASSIFY_RECORD, \
21210d565efSmrg   LANG_HOOKS_TYPE_FOR_MODE, \
21310d565efSmrg   LANG_HOOKS_TYPE_FOR_SIZE, \
21410d565efSmrg   LANG_HOOKS_GENERIC_TYPE_P, \
21510d565efSmrg   LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS, \
21610d565efSmrg   LANG_HOOKS_TYPE_PROMOTES_TO, \
21710d565efSmrg   LANG_HOOKS_REGISTER_BUILTIN_TYPE, \
21810d565efSmrg   LANG_HOOKS_INCOMPLETE_TYPE_ERROR, \
21910d565efSmrg   LANG_HOOKS_TYPE_MAX_SIZE, \
22010d565efSmrg   LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES, \
22110d565efSmrg   LANG_HOOKS_OMP_MAPPABLE_TYPE, \
22210d565efSmrg   LANG_HOOKS_TYPE_HASH_EQ, \
22310d565efSmrg   LANG_HOOKS_COPY_LANG_QUALIFIERS, \
22410d565efSmrg   LANG_HOOKS_GET_ARRAY_DESCR_INFO, \
22510d565efSmrg   LANG_HOOKS_GET_SUBRANGE_BOUNDS, \
22610d565efSmrg   LANG_HOOKS_GET_TYPE_BIAS, \
22710d565efSmrg   LANG_HOOKS_DESCRIPTIVE_TYPE, \
22810d565efSmrg   LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE, \
22910d565efSmrg   LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE, \
23010d565efSmrg   LANG_HOOKS_GET_DEBUG_TYPE, \
23110d565efSmrg   LANG_HOOKS_GET_FIXED_POINT_TYPE_INFO, \
23210d565efSmrg   LANG_HOOKS_TYPE_DWARF_ATTRIBUTE, \
23310d565efSmrg   LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING \
23410d565efSmrg }
23510d565efSmrg 
23610d565efSmrg /* Declaration hooks.  */
23710d565efSmrg #define LANG_HOOKS_GLOBAL_BINDINGS_P global_bindings_p
23810d565efSmrg #define LANG_HOOKS_PUSHDECL	pushdecl
23910d565efSmrg #define LANG_HOOKS_GETDECLS	getdecls
24010d565efSmrg #define LANG_HOOKS_DECL_DWARF_ATTRIBUTE lhd_decl_dwarf_attribute
24110d565efSmrg #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL lhd_warn_unused_global_decl
24210d565efSmrg #define LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS NULL
24310d565efSmrg #define LANG_HOOKS_DECL_OK_FOR_SIBCALL	lhd_decl_ok_for_sibcall
244*ec02198aSmrg #define LANG_HOOKS_OMP_ARRAY_DATA	hook_tree_tree_bool_null
245*ec02198aSmrg #define LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR hook_bool_const_tree_false
246*ec02198aSmrg #define LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT hook_tree_tree_bool_null
24710d565efSmrg #define LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE hook_bool_const_tree_false
24810d565efSmrg #define LANG_HOOKS_OMP_PREDETERMINED_SHARING lhd_omp_predetermined_sharing
24910d565efSmrg #define LANG_HOOKS_OMP_REPORT_DECL lhd_pass_through_t
25010d565efSmrg #define LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR hook_bool_tree_bool_false
25110d565efSmrg #define LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE hook_bool_tree_bool_false
25210d565efSmrg #define LANG_HOOKS_OMP_PRIVATE_OUTER_REF hook_bool_tree_false
25310d565efSmrg #define LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR hook_tree_tree_tree_tree_null
25410d565efSmrg #define LANG_HOOKS_OMP_CLAUSE_COPY_CTOR lhd_omp_assignment
25510d565efSmrg #define LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP lhd_omp_assignment
25610d565efSmrg #define LANG_HOOKS_OMP_CLAUSE_LINEAR_CTOR NULL
25710d565efSmrg #define LANG_HOOKS_OMP_CLAUSE_DTOR hook_tree_tree_tree_null
25810d565efSmrg #define LANG_HOOKS_OMP_FINISH_CLAUSE lhd_omp_finish_clause
25910d565efSmrg #define LANG_HOOKS_OMP_SCALAR_P lhd_omp_scalar_p
26010d565efSmrg 
26110d565efSmrg #define LANG_HOOKS_DECLS { \
26210d565efSmrg   LANG_HOOKS_GLOBAL_BINDINGS_P, \
26310d565efSmrg   LANG_HOOKS_PUSHDECL, \
26410d565efSmrg   LANG_HOOKS_GETDECLS, \
26510d565efSmrg   LANG_HOOKS_DECL_DWARF_ATTRIBUTE, \
26610d565efSmrg   LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P, \
26710d565efSmrg   LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P, \
26810d565efSmrg   LANG_HOOKS_GET_GENERIC_FUNCTION_DECL, \
26910d565efSmrg   LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, \
27010d565efSmrg   LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS, \
27110d565efSmrg   LANG_HOOKS_DECL_OK_FOR_SIBCALL, \
272*ec02198aSmrg   LANG_HOOKS_OMP_ARRAY_DATA, \
273*ec02198aSmrg   LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR, \
274*ec02198aSmrg   LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT, \
27510d565efSmrg   LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE, \
27610d565efSmrg   LANG_HOOKS_OMP_PREDETERMINED_SHARING, \
27710d565efSmrg   LANG_HOOKS_OMP_REPORT_DECL, \
27810d565efSmrg   LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR, \
27910d565efSmrg   LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE, \
28010d565efSmrg   LANG_HOOKS_OMP_PRIVATE_OUTER_REF, \
28110d565efSmrg   LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR, \
28210d565efSmrg   LANG_HOOKS_OMP_CLAUSE_COPY_CTOR, \
28310d565efSmrg   LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP, \
28410d565efSmrg   LANG_HOOKS_OMP_CLAUSE_LINEAR_CTOR, \
28510d565efSmrg   LANG_HOOKS_OMP_CLAUSE_DTOR, \
28610d565efSmrg   LANG_HOOKS_OMP_FINISH_CLAUSE, \
28710d565efSmrg   LANG_HOOKS_OMP_SCALAR_P \
28810d565efSmrg }
28910d565efSmrg 
29010d565efSmrg /* LTO hooks.  */
29110d565efSmrg extern void lhd_begin_section (const char *);
29210d565efSmrg extern void lhd_append_data (const void *, size_t, void *);
29310d565efSmrg extern void lhd_end_section (void);
29410d565efSmrg 
29510d565efSmrg #define LANG_HOOKS_BEGIN_SECTION lhd_begin_section
29610d565efSmrg #define LANG_HOOKS_APPEND_DATA lhd_append_data
29710d565efSmrg #define LANG_HOOKS_END_SECTION lhd_end_section
29810d565efSmrg 
29910d565efSmrg #define LANG_HOOKS_LTO { \
30010d565efSmrg   LANG_HOOKS_BEGIN_SECTION, \
30110d565efSmrg   LANG_HOOKS_APPEND_DATA, \
30210d565efSmrg   LANG_HOOKS_END_SECTION \
30310d565efSmrg }
30410d565efSmrg 
30510d565efSmrg /* The whole thing.  The structure is defined in langhooks.h.  */
30610d565efSmrg #define LANG_HOOKS_INITIALIZER { \
30710d565efSmrg   LANG_HOOKS_NAME, \
30810d565efSmrg   LANG_HOOKS_IDENTIFIER_SIZE, \
30910d565efSmrg   LANG_HOOKS_FREE_LANG_DATA, \
31010d565efSmrg   LANG_HOOKS_TREE_SIZE, \
31110d565efSmrg   LANG_HOOKS_OPTION_LANG_MASK, \
31210d565efSmrg   LANG_HOOKS_INIT_OPTIONS_STRUCT, \
31310d565efSmrg   LANG_HOOKS_INIT_OPTIONS, \
31410d565efSmrg   LANG_HOOKS_INITIALIZE_DIAGNOSTICS, \
315c7a68eb7Smrg   LANG_HOOKS_REGISTER_DUMPS, \
31610d565efSmrg   LANG_HOOKS_COMPLAIN_WRONG_LANG_P, \
31710d565efSmrg   LANG_HOOKS_HANDLE_OPTION, \
31810d565efSmrg   LANG_HOOKS_POST_OPTIONS, \
31910d565efSmrg   LANG_HOOKS_INIT, \
32010d565efSmrg   LANG_HOOKS_FINISH, \
32110d565efSmrg   LANG_HOOKS_PARSE_FILE, \
32210d565efSmrg   LANG_HOOKS_MISSING_NORETURN_OK_P, \
32310d565efSmrg   LANG_HOOKS_GET_ALIAS_SET, \
32410d565efSmrg   LANG_HOOKS_FINISH_INCOMPLETE_DECL, \
32510d565efSmrg   LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, \
32610d565efSmrg   LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, \
327c7a68eb7Smrg   LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME, \
32810d565efSmrg   LANG_HOOKS_PRINT_STATISTICS, \
32910d565efSmrg   LANG_HOOKS_PRINT_XNODE, \
33010d565efSmrg   LANG_HOOKS_PRINT_DECL, \
33110d565efSmrg   LANG_HOOKS_PRINT_TYPE, \
33210d565efSmrg   LANG_HOOKS_PRINT_IDENTIFIER, \
33310d565efSmrg   LANG_HOOKS_DECL_PRINTABLE_NAME, \
33410d565efSmrg   LANG_HOOKS_DWARF_NAME, \
33510d565efSmrg   LANG_HOOKS_TYPES_COMPATIBLE_P, \
33610d565efSmrg   LANG_HOOKS_PRINT_ERROR_FUNCTION, \
33710d565efSmrg   LANG_HOOKS_TO_TARGET_CHARSET, \
33810d565efSmrg   LANG_HOOKS_ATTRIBUTE_TABLE, \
33910d565efSmrg   LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, \
34010d565efSmrg   LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, \
34110d565efSmrg   LANG_HOOKS_TREE_INLINING_INITIALIZER, \
34210d565efSmrg   LANG_HOOKS_TREE_DUMP_INITIALIZER, \
34310d565efSmrg   LANG_HOOKS_DECLS, \
34410d565efSmrg   LANG_HOOKS_FOR_TYPES_INITIALIZER, \
34510d565efSmrg   LANG_HOOKS_LTO, \
34610d565efSmrg   LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS, \
34710d565efSmrg   LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS, \
34810d565efSmrg   LANG_HOOKS_FUNCTION_PARAMETER_PACK_P, \
34910d565efSmrg   LANG_HOOKS_GIMPLIFY_EXPR, \
35010d565efSmrg   LANG_HOOKS_BUILTIN_FUNCTION, \
35110d565efSmrg   LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE, \
352*ec02198aSmrg   LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL, \
35310d565efSmrg   LANG_HOOKS_INIT_TS,          \
35410d565efSmrg   LANG_HOOKS_EXPR_TO_DECL, \
35510d565efSmrg   LANG_HOOKS_EH_PERSONALITY, \
35610d565efSmrg   LANG_HOOKS_EH_RUNTIME_TYPE, \
35710d565efSmrg   LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS, \
35810d565efSmrg   LANG_HOOKS_BLOCK_MAY_FALLTHRU, \
35910d565efSmrg   LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \
36010d565efSmrg   LANG_HOOKS_DEEP_UNSHARING, \
36110d565efSmrg   LANG_HOOKS_CUSTOM_FUNCTION_DESCRIPTORS, \
362c7a68eb7Smrg   LANG_HOOKS_EMITS_BEGIN_STMT, \
36310d565efSmrg   LANG_HOOKS_RUN_LANG_SELFTESTS, \
36410d565efSmrg   LANG_HOOKS_GET_SUBSTRING_LOCATION \
36510d565efSmrg }
36610d565efSmrg 
36710d565efSmrg #endif /* GCC_LANG_HOOKS_DEF_H */
368