]>
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 RK |
41 | extern void internal_error PARAMS ((const char *, ...)) |
42 | ATTRIBUTE_PRINTF_1 | |
43 | ATTRIBUTE_NORETURN; | |
44 | extern void fatal_io_error PARAMS ((const char *, ...)) | |
45 | ATTRIBUTE_PRINTF_1 | |
46 | ATTRIBUTE_NORETURN; | |
58782098 | 47 | extern void _fatal_insn_not_found PARAMS ((struct rtx_def *, |
987009bf ZW |
48 | const char *, int, |
49 | const char *)) | |
400500c4 | 50 | ATTRIBUTE_NORETURN; |
58782098 | 51 | extern void _fatal_insn PARAMS ((const char *, |
987009bf ZW |
52 | struct rtx_def *, |
53 | const char *, int, | |
54 | const char *)) | |
400500c4 | 55 | ATTRIBUTE_NORETURN; |
987009bf | 56 | |
987009bf | 57 | #define fatal_insn(msgid, insn) \ |
fbfc1192 | 58 | _fatal_insn (msgid, insn, __FILE__, __LINE__, __FUNCTION__) |
987009bf | 59 | #define fatal_insn_not_found(insn) \ |
fbfc1192 ZW |
60 | _fatal_insn_not_found (insn, __FILE__, __LINE__, __FUNCTION__) |
61 | ||
58782098 | 62 | extern void warning PARAMS ((const char *, ...)) |
400500c4 | 63 | ATTRIBUTE_PRINTF_1; |
58782098 | 64 | extern void error PARAMS ((const char *, ...)) |
400500c4 RK |
65 | ATTRIBUTE_PRINTF_1; |
66 | extern void fatal_error PARAMS ((const char *, ...)) | |
3fdefbcc | 67 | ATTRIBUTE_NORETURN |
400500c4 | 68 | ATTRIBUTE_PRINTF_1; |
58782098 | 69 | extern void pedwarn PARAMS ((const char *, ...)) |
400500c4 | 70 | ATTRIBUTE_PRINTF_1; |
58782098 | 71 | extern void pedwarn_with_file_and_line PARAMS ((const char *, int, |
400500c4 RK |
72 | const char *, ...)) |
73 | ATTRIBUTE_PRINTF_3; | |
58782098 | 74 | extern void warning_with_file_and_line PARAMS ((const char *, int, |
400500c4 RK |
75 | const char *, ...)) |
76 | ATTRIBUTE_PRINTF_3; | |
58782098 | 77 | extern void error_with_file_and_line PARAMS ((const char *, int, |
400500c4 RK |
78 | const char *, ...)) |
79 | ATTRIBUTE_PRINTF_3; | |
58782098 | 80 | extern void sorry PARAMS ((const char *, ...)) |
400500c4 | 81 | ATTRIBUTE_PRINTF_1; |
58782098 | 82 | extern void report_error_function PARAMS ((const char *)); |
5f6da302 | 83 | |
58782098 | 84 | extern void rest_of_decl_compilation PARAMS ((union tree_node *, |
87e11268 | 85 | const char *, int, int)); |
58782098 KG |
86 | extern void rest_of_type_compilation PARAMS ((union tree_node *, int)); |
87 | extern void rest_of_compilation PARAMS ((union tree_node *)); | |
87e11268 KG |
88 | |
89 | /* The *_with_decl functions aren't suitable for ATTRIBUTE_PRINTF. */ | |
58782098 | 90 | extern void pedwarn_with_decl PARAMS ((union tree_node *, |
400500c4 | 91 | const char *, ...)); |
58782098 | 92 | extern void warning_with_decl PARAMS ((union tree_node *, |
400500c4 | 93 | const char *, ...)); |
58782098 | 94 | extern void error_with_decl PARAMS ((union tree_node *, |
400500c4 | 95 | const char *, ...)); |
87e11268 | 96 | |
58782098 | 97 | extern void announce_function PARAMS ((union tree_node *)); |
5f6da302 | 98 | |
58782098 | 99 | extern void error_for_asm PARAMS ((struct rtx_def *, |
87e11268 | 100 | const char *, ...)) |
400500c4 | 101 | ATTRIBUTE_PRINTF_2; |
58782098 | 102 | extern void warning_for_asm PARAMS ((struct rtx_def *, |
87e11268 | 103 | const char *, ...)) |
400500c4 | 104 | ATTRIBUTE_PRINTF_2; |
58782098 | 105 | extern int do_float_handler PARAMS ((void (*) (PTR), PTR)); |
50b2596f KG |
106 | |
107 | #ifdef BUFSIZ | |
58782098 KG |
108 | extern void output_quoted_string PARAMS ((FILE *, const char *)); |
109 | extern void output_file_directive PARAMS ((FILE *, const char *)); | |
50b2596f | 110 | #endif |
58782098 KG |
111 | extern void do_abort PARAMS ((void)) ATTRIBUTE_NORETURN; |
112 | extern void botch PARAMS ((const char *)) | |
87e11268 | 113 | ATTRIBUTE_NORETURN; |
9a8b0889 | 114 | |
fa6ac85e | 115 | #ifdef BUFSIZ |
58782098 | 116 | extern void fnotice PARAMS ((FILE *, const char *, ...)) |
400500c4 | 117 | ATTRIBUTE_PRINTF_2; |
fa6ac85e | 118 | #endif |
644f3d7e | 119 | |
58782098 KG |
120 | extern int wrapup_global_declarations PARAMS ((union tree_node **, int)); |
121 | extern void check_global_declarations PARAMS ((union tree_node **, int)); | |
7adfcfed KG |
122 | |
123 | extern const char *progname; | |
b7442fb5 | 124 | extern const char *dump_base_name; |
c6991660 | 125 | |
13c61421 | 126 | /* Language-specific hooks. Can be NULL unless otherwise specified. */ |
cd2a3ba2 NB |
127 | struct lang_hooks |
128 | { | |
13c61421 NB |
129 | /* Called first, to initialize the front end. */ |
130 | void (*init) PARAMS ((void)); | |
131 | ||
132 | /* Called last, as a finalizer. */ | |
133 | void (*finish) PARAMS ((void)); | |
134 | ||
ee811cfd NB |
135 | /* Called to initialize options, before any calls to decode_option. */ |
136 | void (*init_options) PARAMS ((void)); | |
137 | ||
138 | /* Function called with an option vector as argument, to decode a | |
139 | single option (typically starting with -f or -W or +). It should | |
140 | return the number of command-line arguments it uses if it handles | |
141 | the option, or 0 and not complain if it does not recognise the | |
57883c53 MM |
142 | option. If this function returns a negative number, then its |
143 | absolute value is the number of command-line arguments used, but, | |
144 | in addition, no language-independent option processing should be | |
145 | done for this option. | |
146 | ||
147 | This hook cannot be NULL. */ | |
ee811cfd NB |
148 | int (*decode_option) PARAMS ((int, char **)); |
149 | ||
13c61421 | 150 | /* Called when all command line options have been processed. */ |
cd2a3ba2 NB |
151 | void (*post_options) PARAMS ((void)); |
152 | }; | |
153 | ||
154 | /* Each front end provides its own. */ | |
155 | extern struct lang_hooks lang_hooks; | |
156 | ||
2a967f3d NB |
157 | /* The hashtable, so that the C front ends can pass it to cpplib. */ |
158 | extern struct ht *ident_hash; | |
159 | ||
de6c5979 BL |
160 | /* These functions can be used by targets to set the flags originally |
161 | implied by -ffast-math and -fno-fast-math. */ | |
162 | ||
163 | extern void set_fast_math_flags PARAMS ((void)); | |
164 | extern void set_no_fast_math_flags PARAMS ((void)); | |
165 | ||
d6684bc8 KG |
166 | /* The following functions accept a wide integer argument. Rather |
167 | than having to cast on every function call, we use a macro instead. */ | |
168 | ||
169 | #ifndef exact_log2 | |
170 | #define exact_log2(N) exact_log2_wide ((unsigned HOST_WIDE_INT) (N)) | |
171 | #define floor_log2(N) floor_log2_wide ((unsigned HOST_WIDE_INT) (N)) | |
172 | #endif | |
173 | extern int exact_log2_wide PARAMS ((unsigned HOST_WIDE_INT)); | |
174 | extern int floor_log2_wide PARAMS ((unsigned HOST_WIDE_INT)); | |
175 | ||
88657302 | 176 | #endif /* ! GCC_TOPLEV_H */ |