]>
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 | ||
aa5b94de | 34 | extern int toplev_main PARAMS ((int argc, char **argv)); |
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 *)); | |
130 | union tree_node *(*add_pending_fn_decls) PARAMS ((void*, union tree_node *)); | |
131 | int (*tree_chain_matters_p) PARAMS ((union tree_node *)); | |
132 | int (*auto_var_in_fn_p) PARAMS ((union tree_node *, union tree_node *)); | |
133 | union tree_node *(*copy_res_decl_for_inlining) PARAMS ((union tree_node *, | |
134 | union tree_node *, | |
135 | union tree_node *, | |
136 | void *, int *, | |
137 | void *)); | |
138 | int (*anon_aggr_type_p) PARAMS ((union tree_node *)); | |
139 | }; | |
140 | ||
13c61421 | 141 | /* Language-specific hooks. Can be NULL unless otherwise specified. */ |
69dcadff | 142 | |
cd2a3ba2 NB |
143 | struct lang_hooks |
144 | { | |
13c61421 NB |
145 | /* Called first, to initialize the front end. */ |
146 | void (*init) PARAMS ((void)); | |
147 | ||
148 | /* Called last, as a finalizer. */ | |
149 | void (*finish) PARAMS ((void)); | |
150 | ||
ee811cfd NB |
151 | /* Called to initialize options, before any calls to decode_option. */ |
152 | void (*init_options) PARAMS ((void)); | |
153 | ||
154 | /* Function called with an option vector as argument, to decode a | |
155 | single option (typically starting with -f or -W or +). It should | |
156 | return the number of command-line arguments it uses if it handles | |
157 | the option, or 0 and not complain if it does not recognise the | |
57883c53 MM |
158 | option. If this function returns a negative number, then its |
159 | absolute value is the number of command-line arguments used, but, | |
160 | in addition, no language-independent option processing should be | |
161 | done for this option. | |
162 | ||
163 | This hook cannot be NULL. */ | |
ee811cfd NB |
164 | int (*decode_option) PARAMS ((int, char **)); |
165 | ||
13c61421 | 166 | /* Called when all command line options have been processed. */ |
cd2a3ba2 | 167 | void (*post_options) PARAMS ((void)); |
69dcadff | 168 | |
03bf2c23 RK |
169 | /* Nonzero if TYPE_READONLY and TREE_READONLY should always be honored. */ |
170 | int honor_readonly; | |
171 | ||
69dcadff AO |
172 | struct lang_hooks_for_tree_inlining tree_inlining; |
173 | ||
174 | /* Whenever you add entries here, make sure you adjust langhooks.h | |
175 | and langhooks.c accordingly. */ | |
cd2a3ba2 NB |
176 | }; |
177 | ||
178 | /* Each front end provides its own. */ | |
179 | extern struct lang_hooks lang_hooks; | |
180 | ||
2a967f3d NB |
181 | /* The hashtable, so that the C front ends can pass it to cpplib. */ |
182 | extern struct ht *ident_hash; | |
183 | ||
de6c5979 BL |
184 | /* These functions can be used by targets to set the flags originally |
185 | implied by -ffast-math and -fno-fast-math. */ | |
186 | ||
187 | extern void set_fast_math_flags PARAMS ((void)); | |
188 | extern void set_no_fast_math_flags PARAMS ((void)); | |
189 | ||
d6684bc8 KG |
190 | /* The following functions accept a wide integer argument. Rather |
191 | than having to cast on every function call, we use a macro instead. */ | |
192 | ||
193 | #ifndef exact_log2 | |
194 | #define exact_log2(N) exact_log2_wide ((unsigned HOST_WIDE_INT) (N)) | |
195 | #define floor_log2(N) floor_log2_wide ((unsigned HOST_WIDE_INT) (N)) | |
196 | #endif | |
197 | extern int exact_log2_wide PARAMS ((unsigned HOST_WIDE_INT)); | |
198 | extern int floor_log2_wide PARAMS ((unsigned HOST_WIDE_INT)); | |
199 | ||
88657302 | 200 | #endif /* ! GCC_TOPLEV_H */ |