1/* Target hook definitions for common hooks.
2   Copyright (C) 2011
3   Free Software Foundation, Inc.
4
5   This program is free software; you can redistribute it and/or modify it
6   under the terms of the GNU General Public License as published by the
7   Free Software Foundation; either version 3, or (at your option) any
8   later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program; see the file COPYING3.  If not see
17   <http://www.gnu.org/licenses/>.  */
18
19/* See target-hooks-macros.h for details of macros that should be
20   provided by the including file, and how to use them here.  */
21#include "target-hooks-macros.h"
22
23#undef HOOK_TYPE
24#define HOOK_TYPE "Common Target Hook"
25
26HOOK_VECTOR (TARGETM_COMMON_INITIALIZER, gcc_targetm_common)
27
28#undef HOOK_PREFIX
29#define HOOK_PREFIX "TARGET_"
30
31/* Handle target switch DECODED for options structures OPTS and
32   OPTS_SET, at location LOC.  Return true if the switch was valid.  */
33DEFHOOK
34(handle_option,
35 "",
36 bool, (struct gcc_options *opts, struct gcc_options *opts_set,
37	const struct cl_decoded_option *decoded,
38	location_t loc),
39 default_target_handle_option)
40
41DEFHOOK
42(option_init_struct,
43"Set target-dependent initial values of fields in @var{opts}.",
44 void, (struct gcc_options *opts),
45 hook_void_gcc_optionsp)
46
47/* Set default optimizations for the target.  */
48DEFHOOKPOD
49(option_optimization_table,
50 "",
51 const struct default_options *, empty_optimization_table)
52
53DEFHOOK
54(option_default_params,
55"Set target-dependent default values for @option{--param} settings, using\
56 calls to @code{set_default_param_value}.",
57 void, (void),
58 hook_void_void)
59
60/* The initial value of target_flags.  */
61DEFHOOKPOD
62(default_target_flags,
63 "",
64 int, 0)
65
66/* Determine the type of unwind info to emit for exceptions.  */
67DEFHOOK
68(except_unwind_info,
69 "",
70 enum unwind_info_type, (struct gcc_options *opts),
71 default_except_unwind_info)
72
73DEFHOOK
74(supports_split_stack,
75 "Whether this target supports splitting the stack when the options\
76 described in @var{opts} have been passed.  This is called\
77 after options have been parsed, so the target may reject splitting\
78 the stack in some configurations.  The default version of this hook\
79 returns false.  If @var{report} is true, this function may issue a warning\
80 or error; if @var{report} is false, it must simply return a value",
81 bool, (bool report, struct gcc_options *opts),
82 hook_bool_bool_gcc_optionsp_false)
83
84/* Leave the boolean fields at the end.  */
85
86/* True if unwinding tables should be generated by default.  */
87DEFHOOKPOD
88(unwind_tables_default,
89 "",
90 bool, false)
91
92/* True if arbitrary sections are supported.  */
93DEFHOOKPOD
94(have_named_sections,
95 "",
96 bool, true)
97
98DEFHOOKPOD
99(always_strip_dotdot,
100 "True if @file{..} components should always be removed from directory names\
101 computed relative to GCC's internal directories, false (default) if such\
102 components should be preserved and directory names containing them passed\
103 to other tools such as the linker.",
104 bool, false)
105
106HOOK_VECTOR_END (C90_EMPTY_HACK)
107
108#undef HOOK_PREFIX
109