]> gcc.gnu.org Git - gcc.git/blame - gcc/toplev.h
alias.c (can_address_p): Compnonents are not addressable if the containing type has...
[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
8ac61af7 34extern int toplev_main PARAMS ((int, char **));
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 *));
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
144struct 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. */
182extern struct lang_hooks lang_hooks;
183
2a967f3d
NB
184/* The hashtable, so that the C front ends can pass it to cpplib. */
185extern 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
190extern void set_fast_math_flags PARAMS ((void));
191extern 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
200extern int exact_log2_wide PARAMS ((unsigned HOST_WIDE_INT));
201extern int floor_log2_wide PARAMS ((unsigned HOST_WIDE_INT));
202
88657302 203#endif /* ! GCC_TOPLEV_H */
This page took 1.123722 seconds and 5 git commands to generate.