]> gcc.gnu.org Git - gcc.git/blame - gcc/toplev.h
* i386.h (SSE_REGPARM_MAX): Set to 8 for x86_64.
[gcc.git] / gcc / toplev.h
CommitLineData
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 4This file is part of GCC.
0e6f0670 5
1322177d
LB
6GCC is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free
8Software Foundation; either version 2, or (at your option) any later
9version.
0e6f0670 10
1322177d
LB
11GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or
13FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14for more details.
0e6f0670
JL
15
16You should have received a copy of the GNU General Public License
1322177d
LB
17along with GCC; see the file COPYING. If not, write to the Free
18Software Foundation, 59 Temple Place - Suite 330, Boston, MA
1902111-1307, USA. */
5f6da302 20
88657302
RH
21#ifndef GCC_TOPLEV_H
22#define GCC_TOPLEV_H
5f6da302 23
5148a72b 24#ifdef ANSI_PROTOTYPES
97263b8c 25union tree_node;
aa7ad670 26struct 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 34extern int toplev_main PARAMS ((int argc, char **argv));
58782098 35extern int read_integral_parameter PARAMS ((const char *, const char *,
192babfd 36 const int));
58782098
KG
37extern int count_error PARAMS ((int));
38extern void strip_off_ending PARAMS ((char *, int));
77a02dba 39extern void print_time PARAMS ((const char *, long));
fce687f8 40extern const char *trim_filename PARAMS ((const char *));
400500c4 41extern void internal_error PARAMS ((const char *, ...))
400500c4
RK
42 ATTRIBUTE_NORETURN;
43extern void fatal_io_error PARAMS ((const char *, ...))
400500c4 44 ATTRIBUTE_NORETURN;
58782098 45extern void _fatal_insn_not_found PARAMS ((struct rtx_def *,
987009bf
ZW
46 const char *, int,
47 const char *))
400500c4 48 ATTRIBUTE_NORETURN;
58782098 49extern 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. */
63extern void warning PARAMS ((const char *, ...));
64extern void error PARAMS ((const char *, ...));
400500c4 65extern void fatal_error PARAMS ((const char *, ...))
749ced52
ZW
66 ATTRIBUTE_NORETURN;
67extern void pedwarn PARAMS ((const char *, ...));
58782098 68extern void pedwarn_with_file_and_line PARAMS ((const char *, int,
749ced52 69 const char *, ...));
58782098 70extern void warning_with_file_and_line PARAMS ((const char *, int,
749ced52 71 const char *, ...));
58782098 72extern void error_with_file_and_line PARAMS ((const char *, int,
749ced52
ZW
73 const char *, ...));
74extern void sorry PARAMS ((const char *, ...));
58782098 75extern void report_error_function PARAMS ((const char *));
5f6da302 76
58782098 77extern void rest_of_decl_compilation PARAMS ((union tree_node *,
87e11268 78 const char *, int, int));
58782098
KG
79extern void rest_of_type_compilation PARAMS ((union tree_node *, int));
80extern void rest_of_compilation PARAMS ((union tree_node *));
87e11268 81
58782098 82extern void pedwarn_with_decl PARAMS ((union tree_node *,
400500c4 83 const char *, ...));
58782098 84extern void warning_with_decl PARAMS ((union tree_node *,
400500c4 85 const char *, ...));
58782098 86extern void error_with_decl PARAMS ((union tree_node *,
400500c4 87 const char *, ...));
87e11268 88
58782098 89extern void announce_function PARAMS ((union tree_node *));
5f6da302 90
58782098 91extern void error_for_asm PARAMS ((struct rtx_def *,
749ced52 92 const char *, ...));
58782098 93extern void warning_for_asm PARAMS ((struct rtx_def *,
749ced52 94 const char *, ...));
58782098 95extern int do_float_handler PARAMS ((void (*) (PTR), PTR));
50b2596f
KG
96
97#ifdef BUFSIZ
58782098
KG
98extern void output_quoted_string PARAMS ((FILE *, const char *));
99extern void output_file_directive PARAMS ((FILE *, const char *));
50b2596f 100#endif
58782098
KG
101extern void do_abort PARAMS ((void)) ATTRIBUTE_NORETURN;
102extern 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 108extern void fnotice PARAMS ((FILE *, const char *, ...))
400500c4 109 ATTRIBUTE_PRINTF_2;
fa6ac85e 110#endif
644f3d7e 111
58782098
KG
112extern int wrapup_global_declarations PARAMS ((union tree_node **, int));
113extern void check_global_declarations PARAMS ((union tree_node **, int));
7adfcfed
KG
114
115extern const char *progname;
b7442fb5 116extern const char *dump_base_name;
c6991660 117
69dcadff
AO
118/* The following hooks are documented in langhooks.c. Must not be
119 NULL. */
120
121struct 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
143struct 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. */
179extern struct lang_hooks lang_hooks;
180
2a967f3d
NB
181/* The hashtable, so that the C front ends can pass it to cpplib. */
182extern 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
187extern void set_fast_math_flags PARAMS ((void));
188extern 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
197extern int exact_log2_wide PARAMS ((unsigned HOST_WIDE_INT));
198extern int floor_log2_wide PARAMS ((unsigned HOST_WIDE_INT));
199
88657302 200#endif /* ! GCC_TOPLEV_H */
This page took 1.063928 seconds and 5 git commands to generate.