]>
Commit | Line | Data |
---|---|---|
5f6da302 | 1 | /* toplev.h - Various declarations for functions found in toplev.c |
400500c4 | 2 | Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. |
0e6f0670 | 3 | |
1322177d | 4 | This file is part of GCC. |
0e6f0670 | 5 | |
1322177d LB |
6 | GCC is free software; you can redistribute it and/or modify it under |
7 | the terms of the GNU General Public License as published by the Free | |
8 | Software Foundation; either version 2, or (at your option) any later | |
9 | version. | |
0e6f0670 | 10 | |
1322177d LB |
11 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
12 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 | for more details. | |
0e6f0670 JL |
15 | |
16 | You should have received a copy of the GNU General Public License | |
1322177d LB |
17 | along with GCC; see the file COPYING. If not, write to the Free |
18 | Software Foundation, 59 Temple Place - Suite 330, Boston, MA | |
19 | 02111-1307, USA. */ | |
5f6da302 | 20 | |
88657302 RH |
21 | #ifndef GCC_TOPLEV_H |
22 | #define GCC_TOPLEV_H | |
5f6da302 | 23 | |
5148a72b | 24 | #ifdef ANSI_PROTOTYPES |
97263b8c | 25 | union tree_node; |
aa7ad670 | 26 | struct rtx_def; |
97263b8c MH |
27 | #endif |
28 | ||
6f5ef761 GDR |
29 | /* If non-NULL, return one past-the-end of the matching SUBPART of |
30 | the WHOLE string. */ | |
31 | #define skip_leading_substring(whole, part) \ | |
32 | (strncmp (whole, part, strlen (part)) ? NULL : whole + strlen (part)) | |
33 | ||
8ac61af7 | 34 | extern int toplev_main PARAMS ((int, char **)); |
58782098 | 35 | extern int read_integral_parameter PARAMS ((const char *, const char *, |
192babfd | 36 | const int)); |
58782098 KG |
37 | extern int count_error PARAMS ((int)); |
38 | extern void strip_off_ending PARAMS ((char *, int)); | |
77a02dba | 39 | extern void print_time PARAMS ((const char *, long)); |
fce687f8 | 40 | extern const char *trim_filename PARAMS ((const char *)); |
400500c4 | 41 | extern void internal_error PARAMS ((const char *, ...)) |
400500c4 RK |
42 | ATTRIBUTE_NORETURN; |
43 | extern void fatal_io_error PARAMS ((const char *, ...)) | |
400500c4 | 44 | ATTRIBUTE_NORETURN; |
58782098 | 45 | extern void _fatal_insn_not_found PARAMS ((struct rtx_def *, |
987009bf ZW |
46 | const char *, int, |
47 | const char *)) | |
400500c4 | 48 | ATTRIBUTE_NORETURN; |
58782098 | 49 | extern void _fatal_insn PARAMS ((const char *, |
987009bf ZW |
50 | struct rtx_def *, |
51 | const char *, int, | |
52 | const char *)) | |
400500c4 | 53 | ATTRIBUTE_NORETURN; |
987009bf | 54 | |
987009bf | 55 | #define fatal_insn(msgid, insn) \ |
fbfc1192 | 56 | _fatal_insn (msgid, insn, __FILE__, __LINE__, __FUNCTION__) |
987009bf | 57 | #define fatal_insn_not_found(insn) \ |
fbfc1192 ZW |
58 | _fatal_insn_not_found (insn, __FILE__, __LINE__, __FUNCTION__) |
59 | ||
749ced52 ZW |
60 | /* None of these functions are suitable for ATTRIBUTE_PRINTF, because |
61 | each language front end can extend them with its own set of format | |
62 | specifiers. */ | |
63 | extern void warning PARAMS ((const char *, ...)); | |
64 | extern void error PARAMS ((const char *, ...)); | |
400500c4 | 65 | extern void fatal_error PARAMS ((const char *, ...)) |
749ced52 ZW |
66 | ATTRIBUTE_NORETURN; |
67 | extern void pedwarn PARAMS ((const char *, ...)); | |
58782098 | 68 | extern void pedwarn_with_file_and_line PARAMS ((const char *, int, |
749ced52 | 69 | const char *, ...)); |
58782098 | 70 | extern void warning_with_file_and_line PARAMS ((const char *, int, |
749ced52 | 71 | const char *, ...)); |
58782098 | 72 | extern void error_with_file_and_line PARAMS ((const char *, int, |
749ced52 ZW |
73 | const char *, ...)); |
74 | extern void sorry PARAMS ((const char *, ...)); | |
58782098 | 75 | extern void report_error_function PARAMS ((const char *)); |
5f6da302 | 76 | |
58782098 | 77 | extern void rest_of_decl_compilation PARAMS ((union tree_node *, |
87e11268 | 78 | const char *, int, int)); |
58782098 KG |
79 | extern void rest_of_type_compilation PARAMS ((union tree_node *, int)); |
80 | extern void rest_of_compilation PARAMS ((union tree_node *)); | |
87e11268 | 81 | |
58782098 | 82 | extern void pedwarn_with_decl PARAMS ((union tree_node *, |
400500c4 | 83 | const char *, ...)); |
58782098 | 84 | extern void warning_with_decl PARAMS ((union tree_node *, |
400500c4 | 85 | const char *, ...)); |
58782098 | 86 | extern void error_with_decl PARAMS ((union tree_node *, |
400500c4 | 87 | const char *, ...)); |
87e11268 | 88 | |
58782098 | 89 | extern void announce_function PARAMS ((union tree_node *)); |
5f6da302 | 90 | |
58782098 | 91 | extern void error_for_asm PARAMS ((struct rtx_def *, |
749ced52 | 92 | const char *, ...)); |
58782098 | 93 | extern void warning_for_asm PARAMS ((struct rtx_def *, |
749ced52 | 94 | const char *, ...)); |
58782098 | 95 | extern int do_float_handler PARAMS ((void (*) (PTR), PTR)); |
50b2596f KG |
96 | |
97 | #ifdef BUFSIZ | |
58782098 KG |
98 | extern void output_quoted_string PARAMS ((FILE *, const char *)); |
99 | extern void output_file_directive PARAMS ((FILE *, const char *)); | |
50b2596f | 100 | #endif |
58782098 KG |
101 | extern void do_abort PARAMS ((void)) ATTRIBUTE_NORETURN; |
102 | extern void botch PARAMS ((const char *)) | |
87e11268 | 103 | ATTRIBUTE_NORETURN; |
9a8b0889 | 104 | |
fa6ac85e | 105 | #ifdef BUFSIZ |
749ced52 ZW |
106 | /* N.B. Unlike all the others, fnotice is just gettext+fprintf, and |
107 | therefore it can have ATTRIBUTE_PRINTF. */ | |
58782098 | 108 | extern void fnotice PARAMS ((FILE *, const char *, ...)) |
400500c4 | 109 | ATTRIBUTE_PRINTF_2; |
fa6ac85e | 110 | #endif |
644f3d7e | 111 | |
58782098 KG |
112 | extern int wrapup_global_declarations PARAMS ((union tree_node **, int)); |
113 | extern void check_global_declarations PARAMS ((union tree_node **, int)); | |
7adfcfed KG |
114 | |
115 | extern const char *progname; | |
b7442fb5 | 116 | extern const char *dump_base_name; |
c6991660 | 117 | |
69dcadff AO |
118 | /* The following hooks are documented in langhooks.c. Must not be |
119 | NULL. */ | |
120 | ||
121 | struct lang_hooks_for_tree_inlining | |
122 | { | |
123 | union tree_node *(*walk_subtrees) PARAMS ((union tree_node **, int *, | |
124 | union tree_node *(*) | |
125 | (union tree_node **, | |
126 | int *, void *), | |
127 | void *, void *)); | |
128 | int (*cannot_inline_tree_fn) PARAMS ((union tree_node **)); | |
129 | int (*disregard_inline_limits) PARAMS ((union tree_node *)); | |
8ac61af7 RK |
130 | union tree_node *(*add_pending_fn_decls) PARAMS ((void *, |
131 | union tree_node *)); | |
69dcadff AO |
132 | int (*tree_chain_matters_p) PARAMS ((union tree_node *)); |
133 | int (*auto_var_in_fn_p) PARAMS ((union tree_node *, union tree_node *)); | |
134 | union tree_node *(*copy_res_decl_for_inlining) PARAMS ((union tree_node *, | |
135 | union tree_node *, | |
136 | union tree_node *, | |
137 | void *, int *, | |
138 | void *)); | |
139 | int (*anon_aggr_type_p) PARAMS ((union tree_node *)); | |
140 | }; | |
141 | ||
77b1a921 | 142 | /* Language-specific hooks. See langhooks.h for defaults. */ |
69dcadff | 143 | |
cd2a3ba2 NB |
144 | struct lang_hooks |
145 | { | |
13c61421 NB |
146 | /* Called first, to initialize the front end. */ |
147 | void (*init) PARAMS ((void)); | |
148 | ||
149 | /* Called last, as a finalizer. */ | |
150 | void (*finish) PARAMS ((void)); | |
151 | ||
ee811cfd NB |
152 | /* Called to initialize options, before any calls to decode_option. */ |
153 | void (*init_options) PARAMS ((void)); | |
154 | ||
155 | /* Function called with an option vector as argument, to decode a | |
156 | single option (typically starting with -f or -W or +). It should | |
157 | return the number of command-line arguments it uses if it handles | |
158 | the option, or 0 and not complain if it does not recognise the | |
57883c53 MM |
159 | option. If this function returns a negative number, then its |
160 | absolute value is the number of command-line arguments used, but, | |
161 | in addition, no language-independent option processing should be | |
77b1a921 | 162 | done for this option. */ |
ee811cfd NB |
163 | int (*decode_option) PARAMS ((int, char **)); |
164 | ||
13c61421 | 165 | /* Called when all command line options have been processed. */ |
cd2a3ba2 | 166 | void (*post_options) PARAMS ((void)); |
69dcadff | 167 | |
8ac61af7 RK |
168 | /* Called to obtain the alias set to be used for an expression or type. |
169 | Returns -1 if the language does nothing special for it. */ | |
170 | HOST_WIDE_INT (*get_alias_set) PARAMS ((tree)); | |
171 | ||
03bf2c23 | 172 | /* Nonzero if TYPE_READONLY and TREE_READONLY should always be honored. */ |
107c13a1 | 173 | bool honor_readonly; |
03bf2c23 | 174 | |
69dcadff AO |
175 | struct lang_hooks_for_tree_inlining tree_inlining; |
176 | ||
177 | /* Whenever you add entries here, make sure you adjust langhooks.h | |
178 | and langhooks.c accordingly. */ | |
cd2a3ba2 NB |
179 | }; |
180 | ||
181 | /* Each front end provides its own. */ | |
182 | extern struct lang_hooks lang_hooks; | |
183 | ||
2a967f3d NB |
184 | /* The hashtable, so that the C front ends can pass it to cpplib. */ |
185 | extern struct ht *ident_hash; | |
186 | ||
de6c5979 BL |
187 | /* These functions can be used by targets to set the flags originally |
188 | implied by -ffast-math and -fno-fast-math. */ | |
189 | ||
190 | extern void set_fast_math_flags PARAMS ((void)); | |
191 | extern void set_no_fast_math_flags PARAMS ((void)); | |
192 | ||
d6684bc8 KG |
193 | /* The following functions accept a wide integer argument. Rather |
194 | than having to cast on every function call, we use a macro instead. */ | |
195 | ||
196 | #ifndef exact_log2 | |
197 | #define exact_log2(N) exact_log2_wide ((unsigned HOST_WIDE_INT) (N)) | |
198 | #define floor_log2(N) floor_log2_wide ((unsigned HOST_WIDE_INT) (N)) | |
199 | #endif | |
200 | extern int exact_log2_wide PARAMS ((unsigned HOST_WIDE_INT)); | |
201 | extern int floor_log2_wide PARAMS ((unsigned HOST_WIDE_INT)); | |
202 | ||
88657302 | 203 | #endif /* ! GCC_TOPLEV_H */ |