Commit 35b1a6fa by Andreas Jaeger

c-aux-info.c: Convert to ISO C99.


	* c-aux-info.c: Convert to ISO C99.
	* c-pragma.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-convert.c: Likewise.
	* c-cppbuiltin.c: Likewise.
	* c-dump.c: Likewise.
	* c-decl.c: Likewise
	* c-format.c: Likewise.
	* c-incpath.c: Likewise.
	* c-incpath.h: Likewise.

From-SVN: r68218
parent 6dab8d4c
2003-06-19 Andreas Jaeger <aj@suse.de>
* c-aux-info.c: Convert to ISO C99.
* c-pragma.c: Likewise.
* c-common.c: Likewise.
* c-common.h: Likewise.
* c-convert.c: Likewise.
* c-cppbuiltin.c: Likewise.
* c-dump.c: Likewise.
* c-decl.c: Likewise
* c-format.c: Likewise.
* c-incpath.c: Likewise.
* c-incpath.h: Likewise.
2003-06-19 Roger Sayle <roger@eyesopen.com> 2003-06-19 Roger Sayle <roger@eyesopen.com>
* builtins.c (expand_errno_check): Assume that flag_errno_math * builtins.c (expand_errno_check): Assume that flag_errno_math
...@@ -11,7 +25,7 @@ ...@@ -11,7 +25,7 @@
the args after the main switch, and don't modify the orginal exp. the args after the main switch, and don't modify the orginal exp.
2003-06-19 Aldy Hernandez <aldyh@redhat.com> 2003-06-19 Aldy Hernandez <aldyh@redhat.com>
* expr.c (const_vector_from_tree): Initialize remaining elements * expr.c (const_vector_from_tree): Initialize remaining elements
to 0. to 0.
...@@ -143,7 +157,7 @@ ...@@ -143,7 +157,7 @@
Support configuring with --with-cpu=iwmmxt. Support configuring with --with-cpu=iwmmxt.
* doc/invoke.texi: Document new value for -mcpu= ARM switch. * doc/invoke.texi: Document new value for -mcpu= ARM switch.
* config/arm/aof.h (REGISTER_NAMES): Add iwmmxt register * config/arm/aof.h (REGISTER_NAMES): Add iwmmxt register
names. Fix formatting. names. Fix formatting.
* config/arm/aout.h (REGISTER_NAMES): Add iwmmxt register * config/arm/aout.h (REGISTER_NAMES): Add iwmmxt register
names. names.
* config/arm/arm-protos.h (arm_emit_vector_const): New * config/arm/arm-protos.h (arm_emit_vector_const): New
...@@ -314,7 +328,7 @@ ...@@ -314,7 +328,7 @@
2003-06-17 Ranjit Mathew <rmathew@hotmail.com> 2003-06-17 Ranjit Mathew <rmathew@hotmail.com>
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/sourcebuild.texi (libgcj Tests): Simplify instructions on how * doc/sourcebuild.texi (libgcj Tests): Simplify instructions on how
to run Java runtime tests separately. to run Java runtime tests separately.
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
on information stored in GCC's tree structure. This code implements the on information stored in GCC's tree structure. This code implements the
-aux-info option. -aux-info option.
Copyright (C) 1989, 1991, 1994, 1995, 1997, 1998, Copyright (C) 1989, 1991, 1994, 1995, 1997, 1998,
1999, 2000 Free Software Foundation, Inc. 1999, 2000, 2003 Free Software Foundation, Inc.
Contributed by Ron Guilmette (rfg@segfault.us.com). Contributed by Ron Guilmette (rfg@segfault.us.com).
This file is part of GCC. This file is part of GCC.
...@@ -41,12 +41,12 @@ typedef enum formals_style_enum formals_style; ...@@ -41,12 +41,12 @@ typedef enum formals_style_enum formals_style;
static const char *data_type; static const char *data_type;
static char *affix_data_type PARAMS ((const char *)) ATTRIBUTE_MALLOC; static char *affix_data_type (const char *) ATTRIBUTE_MALLOC;
static const char *gen_formal_list_for_type PARAMS ((tree, formals_style)); static const char *gen_formal_list_for_type (tree, formals_style);
static int deserves_ellipsis PARAMS ((tree)); static int deserves_ellipsis (tree);
static const char *gen_formal_list_for_func_def PARAMS ((tree, formals_style)); static const char *gen_formal_list_for_func_def (tree, formals_style);
static const char *gen_type PARAMS ((const char *, tree, formals_style)); static const char *gen_type (const char *, tree, formals_style);
static const char *gen_decl PARAMS ((tree, int, formals_style)); static const char *gen_decl (tree, int, formals_style);
/* Given a string representing an entire type or an entire declaration /* Given a string representing an entire type or an entire declaration
which only lacks the actual "data-type" specifier (at its left end), which only lacks the actual "data-type" specifier (at its left end),
...@@ -63,8 +63,7 @@ static const char *gen_decl PARAMS ((tree, int, formals_style)); ...@@ -63,8 +63,7 @@ static const char *gen_decl PARAMS ((tree, int, formals_style));
that look as expected. */ that look as expected. */
static char * static char *
affix_data_type (param) affix_data_type (const char *param)
const char *param;
{ {
char *const type_or_decl = ASTRDUP (param); char *const type_or_decl = ASTRDUP (param);
char *p = type_or_decl; char *p = type_or_decl;
...@@ -110,9 +109,7 @@ affix_data_type (param) ...@@ -110,9 +109,7 @@ affix_data_type (param)
of empty parens here. */ of empty parens here. */
static const char * static const char *
gen_formal_list_for_type (fntype, style) gen_formal_list_for_type (tree fntype, formals_style style)
tree fntype;
formals_style style;
{ {
const char *formal_list = ""; const char *formal_list = "";
tree formal_type; tree formal_type;
...@@ -194,8 +191,7 @@ gen_formal_list_for_type (fntype, style) ...@@ -194,8 +191,7 @@ gen_formal_list_for_type (fntype, style)
if the "function type" parameter list should end with an ellipsis. */ if the "function type" parameter list should end with an ellipsis. */
static int static int
deserves_ellipsis (fntype) deserves_ellipsis (tree fntype)
tree fntype;
{ {
tree formal_type; tree formal_type;
...@@ -230,9 +226,7 @@ deserves_ellipsis (fntype) ...@@ -230,9 +226,7 @@ deserves_ellipsis (fntype)
function formal parameter list. */ function formal parameter list. */
static const char * static const char *
gen_formal_list_for_func_def (fndecl, style) gen_formal_list_for_func_def (tree fndecl, formals_style style)
tree fndecl;
formals_style style;
{ {
const char *formal_list = ""; const char *formal_list = "";
tree formal_decl; tree formal_decl;
...@@ -305,10 +299,7 @@ gen_formal_list_for_func_def (fndecl, style) ...@@ -305,10 +299,7 @@ gen_formal_list_for_func_def (fndecl, style)
string onto the returned "seed". */ string onto the returned "seed". */
static const char * static const char *
gen_type (ret_val, t, style) gen_type (const char *ret_val, tree t, formals_style style)
const char *ret_val;
tree t;
formals_style style;
{ {
tree chain_p; tree chain_p;
...@@ -434,13 +425,13 @@ gen_type (ret_val, t, style) ...@@ -434,13 +425,13 @@ gen_type (ret_val, t, style)
case TYPE_DECL: case TYPE_DECL:
data_type = IDENTIFIER_POINTER (DECL_NAME (t)); data_type = IDENTIFIER_POINTER (DECL_NAME (t));
break; break;
case INTEGER_TYPE: case INTEGER_TYPE:
data_type = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (t))); data_type = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (t)));
/* Normally, `unsigned' is part of the deal. Not so if it comes /* Normally, `unsigned' is part of the deal. Not so if it comes
with a type qualifier. */ with a type qualifier. */
if (TREE_UNSIGNED (t) && TYPE_QUALS (t)) if (TREE_UNSIGNED (t) && TYPE_QUALS (t))
data_type = concat ("unsigned ", data_type, NULL); data_type = concat ("unsigned ", data_type, NULL);
break; break;
case REAL_TYPE: case REAL_TYPE:
...@@ -479,10 +470,7 @@ gen_type (ret_val, t, style) ...@@ -479,10 +470,7 @@ gen_type (ret_val, t, style)
an attached list of DECL nodes for function formal arguments is present. */ an attached list of DECL nodes for function formal arguments is present. */
static const char * static const char *
gen_decl (decl, is_func_definition, style) gen_decl (tree decl, int is_func_definition, formals_style style)
tree decl;
int is_func_definition;
formals_style style;
{ {
const char *ret_val; const char *ret_val;
...@@ -560,11 +548,8 @@ extern FILE *aux_info_file; ...@@ -560,11 +548,8 @@ extern FILE *aux_info_file;
function definition (even the implicit ones). */ function definition (even the implicit ones). */
void void
gen_aux_info_record (fndecl, is_definition, is_implicit, is_prototyped) gen_aux_info_record (tree fndecl, int is_definition, int is_implicit,
tree fndecl; int is_prototyped)
int is_definition;
int is_implicit;
int is_prototyped;
{ {
if (flag_gen_aux_info) if (flag_gen_aux_info)
{ {
......
...@@ -180,7 +180,7 @@ enum c_language_kind c_language; ...@@ -180,7 +180,7 @@ enum c_language_kind c_language;
tree c99_function_name_decl_node; tree c99_function_name_decl_node;
Stack of nested function name VAR_DECLs. Stack of nested function name VAR_DECLs.
tree saved_function_name_decls; tree saved_function_name_decls;
*/ */
...@@ -328,9 +328,9 @@ int warn_char_subscripts; ...@@ -328,9 +328,9 @@ int warn_char_subscripts;
int warn_conversion; int warn_conversion;
/* Warn about #pragma directives that are not recognized. */ /* Warn about #pragma directives that are not recognized. */
int warn_unknown_pragmas; /* Tri state variable. */ int warn_unknown_pragmas; /* Tri state variable. */
/* Warn about format/argument anomalies in calls to formatted I/O functions /* Warn about format/argument anomalies in calls to formatted I/O functions
(*printf, *scanf, strftime, strfmon, etc.). */ (*printf, *scanf, strftime, strfmon, etc.). */
...@@ -432,8 +432,8 @@ int warn_div_by_zero = 1; ...@@ -432,8 +432,8 @@ int warn_div_by_zero = 1;
int warn_implicit_int; int warn_implicit_int;
/* Warn about NULL being passed to argument slots marked as requiring /* Warn about NULL being passed to argument slots marked as requiring
non-NULL. */ non-NULL. */
int warn_nonnull; int warn_nonnull;
...@@ -476,7 +476,7 @@ int warn_selector; ...@@ -476,7 +476,7 @@ int warn_selector;
int warn_undeclared_selector; int warn_undeclared_selector;
/* Warn if methods required by a protocol are not implemented in the /* Warn if methods required by a protocol are not implemented in the
class adopting it. When turned off, methods inherited to that class adopting it. When turned off, methods inherited to that
class are also considered implemented. */ class are also considered implemented. */
...@@ -595,7 +595,7 @@ int flag_enforce_eh_specs = 1; ...@@ -595,7 +595,7 @@ int flag_enforce_eh_specs = 1;
/* The version of the C++ ABI in use. The following values are /* The version of the C++ ABI in use. The following values are
allowed: allowed:
0: The version of the ABI believed most conformant with the 0: The version of the ABI believed most conformant with the
C++ ABI specification. This ABI may change as bugs are C++ ABI specification. This ABI may change as bugs are
discovered and fixed. Therefore, 0 will not necessarily discovered and fixed. Therefore, 0 will not necessarily
indicate the same ABI in different versions of G++. indicate the same ABI in different versions of G++.
...@@ -613,7 +613,7 @@ int flag_abi_version = 1; ...@@ -613,7 +613,7 @@ int flag_abi_version = 1;
int warn_abi = 0; int warn_abi = 0;
/* Nonzero means warn about invalid uses of offsetof. */ /* Nonzero means warn about invalid uses of offsetof. */
int warn_invalid_offsetof = 1; int warn_invalid_offsetof = 1;
/* Nonzero means warn about implicit declarations. */ /* Nonzero means warn about implicit declarations. */
...@@ -683,11 +683,11 @@ int max_tinst_depth = 500; ...@@ -683,11 +683,11 @@ int max_tinst_depth = 500;
type names and storage classes. It is indexed by a RID_... value. */ type names and storage classes. It is indexed by a RID_... value. */
tree *ridpointers; tree *ridpointers;
tree (*make_fname_decl) PARAMS ((tree, int)); tree (*make_fname_decl) (tree, int);
/* If non-NULL, the address of a language-specific function that takes /* If non-NULL, the address of a language-specific function that takes
any action required right before expand_function_end is called. */ any action required right before expand_function_end is called. */
void (*lang_expand_function_end) PARAMS ((void)); void (*lang_expand_function_end) (void);
/* Nonzero means the expression being parsed will never be evaluated. /* Nonzero means the expression being parsed will never be evaluated.
This is a count, since unevaluated expressions can nest. */ This is a count, since unevaluated expressions can nest. */
...@@ -714,7 +714,7 @@ const struct fname_var_t fname_vars[] = ...@@ -714,7 +714,7 @@ const struct fname_var_t fname_vars[] =
{NULL, 0, 0}, {NULL, 0, 0},
}; };
static int constant_fits_type_p PARAMS ((tree, tree)); static int constant_fits_type_p (tree, tree);
/* Keep a stack of if statements. We record the number of compound /* Keep a stack of if statements. We record the number of compound
statements seen up to the if keyword, as well as the line number statements seen up to the if keyword, as well as the line number
...@@ -737,78 +737,55 @@ static int if_stack_space = 0; ...@@ -737,78 +737,55 @@ static int if_stack_space = 0;
/* Stack pointer. */ /* Stack pointer. */
static int if_stack_pointer = 0; static int if_stack_pointer = 0;
static tree handle_packed_attribute PARAMS ((tree *, tree, tree, int, static tree handle_packed_attribute (tree *, tree, tree, int, bool *);
bool *)); static tree handle_nocommon_attribute (tree *, tree, tree, int, bool *);
static tree handle_nocommon_attribute PARAMS ((tree *, tree, tree, int, static tree handle_common_attribute (tree *, tree, tree, int, bool *);
bool *)); static tree handle_noreturn_attribute (tree *, tree, tree, int, bool *);
static tree handle_common_attribute PARAMS ((tree *, tree, tree, int, static tree handle_noinline_attribute (tree *, tree, tree, int, bool *);
bool *)); static tree handle_always_inline_attribute (tree *, tree, tree, int,
static tree handle_noreturn_attribute PARAMS ((tree *, tree, tree, int, bool *);
bool *)); static tree handle_used_attribute (tree *, tree, tree, int, bool *);
static tree handle_noinline_attribute PARAMS ((tree *, tree, tree, int, static tree handle_unused_attribute (tree *, tree, tree, int, bool *);
bool *)); static tree handle_const_attribute (tree *, tree, tree, int, bool *);
static tree handle_always_inline_attribute PARAMS ((tree *, tree, tree, int, static tree handle_transparent_union_attribute (tree *, tree, tree,
bool *)); int, bool *);
static tree handle_used_attribute PARAMS ((tree *, tree, tree, int, static tree handle_constructor_attribute (tree *, tree, tree, int, bool *);
bool *)); static tree handle_destructor_attribute (tree *, tree, tree, int, bool *);
static tree handle_unused_attribute PARAMS ((tree *, tree, tree, int, static tree handle_mode_attribute (tree *, tree, tree, int, bool *);
bool *)); static tree handle_section_attribute (tree *, tree, tree, int, bool *);
static tree handle_const_attribute PARAMS ((tree *, tree, tree, int, static tree handle_aligned_attribute (tree *, tree, tree, int, bool *);
bool *)); static tree handle_weak_attribute (tree *, tree, tree, int, bool *) ;
static tree handle_transparent_union_attribute PARAMS ((tree *, tree, tree, static tree handle_alias_attribute (tree *, tree, tree, int, bool *);
int, bool *)); static tree handle_visibility_attribute (tree *, tree, tree, int,
static tree handle_constructor_attribute PARAMS ((tree *, tree, tree, int, bool *);
bool *)); static tree handle_tls_model_attribute (tree *, tree, tree, int,
static tree handle_destructor_attribute PARAMS ((tree *, tree, tree, int, bool *);
bool *)); static tree handle_no_instrument_function_attribute (tree *, tree,
static tree handle_mode_attribute PARAMS ((tree *, tree, tree, int, tree, int, bool *);
bool *)); static tree handle_malloc_attribute (tree *, tree, tree, int, bool *);
static tree handle_section_attribute PARAMS ((tree *, tree, tree, int, static tree handle_no_limit_stack_attribute (tree *, tree, tree, int,
bool *)); bool *);
static tree handle_aligned_attribute PARAMS ((tree *, tree, tree, int, static tree handle_pure_attribute (tree *, tree, tree, int, bool *);
bool *)); static tree handle_deprecated_attribute (tree *, tree, tree, int,
static tree handle_weak_attribute PARAMS ((tree *, tree, tree, int, bool *);
bool *)); static tree handle_vector_size_attribute (tree *, tree, tree, int,
static tree handle_alias_attribute PARAMS ((tree *, tree, tree, int, bool *);
bool *)); static tree handle_nonnull_attribute (tree *, tree, tree, int, bool *);
static tree handle_visibility_attribute PARAMS ((tree *, tree, tree, int, static tree handle_nothrow_attribute (tree *, tree, tree, int, bool *);
bool *)); static tree handle_cleanup_attribute (tree *, tree, tree, int, bool *);
static tree handle_tls_model_attribute PARAMS ((tree *, tree, tree, int, static tree vector_size_helper (tree, tree);
bool *));
static tree handle_no_instrument_function_attribute PARAMS ((tree *, tree, static void check_function_nonnull (tree, tree);
tree, int, static void check_nonnull_arg (void *, tree, unsigned HOST_WIDE_INT);
bool *)); static bool nonnull_check_p (tree, unsigned HOST_WIDE_INT);
static tree handle_malloc_attribute PARAMS ((tree *, tree, tree, int, static bool get_nonnull_operand (tree, unsigned HOST_WIDE_INT *);
bool *));
static tree handle_no_limit_stack_attribute PARAMS ((tree *, tree, tree, int,
bool *));
static tree handle_pure_attribute PARAMS ((tree *, tree, tree, int,
bool *));
static tree handle_deprecated_attribute PARAMS ((tree *, tree, tree, int,
bool *));
static tree handle_vector_size_attribute PARAMS ((tree *, tree, tree, int,
bool *));
static tree handle_nonnull_attribute PARAMS ((tree *, tree, tree, int,
bool *));
static tree handle_nothrow_attribute PARAMS ((tree *, tree, tree, int,
bool *));
static tree handle_cleanup_attribute PARAMS ((tree *, tree, tree, int,
bool *));
static tree vector_size_helper PARAMS ((tree, tree));
static void check_function_nonnull PARAMS ((tree, tree));
static void check_nonnull_arg PARAMS ((void *, tree,
unsigned HOST_WIDE_INT));
static bool nonnull_check_p PARAMS ((tree, unsigned HOST_WIDE_INT));
static bool get_nonnull_operand PARAMS ((tree,
unsigned HOST_WIDE_INT *));
/* Table of machine-independent attributes common to all C-like languages. */ /* Table of machine-independent attributes common to all C-like languages. */
const struct attribute_spec c_common_attribute_table[] = const struct attribute_spec c_common_attribute_table[] =
{ {
/* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */ /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
{ "packed", 0, 0, false, false, false, { "packed", 0, 0, false, false, false,
handle_packed_attribute }, handle_packed_attribute },
{ "nocommon", 0, 0, true, false, false, { "nocommon", 0, 0, true, false, false,
handle_nocommon_attribute }, handle_nocommon_attribute },
{ "common", 0, 0, true, false, false, { "common", 0, 0, true, false, false,
...@@ -898,10 +875,7 @@ const struct attribute_spec c_common_format_attribute_table[] = ...@@ -898,10 +875,7 @@ const struct attribute_spec c_common_format_attribute_table[] =
condition to keep line number information accurate. */ condition to keep line number information accurate. */
void void
c_expand_start_cond (cond, compstmt_count, if_stmt) c_expand_start_cond (tree cond, int compstmt_count, tree if_stmt)
tree cond;
int compstmt_count;
tree if_stmt;
{ {
/* Make sure there is enough space on the stack. */ /* Make sure there is enough space on the stack. */
if (if_stack_space == 0) if (if_stack_space == 0)
...@@ -929,7 +903,7 @@ c_expand_start_cond (cond, compstmt_count, if_stmt) ...@@ -929,7 +903,7 @@ c_expand_start_cond (cond, compstmt_count, if_stmt)
/* Called after the then-clause for an if-statement is processed. */ /* Called after the then-clause for an if-statement is processed. */
void void
c_finish_then () c_finish_then (void)
{ {
tree if_stmt = if_stack[if_stack_pointer - 1].if_stmt; tree if_stmt = if_stack[if_stack_pointer - 1].if_stmt;
RECHAIN_STMTS (if_stmt, THEN_CLAUSE (if_stmt)); RECHAIN_STMTS (if_stmt, THEN_CLAUSE (if_stmt));
...@@ -939,7 +913,7 @@ c_finish_then () ...@@ -939,7 +913,7 @@ c_finish_then ()
if statement had an ambiguous else clause. */ if statement had an ambiguous else clause. */
void void
c_expand_end_cond () c_expand_end_cond (void)
{ {
if_stack_pointer--; if_stack_pointer--;
if (if_stack[if_stack_pointer].needs_warning) if (if_stack[if_stack_pointer].needs_warning)
...@@ -952,7 +926,7 @@ c_expand_end_cond () ...@@ -952,7 +926,7 @@ c_expand_end_cond ()
of an if-then-else. */ of an if-then-else. */
void void
c_expand_start_else () c_expand_start_else (void)
{ {
/* An ambiguous else warning must be generated for the enclosing if /* An ambiguous else warning must be generated for the enclosing if
statement, unless we see an else branch for that one, too. */ statement, unless we see an else branch for that one, too. */
...@@ -972,7 +946,7 @@ c_expand_start_else () ...@@ -972,7 +946,7 @@ c_expand_start_else ()
/* Called after the else-clause for an if-statement is processed. */ /* Called after the else-clause for an if-statement is processed. */
void void
c_finish_else () c_finish_else (void)
{ {
tree if_stmt = if_stack[if_stack_pointer - 1].if_stmt; tree if_stmt = if_stack[if_stack_pointer - 1].if_stmt;
RECHAIN_STMTS (if_stmt, ELSE_CLAUSE (if_stmt)); RECHAIN_STMTS (if_stmt, ELSE_CLAUSE (if_stmt));
...@@ -987,7 +961,7 @@ c_finish_else () ...@@ -987,7 +961,7 @@ c_finish_else ()
beyond what is strictly necessary for correctness. */ beyond what is strictly necessary for correctness. */
tree tree
c_begin_if_stmt () c_begin_if_stmt (void)
{ {
tree r; tree r;
r = build_stmt (IF_STMT, NULL_TREE, NULL_TREE, NULL_TREE); r = build_stmt (IF_STMT, NULL_TREE, NULL_TREE, NULL_TREE);
...@@ -1003,7 +977,7 @@ c_begin_if_stmt () ...@@ -1003,7 +977,7 @@ c_begin_if_stmt ()
beyond what is strictly necessary for correctness. */ beyond what is strictly necessary for correctness. */
tree tree
c_begin_while_stmt () c_begin_while_stmt (void)
{ {
tree r; tree r;
r = build_stmt (WHILE_STMT, NULL_TREE, NULL_TREE); r = build_stmt (WHILE_STMT, NULL_TREE, NULL_TREE);
...@@ -1011,9 +985,7 @@ c_begin_while_stmt () ...@@ -1011,9 +985,7 @@ c_begin_while_stmt ()
} }
void void
c_finish_while_stmt_cond (cond, while_stmt) c_finish_while_stmt_cond (tree cond, tree while_stmt)
tree while_stmt;
tree cond;
{ {
WHILE_COND (while_stmt) = cond; WHILE_COND (while_stmt) = cond;
} }
...@@ -1021,11 +993,11 @@ c_finish_while_stmt_cond (cond, while_stmt) ...@@ -1021,11 +993,11 @@ c_finish_while_stmt_cond (cond, while_stmt)
/* Push current bindings for the function name VAR_DECLS. */ /* Push current bindings for the function name VAR_DECLS. */
void void
start_fname_decls () start_fname_decls (void)
{ {
unsigned ix; unsigned ix;
tree saved = NULL_TREE; tree saved = NULL_TREE;
for (ix = 0; fname_vars[ix].decl; ix++) for (ix = 0; fname_vars[ix].decl; ix++)
{ {
tree decl = *fname_vars[ix].decl; tree decl = *fname_vars[ix].decl;
...@@ -1051,7 +1023,7 @@ start_fname_decls () ...@@ -1051,7 +1023,7 @@ start_fname_decls ()
involved. Pop the previous bindings. */ involved. Pop the previous bindings. */
void void
finish_fname_decls () finish_fname_decls (void)
{ {
unsigned ix; unsigned ix;
tree body = NULL_TREE; tree body = NULL_TREE;
...@@ -1059,7 +1031,7 @@ finish_fname_decls () ...@@ -1059,7 +1031,7 @@ finish_fname_decls ()
for (; stack && TREE_VALUE (stack); stack = TREE_CHAIN (stack)) for (; stack && TREE_VALUE (stack); stack = TREE_CHAIN (stack))
body = chainon (TREE_VALUE (stack), body); body = chainon (TREE_VALUE (stack), body);
if (body) if (body)
{ {
/* They were called into existence, so add to statement tree. Add /* They were called into existence, so add to statement tree. Add
...@@ -1075,10 +1047,10 @@ finish_fname_decls () ...@@ -1075,10 +1047,10 @@ finish_fname_decls ()
body = chainon (body, *p); body = chainon (body, *p);
*p = body; *p = body;
} }
for (ix = 0; fname_vars[ix].decl; ix++) for (ix = 0; fname_vars[ix].decl; ix++)
*fname_vars[ix].decl = NULL_TREE; *fname_vars[ix].decl = NULL_TREE;
if (stack) if (stack)
{ {
/* We had saved values, restore them. */ /* We had saved values, restore them. */
...@@ -1088,7 +1060,7 @@ finish_fname_decls () ...@@ -1088,7 +1060,7 @@ finish_fname_decls ()
{ {
tree decl = TREE_PURPOSE (saved); tree decl = TREE_PURPOSE (saved);
unsigned ix = TREE_INT_CST_LOW (TREE_VALUE (saved)); unsigned ix = TREE_INT_CST_LOW (TREE_VALUE (saved));
*fname_vars[ix].decl = decl; *fname_vars[ix].decl = decl;
} }
stack = TREE_CHAIN (stack); stack = TREE_CHAIN (stack);
...@@ -1100,11 +1072,10 @@ finish_fname_decls () ...@@ -1100,11 +1072,10 @@ finish_fname_decls ()
by PRETTY_P. */ by PRETTY_P. */
const char * const char *
fname_as_string (pretty_p) fname_as_string (int pretty_p)
int pretty_p;
{ {
const char *name = NULL; const char *name = NULL;
if (pretty_p) if (pretty_p)
name = (current_function_decl name = (current_function_decl
? (*lang_hooks.decl_printable_name) (current_function_decl, 2) ? (*lang_hooks.decl_printable_name) (current_function_decl, 2)
...@@ -1120,11 +1091,10 @@ fname_as_string (pretty_p) ...@@ -1120,11 +1091,10 @@ fname_as_string (pretty_p)
required by the supplied RID value. */ required by the supplied RID value. */
const char * const char *
fname_string (rid) fname_string (unsigned int rid)
unsigned rid;
{ {
unsigned ix; unsigned ix;
for (ix = 0; fname_vars[ix].decl; ix++) for (ix = 0; fname_vars[ix].decl; ix++)
if (fname_vars[ix].rid == rid) if (fname_vars[ix].rid == rid)
break; break;
...@@ -1139,9 +1109,7 @@ fname_string (rid) ...@@ -1139,9 +1109,7 @@ fname_string (rid)
this language independent code. */ this language independent code. */
tree tree
fname_decl (rid, id) fname_decl (unsigned int rid, tree id)
unsigned rid;
tree id;
{ {
unsigned ix; unsigned ix;
tree decl = NULL_TREE; tree decl = NULL_TREE;
...@@ -1161,7 +1129,7 @@ fname_decl (rid, id) ...@@ -1161,7 +1129,7 @@ fname_decl (rid, id)
it from appearing in the RTL. */ it from appearing in the RTL. */
int saved_lineno = input_line; int saved_lineno = input_line;
input_line = 0; input_line = 0;
decl = (*make_fname_decl) (id, fname_vars[ix].pretty); decl = (*make_fname_decl) (id, fname_vars[ix].pretty);
if (last_tree != saved_last_tree) if (last_tree != saved_last_tree)
{ {
...@@ -1187,8 +1155,7 @@ fname_decl (rid, id) ...@@ -1187,8 +1155,7 @@ fname_decl (rid, id)
/* Given a STRING_CST, give it a suitable array-of-chars data type. */ /* Given a STRING_CST, give it a suitable array-of-chars data type. */
tree tree
fix_string_type (value) fix_string_type (tree value)
tree value;
{ {
const int wchar_bytes = TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT; const int wchar_bytes = TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT;
const int wide_flag = TREE_TYPE (value) == wchar_array_type_node; const int wide_flag = TREE_TYPE (value) == wchar_array_type_node;
...@@ -1231,8 +1198,7 @@ fix_string_type (value) ...@@ -1231,8 +1198,7 @@ fix_string_type (value)
STRING_CST. */ STRING_CST. */
tree tree
combine_strings (strings) combine_strings (varray_type strings)
varray_type strings;
{ {
const int wchar_bytes = TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT; const int wchar_bytes = TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT;
const int nstrings = VARRAY_ACTIVE_SIZE (strings); const int nstrings = VARRAY_ACTIVE_SIZE (strings);
...@@ -1258,7 +1224,7 @@ combine_strings (strings) ...@@ -1258,7 +1224,7 @@ combine_strings (strings)
{ {
length += (TREE_STRING_LENGTH (t) - 1); length += (TREE_STRING_LENGTH (t) - 1);
if (C_ARTIFICIAL_STRING_P (t) && !in_system_header) if (C_ARTIFICIAL_STRING_P (t) && !in_system_header)
warning ("concatenation of string literals with __FUNCTION__ is deprecated"); warning ("concatenation of string literals with __FUNCTION__ is deprecated");
} }
} }
...@@ -1333,12 +1299,13 @@ combine_strings (strings) ...@@ -1333,12 +1299,13 @@ combine_strings (strings)
return value; return value;
} }
static int is_valid_printf_arglist PARAMS ((tree)); static int is_valid_printf_arglist (tree);
static rtx c_expand_builtin PARAMS ((tree, rtx, enum machine_mode, enum expand_modifier)); static rtx c_expand_builtin (tree, rtx, enum machine_mode,
static rtx c_expand_builtin_printf PARAMS ((tree, rtx, enum machine_mode, enum expand_modifier);
enum expand_modifier, int, int)); static rtx c_expand_builtin_printf (tree, rtx, enum machine_mode,
static rtx c_expand_builtin_fprintf PARAMS ((tree, rtx, enum machine_mode, enum expand_modifier, int, int);
enum expand_modifier, int, int)); static rtx c_expand_builtin_fprintf (tree, rtx, enum machine_mode,
enum expand_modifier, int, int);
/* Print a warning if a constant expression had overflow in folding. /* Print a warning if a constant expression had overflow in folding.
Invoke this function on every expression that the language Invoke this function on every expression that the language
...@@ -1347,8 +1314,7 @@ static rtx c_expand_builtin_fprintf PARAMS ((tree, rtx, enum machine_mode, ...@@ -1347,8 +1314,7 @@ static rtx c_expand_builtin_fprintf PARAMS ((tree, rtx, enum machine_mode,
constant expression to overflow. */ constant expression to overflow. */
void void
constant_expression_warning (value) constant_expression_warning (tree value)
tree value;
{ {
if ((TREE_CODE (value) == INTEGER_CST || TREE_CODE (value) == REAL_CST if ((TREE_CODE (value) == INTEGER_CST || TREE_CODE (value) == REAL_CST
|| TREE_CODE (value) == VECTOR_CST || TREE_CODE (value) == VECTOR_CST
...@@ -1365,8 +1331,7 @@ constant_expression_warning (value) ...@@ -1365,8 +1331,7 @@ constant_expression_warning (value)
however, do not invoke this function on operands of explicit casts. */ however, do not invoke this function on operands of explicit casts. */
void void
overflow_warning (value) overflow_warning (tree value)
tree value;
{ {
if ((TREE_CODE (value) == INTEGER_CST if ((TREE_CODE (value) == INTEGER_CST
|| (TREE_CODE (value) == COMPLEX_CST || (TREE_CODE (value) == COMPLEX_CST
...@@ -1400,8 +1365,7 @@ overflow_warning (value) ...@@ -1400,8 +1365,7 @@ overflow_warning (value)
converted to an unsigned type. */ converted to an unsigned type. */
void void
unsigned_conversion_warning (result, operand) unsigned_conversion_warning (tree result, tree operand)
tree result, operand;
{ {
tree type = TREE_TYPE (result); tree type = TREE_TYPE (result);
...@@ -1423,23 +1387,21 @@ unsigned_conversion_warning (result, operand) ...@@ -1423,23 +1387,21 @@ unsigned_conversion_warning (result, operand)
for type TYPE (an INTEGER_TYPE). */ for type TYPE (an INTEGER_TYPE). */
static int static int
constant_fits_type_p (c, type) constant_fits_type_p (tree c, tree type)
tree c, type;
{ {
if (TREE_CODE (c) == INTEGER_CST) if (TREE_CODE (c) == INTEGER_CST)
return int_fits_type_p (c, type); return int_fits_type_p (c, type);
c = convert (type, c); c = convert (type, c);
return !TREE_OVERFLOW (c); return !TREE_OVERFLOW (c);
} }
/* Convert EXPR to TYPE, warning about conversion problems with constants. /* Convert EXPR to TYPE, warning about conversion problems with constants.
Invoke this function on every expression that is converted implicitly, Invoke this function on every expression that is converted implicitly,
i.e. because of language rules and not because of an explicit cast. */ i.e. because of language rules and not because of an explicit cast. */
tree tree
convert_and_check (type, expr) convert_and_check (tree type, tree expr)
tree type, expr;
{ {
tree t = convert (type, expr); tree t = convert (type, expr);
if (TREE_CODE (t) == INTEGER_CST) if (TREE_CODE (t) == INTEGER_CST)
...@@ -1502,21 +1464,18 @@ static struct tlist *warned_ids; ...@@ -1502,21 +1464,18 @@ static struct tlist *warned_ids;
cache the results. */ cache the results. */
static struct tlist_cache *save_expr_cache; static struct tlist_cache *save_expr_cache;
static void add_tlist PARAMS ((struct tlist **, struct tlist *, tree, int)); static void add_tlist (struct tlist **, struct tlist *, tree, int);
static void merge_tlist PARAMS ((struct tlist **, struct tlist *, int)); static void merge_tlist (struct tlist **, struct tlist *, int);
static void verify_tree PARAMS ((tree, struct tlist **, struct tlist **, tree)); static void verify_tree (tree, struct tlist **, struct tlist **, tree);
static int warning_candidate_p PARAMS ((tree)); static int warning_candidate_p (tree);
static void warn_for_collisions PARAMS ((struct tlist *)); static void warn_for_collisions (struct tlist *);
static void warn_for_collisions_1 PARAMS ((tree, tree, struct tlist *, int)); static void warn_for_collisions_1 (tree, tree, struct tlist *, int);
static struct tlist *new_tlist PARAMS ((struct tlist *, tree, tree)); static struct tlist *new_tlist (struct tlist *, tree, tree);
static void verify_sequence_points PARAMS ((tree)); static void verify_sequence_points (tree);
/* Create a new struct tlist and fill in its fields. */ /* Create a new struct tlist and fill in its fields. */
static struct tlist * static struct tlist *
new_tlist (next, t, writer) new_tlist (struct tlist *next, tree t, tree writer)
struct tlist *next;
tree t;
tree writer;
{ {
struct tlist *l; struct tlist *l;
l = (struct tlist *) obstack_alloc (&tlist_obstack, sizeof *l); l = (struct tlist *) obstack_alloc (&tlist_obstack, sizeof *l);
...@@ -1530,11 +1489,7 @@ new_tlist (next, t, writer) ...@@ -1530,11 +1489,7 @@ new_tlist (next, t, writer)
is nonnull, we ignore any node we find which has a writer equal to it. */ is nonnull, we ignore any node we find which has a writer equal to it. */
static void static void
add_tlist (to, add, exclude_writer, copy) add_tlist (struct tlist **to, struct tlist *add, tree exclude_writer, int copy)
struct tlist **to;
struct tlist *add;
tree exclude_writer;
int copy;
{ {
while (add) while (add)
{ {
...@@ -1554,10 +1509,7 @@ add_tlist (to, add, exclude_writer, copy) ...@@ -1554,10 +1509,7 @@ add_tlist (to, add, exclude_writer, copy)
write. */ write. */
static void static void
merge_tlist (to, add, copy) merge_tlist (struct tlist **to, struct tlist *add, int copy)
struct tlist **to;
struct tlist *add;
int copy;
{ {
struct tlist **end = to; struct tlist **end = to;
...@@ -1592,10 +1544,8 @@ merge_tlist (to, add, copy) ...@@ -1592,10 +1544,8 @@ merge_tlist (to, add, copy)
is nonzero. */ is nonzero. */
static void static void
warn_for_collisions_1 (written, writer, list, only_writes) warn_for_collisions_1 (tree written, tree writer, struct tlist *list,
tree written, writer; int only_writes)
struct tlist *list;
int only_writes;
{ {
struct tlist *tmp; struct tlist *tmp;
...@@ -1622,11 +1572,10 @@ warn_for_collisions_1 (written, writer, list, only_writes) ...@@ -1622,11 +1572,10 @@ warn_for_collisions_1 (written, writer, list, only_writes)
can cause conflicts due to missing sequence points. */ can cause conflicts due to missing sequence points. */
static void static void
warn_for_collisions (list) warn_for_collisions (struct tlist *list)
struct tlist *list;
{ {
struct tlist *tmp; struct tlist *tmp;
for (tmp = list; tmp; tmp = tmp->next) for (tmp = list; tmp; tmp = tmp->next)
{ {
if (tmp->writer) if (tmp->writer)
...@@ -1637,8 +1586,7 @@ warn_for_collisions (list) ...@@ -1637,8 +1586,7 @@ warn_for_collisions (list)
/* Return nonzero if X is a tree that can be verified by the sequence point /* Return nonzero if X is a tree that can be verified by the sequence point
warnings. */ warnings. */
static int static int
warning_candidate_p (x) warning_candidate_p (tree x)
tree x;
{ {
return TREE_CODE (x) == VAR_DECL || TREE_CODE (x) == PARM_DECL; return TREE_CODE (x) == VAR_DECL || TREE_CODE (x) == PARM_DECL;
} }
...@@ -1669,10 +1617,8 @@ warning_candidate_p (x) ...@@ -1669,10 +1617,8 @@ warning_candidate_p (x)
way, so that no more than one access to B is recorded. */ way, so that no more than one access to B is recorded. */
static void static void
verify_tree (x, pbefore_sp, pno_sp, writer) verify_tree (tree x, struct tlist **pbefore_sp, struct tlist **pno_sp,
tree x; tree writer)
struct tlist **pbefore_sp, **pno_sp;
tree writer;
{ {
struct tlist *tmp_before, *tmp_nosp, *tmp_list2, *tmp_list3; struct tlist *tmp_before, *tmp_nosp, *tmp_list2, *tmp_list3;
enum tree_code code; enum tree_code code;
...@@ -1867,8 +1813,7 @@ verify_tree (x, pbefore_sp, pno_sp, writer) ...@@ -1867,8 +1813,7 @@ verify_tree (x, pbefore_sp, pno_sp, writer)
points. */ points. */
static void static void
verify_sequence_points (expr) verify_sequence_points (tree expr)
tree expr;
{ {
struct tlist *before_sp = 0, *after_sp = 0; struct tlist *before_sp = 0, *after_sp = 0;
...@@ -1886,8 +1831,7 @@ verify_sequence_points (expr) ...@@ -1886,8 +1831,7 @@ verify_sequence_points (expr)
} }
tree tree
c_expand_expr_stmt (expr) c_expand_expr_stmt (tree expr)
tree expr;
{ {
/* Do default conversion if safe and possibly important, /* Do default conversion if safe and possibly important,
in case within ({...}). */ in case within ({...}). */
...@@ -1904,15 +1848,14 @@ c_expand_expr_stmt (expr) ...@@ -1904,15 +1848,14 @@ c_expand_expr_stmt (expr)
&& TREE_CODE (TREE_TYPE (expr)) != ARRAY_TYPE) && TREE_CODE (TREE_TYPE (expr)) != ARRAY_TYPE)
error ("expression statement has incomplete type"); error ("expression statement has incomplete type");
last_expr_type = TREE_TYPE (expr); last_expr_type = TREE_TYPE (expr);
return add_stmt (build_stmt (EXPR_STMT, expr)); return add_stmt (build_stmt (EXPR_STMT, expr));
} }
/* Validate the expression after `case' and apply default promotions. */ /* Validate the expression after `case' and apply default promotions. */
tree tree
check_case_value (value) check_case_value (tree value)
tree value;
{ {
if (value == NULL_TREE) if (value == NULL_TREE)
return value; return value;
...@@ -1951,9 +1894,7 @@ check_case_value (value) ...@@ -1951,9 +1894,7 @@ check_case_value (value)
that is unsigned if UNSIGNEDP is nonzero, otherwise signed. */ that is unsigned if UNSIGNEDP is nonzero, otherwise signed. */
tree tree
c_common_type_for_size (bits, unsignedp) c_common_type_for_size (unsigned int bits, int unsignedp)
unsigned bits;
int unsignedp;
{ {
if (bits == TYPE_PRECISION (integer_type_node)) if (bits == TYPE_PRECISION (integer_type_node))
return unsignedp ? unsigned_type_node : integer_type_node; return unsignedp ? unsigned_type_node : integer_type_node;
...@@ -1995,9 +1936,7 @@ c_common_type_for_size (bits, unsignedp) ...@@ -1995,9 +1936,7 @@ c_common_type_for_size (bits, unsignedp)
then UNSIGNEDP selects between signed and unsigned types. */ then UNSIGNEDP selects between signed and unsigned types. */
tree tree
c_common_type_for_mode (mode, unsignedp) c_common_type_for_mode (enum machine_mode mode, int unsignedp)
enum machine_mode mode;
int unsignedp;
{ {
if (mode == TYPE_MODE (integer_type_node)) if (mode == TYPE_MODE (integer_type_node))
return unsignedp ? unsigned_type_node : integer_type_node; return unsignedp ? unsigned_type_node : integer_type_node;
...@@ -2087,8 +2026,7 @@ c_common_type_for_mode (mode, unsignedp) ...@@ -2087,8 +2026,7 @@ c_common_type_for_mode (mode, unsignedp)
/* Return an unsigned type the same as TYPE in other respects. */ /* Return an unsigned type the same as TYPE in other respects. */
tree tree
c_common_unsigned_type (type) c_common_unsigned_type (tree type)
tree type;
{ {
tree type1 = TYPE_MAIN_VARIANT (type); tree type1 = TYPE_MAIN_VARIANT (type);
if (type1 == signed_char_type_node || type1 == char_type_node) if (type1 == signed_char_type_node || type1 == char_type_node)
...@@ -2122,8 +2060,7 @@ c_common_unsigned_type (type) ...@@ -2122,8 +2060,7 @@ c_common_unsigned_type (type)
/* Return a signed type the same as TYPE in other respects. */ /* Return a signed type the same as TYPE in other respects. */
tree tree
c_common_signed_type (type) c_common_signed_type (tree type)
tree type;
{ {
tree type1 = TYPE_MAIN_VARIANT (type); tree type1 = TYPE_MAIN_VARIANT (type);
if (type1 == unsigned_char_type_node || type1 == char_type_node) if (type1 == unsigned_char_type_node || type1 == char_type_node)
...@@ -2158,9 +2095,7 @@ c_common_signed_type (type) ...@@ -2158,9 +2095,7 @@ c_common_signed_type (type)
signed according to UNSIGNEDP. */ signed according to UNSIGNEDP. */
tree tree
c_common_signed_or_unsigned_type (unsignedp, type) c_common_signed_or_unsigned_type (int unsignedp, tree type)
int unsignedp;
tree type;
{ {
if (! INTEGRAL_TYPE_P (type) if (! INTEGRAL_TYPE_P (type)
|| TREE_UNSIGNED (type) == unsignedp) || TREE_UNSIGNED (type) == unsignedp)
...@@ -2201,9 +2136,7 @@ c_common_signed_or_unsigned_type (unsignedp, type) ...@@ -2201,9 +2136,7 @@ c_common_signed_or_unsigned_type (unsignedp, type)
signed or unsigned type, UNSIGNEDP says which. */ signed or unsigned type, UNSIGNEDP says which. */
unsigned int unsigned int
min_precision (value, unsignedp) min_precision (tree value, int unsignedp)
tree value;
int unsignedp;
{ {
int log; int log;
...@@ -2231,8 +2164,7 @@ min_precision (value, unsignedp) ...@@ -2231,8 +2164,7 @@ min_precision (value, unsignedp)
c_common_truthvalue_conversion). */ c_common_truthvalue_conversion). */
void void
binary_op_error (code) binary_op_error (enum tree_code code)
enum tree_code code;
{ {
const char *opname; const char *opname;
...@@ -2308,10 +2240,8 @@ binary_op_error (code) ...@@ -2308,10 +2240,8 @@ binary_op_error (code)
that value. */ that value. */
tree tree
shorten_compare (op0_ptr, op1_ptr, restype_ptr, rescode_ptr) shorten_compare (tree *op0_ptr, tree *op1_ptr, tree *restype_ptr,
tree *op0_ptr, *op1_ptr; enum tree_code *rescode_ptr)
tree *restype_ptr;
enum tree_code *rescode_ptr;
{ {
tree type; tree type;
tree op0 = *op0_ptr; tree op0 = *op0_ptr;
...@@ -2636,9 +2566,7 @@ shorten_compare (op0_ptr, op1_ptr, restype_ptr, rescode_ptr) ...@@ -2636,9 +2566,7 @@ shorten_compare (op0_ptr, op1_ptr, restype_ptr, rescode_ptr)
of pointer PTROP and integer INTOP. */ of pointer PTROP and integer INTOP. */
tree tree
pointer_int_sum (resultcode, ptrop, intop) pointer_int_sum (enum tree_code resultcode, tree ptrop, tree intop)
enum tree_code resultcode;
tree ptrop, intop;
{ {
tree size_exp; tree size_exp;
...@@ -2712,7 +2640,7 @@ pointer_int_sum (resultcode, ptrop, intop) ...@@ -2712,7 +2640,7 @@ pointer_int_sum (resultcode, ptrop, intop)
if (TYPE_PRECISION (TREE_TYPE (intop)) != TYPE_PRECISION (sizetype) if (TYPE_PRECISION (TREE_TYPE (intop)) != TYPE_PRECISION (sizetype)
|| TREE_UNSIGNED (TREE_TYPE (intop)) != TREE_UNSIGNED (sizetype)) || TREE_UNSIGNED (TREE_TYPE (intop)) != TREE_UNSIGNED (sizetype))
intop = convert (c_common_type_for_size (TYPE_PRECISION (sizetype), intop = convert (c_common_type_for_size (TYPE_PRECISION (sizetype),
TREE_UNSIGNED (sizetype)), intop); TREE_UNSIGNED (sizetype)), intop);
/* Replace the integer argument with a suitable product by the object size. /* Replace the integer argument with a suitable product by the object size.
...@@ -2745,8 +2673,7 @@ pointer_int_sum (resultcode, ptrop, intop) ...@@ -2745,8 +2673,7 @@ pointer_int_sum (resultcode, ptrop, intop)
The resulting type should always be `boolean_type_node'. */ The resulting type should always be `boolean_type_node'. */
tree tree
c_common_truthvalue_conversion (expr) c_common_truthvalue_conversion (tree expr)
tree expr;
{ {
if (TREE_CODE (expr) == ERROR_MARK) if (TREE_CODE (expr) == ERROR_MARK)
return expr; return expr;
...@@ -2907,17 +2834,15 @@ c_common_truthvalue_conversion (expr) ...@@ -2907,17 +2834,15 @@ c_common_truthvalue_conversion (expr)
return build_binary_op (NE_EXPR, expr, integer_zero_node, 1); return build_binary_op (NE_EXPR, expr, integer_zero_node, 1);
} }
static tree builtin_function_2 PARAMS ((const char *, const char *, tree, tree, static tree builtin_function_2 (const char *, const char *, tree, tree,
int, enum built_in_class, int, int, int, enum built_in_class, int, int,
tree)); tree);
/* Make a variant type in the proper way for C/C++, propagating qualifiers /* Make a variant type in the proper way for C/C++, propagating qualifiers
down to the element type of an array. */ down to the element type of an array. */
tree tree
c_build_qualified_type (type, type_quals) c_build_qualified_type (tree type, int type_quals)
tree type;
int type_quals;
{ {
/* A restrict-qualified pointer type must be a pointer to object or /* A restrict-qualified pointer type must be a pointer to object or
incomplete type. Note that the use of POINTER_TYPE_P also allows incomplete type. Note that the use of POINTER_TYPE_P also allows
...@@ -2944,12 +2869,10 @@ c_build_qualified_type (type, type_quals) ...@@ -2944,12 +2869,10 @@ c_build_qualified_type (type, type_quals)
/* Apply the TYPE_QUALS to the new DECL. */ /* Apply the TYPE_QUALS to the new DECL. */
void void
c_apply_type_quals_to_decl (type_quals, decl) c_apply_type_quals_to_decl (int type_quals, tree decl)
int type_quals;
tree decl;
{ {
if ((type_quals & TYPE_QUAL_CONST) if ((type_quals & TYPE_QUAL_CONST)
|| (TREE_TYPE (decl) || (TREE_TYPE (decl)
&& TREE_CODE (TREE_TYPE (decl)) == REFERENCE_TYPE)) && TREE_CODE (TREE_TYPE (decl)) == REFERENCE_TYPE))
TREE_READONLY (decl) = 1; TREE_READONLY (decl) = 1;
if (type_quals & TYPE_QUAL_VOLATILE) if (type_quals & TYPE_QUAL_VOLATILE)
...@@ -2975,11 +2898,10 @@ c_apply_type_quals_to_decl (type_quals, decl) ...@@ -2975,11 +2898,10 @@ c_apply_type_quals_to_decl (type_quals, decl)
or a type. Return -1 if we don't do anything special. */ or a type. Return -1 if we don't do anything special. */
HOST_WIDE_INT HOST_WIDE_INT
c_common_get_alias_set (t) c_common_get_alias_set (tree t)
tree t;
{ {
tree u; tree u;
/* Permit type-punning when accessing a union, provided the access /* Permit type-punning when accessing a union, provided the access
is directly through the union. For example, this code does not is directly through the union. For example, this code does not
permit taking the address of a union member and then storing permit taking the address of a union member and then storing
...@@ -3059,18 +2981,15 @@ c_common_get_alias_set (t) ...@@ -3059,18 +2981,15 @@ c_common_get_alias_set (t)
flag controls whether we should diagnose possibly ill-formed flag controls whether we should diagnose possibly ill-formed
constructs or not. */ constructs or not. */
tree tree
c_sizeof_or_alignof_type (type, op, complain) c_sizeof_or_alignof_type (tree type, enum tree_code op, int complain)
tree type;
enum tree_code op;
int complain;
{ {
const char *op_name; const char *op_name;
tree value = NULL; tree value = NULL;
enum tree_code type_code = TREE_CODE (type); enum tree_code type_code = TREE_CODE (type);
my_friendly_assert (op == SIZEOF_EXPR || op == ALIGNOF_EXPR, 20020720); my_friendly_assert (op == SIZEOF_EXPR || op == ALIGNOF_EXPR, 20020720);
op_name = op == SIZEOF_EXPR ? "sizeof" : "__alignof__"; op_name = op == SIZEOF_EXPR ? "sizeof" : "__alignof__";
if (type_code == FUNCTION_TYPE) if (type_code == FUNCTION_TYPE)
{ {
if (op == SIZEOF_EXPR) if (op == SIZEOF_EXPR)
...@@ -3084,7 +3003,7 @@ c_sizeof_or_alignof_type (type, op, complain) ...@@ -3084,7 +3003,7 @@ c_sizeof_or_alignof_type (type, op, complain)
} }
else if (type_code == VOID_TYPE || type_code == ERROR_MARK) else if (type_code == VOID_TYPE || type_code == ERROR_MARK)
{ {
if (type_code == VOID_TYPE if (type_code == VOID_TYPE
&& complain && (pedantic || warn_pointer_arith)) && complain && (pedantic || warn_pointer_arith))
pedwarn ("invalid application of `%s' to a void type", op_name); pedwarn ("invalid application of `%s' to a void type", op_name);
value = size_one_node; value = size_one_node;
...@@ -3112,7 +3031,7 @@ c_sizeof_or_alignof_type (type, op, complain) ...@@ -3112,7 +3031,7 @@ c_sizeof_or_alignof_type (type, op, complain)
`size_t', which is just a typedef for an ordinary integer type. */ `size_t', which is just a typedef for an ordinary integer type. */
value = fold (build1 (NOP_EXPR, size_type_node, value)); value = fold (build1 (NOP_EXPR, size_type_node, value));
my_friendly_assert (!TYPE_IS_SIZETYPE (TREE_TYPE (value)), 20001021); my_friendly_assert (!TYPE_IS_SIZETYPE (TREE_TYPE (value)), 20001021);
return value; return value;
} }
...@@ -3122,14 +3041,13 @@ c_sizeof_or_alignof_type (type, op, complain) ...@@ -3122,14 +3041,13 @@ c_sizeof_or_alignof_type (type, op, complain)
"aligned" __attribute__ specification). */ "aligned" __attribute__ specification). */
tree tree
c_alignof_expr (expr) c_alignof_expr (tree expr)
tree expr;
{ {
tree t; tree t;
if (TREE_CODE (expr) == VAR_DECL) if (TREE_CODE (expr) == VAR_DECL)
t = size_int (DECL_ALIGN (expr) / BITS_PER_UNIT); t = size_int (DECL_ALIGN (expr) / BITS_PER_UNIT);
else if (TREE_CODE (expr) == COMPONENT_REF else if (TREE_CODE (expr) == COMPONENT_REF
&& DECL_C_BIT_FIELD (TREE_OPERAND (expr, 1))) && DECL_C_BIT_FIELD (TREE_OPERAND (expr, 1)))
{ {
...@@ -3139,13 +3057,13 @@ c_alignof_expr (expr) ...@@ -3139,13 +3057,13 @@ c_alignof_expr (expr)
else if (TREE_CODE (expr) == COMPONENT_REF else if (TREE_CODE (expr) == COMPONENT_REF
&& TREE_CODE (TREE_OPERAND (expr, 1)) == FIELD_DECL) && TREE_CODE (TREE_OPERAND (expr, 1)) == FIELD_DECL)
t = size_int (DECL_ALIGN (TREE_OPERAND (expr, 1)) / BITS_PER_UNIT); t = size_int (DECL_ALIGN (TREE_OPERAND (expr, 1)) / BITS_PER_UNIT);
else if (TREE_CODE (expr) == INDIRECT_REF) else if (TREE_CODE (expr) == INDIRECT_REF)
{ {
tree t = TREE_OPERAND (expr, 0); tree t = TREE_OPERAND (expr, 0);
tree best = t; tree best = t;
int bestalign = TYPE_ALIGN (TREE_TYPE (TREE_TYPE (t))); int bestalign = TYPE_ALIGN (TREE_TYPE (TREE_TYPE (t)));
while (TREE_CODE (t) == NOP_EXPR while (TREE_CODE (t) == NOP_EXPR
&& TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == POINTER_TYPE) && TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == POINTER_TYPE)
{ {
...@@ -3186,15 +3104,15 @@ static GTY(()) tree built_in_attributes[(int) ATTR_LAST]; ...@@ -3186,15 +3104,15 @@ static GTY(()) tree built_in_attributes[(int) ATTR_LAST];
static bool c_attrs_initialized = false; static bool c_attrs_initialized = false;
static void c_init_attributes PARAMS ((void)); static void c_init_attributes (void);
/* Build tree nodes and builtin functions common to both C and C++ language /* Build tree nodes and builtin functions common to both C and C++ language
frontends. */ frontends. */
void void
c_common_nodes_and_builtins () c_common_nodes_and_builtins (void)
{ {
enum builtin_type enum builtin_type
{ {
#define DEF_PRIMITIVE_TYPE(NAME, VALUE) NAME, #define DEF_PRIMITIVE_TYPE(NAME, VALUE) NAME,
#define DEF_FUNCTION_TYPE_0(NAME, RETURN) NAME, #define DEF_FUNCTION_TYPE_0(NAME, RETURN) NAME,
...@@ -3469,7 +3387,7 @@ c_common_nodes_and_builtins () ...@@ -3469,7 +3387,7 @@ c_common_nodes_and_builtins ()
va_list_arg_type_node = va_list_type_node; va_list_arg_type_node = va_list_type_node;
va_list_ref_type_node = build_reference_type (va_list_type_node); va_list_ref_type_node = build_reference_type (va_list_type_node);
} }
#define DEF_PRIMITIVE_TYPE(ENUM, VALUE) \ #define DEF_PRIMITIVE_TYPE(ENUM, VALUE) \
builtin_types[(int) ENUM] = VALUE; builtin_types[(int) ENUM] = VALUE;
#define DEF_FUNCTION_TYPE_0(ENUM, RETURN) \ #define DEF_FUNCTION_TYPE_0(ENUM, RETURN) \
...@@ -3484,7 +3402,7 @@ c_common_nodes_and_builtins () ...@@ -3484,7 +3402,7 @@ c_common_nodes_and_builtins ()
void_list_node)); void_list_node));
#define DEF_FUNCTION_TYPE_2(ENUM, RETURN, ARG1, ARG2) \ #define DEF_FUNCTION_TYPE_2(ENUM, RETURN, ARG1, ARG2) \
builtin_types[(int) ENUM] \ builtin_types[(int) ENUM] \
= build_function_type \ = build_function_type \
(builtin_types[(int) RETURN], \ (builtin_types[(int) RETURN], \
tree_cons (NULL_TREE, \ tree_cons (NULL_TREE, \
builtin_types[(int) ARG1], \ builtin_types[(int) ARG1], \
...@@ -3510,9 +3428,9 @@ c_common_nodes_and_builtins () ...@@ -3510,9 +3428,9 @@ c_common_nodes_and_builtins ()
builtin_types[(int) ARG1], \ builtin_types[(int) ARG1], \
tree_cons (NULL_TREE, \ tree_cons (NULL_TREE, \
builtin_types[(int) ARG2], \ builtin_types[(int) ARG2], \
tree_cons \ tree_cons \
(NULL_TREE, \ (NULL_TREE, \
builtin_types[(int) ARG3], \ builtin_types[(int) ARG3], \
tree_cons (NULL_TREE, \ tree_cons (NULL_TREE, \
builtin_types[(int) ARG4], \ builtin_types[(int) ARG4], \
void_list_node))))); void_list_node)))));
...@@ -3521,14 +3439,14 @@ c_common_nodes_and_builtins () ...@@ -3521,14 +3439,14 @@ c_common_nodes_and_builtins ()
= build_function_type (builtin_types[(int) RETURN], NULL_TREE); = build_function_type (builtin_types[(int) RETURN], NULL_TREE);
#define DEF_FUNCTION_TYPE_VAR_1(ENUM, RETURN, ARG1) \ #define DEF_FUNCTION_TYPE_VAR_1(ENUM, RETURN, ARG1) \
builtin_types[(int) ENUM] \ builtin_types[(int) ENUM] \
= build_function_type (builtin_types[(int) RETURN], \ = build_function_type (builtin_types[(int) RETURN], \
tree_cons (NULL_TREE, \ tree_cons (NULL_TREE, \
builtin_types[(int) ARG1], \ builtin_types[(int) ARG1], \
NULL_TREE)); NULL_TREE));
#define DEF_FUNCTION_TYPE_VAR_2(ENUM, RETURN, ARG1, ARG2) \ #define DEF_FUNCTION_TYPE_VAR_2(ENUM, RETURN, ARG1, ARG2) \
builtin_types[(int) ENUM] \ builtin_types[(int) ENUM] \
= build_function_type \ = build_function_type \
(builtin_types[(int) RETURN], \ (builtin_types[(int) RETURN], \
tree_cons (NULL_TREE, \ tree_cons (NULL_TREE, \
builtin_types[(int) ARG1], \ builtin_types[(int) ARG1], \
...@@ -3538,7 +3456,7 @@ c_common_nodes_and_builtins () ...@@ -3538,7 +3456,7 @@ c_common_nodes_and_builtins ()
#define DEF_FUNCTION_TYPE_VAR_3(ENUM, RETURN, ARG1, ARG2, ARG3) \ #define DEF_FUNCTION_TYPE_VAR_3(ENUM, RETURN, ARG1, ARG2, ARG3) \
builtin_types[(int) ENUM] \ builtin_types[(int) ENUM] \
= build_function_type \ = build_function_type \
(builtin_types[(int) RETURN], \ (builtin_types[(int) RETURN], \
tree_cons (NULL_TREE, \ tree_cons (NULL_TREE, \
builtin_types[(int) ARG1], \ builtin_types[(int) ARG1], \
...@@ -3596,7 +3514,7 @@ c_common_nodes_and_builtins () ...@@ -3596,7 +3514,7 @@ c_common_nodes_and_builtins ()
built_in_decls[(int) ENUM] = decl; \ built_in_decls[(int) ENUM] = decl; \
if (IMPLICIT) \ if (IMPLICIT) \
implicit_built_in_decls[(int) ENUM] = decl; \ implicit_built_in_decls[(int) ENUM] = decl; \
} }
#include "builtins.def" #include "builtins.def"
#undef DEF_BUILTIN #undef DEF_BUILTIN
...@@ -3606,8 +3524,7 @@ c_common_nodes_and_builtins () ...@@ -3606,8 +3524,7 @@ c_common_nodes_and_builtins ()
} }
tree tree
build_va_arg (expr, type) build_va_arg (tree expr, tree type)
tree expr, type;
{ {
return build1 (VA_ARG_EXPR, type, expr); return build1 (VA_ARG_EXPR, type, expr);
} }
...@@ -3622,14 +3539,13 @@ typedef struct disabled_builtin ...@@ -3622,14 +3539,13 @@ typedef struct disabled_builtin
} disabled_builtin; } disabled_builtin;
static disabled_builtin *disabled_builtins = NULL; static disabled_builtin *disabled_builtins = NULL;
static bool builtin_function_disabled_p PARAMS ((const char *)); static bool builtin_function_disabled_p (const char *);
/* Disable a built-in function specified by -fno-builtin-NAME. If NAME /* Disable a built-in function specified by -fno-builtin-NAME. If NAME
begins with "__builtin_", give an error. */ begins with "__builtin_", give an error. */
void void
disable_builtin_function (name) disable_builtin_function (const char *name)
const char *name;
{ {
if (strncmp (name, "__builtin_", strlen ("__builtin_")) == 0) if (strncmp (name, "__builtin_", strlen ("__builtin_")) == 0)
error ("cannot disable built-in function `%s'", name); error ("cannot disable built-in function `%s'", name);
...@@ -3647,8 +3563,7 @@ disable_builtin_function (name) ...@@ -3647,8 +3563,7 @@ disable_builtin_function (name)
otherwise. */ otherwise. */
static bool static bool
builtin_function_disabled_p (name) builtin_function_disabled_p (const char *name)
const char *name;
{ {
disabled_builtin *p; disabled_builtin *p;
for (p = disabled_builtins; p != NULL; p = p->next) for (p = disabled_builtins; p != NULL; p = p->next)
...@@ -3676,17 +3591,10 @@ builtin_function_disabled_p (name) ...@@ -3676,17 +3591,10 @@ builtin_function_disabled_p (name)
or if NONANSI_P and flag_no_nonansi_builtin. */ or if NONANSI_P and flag_no_nonansi_builtin. */
static tree static tree
builtin_function_2 (builtin_name, name, builtin_type, type, function_code, builtin_function_2 (const char *builtin_name, const char *name,
class, library_name_p, nonansi_p, attrs) tree builtin_type, tree type, int function_code,
const char *builtin_name; enum built_in_class class, int library_name_p,
const char *name; int nonansi_p, tree attrs)
tree builtin_type;
tree type;
int function_code;
enum built_in_class class;
int library_name_p;
int nonansi_p;
tree attrs;
{ {
tree bdecl = NULL_TREE; tree bdecl = NULL_TREE;
tree decl = NULL_TREE; tree decl = NULL_TREE;
...@@ -3706,8 +3614,7 @@ builtin_function_2 (builtin_name, name, builtin_type, type, function_code, ...@@ -3706,8 +3614,7 @@ builtin_function_2 (builtin_name, name, builtin_type, type, function_code,
integral promotions defined in ISO C99 6.3.1.1/2. */ integral promotions defined in ISO C99 6.3.1.1/2. */
bool bool
c_promoting_integer_type_p (t) c_promoting_integer_type_p (tree t)
tree t;
{ {
switch (TREE_CODE (t)) switch (TREE_CODE (t))
{ {
...@@ -3737,8 +3644,7 @@ c_promoting_integer_type_p (t) ...@@ -3737,8 +3644,7 @@ c_promoting_integer_type_p (t)
and none of their types is affected by default promotions. */ and none of their types is affected by default promotions. */
int int
self_promoting_args_p (parms) self_promoting_args_p (tree parms)
tree parms;
{ {
tree t; tree t;
for (t = parms; t; t = TREE_CHAIN (t)) for (t = parms; t; t = TREE_CHAIN (t))
...@@ -3764,8 +3670,7 @@ self_promoting_args_p (parms) ...@@ -3764,8 +3670,7 @@ self_promoting_args_p (parms)
element type is found. */ element type is found. */
tree tree
strip_array_types (type) strip_array_types (tree type)
tree type;
{ {
while (TREE_CODE (type) == ARRAY_TYPE) while (TREE_CODE (type) == ARRAY_TYPE)
type = TREE_TYPE (type); type = TREE_TYPE (type);
...@@ -3773,8 +3678,7 @@ strip_array_types (type) ...@@ -3773,8 +3678,7 @@ strip_array_types (type)
return type; return type;
} }
static tree expand_unordered_cmp PARAMS ((tree, tree, enum tree_code, static tree expand_unordered_cmp (tree, tree, enum tree_code, enum tree_code);
enum tree_code));
/* Expand a call to an unordered comparison function such as /* Expand a call to an unordered comparison function such as
__builtin_isgreater(). FUNCTION is the function's declaration and __builtin_isgreater(). FUNCTION is the function's declaration and
...@@ -3786,9 +3690,9 @@ static tree expand_unordered_cmp PARAMS ((tree, tree, enum tree_code, ...@@ -3786,9 +3690,9 @@ static tree expand_unordered_cmp PARAMS ((tree, tree, enum tree_code,
rest. */ rest. */
static tree static tree
expand_unordered_cmp (function, params, unordered_code, ordered_code) expand_unordered_cmp (tree function, tree params,
tree function, params; enum tree_code unordered_code,
enum tree_code unordered_code, ordered_code; enum tree_code ordered_code)
{ {
tree arg0, arg1, type; tree arg0, arg1, type;
enum tree_code code0, code1; enum tree_code code0, code1;
...@@ -3857,8 +3761,7 @@ expand_unordered_cmp (function, params, unordered_code, ordered_code) ...@@ -3857,8 +3761,7 @@ expand_unordered_cmp (function, params, unordered_code, ordered_code)
where the similar functionality exists in the other front ends. */ where the similar functionality exists in the other front ends. */
tree tree
expand_tree_builtin (function, params, coerced_params) expand_tree_builtin (tree function, tree params, tree coerced_params)
tree function, params, coerced_params;
{ {
if (DECL_BUILT_IN_CLASS (function) != BUILT_IN_NORMAL) if (DECL_BUILT_IN_CLASS (function) != BUILT_IN_NORMAL)
return NULL_TREE; return NULL_TREE;
...@@ -3932,11 +3835,8 @@ expand_tree_builtin (function, params, coerced_params) ...@@ -3932,11 +3835,8 @@ expand_tree_builtin (function, params, coerced_params)
We don't need a without_duplicates variant of this one because the We don't need a without_duplicates variant of this one because the
statement tree is a tree, not a graph. */ statement tree is a tree, not a graph. */
tree tree
walk_stmt_tree (tp, func, data) walk_stmt_tree (tree *tp, walk_tree_fn func, void *data)
tree *tp;
walk_tree_fn func;
void *data;
{ {
enum tree_code code; enum tree_code code;
int walk_subtrees; int walk_subtrees;
...@@ -4001,9 +3901,7 @@ walk_stmt_tree (tp, func, data) ...@@ -4001,9 +3901,7 @@ walk_stmt_tree (tp, func, data)
K2, and 0 if K1 and K2 are equal. */ K2, and 0 if K1 and K2 are equal. */
int int
case_compare (k1, k2) case_compare (splay_tree_key k1, splay_tree_key k2)
splay_tree_key k1;
splay_tree_key k2;
{ {
/* Consider a NULL key (such as arises with a `default' label) to be /* Consider a NULL key (such as arises with a `default' label) to be
smaller than anything else. */ smaller than anything else. */
...@@ -4025,11 +3923,8 @@ case_compare (k1, k2) ...@@ -4025,11 +3923,8 @@ case_compare (k1, k2)
ERROR_MARK_NODE if no CASE_LABEL is created. */ ERROR_MARK_NODE if no CASE_LABEL is created. */
tree tree
c_add_case_label (cases, cond, low_value, high_value) c_add_case_label (splay_tree cases, tree cond, tree low_value,
splay_tree cases; tree high_value)
tree cond;
tree low_value;
tree high_value;
{ {
tree type; tree type;
tree label; tree label;
...@@ -4051,8 +3946,8 @@ c_add_case_label (cases, cond, low_value, high_value) ...@@ -4051,8 +3946,8 @@ c_add_case_label (cases, cond, low_value, high_value)
return error_mark_node; return error_mark_node;
} }
if ((low_value && TREE_TYPE (low_value) if ((low_value && TREE_TYPE (low_value)
&& POINTER_TYPE_P (TREE_TYPE (low_value))) && POINTER_TYPE_P (TREE_TYPE (low_value)))
|| (high_value && TREE_TYPE (high_value) || (high_value && TREE_TYPE (high_value)
&& POINTER_TYPE_P (TREE_TYPE (high_value)))) && POINTER_TYPE_P (TREE_TYPE (high_value))))
error ("pointers are not permitted as case values"); error ("pointers are not permitted as case values");
...@@ -4091,8 +3986,8 @@ c_add_case_label (cases, cond, low_value, high_value) ...@@ -4091,8 +3986,8 @@ c_add_case_label (cases, cond, low_value, high_value)
the HIGH_VALUE to simplify later processing. */ the HIGH_VALUE to simplify later processing. */
if (tree_int_cst_equal (low_value, high_value)) if (tree_int_cst_equal (low_value, high_value))
high_value = NULL_TREE; high_value = NULL_TREE;
if (low_value && high_value if (low_value && high_value
&& !tree_int_cst_lt (low_value, high_value)) && !tree_int_cst_lt (low_value, high_value))
warning ("empty range specified"); warning ("empty range specified");
/* Look up the LOW_VALUE in the table of case labels we already /* Look up the LOW_VALUE in the table of case labels we already
...@@ -4130,7 +4025,7 @@ c_add_case_label (cases, cond, low_value, high_value) ...@@ -4130,7 +4025,7 @@ c_add_case_label (cases, cond, low_value, high_value)
range is bigger than the low end of the current range, so we range is bigger than the low end of the current range, so we
are only interested if the current range is a real range, and are only interested if the current range is a real range, and
not an ordinary case label. */ not an ordinary case label. */
else if (high_bound else if (high_bound
&& high_value && high_value
&& (tree_int_cst_compare ((tree) high_bound->key, && (tree_int_cst_compare ((tree) high_bound->key,
high_value) high_value)
...@@ -4145,7 +4040,7 @@ c_add_case_label (cases, cond, low_value, high_value) ...@@ -4145,7 +4040,7 @@ c_add_case_label (cases, cond, low_value, high_value)
if (high_value) if (high_value)
{ {
error ("duplicate (or overlapping) case value"); error ("duplicate (or overlapping) case value");
error_with_decl (duplicate, error_with_decl (duplicate,
"this is the first entry overlapping that value"); "this is the first entry overlapping that value");
} }
else if (low_value) else if (low_value)
...@@ -4165,7 +4060,7 @@ c_add_case_label (cases, cond, low_value, high_value) ...@@ -4165,7 +4060,7 @@ c_add_case_label (cases, cond, low_value, high_value)
/* Add a CASE_LABEL to the statement-tree. */ /* Add a CASE_LABEL to the statement-tree. */
case_label = add_stmt (build_case_label (low_value, high_value, label)); case_label = add_stmt (build_case_label (low_value, high_value, label));
/* Register this case label in the splay tree. */ /* Register this case label in the splay tree. */
splay_tree_insert (cases, splay_tree_insert (cases,
(splay_tree_key) low_value, (splay_tree_key) low_value,
(splay_tree_value) case_label); (splay_tree_value) case_label);
...@@ -4175,9 +4070,8 @@ c_add_case_label (cases, cond, low_value, high_value) ...@@ -4175,9 +4070,8 @@ c_add_case_label (cases, cond, low_value, high_value)
/* Finish an expression taking the address of LABEL (an /* Finish an expression taking the address of LABEL (an
IDENTIFIER_NODE). Returns an expression for the address. */ IDENTIFIER_NODE). Returns an expression for the address. */
tree tree
finish_label_address_expr (label) finish_label_address_expr (tree label)
tree label;
{ {
tree result; tree result;
...@@ -4211,11 +4105,8 @@ finish_label_address_expr (label) ...@@ -4211,11 +4105,8 @@ finish_label_address_expr (label)
/* Hook used by expand_expr to expand language-specific tree codes. */ /* Hook used by expand_expr to expand language-specific tree codes. */
rtx rtx
c_expand_expr (exp, target, tmode, modifier) c_expand_expr (tree exp, rtx target, enum machine_mode tmode, int modifier)
tree exp; /* Actually enum_modifier. */
rtx target;
enum machine_mode tmode;
int modifier; /* Actually enum_modifier. */
{ {
switch (TREE_CODE (exp)) switch (TREE_CODE (exp))
{ {
...@@ -4293,7 +4184,7 @@ c_expand_expr (exp, target, tmode, modifier) ...@@ -4293,7 +4184,7 @@ c_expand_expr (exp, target, tmode, modifier)
return result; return result;
} }
break; break;
case CALL_EXPR: case CALL_EXPR:
{ {
if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR
...@@ -4328,14 +4219,12 @@ c_expand_expr (exp, target, tmode, modifier) ...@@ -4328,14 +4219,12 @@ c_expand_expr (exp, target, tmode, modifier)
/* Hook used by safe_from_p to handle language-specific tree codes. */ /* Hook used by safe_from_p to handle language-specific tree codes. */
int int
c_safe_from_p (target, exp) c_safe_from_p (rtx target, tree exp)
rtx target;
tree exp;
{ {
/* We can see statements here when processing the body of a /* We can see statements here when processing the body of a
statement-expression. For a declaration statement declaring a statement-expression. For a declaration statement declaring a
variable, look at the variable's initializer. */ variable, look at the variable's initializer. */
if (TREE_CODE (exp) == DECL_STMT) if (TREE_CODE (exp) == DECL_STMT)
{ {
tree decl = DECL_STMT_DECL (exp); tree decl = DECL_STMT_DECL (exp);
...@@ -4356,8 +4245,7 @@ c_safe_from_p (target, exp) ...@@ -4356,8 +4245,7 @@ c_safe_from_p (target, exp)
/* Hook used by unsafe_for_reeval to handle language-specific tree codes. */ /* Hook used by unsafe_for_reeval to handle language-specific tree codes. */
int int
c_common_unsafe_for_reeval (exp) c_common_unsafe_for_reeval (tree exp)
tree exp;
{ {
/* Statement expressions may not be reevaluated, likewise compound /* Statement expressions may not be reevaluated, likewise compound
literals. */ literals. */
...@@ -4372,8 +4260,7 @@ c_common_unsafe_for_reeval (exp) ...@@ -4372,8 +4260,7 @@ c_common_unsafe_for_reeval (exp)
/* Hook used by staticp to handle language-specific tree codes. */ /* Hook used by staticp to handle language-specific tree codes. */
int int
c_staticp (exp) c_staticp (tree exp)
tree exp;
{ {
if (TREE_CODE (exp) == COMPOUND_LITERAL_EXPR if (TREE_CODE (exp) == COMPOUND_LITERAL_EXPR
&& TREE_STATIC (COMPOUND_LITERAL_EXPR_DECL (exp))) && TREE_STATIC (COMPOUND_LITERAL_EXPR_DECL (exp)))
...@@ -4385,11 +4272,8 @@ c_staticp (exp) ...@@ -4385,11 +4272,8 @@ c_staticp (exp)
(!strncmp (IDENTIFIER_POINTER (DECL_NAME (NODE)), "__builtin_", 10)) (!strncmp (IDENTIFIER_POINTER (DECL_NAME (NODE)), "__builtin_", 10))
static rtx static rtx
c_expand_builtin (exp, target, tmode, modifier) c_expand_builtin (tree exp, rtx target, enum machine_mode tmode,
tree exp; enum expand_modifier modifier)
rtx target;
enum machine_mode tmode;
enum expand_modifier modifier;
{ {
tree type = TREE_TYPE (exp); tree type = TREE_TYPE (exp);
tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0); tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
...@@ -4449,8 +4333,7 @@ c_expand_builtin (exp, target, tmode, modifier) ...@@ -4449,8 +4333,7 @@ c_expand_builtin (exp, target, tmode, modifier)
at the format specifier, with the remaining arguments immediately at the format specifier, with the remaining arguments immediately
following it. */ following it. */
static int static int
is_valid_printf_arglist (arglist) is_valid_printf_arglist (tree arglist)
tree arglist;
{ {
/* Save this value so we can restore it later. */ /* Save this value so we can restore it later. */
const int SAVE_pedantic = pedantic; const int SAVE_pedantic = pedantic;
...@@ -4483,13 +4366,9 @@ is_valid_printf_arglist (arglist) ...@@ -4483,13 +4366,9 @@ is_valid_printf_arglist (arglist)
/* If the arguments passed to printf are suitable for optimizations, /* If the arguments passed to printf are suitable for optimizations,
we attempt to transform the call. */ we attempt to transform the call. */
static rtx static rtx
c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked) c_expand_builtin_printf (tree arglist, rtx target, enum machine_mode tmode,
tree arglist; enum expand_modifier modifier, int ignore,
rtx target; int unlocked)
enum machine_mode tmode;
enum expand_modifier modifier;
int ignore;
int unlocked;
{ {
tree fn_putchar = unlocked ? tree fn_putchar = unlocked ?
implicit_built_in_decls[BUILT_IN_PUTCHAR_UNLOCKED] : implicit_built_in_decls[BUILT_IN_PUTCHAR]; implicit_built_in_decls[BUILT_IN_PUTCHAR_UNLOCKED] : implicit_built_in_decls[BUILT_IN_PUTCHAR];
...@@ -4506,11 +4385,11 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4506,11 +4385,11 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked)
if (arglist == 0 if (arglist == 0
|| (TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))) != POINTER_TYPE)) || (TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))) != POINTER_TYPE))
return 0; return 0;
/* Check the specifier vs. the parameters. */ /* Check the specifier vs. the parameters. */
if (!is_valid_printf_arglist (arglist)) if (!is_valid_printf_arglist (arglist))
return 0; return 0;
format_arg = TREE_VALUE (arglist); format_arg = TREE_VALUE (arglist);
stripped_string = format_arg; stripped_string = format_arg;
STRIP_NOPS (stripped_string); STRIP_NOPS (stripped_string);
...@@ -4520,7 +4399,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4520,7 +4399,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked)
/* If the format specifier isn't a STRING_CST, punt. */ /* If the format specifier isn't a STRING_CST, punt. */
if (TREE_CODE (stripped_string) != STRING_CST) if (TREE_CODE (stripped_string) != STRING_CST)
return 0; return 0;
/* OK! We can attempt optimization. */ /* OK! We can attempt optimization. */
/* If the format specifier was "%s\n", call __builtin_puts(arg2). */ /* If the format specifier was "%s\n", call __builtin_puts(arg2). */
...@@ -4540,7 +4419,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4540,7 +4419,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked)
/* We can't handle anything else with % args or %% ... yet. */ /* We can't handle anything else with % args or %% ... yet. */
if (strchr (TREE_STRING_POINTER (stripped_string), '%')) if (strchr (TREE_STRING_POINTER (stripped_string), '%'))
return 0; return 0;
/* If the resulting constant string has a length of 1, call /* If the resulting constant string has a length of 1, call
putchar. Note, TREE_STRING_LENGTH includes the terminating putchar. Note, TREE_STRING_LENGTH includes the terminating
NULL in its count. */ NULL in its count. */
...@@ -4551,7 +4430,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4551,7 +4430,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked)
function. */ function. */
arglist = build_int_2 (TREE_STRING_POINTER (stripped_string)[0], 0); arglist = build_int_2 (TREE_STRING_POINTER (stripped_string)[0], 0);
arglist = build_tree_list (NULL_TREE, arglist); arglist = build_tree_list (NULL_TREE, arglist);
fn = fn_putchar; fn = fn_putchar;
} }
/* If the resulting constant was "string\n", call /* If the resulting constant was "string\n", call
...@@ -4568,7 +4447,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4568,7 +4447,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked)
char *newstr = (char *) alloca (newlen); char *newstr = (char *) alloca (newlen);
memcpy (newstr, TREE_STRING_POINTER (stripped_string), newlen - 1); memcpy (newstr, TREE_STRING_POINTER (stripped_string), newlen - 1);
newstr[newlen - 1] = 0; newstr[newlen - 1] = 0;
arglist = fix_string_type (build_string (newlen, newstr)); arglist = fix_string_type (build_string (newlen, newstr));
arglist = build_tree_list (NULL_TREE, arglist); arglist = build_tree_list (NULL_TREE, arglist);
fn = fn_puts; fn = fn_puts;
...@@ -4578,7 +4457,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4578,7 +4457,7 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked)
need stdout and don't have a way to get it ... yet. */ need stdout and don't have a way to get it ... yet. */
return 0; return 0;
} }
return expand_expr (build_function_call (fn, arglist), return expand_expr (build_function_call (fn, arglist),
(ignore ? const0_rtx : target), (ignore ? const0_rtx : target),
tmode, modifier); tmode, modifier);
...@@ -4587,13 +4466,9 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4587,13 +4466,9 @@ c_expand_builtin_printf (arglist, target, tmode, modifier, ignore, unlocked)
/* If the arguments passed to fprintf are suitable for optimizations, /* If the arguments passed to fprintf are suitable for optimizations,
we attempt to transform the call. */ we attempt to transform the call. */
static rtx static rtx
c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked) c_expand_builtin_fprintf (tree arglist, rtx target, enum machine_mode tmode,
tree arglist; enum expand_modifier modifier, int ignore,
rtx target; int unlocked)
enum machine_mode tmode;
enum expand_modifier modifier;
int ignore;
int unlocked;
{ {
tree fn_fputc = unlocked ? tree fn_fputc = unlocked ?
implicit_built_in_decls[BUILT_IN_FPUTC_UNLOCKED] : implicit_built_in_decls[BUILT_IN_FPUTC]; implicit_built_in_decls[BUILT_IN_FPUTC_UNLOCKED] : implicit_built_in_decls[BUILT_IN_FPUTC];
...@@ -4613,11 +4488,11 @@ c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4613,11 +4488,11 @@ c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked)
|| (TREE_CODE (TREE_TYPE (TREE_VALUE (TREE_CHAIN (arglist)))) != || (TREE_CODE (TREE_TYPE (TREE_VALUE (TREE_CHAIN (arglist)))) !=
POINTER_TYPE)) POINTER_TYPE))
return 0; return 0;
/* Check the specifier vs. the parameters. */ /* Check the specifier vs. the parameters. */
if (!is_valid_printf_arglist (TREE_CHAIN (arglist))) if (!is_valid_printf_arglist (TREE_CHAIN (arglist)))
return 0; return 0;
format_arg = TREE_VALUE (TREE_CHAIN (arglist)); format_arg = TREE_VALUE (TREE_CHAIN (arglist));
stripped_string = format_arg; stripped_string = format_arg;
STRIP_NOPS (stripped_string); STRIP_NOPS (stripped_string);
...@@ -4627,7 +4502,7 @@ c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4627,7 +4502,7 @@ c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked)
/* If the format specifier isn't a STRING_CST, punt. */ /* If the format specifier isn't a STRING_CST, punt. */
if (TREE_CODE (stripped_string) != STRING_CST) if (TREE_CODE (stripped_string) != STRING_CST)
return 0; return 0;
/* OK! We can attempt optimization. */ /* OK! We can attempt optimization. */
/* If the format specifier was "%s", call __builtin_fputs(arg3, arg1). */ /* If the format specifier was "%s", call __builtin_fputs(arg3, arg1). */
...@@ -4653,7 +4528,7 @@ c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4653,7 +4528,7 @@ c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked)
/* We can't handle anything else with % args or %% ... yet. */ /* We can't handle anything else with % args or %% ... yet. */
if (strchr (TREE_STRING_POINTER (stripped_string), '%')) if (strchr (TREE_STRING_POINTER (stripped_string), '%'))
return 0; return 0;
/* When "string" doesn't contain %, replace all cases of /* When "string" doesn't contain %, replace all cases of
fprintf(stream,string) with fputs(string,stream). The fputs fprintf(stream,string) with fputs(string,stream). The fputs
builtin will take take of special cases like length==1. */ builtin will take take of special cases like length==1. */
...@@ -4661,7 +4536,7 @@ c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4661,7 +4536,7 @@ c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked)
build_tree_list (NULL_TREE, TREE_VALUE (arglist))); build_tree_list (NULL_TREE, TREE_VALUE (arglist)));
fn = fn_fputs; fn = fn_fputs;
} }
return expand_expr (build_function_call (fn, arglist), return expand_expr (build_function_call (fn, arglist),
(ignore ? const0_rtx : target), (ignore ? const0_rtx : target),
tmode, modifier); tmode, modifier);
...@@ -4672,9 +4547,7 @@ c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked) ...@@ -4672,9 +4547,7 @@ c_expand_builtin_fprintf (arglist, target, tmode, modifier, ignore, unlocked)
or decrement (as indicated by CODE) of ARG. The front end must check for or decrement (as indicated by CODE) of ARG. The front end must check for
invalid cases (e.g., decrement in C++). */ invalid cases (e.g., decrement in C++). */
tree tree
boolean_increment (code, arg) boolean_increment (enum tree_code code, tree arg)
enum tree_code code;
tree arg;
{ {
tree val; tree val;
tree true_res = (c_language == clk_cplusplus tree true_res = (c_language == clk_cplusplus
...@@ -4711,7 +4584,7 @@ boolean_increment (code, arg) ...@@ -4711,7 +4584,7 @@ boolean_increment (code, arg)
/* Built-in macros for stddef.h, that require macros defined in this /* Built-in macros for stddef.h, that require macros defined in this
file. */ file. */
void void
c_stddef_cpp_builtins() c_stddef_cpp_builtins(void)
{ {
builtin_define_with_value ("__SIZE_TYPE__", SIZE_TYPE, 0); builtin_define_with_value ("__SIZE_TYPE__", SIZE_TYPE, 0);
builtin_define_with_value ("__PTRDIFF_TYPE__", PTRDIFF_TYPE, 0); builtin_define_with_value ("__PTRDIFF_TYPE__", PTRDIFF_TYPE, 0);
...@@ -4720,7 +4593,7 @@ c_stddef_cpp_builtins() ...@@ -4720,7 +4593,7 @@ c_stddef_cpp_builtins()
} }
static void static void
c_init_attributes () c_init_attributes (void)
{ {
/* Fill in the built_in_attributes array. */ /* Fill in the built_in_attributes array. */
#define DEF_ATTR_NULL_TREE(ENUM) \ #define DEF_ATTR_NULL_TREE(ENUM) \
...@@ -4747,8 +4620,7 @@ c_init_attributes () ...@@ -4747,8 +4620,7 @@ c_init_attributes ()
/* Depending on the name of DECL, apply default attributes to it. */ /* Depending on the name of DECL, apply default attributes to it. */
void void
c_common_insert_default_attributes (decl) c_common_insert_default_attributes (tree decl)
tree decl;
{ {
tree name = DECL_NAME (decl); tree name = DECL_NAME (decl);
...@@ -4774,10 +4646,7 @@ c_common_insert_default_attributes (decl) ...@@ -4774,10 +4646,7 @@ c_common_insert_default_attributes (decl)
/* Output a -Wshadow warning MSGCODE about NAME, and give the location /* Output a -Wshadow warning MSGCODE about NAME, and give the location
of the previous declaration DECL. */ of the previous declaration DECL. */
void void
shadow_warning (msgcode, name, decl) shadow_warning (enum sw_kind msgcode, const char *name, tree decl)
enum sw_kind msgcode;
const char *name;
tree decl;
{ {
static const char *const msgs[] = { static const char *const msgs[] = {
/* SW_PARAM */ N_("declaration of \"%s\" shadows a parameter"), /* SW_PARAM */ N_("declaration of \"%s\" shadows a parameter"),
...@@ -4795,12 +4664,8 @@ shadow_warning (msgcode, name, decl) ...@@ -4795,12 +4664,8 @@ shadow_warning (msgcode, name, decl)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_packed_attribute (node, name, args, flags, no_add_attrs) handle_packed_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED,
tree *node; int flags, _Bool *no_add_attrs)
tree name;
tree args ATTRIBUTE_UNUSED;
int flags;
bool *no_add_attrs;
{ {
tree *type = NULL; tree *type = NULL;
if (DECL_P (*node)) if (DECL_P (*node))
...@@ -4834,12 +4699,9 @@ handle_packed_attribute (node, name, args, flags, no_add_attrs) ...@@ -4834,12 +4699,9 @@ handle_packed_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_nocommon_attribute (node, name, args, flags, no_add_attrs) handle_nocommon_attribute (tree *node, tree name,
tree *node; tree args ATTRIBUTE_UNUSED,
tree name; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree args ATTRIBUTE_UNUSED;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
if (TREE_CODE (*node) == VAR_DECL) if (TREE_CODE (*node) == VAR_DECL)
DECL_COMMON (*node) = 0; DECL_COMMON (*node) = 0;
...@@ -4856,12 +4718,8 @@ handle_nocommon_attribute (node, name, args, flags, no_add_attrs) ...@@ -4856,12 +4718,8 @@ handle_nocommon_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_common_attribute (node, name, args, flags, no_add_attrs) handle_common_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args ATTRIBUTE_UNUSED;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
if (TREE_CODE (*node) == VAR_DECL) if (TREE_CODE (*node) == VAR_DECL)
DECL_COMMON (*node) = 1; DECL_COMMON (*node) = 1;
...@@ -4878,12 +4736,8 @@ handle_common_attribute (node, name, args, flags, no_add_attrs) ...@@ -4878,12 +4736,8 @@ handle_common_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_noreturn_attribute (node, name, args, flags, no_add_attrs) handle_noreturn_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args ATTRIBUTE_UNUSED;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree type = TREE_TYPE (*node); tree type = TREE_TYPE (*node);
...@@ -4909,12 +4763,9 @@ handle_noreturn_attribute (node, name, args, flags, no_add_attrs) ...@@ -4909,12 +4763,9 @@ handle_noreturn_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_noinline_attribute (node, name, args, flags, no_add_attrs) handle_noinline_attribute (tree *node, tree name,
tree *node; tree args ATTRIBUTE_UNUSED,
tree name; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree args ATTRIBUTE_UNUSED;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
if (TREE_CODE (*node) == FUNCTION_DECL) if (TREE_CODE (*node) == FUNCTION_DECL)
DECL_UNINLINABLE (*node) = 1; DECL_UNINLINABLE (*node) = 1;
...@@ -4931,12 +4782,10 @@ handle_noinline_attribute (node, name, args, flags, no_add_attrs) ...@@ -4931,12 +4782,10 @@ handle_noinline_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_always_inline_attribute (node, name, args, flags, no_add_attrs) handle_always_inline_attribute (tree *node, tree name,
tree *node; tree args ATTRIBUTE_UNUSED,
tree name; int flags ATTRIBUTE_UNUSED,
tree args ATTRIBUTE_UNUSED; _Bool *no_add_attrs)
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
if (TREE_CODE (*node) == FUNCTION_DECL) if (TREE_CODE (*node) == FUNCTION_DECL)
{ {
...@@ -4956,12 +4805,8 @@ handle_always_inline_attribute (node, name, args, flags, no_add_attrs) ...@@ -4956,12 +4805,8 @@ handle_always_inline_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_used_attribute (pnode, name, args, flags, no_add_attrs) handle_used_attribute (tree *pnode, tree name, tree args ATTRIBUTE_UNUSED,
tree *pnode; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args ATTRIBUTE_UNUSED;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree node = *pnode; tree node = *pnode;
...@@ -4982,12 +4827,8 @@ handle_used_attribute (pnode, name, args, flags, no_add_attrs) ...@@ -4982,12 +4827,8 @@ handle_used_attribute (pnode, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_unused_attribute (node, name, args, flags, no_add_attrs) handle_unused_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args ATTRIBUTE_UNUSED;
int flags;
bool *no_add_attrs;
{ {
if (DECL_P (*node)) if (DECL_P (*node))
{ {
...@@ -5019,12 +4860,8 @@ handle_unused_attribute (node, name, args, flags, no_add_attrs) ...@@ -5019,12 +4860,8 @@ handle_unused_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_const_attribute (node, name, args, flags, no_add_attrs) handle_const_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args ATTRIBUTE_UNUSED;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree type = TREE_TYPE (*node); tree type = TREE_TYPE (*node);
...@@ -5050,12 +4887,9 @@ handle_const_attribute (node, name, args, flags, no_add_attrs) ...@@ -5050,12 +4887,9 @@ handle_const_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_transparent_union_attribute (node, name, args, flags, no_add_attrs) handle_transparent_union_attribute (tree *node, tree name,
tree *node; tree args ATTRIBUTE_UNUSED, int flags,
tree name; _Bool *no_add_attrs)
tree args ATTRIBUTE_UNUSED;
int flags;
bool *no_add_attrs;
{ {
tree decl = NULL_TREE; tree decl = NULL_TREE;
tree *type = NULL; tree *type = NULL;
...@@ -5097,12 +4931,10 @@ handle_transparent_union_attribute (node, name, args, flags, no_add_attrs) ...@@ -5097,12 +4931,10 @@ handle_transparent_union_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_constructor_attribute (node, name, args, flags, no_add_attrs) handle_constructor_attribute (tree *node, tree name,
tree *node; tree args ATTRIBUTE_UNUSED,
tree name; int flags ATTRIBUTE_UNUSED,
tree args ATTRIBUTE_UNUSED; _Bool *no_add_attrs)
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree decl = *node; tree decl = *node;
tree type = TREE_TYPE (decl); tree type = TREE_TYPE (decl);
...@@ -5127,12 +4959,10 @@ handle_constructor_attribute (node, name, args, flags, no_add_attrs) ...@@ -5127,12 +4959,10 @@ handle_constructor_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_destructor_attribute (node, name, args, flags, no_add_attrs) handle_destructor_attribute (tree *node, tree name,
tree *node; tree args ATTRIBUTE_UNUSED,
tree name; int flags ATTRIBUTE_UNUSED,
tree args ATTRIBUTE_UNUSED; _Bool *no_add_attrs)
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree decl = *node; tree decl = *node;
tree type = TREE_TYPE (decl); tree type = TREE_TYPE (decl);
...@@ -5157,12 +4987,8 @@ handle_destructor_attribute (node, name, args, flags, no_add_attrs) ...@@ -5157,12 +4987,8 @@ handle_destructor_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_mode_attribute (node, name, args, flags, no_add_attrs) handle_mode_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree type = *node; tree type = *node;
...@@ -5246,12 +5072,8 @@ handle_mode_attribute (node, name, args, flags, no_add_attrs) ...@@ -5246,12 +5072,8 @@ handle_mode_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_section_attribute (node, name, args, flags, no_add_attrs) handle_section_attribute (tree *node, tree name ATTRIBUTE_UNUSED, tree args,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name ATTRIBUTE_UNUSED;
tree args;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree decl = *node; tree decl = *node;
...@@ -5304,12 +5126,8 @@ handle_section_attribute (node, name, args, flags, no_add_attrs) ...@@ -5304,12 +5126,8 @@ handle_section_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_aligned_attribute (node, name, args, flags, no_add_attrs) handle_aligned_attribute (tree *node, tree name ATTRIBUTE_UNUSED, tree args,
tree *node; int flags, _Bool *no_add_attrs)
tree name ATTRIBUTE_UNUSED;
tree args;
int flags;
bool *no_add_attrs;
{ {
tree decl = NULL_TREE; tree decl = NULL_TREE;
tree *type = NULL; tree *type = NULL;
...@@ -5388,12 +5206,10 @@ handle_aligned_attribute (node, name, args, flags, no_add_attrs) ...@@ -5388,12 +5206,10 @@ handle_aligned_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_weak_attribute (node, name, args, flags, no_add_attrs) handle_weak_attribute (tree *node, tree name ATTRIBUTE_UNUSED,
tree *node; tree args ATTRIBUTE_UNUSED,
tree name ATTRIBUTE_UNUSED; int flags ATTRIBUTE_UNUSED,
tree args ATTRIBUTE_UNUSED; _Bool *no_add_attrs ATTRIBUTE_UNUSED)
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs ATTRIBUTE_UNUSED;
{ {
declare_weak (*node); declare_weak (*node);
...@@ -5404,12 +5220,8 @@ handle_weak_attribute (node, name, args, flags, no_add_attrs) ...@@ -5404,12 +5220,8 @@ handle_weak_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_alias_attribute (node, name, args, flags, no_add_attrs) handle_alias_attribute (tree *node, tree name, tree args,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree decl = *node; tree decl = *node;
...@@ -5453,12 +5265,9 @@ handle_alias_attribute (node, name, args, flags, no_add_attrs) ...@@ -5453,12 +5265,9 @@ handle_alias_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_visibility_attribute (node, name, args, flags, no_add_attrs) handle_visibility_attribute (tree *node, tree name, tree args,
tree *node; int flags ATTRIBUTE_UNUSED,
tree name; _Bool *no_add_attrs)
tree args;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree decl = *node; tree decl = *node;
...@@ -5496,12 +5305,8 @@ handle_visibility_attribute (node, name, args, flags, no_add_attrs) ...@@ -5496,12 +5305,8 @@ handle_visibility_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_tls_model_attribute (node, name, args, flags, no_add_attrs) handle_tls_model_attribute (tree *node, tree name, tree args,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree decl = *node; tree decl = *node;
...@@ -5539,12 +5344,10 @@ handle_tls_model_attribute (node, name, args, flags, no_add_attrs) ...@@ -5539,12 +5344,10 @@ handle_tls_model_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_no_instrument_function_attribute (node, name, args, flags, no_add_attrs) handle_no_instrument_function_attribute (tree *node, tree name,
tree *node; tree args ATTRIBUTE_UNUSED,
tree name; int flags ATTRIBUTE_UNUSED,
tree args ATTRIBUTE_UNUSED; _Bool *no_add_attrs)
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree decl = *node; tree decl = *node;
...@@ -5572,12 +5375,8 @@ handle_no_instrument_function_attribute (node, name, args, flags, no_add_attrs) ...@@ -5572,12 +5375,8 @@ handle_no_instrument_function_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_malloc_attribute (node, name, args, flags, no_add_attrs) handle_malloc_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args ATTRIBUTE_UNUSED;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
if (TREE_CODE (*node) == FUNCTION_DECL) if (TREE_CODE (*node) == FUNCTION_DECL)
DECL_IS_MALLOC (*node) = 1; DECL_IS_MALLOC (*node) = 1;
...@@ -5595,12 +5394,10 @@ handle_malloc_attribute (node, name, args, flags, no_add_attrs) ...@@ -5595,12 +5394,10 @@ handle_malloc_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_no_limit_stack_attribute (node, name, args, flags, no_add_attrs) handle_no_limit_stack_attribute (tree *node, tree name,
tree *node; tree args ATTRIBUTE_UNUSED,
tree name; int flags ATTRIBUTE_UNUSED,
tree args ATTRIBUTE_UNUSED; _Bool *no_add_attrs)
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree decl = *node; tree decl = *node;
...@@ -5628,12 +5425,8 @@ handle_no_limit_stack_attribute (node, name, args, flags, no_add_attrs) ...@@ -5628,12 +5425,8 @@ handle_no_limit_stack_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_pure_attribute (node, name, args, flags, no_add_attrs) handle_pure_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args ATTRIBUTE_UNUSED;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
if (TREE_CODE (*node) == FUNCTION_DECL) if (TREE_CODE (*node) == FUNCTION_DECL)
DECL_IS_PURE (*node) = 1; DECL_IS_PURE (*node) = 1;
...@@ -5649,24 +5442,21 @@ handle_pure_attribute (node, name, args, flags, no_add_attrs) ...@@ -5649,24 +5442,21 @@ handle_pure_attribute (node, name, args, flags, no_add_attrs)
/* Handle a "deprecated" attribute; arguments as in /* Handle a "deprecated" attribute; arguments as in
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_deprecated_attribute (node, name, args, flags, no_add_attrs) handle_deprecated_attribute (tree *node, tree name,
tree *node; tree args ATTRIBUTE_UNUSED, int flags,
tree name; _Bool *no_add_attrs)
tree args ATTRIBUTE_UNUSED;
int flags;
bool *no_add_attrs;
{ {
tree type = NULL_TREE; tree type = NULL_TREE;
int warn = 0; int warn = 0;
const char *what = NULL; const char *what = NULL;
if (DECL_P (*node)) if (DECL_P (*node))
{ {
tree decl = *node; tree decl = *node;
type = TREE_TYPE (decl); type = TREE_TYPE (decl);
if (TREE_CODE (decl) == TYPE_DECL if (TREE_CODE (decl) == TYPE_DECL
|| TREE_CODE (decl) == PARM_DECL || TREE_CODE (decl) == PARM_DECL
|| TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == VAR_DECL
...@@ -5685,7 +5475,7 @@ handle_deprecated_attribute (node, name, args, flags, no_add_attrs) ...@@ -5685,7 +5475,7 @@ handle_deprecated_attribute (node, name, args, flags, no_add_attrs)
} }
else else
warn = 1; warn = 1;
if (warn) if (warn)
{ {
*no_add_attrs = true; *no_add_attrs = true;
...@@ -5701,7 +5491,7 @@ handle_deprecated_attribute (node, name, args, flags, no_add_attrs) ...@@ -5701,7 +5491,7 @@ handle_deprecated_attribute (node, name, args, flags, no_add_attrs)
warning ("`%s' attribute ignored for `%s'", warning ("`%s' attribute ignored for `%s'",
IDENTIFIER_POINTER (name), what); IDENTIFIER_POINTER (name), what);
else else
warning ("`%s' attribute ignored", warning ("`%s' attribute ignored",
IDENTIFIER_POINTER (name)); IDENTIFIER_POINTER (name));
} }
...@@ -5719,12 +5509,9 @@ static GTY(()) tree vector_type_node_list = 0; ...@@ -5719,12 +5509,9 @@ static GTY(()) tree vector_type_node_list = 0;
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_vector_size_attribute (node, name, args, flags, no_add_attrs) handle_vector_size_attribute (tree *node, tree name, tree args,
tree *node; int flags ATTRIBUTE_UNUSED,
tree name; _Bool *no_add_attrs)
tree args;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
unsigned HOST_WIDE_INT vecsize, nunits; unsigned HOST_WIDE_INT vecsize, nunits;
enum machine_mode mode, orig_mode, new_mode; enum machine_mode mode, orig_mode, new_mode;
...@@ -5870,8 +5657,7 @@ handle_vector_size_attribute (node, name, args, flags, no_add_attrs) ...@@ -5870,8 +5657,7 @@ handle_vector_size_attribute (node, name, args, flags, no_add_attrs)
new type which we will point to. */ new type which we will point to. */
static tree static tree
vector_size_helper (type, bottom) vector_size_helper (tree type, tree bottom)
tree type, bottom;
{ {
tree inner, outer; tree inner, outer;
...@@ -5892,7 +5678,7 @@ vector_size_helper (type, bottom) ...@@ -5892,7 +5678,7 @@ vector_size_helper (type, bottom)
} }
else else
return bottom; return bottom;
TREE_READONLY (outer) = TREE_READONLY (type); TREE_READONLY (outer) = TREE_READONLY (type);
TREE_THIS_VOLATILE (outer) = TREE_THIS_VOLATILE (type); TREE_THIS_VOLATILE (outer) = TREE_THIS_VOLATILE (type);
...@@ -5901,12 +5687,9 @@ vector_size_helper (type, bottom) ...@@ -5901,12 +5687,9 @@ vector_size_helper (type, bottom)
/* Handle the "nonnull" attribute. */ /* Handle the "nonnull" attribute. */
static tree static tree
handle_nonnull_attribute (node, name, args, flags, no_add_attrs) handle_nonnull_attribute (tree *node, tree name ATTRIBUTE_UNUSED,
tree *node; tree args, int flags ATTRIBUTE_UNUSED,
tree name ATTRIBUTE_UNUSED; _Bool *no_add_attrs)
tree args;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree type = *node; tree type = *node;
unsigned HOST_WIDE_INT attr_arg_num; unsigned HOST_WIDE_INT attr_arg_num;
...@@ -5975,9 +5758,7 @@ handle_nonnull_attribute (node, name, args, flags, no_add_attrs) ...@@ -5975,9 +5758,7 @@ handle_nonnull_attribute (node, name, args, flags, no_add_attrs)
that are marked as requiring a non-null pointer argument. */ that are marked as requiring a non-null pointer argument. */
static void static void
check_function_nonnull (attrs, params) check_function_nonnull (tree attrs, tree params)
tree attrs;
tree params;
{ {
tree a, args, param; tree a, args, param;
int param_num; int param_num;
...@@ -5996,11 +5777,11 @@ check_function_nonnull (attrs, params) ...@@ -5996,11 +5777,11 @@ check_function_nonnull (attrs, params)
param_num++, param = TREE_CHAIN (param)) param_num++, param = TREE_CHAIN (param))
{ {
if (! param) if (! param)
break; break;
if (! args || nonnull_check_p (args, param_num)) if (! args || nonnull_check_p (args, param_num))
check_function_arguments_recurse (check_nonnull_arg, NULL, check_function_arguments_recurse (check_nonnull_arg, NULL,
TREE_VALUE (param), TREE_VALUE (param),
param_num); param_num);
} }
} }
} }
...@@ -6011,9 +5792,7 @@ check_function_nonnull (attrs, params) ...@@ -6011,9 +5792,7 @@ check_function_nonnull (attrs, params)
checked. */ checked. */
static bool static bool
nonnull_check_p (args, param_num) nonnull_check_p (tree args, unsigned HOST_WIDE_INT param_num)
tree args;
unsigned HOST_WIDE_INT param_num;
{ {
unsigned HOST_WIDE_INT arg_num; unsigned HOST_WIDE_INT arg_num;
...@@ -6033,10 +5812,8 @@ nonnull_check_p (args, param_num) ...@@ -6033,10 +5812,8 @@ nonnull_check_p (args, param_num)
via check_function_arguments_recurse. */ via check_function_arguments_recurse. */
static void static void
check_nonnull_arg (ctx, param, param_num) check_nonnull_arg (void *ctx ATTRIBUTE_UNUSED, tree param,
void *ctx ATTRIBUTE_UNUSED; unsigned HOST_WIDE_INT param_num)
tree param;
unsigned HOST_WIDE_INT param_num;
{ {
/* Just skip checking the argument if it's not a pointer. This can /* Just skip checking the argument if it's not a pointer. This can
happen if the "nonnull" attribute was given without an operand happen if the "nonnull" attribute was given without an operand
...@@ -6054,9 +5831,7 @@ check_nonnull_arg (ctx, param, param_num) ...@@ -6054,9 +5831,7 @@ check_nonnull_arg (ctx, param, param_num)
from the attribute argument list. */ from the attribute argument list. */
static bool static bool
get_nonnull_operand (arg_num_expr, valp) get_nonnull_operand (tree arg_num_expr, unsigned HOST_WIDE_INT *valp)
tree arg_num_expr;
unsigned HOST_WIDE_INT *valp;
{ {
/* Strip any conversions from the arg number and verify they /* Strip any conversions from the arg number and verify they
are constants. */ are constants. */
...@@ -6077,12 +5852,8 @@ get_nonnull_operand (arg_num_expr, valp) ...@@ -6077,12 +5852,8 @@ get_nonnull_operand (arg_num_expr, valp)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_nothrow_attribute (node, name, args, flags, no_add_attrs) handle_nothrow_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args ATTRIBUTE_UNUSED;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
if (TREE_CODE (*node) == FUNCTION_DECL) if (TREE_CODE (*node) == FUNCTION_DECL)
TREE_NOTHROW (*node) = 1; TREE_NOTHROW (*node) = 1;
...@@ -6100,12 +5871,8 @@ handle_nothrow_attribute (node, name, args, flags, no_add_attrs) ...@@ -6100,12 +5871,8 @@ handle_nothrow_attribute (node, name, args, flags, no_add_attrs)
struct attribute_spec.handler. */ struct attribute_spec.handler. */
static tree static tree
handle_cleanup_attribute (node, name, args, flags, no_add_attrs) handle_cleanup_attribute (tree *node, tree name, tree args,
tree *node; int flags ATTRIBUTE_UNUSED, _Bool *no_add_attrs)
tree name;
tree args;
int flags ATTRIBUTE_UNUSED;
bool *no_add_attrs;
{ {
tree decl = *node; tree decl = *node;
tree cleanup_id, cleanup_decl; tree cleanup_id, cleanup_decl;
...@@ -6139,7 +5906,7 @@ handle_cleanup_attribute (node, name, args, flags, no_add_attrs) ...@@ -6139,7 +5906,7 @@ handle_cleanup_attribute (node, name, args, flags, no_add_attrs)
return NULL_TREE; return NULL_TREE;
} }
/* That the function has proper type is checked with the /* That the function has proper type is checked with the
eventual call to build_function_call. */ eventual call to build_function_call. */
return NULL_TREE; return NULL_TREE;
...@@ -6147,9 +5914,7 @@ handle_cleanup_attribute (node, name, args, flags, no_add_attrs) ...@@ -6147,9 +5914,7 @@ handle_cleanup_attribute (node, name, args, flags, no_add_attrs)
/* Check for valid arguments being passed to a function. */ /* Check for valid arguments being passed to a function. */
void void
check_function_arguments (attrs, params) check_function_arguments (tree attrs, tree params)
tree attrs;
tree params;
{ {
/* Check for null being passed in a pointer argument that must be /* Check for null being passed in a pointer argument that must be
non-null. We also need to do this if format checking is enabled. */ non-null. We also need to do this if format checking is enabled. */
...@@ -6167,11 +5932,10 @@ check_function_arguments (attrs, params) ...@@ -6167,11 +5932,10 @@ check_function_arguments (attrs, params)
be checked. PARAM_NUM is the number of the argument. CALLBACK is invoked be checked. PARAM_NUM is the number of the argument. CALLBACK is invoked
once the argument is resolved. CTX is context for the callback. */ once the argument is resolved. CTX is context for the callback. */
void void
check_function_arguments_recurse (callback, ctx, param, param_num) check_function_arguments_recurse (void (*callback)
void (*callback) PARAMS ((void *, tree, unsigned HOST_WIDE_INT)); (void *, tree, unsigned HOST_WIDE_INT),
void *ctx; void *ctx, tree param,
tree param; unsigned HOST_WIDE_INT param_num)
unsigned HOST_WIDE_INT param_num;
{ {
if (TREE_CODE (param) == NOP_EXPR) if (TREE_CODE (param) == NOP_EXPR)
{ {
......
...@@ -305,38 +305,35 @@ struct c_language_function GTY(()) { ...@@ -305,38 +305,35 @@ struct c_language_function GTY(()) {
/* Language-specific hooks. */ /* Language-specific hooks. */
extern void (*lang_expand_stmt) PARAMS ((tree)); extern void (*lang_expand_stmt) (tree);
extern void (*lang_expand_decl_stmt) PARAMS ((tree)); extern void (*lang_expand_decl_stmt) (tree);
extern void (*lang_expand_function_end) PARAMS ((void)); extern void (*lang_expand_function_end) (void);
extern tree gettags PARAMS ((void)); extern tree gettags (void);
/* Callback that determines if it's ok for a function to have no /* Callback that determines if it's ok for a function to have no
noreturn attribute. */ noreturn attribute. */
extern int (*lang_missing_noreturn_ok_p) PARAMS ((tree)); extern int (*lang_missing_noreturn_ok_p) (tree);
extern int yyparse PARAMS ((void)); extern int yyparse (void);
extern void free_parser_stacks PARAMS ((void)); extern void free_parser_stacks (void);
extern stmt_tree current_stmt_tree PARAMS ((void)); extern stmt_tree current_stmt_tree (void);
extern tree *current_scope_stmt_stack PARAMS ((void)); extern tree *current_scope_stmt_stack (void);
extern void begin_stmt_tree PARAMS ((tree *)); extern void begin_stmt_tree (tree *);
extern tree add_stmt PARAMS ((tree)); extern tree add_stmt (tree);
extern void add_decl_stmt PARAMS ((tree)); extern void add_decl_stmt (tree);
extern tree add_scope_stmt PARAMS ((int, int)); extern tree add_scope_stmt (int, int);
extern void finish_stmt_tree PARAMS ((tree *)); extern void finish_stmt_tree (tree *);
extern tree walk_stmt_tree PARAMS ((tree *, extern tree walk_stmt_tree (tree *, walk_tree_fn, void *);
walk_tree_fn, extern void prep_stmt (tree);
void *)); extern void expand_stmt (tree);
extern void prep_stmt PARAMS ((tree)); extern tree c_begin_if_stmt (void);
extern void expand_stmt PARAMS ((tree)); extern tree c_begin_while_stmt (void);
extern tree c_begin_if_stmt PARAMS ((void)); extern void c_finish_while_stmt_cond (tree, tree);
extern tree c_begin_while_stmt PARAMS ((void));
extern void c_finish_while_stmt_cond PARAMS ((tree, tree));
enum sw_kind { SW_PARAM = 0, SW_LOCAL, SW_GLOBAL }; enum sw_kind { SW_PARAM = 0, SW_LOCAL, SW_GLOBAL };
extern void shadow_warning PARAMS ((enum sw_kind, extern void shadow_warning (enum sw_kind, const char *, tree);
const char *, tree));
/* Extra information associated with a DECL. Other C dialects extend /* Extra information associated with a DECL. Other C dialects extend
this structure in various ways. The C front-end only uses this this structure in various ways. The C front-end only uses this
...@@ -876,66 +873,62 @@ extern const struct attribute_spec c_common_format_attribute_table[]; ...@@ -876,66 +873,62 @@ extern const struct attribute_spec c_common_format_attribute_table[];
TYPE_DEP indicates whether it depends on type of the function or not TYPE_DEP indicates whether it depends on type of the function or not
(i.e. __PRETTY_FUNCTION__). */ (i.e. __PRETTY_FUNCTION__). */
extern tree (*make_fname_decl) PARAMS ((tree, int)); extern tree (*make_fname_decl) (tree, int);
extern tree identifier_global_value PARAMS ((tree)); extern tree identifier_global_value (tree);
extern void record_builtin_type PARAMS ((enum rid, extern void record_builtin_type (enum rid, const char *, tree);
const char *, tree)); extern tree build_void_list_node (void);
extern tree build_void_list_node PARAMS ((void)); extern void start_fname_decls (void);
extern void start_fname_decls PARAMS ((void)); extern void finish_fname_decls (void);
extern void finish_fname_decls PARAMS ((void)); extern const char *fname_as_string (int);
extern const char *fname_as_string PARAMS ((int)); extern tree fname_decl (unsigned, tree);
extern tree fname_decl PARAMS ((unsigned, tree)); extern const char *fname_string (unsigned);
extern const char *fname_string PARAMS ((unsigned));
extern void check_function_arguments (tree, tree);
extern void check_function_arguments PARAMS ((tree, tree)); extern void check_function_arguments_recurse (void (*)
extern void check_function_arguments_recurse PARAMS ((void (*) (void *, (void *, tree,
tree, unsigned HOST_WIDE_INT),
unsigned HOST_WIDE_INT), void *, tree,
void *, tree, unsigned HOST_WIDE_INT);
unsigned HOST_WIDE_INT)); extern void check_function_format (int *, tree, tree);
extern void check_function_format PARAMS ((int *, tree, tree)); extern void set_Wformat (int);
extern void set_Wformat PARAMS ((int)); extern tree handle_format_attribute (tree *, tree, tree, int, bool *);
extern tree handle_format_attribute PARAMS ((tree *, tree, tree, extern tree handle_format_arg_attribute (tree *, tree, tree, int, bool *);
int, bool *)); extern void c_common_insert_default_attributes (tree);
extern tree handle_format_arg_attribute PARAMS ((tree *, tree, tree,
int, bool *));
extern void c_common_insert_default_attributes PARAMS ((tree));
extern int c_common_handle_option (size_t code, const char *arg, int value); extern int c_common_handle_option (size_t code, const char *arg, int value);
extern tree c_common_type_for_mode PARAMS ((enum machine_mode, extern tree c_common_type_for_mode (enum machine_mode, int);
int)); extern tree c_common_type_for_size (unsigned int, int);
extern tree c_common_type_for_size PARAMS ((unsigned int, int)); extern tree c_common_unsigned_type (tree);
extern tree c_common_unsigned_type PARAMS ((tree)); extern tree c_common_signed_type (tree);
extern tree c_common_signed_type PARAMS ((tree)); extern tree c_common_signed_or_unsigned_type (int, tree);
extern tree c_common_signed_or_unsigned_type PARAMS ((int, tree)); extern tree c_common_truthvalue_conversion (tree);
extern tree c_common_truthvalue_conversion PARAMS ((tree)); extern void c_apply_type_quals_to_decl (int, tree);
extern void c_apply_type_quals_to_decl PARAMS ((int, tree)); extern tree c_sizeof_or_alignof_type (tree, enum tree_code, int);
extern tree c_sizeof_or_alignof_type PARAMS ((tree, enum tree_code, int)); extern tree c_alignof_expr (tree);
extern tree c_alignof_expr PARAMS ((tree));
/* Print an error message for invalid operands to arith operation CODE. /* Print an error message for invalid operands to arith operation CODE.
NOP_EXPR is used as a special case (see truthvalue_conversion). */ NOP_EXPR is used as a special case (see truthvalue_conversion). */
extern void binary_op_error PARAMS ((enum tree_code)); extern void binary_op_error (enum tree_code);
#define my_friendly_assert(EXP, N) (void) \ #define my_friendly_assert(EXP, N) (void) \
(((EXP) == 0) ? (fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0) : 0) (((EXP) == 0) ? (fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0) : 0)
extern tree c_expand_expr_stmt PARAMS ((tree)); extern tree c_expand_expr_stmt (tree);
extern void c_expand_start_cond PARAMS ((tree, int, tree)); extern void c_expand_start_cond (tree, int, tree);
extern void c_finish_then PARAMS ((void)); extern void c_finish_then (void);
extern void c_expand_start_else PARAMS ((void)); extern void c_expand_start_else (void);
extern void c_finish_else PARAMS ((void)); extern void c_finish_else (void);
extern void c_expand_end_cond PARAMS ((void)); extern void c_expand_end_cond (void);
/* Validate the expression after `case' and apply default promotions. */ /* Validate the expression after `case' and apply default promotions. */
extern tree check_case_value PARAMS ((tree)); extern tree check_case_value (tree);
extern tree fix_string_type PARAMS ((tree)); extern tree fix_string_type (tree);
struct varray_head_tag; struct varray_head_tag;
extern tree combine_strings PARAMS ((struct varray_head_tag *)); extern tree combine_strings (struct varray_head_tag *);
extern void constant_expression_warning PARAMS ((tree)); extern void constant_expression_warning (tree);
extern tree convert_and_check PARAMS ((tree, tree)); extern tree convert_and_check (tree, tree);
extern void overflow_warning PARAMS ((tree)); extern void overflow_warning (tree);
extern void unsigned_conversion_warning PARAMS ((tree, tree)); extern void unsigned_conversion_warning (tree, tree);
/* Read the rest of the current #-directive line. */ /* Read the rest of the current #-directive line. */
extern char *get_directive_line PARAMS ((void)); extern char *get_directive_line (void);
#define GET_DIRECTIVE_LINE() get_directive_line () #define GET_DIRECTIVE_LINE() get_directive_line ()
#define c_sizeof(T) c_sizeof_or_alignof_type (T, SIZEOF_EXPR, 1) #define c_sizeof(T) c_sizeof_or_alignof_type (T, SIZEOF_EXPR, 1)
#define c_alignof(T) c_sizeof_or_alignof_type (T, ALIGNOF_EXPR, 1) #define c_alignof(T) c_sizeof_or_alignof_type (T, ALIGNOF_EXPR, 1)
...@@ -943,31 +936,31 @@ extern char *get_directive_line PARAMS ((void)); ...@@ -943,31 +936,31 @@ extern char *get_directive_line PARAMS ((void));
/* Subroutine of build_binary_op, used for comparison operations. /* Subroutine of build_binary_op, used for comparison operations.
See if the operands have both been converted from subword integer types See if the operands have both been converted from subword integer types
and, if so, perhaps change them both back to their original type. */ and, if so, perhaps change them both back to their original type. */
extern tree shorten_compare PARAMS ((tree *, tree *, tree *, enum tree_code *)); extern tree shorten_compare (tree *, tree *, tree *, enum tree_code *);
extern tree pointer_int_sum PARAMS ((enum tree_code, tree, tree)); extern tree pointer_int_sum (enum tree_code, tree, tree);
extern unsigned int min_precision PARAMS ((tree, int)); extern unsigned int min_precision (tree, int);
/* Add qualifiers to a type, in the fashion for C. */ /* Add qualifiers to a type, in the fashion for C. */
extern tree c_build_qualified_type PARAMS ((tree, int)); extern tree c_build_qualified_type (tree, int);
/* Build tree nodes and builtin functions common to both C and C++ language /* Build tree nodes and builtin functions common to both C and C++ language
frontends. */ frontends. */
extern void c_common_nodes_and_builtins PARAMS ((void)); extern void c_common_nodes_and_builtins (void);
extern void disable_builtin_function PARAMS ((const char *)); extern void disable_builtin_function (const char *);
extern tree build_va_arg PARAMS ((tree, tree)); extern tree build_va_arg (tree, tree);
extern int c_common_init_options PARAMS ((enum c_language_kind)); extern int c_common_init_options (enum c_language_kind);
extern bool c_common_post_options PARAMS ((const char **)); extern bool c_common_post_options (const char **);
extern bool c_common_init PARAMS ((void)); extern bool c_common_init (void);
extern void c_common_finish PARAMS ((void)); extern void c_common_finish (void);
extern void c_common_parse_file PARAMS ((int)); extern void c_common_parse_file (int);
extern HOST_WIDE_INT c_common_get_alias_set PARAMS ((tree)); extern HOST_WIDE_INT c_common_get_alias_set (tree);
extern bool c_promoting_integer_type_p PARAMS ((tree)); extern bool c_promoting_integer_type_p (tree);
extern int self_promoting_args_p PARAMS ((tree)); extern int self_promoting_args_p (tree);
extern tree strip_array_types PARAMS ((tree)); extern tree strip_array_types (tree);
/* These macros provide convenient access to the various _STMT nodes. */ /* These macros provide convenient access to the various _STMT nodes. */
...@@ -1172,28 +1165,26 @@ extern bool statement_code_p[MAX_TREE_CODES]; ...@@ -1172,28 +1165,26 @@ extern bool statement_code_p[MAX_TREE_CODES];
statement_code_p[STMT_CODES[i]] = true; \ statement_code_p[STMT_CODES[i]] = true; \
} while (0) } while (0)
extern void genrtl_do_pushlevel PARAMS ((void)); extern void genrtl_do_pushlevel (void);
extern void genrtl_goto_stmt PARAMS ((tree)); extern void genrtl_goto_stmt (tree);
extern void genrtl_expr_stmt PARAMS ((tree)); extern void genrtl_expr_stmt (tree);
extern void genrtl_expr_stmt_value PARAMS ((tree, int, int)); extern void genrtl_expr_stmt_value (tree, int, int);
extern void genrtl_decl_stmt PARAMS ((tree)); extern void genrtl_decl_stmt (tree);
extern void genrtl_if_stmt PARAMS ((tree)); extern void genrtl_if_stmt (tree);
extern void genrtl_while_stmt PARAMS ((tree)); extern void genrtl_while_stmt (tree);
extern void genrtl_do_stmt PARAMS ((tree)); extern void genrtl_do_stmt (tree);
extern void genrtl_return_stmt PARAMS ((tree)); extern void genrtl_return_stmt (tree);
extern void genrtl_for_stmt PARAMS ((tree)); extern void genrtl_for_stmt (tree);
extern void genrtl_break_stmt PARAMS ((void)); extern void genrtl_break_stmt (void);
extern void genrtl_continue_stmt PARAMS ((void)); extern void genrtl_continue_stmt (void);
extern void genrtl_scope_stmt PARAMS ((tree)); extern void genrtl_scope_stmt (tree);
extern void genrtl_switch_stmt PARAMS ((tree)); extern void genrtl_switch_stmt (tree);
extern void genrtl_case_label PARAMS ((tree)); extern void genrtl_case_label (tree);
extern void genrtl_compound_stmt PARAMS ((tree)); extern void genrtl_compound_stmt (tree);
extern void genrtl_asm_stmt PARAMS ((tree, tree, extern void genrtl_asm_stmt (tree, tree, tree, tree, tree, int);
tree, tree, extern void genrtl_cleanup_stmt (tree);
tree, int)); extern int stmts_are_full_exprs_p (void);
extern void genrtl_cleanup_stmt PARAMS ((tree)); extern int anon_aggr_type_p (tree);
extern int stmts_are_full_exprs_p PARAMS ((void));
extern int anon_aggr_type_p PARAMS ((tree));
/* For a VAR_DECL that is an anonymous union, these are the various /* For a VAR_DECL that is an anonymous union, these are the various
sub-variables that make up the anonymous union. */ sub-variables that make up the anonymous union. */
...@@ -1211,16 +1202,16 @@ extern int anon_aggr_type_p PARAMS ((tree)); ...@@ -1211,16 +1202,16 @@ extern int anon_aggr_type_p PARAMS ((tree));
an explicit asm specification. */ an explicit asm specification. */
#define DECL_C_HARD_REGISTER(DECL) DECL_LANG_FLAG_4 (VAR_DECL_CHECK (DECL)) #define DECL_C_HARD_REGISTER(DECL) DECL_LANG_FLAG_4 (VAR_DECL_CHECK (DECL))
extern void emit_local_var PARAMS ((tree)); extern void emit_local_var (tree);
extern void make_rtl_for_local_static PARAMS ((tree)); extern void make_rtl_for_local_static (tree);
extern tree expand_cond PARAMS ((tree)); extern tree expand_cond (tree);
extern tree c_expand_return PARAMS ((tree)); extern tree c_expand_return (tree);
extern tree do_case PARAMS ((tree, tree)); extern tree do_case (tree, tree);
extern tree build_stmt PARAMS ((enum tree_code, ...)); extern tree build_stmt (enum tree_code, ...);
extern tree build_case_label PARAMS ((tree, tree, tree)); extern tree build_case_label (tree, tree, tree);
extern tree build_continue_stmt PARAMS ((void)); extern tree build_continue_stmt (void);
extern tree build_break_stmt PARAMS ((void)); extern tree build_break_stmt (void);
extern tree build_return_stmt PARAMS ((tree)); extern tree build_return_stmt (tree);
#define COMPOUND_STMT_NO_SCOPE(NODE) TREE_LANG_FLAG_0 (NODE) #define COMPOUND_STMT_NO_SCOPE(NODE) TREE_LANG_FLAG_0 (NODE)
...@@ -1228,63 +1219,55 @@ extern tree build_return_stmt PARAMS ((tree)); ...@@ -1228,63 +1219,55 @@ extern tree build_return_stmt PARAMS ((tree));
initializers and cleanups. */ initializers and cleanups. */
#define COMPOUND_STMT_BODY_BLOCK(NODE) TREE_LANG_FLAG_3 (NODE) #define COMPOUND_STMT_BODY_BLOCK(NODE) TREE_LANG_FLAG_3 (NODE)
extern void c_expand_asm_operands PARAMS ((tree, tree, tree, tree, int, const char *, int)); extern void c_expand_asm_operands (tree, tree, tree, tree, int, const char *, int);
/* These functions must be defined by each front-end which implements /* These functions must be defined by each front-end which implements
a variant of the C language. They are used in c-common.c. */ a variant of the C language. They are used in c-common.c. */
extern tree build_unary_op PARAMS ((enum tree_code, extern tree build_unary_op (enum tree_code, tree, int);
tree, int)); extern tree build_binary_op (enum tree_code, tree, tree, int);
extern tree build_binary_op PARAMS ((enum tree_code, extern int lvalue_p (tree);
tree, tree, int)); extern tree default_conversion (tree);
extern int lvalue_p PARAMS ((tree));
extern tree default_conversion PARAMS ((tree));
/* Given two integer or real types, return the type for their sum. /* Given two integer or real types, return the type for their sum.
Given two compatible ANSI C types, returns the merged type. */ Given two compatible ANSI C types, returns the merged type. */
extern tree common_type PARAMS ((tree, tree)); extern tree common_type (tree, tree);
extern tree expand_tree_builtin PARAMS ((tree, tree, tree)); extern tree expand_tree_builtin (tree, tree, tree);
extern tree decl_constant_value PARAMS ((tree)); extern tree decl_constant_value (tree);
/* Handle increment and decrement of boolean types. */ /* Handle increment and decrement of boolean types. */
extern tree boolean_increment PARAMS ((enum tree_code, extern tree boolean_increment (enum tree_code, tree);
tree));
/* Hook currently used only by the C++ front end to reset internal state /* Hook currently used only by the C++ front end to reset internal state
after entering or leaving a header file. */ after entering or leaving a header file. */
extern void extract_interface_info PARAMS ((void)); extern void extract_interface_info (void);
extern int case_compare PARAMS ((splay_tree_key, extern int case_compare (splay_tree_key, splay_tree_key);
splay_tree_key));
extern tree c_add_case_label PARAMS ((splay_tree, extern tree c_add_case_label (splay_tree, tree, tree, tree);
tree, tree,
tree));
extern tree build_function_call PARAMS ((tree, tree)); extern tree build_function_call (tree, tree);
extern tree finish_label_address_expr PARAMS ((tree)); extern tree finish_label_address_expr (tree);
/* Same function prototype, but the C and C++ front ends have /* Same function prototype, but the C and C++ front ends have
different implementations. Used in c-common.c. */ different implementations. Used in c-common.c. */
extern tree lookup_label PARAMS ((tree)); extern tree lookup_label (tree);
extern rtx c_expand_expr PARAMS ((tree, rtx, extern rtx c_expand_expr (tree, rtx, enum machine_mode, int);
enum machine_mode,
int));
extern int c_safe_from_p PARAMS ((rtx, tree)); extern int c_safe_from_p (rtx, tree);
extern int c_staticp PARAMS ((tree)); extern int c_staticp (tree);
extern int c_common_unsafe_for_reeval PARAMS ((tree)); extern int c_common_unsafe_for_reeval (tree);
extern void init_c_lex PARAMS ((void)); extern void init_c_lex (void);
extern void c_cpp_builtins PARAMS ((cpp_reader *)); extern void c_cpp_builtins (cpp_reader *);
/* Positive if an implicit `extern "C"' scope has just been entered; /* Positive if an implicit `extern "C"' scope has just been entered;
negative if such a scope has just been exited. */ negative if such a scope has just been exited. */
...@@ -1299,28 +1282,23 @@ struct c_fileinfo ...@@ -1299,28 +1282,23 @@ struct c_fileinfo
short interface_unknown; short interface_unknown;
}; };
struct c_fileinfo *get_fileinfo PARAMS ((const char *)); struct c_fileinfo *get_fileinfo (const char *);
extern void dump_time_statistics PARAMS ((void)); extern void dump_time_statistics (void);
extern bool c_dump_tree PARAMS ((void *, tree)); extern bool c_dump_tree (void *, tree);
extern void pch_init PARAMS ((void)); extern void pch_init (void);
extern int c_common_valid_pch PARAMS ((cpp_reader *pfile, extern int c_common_valid_pch (cpp_reader *pfile, const char *name, int fd);
const char *name, extern void c_common_read_pch (cpp_reader *pfile, const char *name, int fd,
int fd)); const char *orig);
extern void c_common_read_pch PARAMS ((cpp_reader *pfile, extern void c_common_write_pch (void);
const char *name, extern void builtin_define_with_value (const char *, const char *, int);
int fd, extern void c_stddef_cpp_builtins (void);
const char *orig)); extern void fe_file_change (const struct line_map *);
extern void c_common_write_pch PARAMS ((void));
extern void builtin_define_with_value PARAMS ((const char *,
const char *, int));
extern void c_stddef_cpp_builtins PARAMS ((void));
extern void fe_file_change PARAMS ((const struct line_map *));
/* In c-ppoutput.c */ /* In c-ppoutput.c */
extern void init_pp_output PARAMS ((FILE *)); extern void init_pp_output (FILE *);
extern void preprocess_file PARAMS ((cpp_reader *)); extern void preprocess_file (cpp_reader *);
extern void pp_file_change PARAMS ((const struct line_map *)); extern void pp_file_change (const struct line_map *);
#endif /* ! GCC_C_COMMON_H */ #endif /* ! GCC_C_COMMON_H */
/* Language-level data type conversion for GNU C. /* Language-level data type conversion for GNU C.
Copyright (C) 1987, 1988, 1991, 1998, 2002 Free Software Foundation, Inc. Copyright (C) 1987, 1988, 1991, 1998, 2002, 2003
Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -62,8 +63,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -62,8 +63,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
not permitted by the language being compiled. */ not permitted by the language being compiled. */
tree tree
convert (type, expr) convert (tree type, tree expr)
tree type, expr;
{ {
tree e = expr; tree e = expr;
enum tree_code code = TREE_CODE (type); enum tree_code code = TREE_CODE (type);
......
...@@ -45,35 +45,29 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -45,35 +45,29 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#endif #endif
/* Non-static as some targets don't use it. */ /* Non-static as some targets don't use it. */
void builtin_define_std PARAMS ((const char *)) ATTRIBUTE_UNUSED; void builtin_define_std (const char *) ATTRIBUTE_UNUSED;
static void builtin_define_with_value_n PARAMS ((const char *, const char *, static void builtin_define_with_value_n (const char *, const char *,
size_t)); size_t);
static void builtin_define_with_int_value PARAMS ((const char *, static void builtin_define_with_int_value (const char *, HOST_WIDE_INT);
HOST_WIDE_INT)); static void builtin_define_with_hex_fp_value (const char *, tree,
static void builtin_define_with_hex_fp_value PARAMS ((const char *, tree, int, const char *,
int, const char *, const char *);
const char *)); static void builtin_define_type_max (const char *, tree, int);
static void builtin_define_type_max PARAMS ((const char *, tree, int)); static void builtin_define_type_precision (const char *, tree);
static void builtin_define_type_precision PARAMS ((const char *, tree)); static void builtin_define_float_constants (const char *, const char *,
static void builtin_define_float_constants PARAMS ((const char *, tree);
const char *, tree)); static void define__GNUC__ (void);
static void define__GNUC__ PARAMS ((void));
/* Define NAME with value TYPE precision. */ /* Define NAME with value TYPE precision. */
static void static void
builtin_define_type_precision (name, type) builtin_define_type_precision (const char *name, tree type)
const char *name;
tree type;
{ {
builtin_define_with_int_value (name, TYPE_PRECISION (type)); builtin_define_with_int_value (name, TYPE_PRECISION (type));
} }
/* Define the float.h constants for TYPE using NAME_PREFIX and FP_SUFFIX. */ /* Define the float.h constants for TYPE using NAME_PREFIX and FP_SUFFIX. */
static void static void
builtin_define_float_constants (name_prefix, fp_suffix, type) builtin_define_float_constants (const char *name_prefix, const char *fp_suffix, tree type)
const char *name_prefix;
const char *fp_suffix;
tree type;
{ {
/* Used to convert radix-based values to base 10 values in several cases. /* Used to convert radix-based values to base 10 values in several cases.
...@@ -107,7 +101,7 @@ builtin_define_float_constants (name_prefix, fp_suffix, type) ...@@ -107,7 +101,7 @@ builtin_define_float_constants (name_prefix, fp_suffix, type)
p radix b digits and back again without change to the q decimal digits, p radix b digits and back again without change to the q decimal digits,
p log10 b if b is a power of 10 p log10 b if b is a power of 10
floor((p - 1) log10 b) otherwise floor((p - 1) log10 b) otherwise
*/ */
dig = (fmt->p - 1) * log10_b; dig = (fmt->p - 1) * log10_b;
sprintf (name, "__%s_DIG__", name_prefix); sprintf (name, "__%s_DIG__", name_prefix);
...@@ -166,7 +160,7 @@ builtin_define_float_constants (name_prefix, fp_suffix, type) ...@@ -166,7 +160,7 @@ builtin_define_float_constants (name_prefix, fp_suffix, type)
/* The number of decimal digits, n, such that any floating-point number /* The number of decimal digits, n, such that any floating-point number
can be rounded to n decimal digits and back again without change to can be rounded to n decimal digits and back again without change to
the value. the value.
p * log10(b) if b is a power of 10 p * log10(b) if b is a power of 10
ceil(1 + p * log10(b)) otherwise ceil(1 + p * log10(b)) otherwise
...@@ -233,7 +227,7 @@ builtin_define_float_constants (name_prefix, fp_suffix, type) ...@@ -233,7 +227,7 @@ builtin_define_float_constants (name_prefix, fp_suffix, type)
/* For C++ std::numeric_limits<T>::has_infinity. */ /* For C++ std::numeric_limits<T>::has_infinity. */
sprintf (name, "__%s_HAS_INFINITY__", name_prefix); sprintf (name, "__%s_HAS_INFINITY__", name_prefix);
builtin_define_with_int_value (name, builtin_define_with_int_value (name,
MODE_HAS_INFINITIES (TYPE_MODE (type))); MODE_HAS_INFINITIES (TYPE_MODE (type)));
/* For C++ std::numeric_limits<T>::has_quiet_NaN. We do not have a /* For C++ std::numeric_limits<T>::has_quiet_NaN. We do not have a
predicate to distinguish a target that has both quiet and predicate to distinguish a target that has both quiet and
...@@ -246,7 +240,7 @@ builtin_define_float_constants (name_prefix, fp_suffix, type) ...@@ -246,7 +240,7 @@ builtin_define_float_constants (name_prefix, fp_suffix, type)
/* Define __GNUC__, __GNUC_MINOR__ and __GNUC_PATCHLEVEL__. */ /* Define __GNUC__, __GNUC_MINOR__ and __GNUC_PATCHLEVEL__. */
static void static void
define__GNUC__ () define__GNUC__ (void)
{ {
/* The format of the version string, enforced below, is /* The format of the version string, enforced below, is
([^0-9]*-)?[0-9]+[.][0-9]+([.][0-9]+)?([- ].*)? */ ([^0-9]*-)?[0-9]+[.][0-9]+([.][0-9]+)?([- ].*)? */
...@@ -289,8 +283,7 @@ define__GNUC__ () ...@@ -289,8 +283,7 @@ define__GNUC__ ()
/* Hook that registers front end and target-specific built-ins. */ /* Hook that registers front end and target-specific built-ins. */
void void
c_cpp_builtins (pfile) c_cpp_builtins (cpp_reader *pfile)
cpp_reader *pfile;
{ {
/* -undef turns off target-specific built-ins. */ /* -undef turns off target-specific built-ins. */
if (flag_undef) if (flag_undef)
...@@ -357,7 +350,7 @@ c_cpp_builtins (pfile) ...@@ -357,7 +350,7 @@ c_cpp_builtins (pfile)
cpp_define (pfile, "_LP64"); cpp_define (pfile, "_LP64");
cpp_define (pfile, "__LP64__"); cpp_define (pfile, "__LP64__");
} }
/* Other target-independent built-ins determined by command-line /* Other target-independent built-ins determined by command-line
options. */ options. */
if (optimize_size) if (optimize_size)
...@@ -410,8 +403,7 @@ c_cpp_builtins (pfile) ...@@ -410,8 +403,7 @@ c_cpp_builtins (pfile)
"unix". Passing "_mips" defines "__mips", "__mips__" and possibly "unix". Passing "_mips" defines "__mips", "__mips__" and possibly
"_mips". */ "_mips". */
void void
builtin_define_std (macro) builtin_define_std (const char *macro)
const char *macro;
{ {
size_t len = strlen (macro); size_t len = strlen (macro);
char *buff = alloca (len + 5); char *buff = alloca (len + 5);
...@@ -450,10 +442,7 @@ builtin_define_std (macro) ...@@ -450,10 +442,7 @@ builtin_define_std (macro)
parameter says whether or not to turn the value into a string parameter says whether or not to turn the value into a string
constant. */ constant. */
void void
builtin_define_with_value (macro, expansion, is_str) builtin_define_with_value (const char *macro, const char *expansion, int is_str)
const char *macro;
const char *expansion;
int is_str;
{ {
char *buf; char *buf;
size_t mlen = strlen (macro); size_t mlen = strlen (macro);
...@@ -475,14 +464,11 @@ builtin_define_with_value (macro, expansion, is_str) ...@@ -475,14 +464,11 @@ builtin_define_with_value (macro, expansion, is_str)
/* Pass an object-like macro and a value to define it to. The third /* Pass an object-like macro and a value to define it to. The third
parameter is the length of the expansion. */ parameter is the length of the expansion. */
static void static void
builtin_define_with_value_n (macro, expansion, elen) builtin_define_with_value_n (const char *macro, const char *expansion, size_t elen)
const char *macro;
const char *expansion;
size_t elen;
{ {
char *buf; char *buf;
size_t mlen = strlen (macro); size_t mlen = strlen (macro);
/* Space for an = and a NUL. */ /* Space for an = and a NUL. */
buf = alloca (mlen + elen + 2); buf = alloca (mlen + elen + 2);
memcpy (buf, macro, mlen); memcpy (buf, macro, mlen);
...@@ -495,9 +481,7 @@ builtin_define_with_value_n (macro, expansion, elen) ...@@ -495,9 +481,7 @@ builtin_define_with_value_n (macro, expansion, elen)
/* Pass an object-like macro and an integer value to define it to. */ /* Pass an object-like macro and an integer value to define it to. */
static void static void
builtin_define_with_int_value (macro, value) builtin_define_with_int_value (const char *macro, HOST_WIDE_INT value)
const char *macro;
HOST_WIDE_INT value;
{ {
char *buf; char *buf;
size_t mlen = strlen (macro); size_t mlen = strlen (macro);
...@@ -514,12 +498,9 @@ builtin_define_with_int_value (macro, value) ...@@ -514,12 +498,9 @@ builtin_define_with_int_value (macro, value)
/* Pass an object-like macro a hexadecimal floating-point value. */ /* Pass an object-like macro a hexadecimal floating-point value. */
static void static void
builtin_define_with_hex_fp_value (macro, type, digits, hex_str, fp_suffix) builtin_define_with_hex_fp_value (const char *macro,
const char *macro; tree type ATTRIBUTE_UNUSED, int digits,
tree type ATTRIBUTE_UNUSED; const char *hex_str, const char *fp_suffix)
int digits;
const char *hex_str;
const char *fp_suffix;
{ {
REAL_VALUE_TYPE real; REAL_VALUE_TYPE real;
char dec_str[64], buf[256]; char dec_str[64], buf[256];
...@@ -530,7 +511,7 @@ builtin_define_with_hex_fp_value (macro, type, digits, hex_str, fp_suffix) ...@@ -530,7 +511,7 @@ builtin_define_with_hex_fp_value (macro, type, digits, hex_str, fp_suffix)
pedwarn from the preprocessor, which has no context, so we can't pedwarn from the preprocessor, which has no context, so we can't
suppress the warning with __extension__. suppress the warning with __extension__.
So instead what we do is construct the number in hex (because So instead what we do is construct the number in hex (because
it's easy to get the exact correct value), parse it as a real, it's easy to get the exact correct value), parse it as a real,
then print it back out as decimal. */ then print it back out as decimal. */
...@@ -546,10 +527,7 @@ builtin_define_with_hex_fp_value (macro, type, digits, hex_str, fp_suffix) ...@@ -546,10 +527,7 @@ builtin_define_with_hex_fp_value (macro, type, digits, hex_str, fp_suffix)
unsigned types, since wchar_t might be unsigned. */ unsigned types, since wchar_t might be unsigned. */
static void static void
builtin_define_type_max (macro, type, is_long) builtin_define_type_max (const char *macro, tree type, int is_long)
const char *macro;
tree type;
int is_long;
{ {
static const char *const values[] static const char *const values[]
= { "127", "255", = { "127", "255",
......
...@@ -263,32 +263,31 @@ tree static_ctors, static_dtors; ...@@ -263,32 +263,31 @@ tree static_ctors, static_dtors;
/* Forward declarations. */ /* Forward declarations. */
static struct binding_level *make_binding_level PARAMS ((void)); static struct binding_level *make_binding_level (void);
static void pop_binding_level PARAMS ((struct binding_level **)); static void pop_binding_level (struct binding_level **);
static int duplicate_decls PARAMS ((tree, tree, int)); static int duplicate_decls (tree, tree, int);
static int redeclaration_error_message PARAMS ((tree, tree)); static int redeclaration_error_message (tree, tree);
static void implicit_decl_warning PARAMS ((tree)); static void implicit_decl_warning (tree);
static void storedecls PARAMS ((tree)); static void storedecls (tree);
static void storetags PARAMS ((tree)); static void storetags (tree);
static tree lookup_tag PARAMS ((enum tree_code, tree, int)); static tree lookup_tag (enum tree_code, tree, int);
static tree lookup_name_current_level PARAMS ((tree)); static tree lookup_name_current_level (tree);
static tree grokdeclarator PARAMS ((tree, tree, enum decl_context, static tree grokdeclarator (tree, tree, enum decl_context, int);
int)); static tree grokparms (tree, int);
static tree grokparms PARAMS ((tree, int)); static void layout_array_type (tree);
static void layout_array_type PARAMS ((tree)); static tree c_make_fname_decl (tree, int);
static tree c_make_fname_decl PARAMS ((tree, int)); static void c_expand_body_1 (tree, int);
static void c_expand_body_1 PARAMS ((tree, int)); static tree any_external_decl (tree);
static tree any_external_decl PARAMS ((tree)); static void record_external_decl (tree);
static void record_external_decl PARAMS ((tree)); static void warn_if_shadowing (tree, tree);
static void warn_if_shadowing PARAMS ((tree, tree)); static void clone_underlying_type (tree);
static void clone_underlying_type PARAMS ((tree)); static bool flexible_array_type_p (tree);
static bool flexible_array_type_p PARAMS ((tree));
/* States indicating how grokdeclarator() should handle declspecs marked /* States indicating how grokdeclarator() should handle declspecs marked
with __attribute__((deprecated)). An object declared as with __attribute__((deprecated)). An object declared as
__attribute__((deprecated)) suppresses warnings of uses of other __attribute__((deprecated)) suppresses warnings of uses of other
deprecated items. */ deprecated items. */
enum deprecated_states { enum deprecated_states {
DEPRECATED_NORMAL, DEPRECATED_NORMAL,
DEPRECATED_SUPPRESS DEPRECATED_SUPPRESS
...@@ -297,10 +296,7 @@ enum deprecated_states { ...@@ -297,10 +296,7 @@ enum deprecated_states {
static enum deprecated_states deprecated_state = DEPRECATED_NORMAL; static enum deprecated_states deprecated_state = DEPRECATED_NORMAL;
void void
c_print_identifier (file, node, indent) c_print_identifier (FILE *file, tree node, int indent)
FILE *file;
tree node;
int indent;
{ {
print_node (file, "symbol", IDENTIFIER_SYMBOL_VALUE (node), indent + 4); print_node (file, "symbol", IDENTIFIER_SYMBOL_VALUE (node), indent + 4);
print_node (file, "tag", IDENTIFIER_TAG_VALUE (node), indent + 4); print_node (file, "tag", IDENTIFIER_TAG_VALUE (node), indent + 4);
...@@ -319,8 +315,7 @@ c_print_identifier (file, node, indent) ...@@ -319,8 +315,7 @@ c_print_identifier (file, node, indent)
for a top-level tentative array defn that wasn't complete before. */ for a top-level tentative array defn that wasn't complete before. */
void void
c_finish_incomplete_decl (decl) c_finish_incomplete_decl (tree decl)
tree decl;
{ {
if (TREE_CODE (decl) == VAR_DECL) if (TREE_CODE (decl) == VAR_DECL)
{ {
...@@ -342,7 +337,7 @@ c_finish_incomplete_decl (decl) ...@@ -342,7 +337,7 @@ c_finish_incomplete_decl (decl)
/* Reuse or create a struct for this binding level. */ /* Reuse or create a struct for this binding level. */
static struct binding_level * static struct binding_level *
make_binding_level () make_binding_level (void)
{ {
struct binding_level *result; struct binding_level *result;
if (free_binding_level) if (free_binding_level)
...@@ -361,12 +356,11 @@ make_binding_level () ...@@ -361,12 +356,11 @@ make_binding_level ()
/* Remove a binding level from a list and add it to the level chain. */ /* Remove a binding level from a list and add it to the level chain. */
static void static void
pop_binding_level (lp) pop_binding_level (struct binding_level **lp)
struct binding_level **lp;
{ {
struct binding_level *l = *lp; struct binding_level *l = *lp;
*lp = l->level_chain; *lp = l->level_chain;
memset (l, 0, sizeof (struct binding_level)); memset (l, 0, sizeof (struct binding_level));
l->level_chain = free_binding_level; l->level_chain = free_binding_level;
free_binding_level = l; free_binding_level = l;
...@@ -375,13 +369,13 @@ pop_binding_level (lp) ...@@ -375,13 +369,13 @@ pop_binding_level (lp)
/* Nonzero if we are currently in the global binding level. */ /* Nonzero if we are currently in the global binding level. */
int int
global_bindings_p () global_bindings_p (void)
{ {
return current_binding_level == global_binding_level; return current_binding_level == global_binding_level;
} }
void void
keep_next_level () keep_next_level (void)
{ {
keep_next_level_flag = 1; keep_next_level_flag = 1;
} }
...@@ -389,7 +383,7 @@ keep_next_level () ...@@ -389,7 +383,7 @@ keep_next_level ()
/* Nonzero if the current level needs to have a BLOCK made. */ /* Nonzero if the current level needs to have a BLOCK made. */
int int
kept_level_p () kept_level_p (void)
{ {
return ((current_binding_level->keep_if_subblocks return ((current_binding_level->keep_if_subblocks
&& current_binding_level->blocks != 0) && current_binding_level->blocks != 0)
...@@ -404,8 +398,7 @@ kept_level_p () ...@@ -404,8 +398,7 @@ kept_level_p ()
DEFINITION_FLAG, so we ignore it. */ DEFINITION_FLAG, so we ignore it. */
void void
declare_parm_level (definition_flag) declare_parm_level (int definition_flag ATTRIBUTE_UNUSED)
int definition_flag ATTRIBUTE_UNUSED;
{ {
current_binding_level->parm_flag = 1; current_binding_level->parm_flag = 1;
} }
...@@ -413,7 +406,7 @@ declare_parm_level (definition_flag) ...@@ -413,7 +406,7 @@ declare_parm_level (definition_flag)
/* Nonzero if currently making parm declarations. */ /* Nonzero if currently making parm declarations. */
int int
in_parm_level_p () in_parm_level_p (void)
{ {
return current_binding_level->parm_flag; return current_binding_level->parm_flag;
} }
...@@ -421,8 +414,7 @@ in_parm_level_p () ...@@ -421,8 +414,7 @@ in_parm_level_p ()
/* Enter a new binding level. */ /* Enter a new binding level. */
void void
pushlevel (dummy) pushlevel (int dummy ATTRIBUTE_UNUSED)
int dummy ATTRIBUTE_UNUSED;
{ {
/* If this is the top level of a function, make sure that /* If this is the top level of a function, make sure that
NAMED_LABELS is 0. */ NAMED_LABELS is 0. */
...@@ -475,10 +467,7 @@ pushlevel (dummy) ...@@ -475,10 +467,7 @@ pushlevel (dummy)
them into the BLOCK. */ them into the BLOCK. */
tree tree
poplevel (keep, reverse, functionbody) poplevel (int keep, int reverse, int functionbody)
int keep;
int reverse;
int functionbody;
{ {
tree link; tree link;
tree block; tree block;
...@@ -659,8 +648,7 @@ poplevel (keep, reverse, functionbody) ...@@ -659,8 +648,7 @@ poplevel (keep, reverse, functionbody)
to handle the BLOCK node inside the BIND_EXPR. */ to handle the BLOCK node inside the BIND_EXPR. */
void void
insert_block (block) insert_block (tree block)
tree block;
{ {
TREE_USED (block) = 1; TREE_USED (block) = 1;
current_binding_level->blocks current_binding_level->blocks
...@@ -672,13 +660,12 @@ insert_block (block) ...@@ -672,13 +660,12 @@ insert_block (block)
this hook, but it is not useful in function-at-a-time mode. */ this hook, but it is not useful in function-at-a-time mode. */
void void
set_block (block) set_block (tree block ATTRIBUTE_UNUSED)
tree block ATTRIBUTE_UNUSED;
{ {
} }
void void
push_label_level () push_label_level (void)
{ {
struct binding_level *newlevel; struct binding_level *newlevel;
...@@ -696,7 +683,7 @@ push_label_level () ...@@ -696,7 +683,7 @@ push_label_level ()
} }
void void
pop_label_level () pop_label_level (void)
{ {
struct binding_level *level = label_level_chain; struct binding_level *level = label_level_chain;
tree link, prev; tree link, prev;
...@@ -755,8 +742,7 @@ pop_label_level () ...@@ -755,8 +742,7 @@ pop_label_level ()
In that case, the TYPE_SIZE will be zero. */ In that case, the TYPE_SIZE will be zero. */
void void
pushtag (name, type) pushtag (tree name, tree type)
tree name, type;
{ {
struct binding_level *b = current_binding_level; struct binding_level *b = current_binding_level;
...@@ -801,9 +787,7 @@ pushtag (name, type) ...@@ -801,9 +787,7 @@ pushtag (name, type)
and OLDDECL is in an outer binding level and should thus not be changed. */ and OLDDECL is in an outer binding level and should thus not be changed. */
static int static int
duplicate_decls (newdecl, olddecl, different_binding_level) duplicate_decls (tree newdecl, tree olddecl, int different_binding_level)
tree newdecl, olddecl;
int different_binding_level;
{ {
int types_match = comptypes (TREE_TYPE (newdecl), TREE_TYPE (olddecl)); int types_match = comptypes (TREE_TYPE (newdecl), TREE_TYPE (olddecl));
int new_is_definition = (TREE_CODE (newdecl) == FUNCTION_DECL int new_is_definition = (TREE_CODE (newdecl) == FUNCTION_DECL
...@@ -1547,8 +1531,7 @@ duplicate_decls (newdecl, olddecl, different_binding_level) ...@@ -1547,8 +1531,7 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
currently in scope. */ currently in scope. */
static tree static tree
any_external_decl (id) any_external_decl (tree id)
tree id;
{ {
tree decl = IDENTIFIER_SYMBOL_VALUE (id); tree decl = IDENTIFIER_SYMBOL_VALUE (id);
tree t; tree t;
...@@ -1568,8 +1551,7 @@ any_external_decl (id) ...@@ -1568,8 +1551,7 @@ any_external_decl (id)
/* Record an external decl DECL. This only does something if a /* Record an external decl DECL. This only does something if a
shadowing decl already exists. */ shadowing decl already exists. */
static void static void
record_external_decl (decl) record_external_decl (tree decl)
tree decl;
{ {
tree name = DECL_NAME (decl); tree name = DECL_NAME (decl);
if (!IDENTIFIER_SYMBOL_VALUE (name)) if (!IDENTIFIER_SYMBOL_VALUE (name))
...@@ -1582,8 +1564,7 @@ record_external_decl (decl) ...@@ -1582,8 +1564,7 @@ record_external_decl (decl)
OLD is the old IDENTIFIER_SYMBOL_VALUE of the DECL_NAME of X, OLD is the old IDENTIFIER_SYMBOL_VALUE of the DECL_NAME of X,
which might be a NULL_TREE. */ which might be a NULL_TREE. */
static void static void
warn_if_shadowing (x, old) warn_if_shadowing (tree x, tree old)
tree x, old;
{ {
const char *name; const char *name;
...@@ -1660,8 +1641,7 @@ warn_if_shadowing (x, old) ...@@ -1660,8 +1641,7 @@ warn_if_shadowing (x, old)
on a standard type by checking the current value of lineno. */ on a standard type by checking the current value of lineno. */
static void static void
clone_underlying_type (x) clone_underlying_type (tree x)
tree x;
{ {
if (DECL_SOURCE_LINE (x) == 0) if (DECL_SOURCE_LINE (x) == 0)
{ {
...@@ -1689,8 +1669,7 @@ clone_underlying_type (x) ...@@ -1689,8 +1669,7 @@ clone_underlying_type (x)
to agree with what X says. */ to agree with what X says. */
tree tree
pushdecl (x) pushdecl (tree x)
tree x;
{ {
tree name = DECL_NAME (x); tree name = DECL_NAME (x);
struct binding_level *scope = current_binding_level; struct binding_level *scope = current_binding_level;
...@@ -1744,7 +1723,7 @@ pushdecl (x) ...@@ -1744,7 +1723,7 @@ pushdecl (x)
else else
record_external_decl (x); record_external_decl (x);
} }
if (TREE_CODE (x) == TYPE_DECL) if (TREE_CODE (x) == TYPE_DECL)
clone_underlying_type (x); clone_underlying_type (x);
...@@ -1797,8 +1776,7 @@ pushdecl (x) ...@@ -1797,8 +1776,7 @@ pushdecl (x)
and is limited to its needs. It will hork if there is _any_ and is limited to its needs. It will hork if there is _any_
visible binding for X (not just a global one). */ visible binding for X (not just a global one). */
tree tree
pushdecl_top_level (x) pushdecl_top_level (tree x)
tree x;
{ {
tree name, old; tree name, old;
...@@ -1834,9 +1812,7 @@ pushdecl_top_level (x) ...@@ -1834,9 +1812,7 @@ pushdecl_top_level (x)
called; if there is any preexisting decl for this identifier, it is called; if there is any preexisting decl for this identifier, it is
an ICE. */ an ICE. */
tree tree
pushdecl_function_level (x, name) pushdecl_function_level (tree x, tree name)
tree x;
tree name;
{ {
struct binding_level *scope; struct binding_level *scope;
...@@ -1869,8 +1845,7 @@ pushdecl_function_level (x, name) ...@@ -1869,8 +1845,7 @@ pushdecl_function_level (x, name)
function of type int (). */ function of type int (). */
tree tree
implicitly_declare (functionid) implicitly_declare (tree functionid)
tree functionid;
{ {
tree decl = any_external_decl (functionid); tree decl = any_external_decl (functionid);
...@@ -1922,8 +1897,7 @@ implicitly_declare (functionid) ...@@ -1922,8 +1897,7 @@ implicitly_declare (functionid)
} }
static void static void
implicit_decl_warning (id) implicit_decl_warning (tree id)
tree id;
{ {
const char *name = IDENTIFIER_POINTER (id); const char *name = IDENTIFIER_POINTER (id);
if (mesg_implicit_function_declaration == 2) if (mesg_implicit_function_declaration == 2)
...@@ -1939,8 +1913,7 @@ implicit_decl_warning (id) ...@@ -1939,8 +1913,7 @@ implicit_decl_warning (id)
and 3 if it is a conflicting declaration. */ and 3 if it is a conflicting declaration. */
static int static int
redeclaration_error_message (newdecl, olddecl) redeclaration_error_message (tree newdecl, tree olddecl)
tree newdecl, olddecl;
{ {
if (TREE_CODE (newdecl) == TYPE_DECL) if (TREE_CODE (newdecl) == TYPE_DECL)
{ {
...@@ -2001,8 +1974,7 @@ redeclaration_error_message (newdecl, olddecl) ...@@ -2001,8 +1974,7 @@ redeclaration_error_message (newdecl, olddecl)
This function is called for both label definitions and label references. */ This function is called for both label definitions and label references. */
tree tree
lookup_label (id) lookup_label (tree id)
tree id;
{ {
tree decl = IDENTIFIER_LABEL_VALUE (id); tree decl = IDENTIFIER_LABEL_VALUE (id);
...@@ -2050,8 +2022,7 @@ lookup_label (id) ...@@ -2050,8 +2022,7 @@ lookup_label (id)
requires calling declare_nonlocal_label right away. */ requires calling declare_nonlocal_label right away. */
tree tree
shadow_label (name) shadow_label (tree name)
tree name;
{ {
tree decl = IDENTIFIER_LABEL_VALUE (name); tree decl = IDENTIFIER_LABEL_VALUE (name);
...@@ -2124,7 +2095,7 @@ define_label (const char* filename, int line, tree name) ...@@ -2124,7 +2095,7 @@ define_label (const char* filename, int line, tree name)
store the result back using `storedecls' or you will lose. */ store the result back using `storedecls' or you will lose. */
tree tree
getdecls () getdecls (void)
{ {
return current_binding_level->names; return current_binding_level->names;
} }
...@@ -2132,7 +2103,7 @@ getdecls () ...@@ -2132,7 +2103,7 @@ getdecls ()
/* Return the list of type-tags (for structs, etc) of the current level. */ /* Return the list of type-tags (for structs, etc) of the current level. */
tree tree
gettags () gettags (void)
{ {
return current_binding_level->tags; return current_binding_level->tags;
} }
...@@ -2142,8 +2113,7 @@ gettags () ...@@ -2142,8 +2113,7 @@ gettags ()
after they are modified in the light of any missing parameters. */ after they are modified in the light of any missing parameters. */
static void static void
storedecls (decls) storedecls (tree decls)
tree decls;
{ {
current_binding_level->names = decls; current_binding_level->names = decls;
} }
...@@ -2151,8 +2121,7 @@ storedecls (decls) ...@@ -2151,8 +2121,7 @@ storedecls (decls)
/* Similarly, store the list of tags of the current level. */ /* Similarly, store the list of tags of the current level. */
static void static void
storetags (tags) storetags (tree tags)
tree tags;
{ {
current_binding_level->tags = tags; current_binding_level->tags = tags;
} }
...@@ -2165,10 +2134,7 @@ storetags (tags) ...@@ -2165,10 +2134,7 @@ storetags (tags)
If the wrong kind of type is found, an error is reported. */ If the wrong kind of type is found, an error is reported. */
static tree static tree
lookup_tag (code, name, thislevel_only) lookup_tag (enum tree_code code, tree name, int thislevel_only)
enum tree_code code;
tree name;
int thislevel_only;
{ {
tree tag = IDENTIFIER_TAG_VALUE (name); tree tag = IDENTIFIER_TAG_VALUE (name);
int thislevel = 0; int thislevel = 0;
...@@ -2210,7 +2176,7 @@ lookup_tag (code, name, thislevel_only) ...@@ -2210,7 +2176,7 @@ lookup_tag (code, name, thislevel_only)
when used in the `struct foo;' construct for shadowing. */ when used in the `struct foo;' construct for shadowing. */
void void
pending_xref_error () pending_xref_error (void)
{ {
if (pending_invalid_xref != 0) if (pending_invalid_xref != 0)
error ("%H`%s' defined as wrong kind of tag", error ("%H`%s' defined as wrong kind of tag",
...@@ -2226,8 +2192,7 @@ pending_xref_error () ...@@ -2226,8 +2192,7 @@ pending_xref_error ()
or return 0 if it is undefined. */ or return 0 if it is undefined. */
tree tree
lookup_name (name) lookup_name (tree name)
tree name;
{ {
tree decl = IDENTIFIER_SYMBOL_VALUE (name); tree decl = IDENTIFIER_SYMBOL_VALUE (name);
if (decl == 0 || decl == error_mark_node) if (decl == 0 || decl == error_mark_node)
...@@ -2240,8 +2205,7 @@ lookup_name (name) ...@@ -2240,8 +2205,7 @@ lookup_name (name)
/* Similar to `lookup_name' but look only at the current binding level. */ /* Similar to `lookup_name' but look only at the current binding level. */
static tree static tree
lookup_name_current_level (name) lookup_name_current_level (tree name)
tree name;
{ {
tree decl = IDENTIFIER_SYMBOL_VALUE (name); tree decl = IDENTIFIER_SYMBOL_VALUE (name);
...@@ -2264,7 +2228,7 @@ lookup_name_current_level (name) ...@@ -2264,7 +2228,7 @@ lookup_name_current_level (name)
Make definitions for built-in primitive functions. */ Make definitions for built-in primitive functions. */
void void
c_init_decl_processing () c_init_decl_processing (void)
{ {
tree endlink; tree endlink;
tree ptr_ftype_void, ptr_ftype_ptr; tree ptr_ftype_void, ptr_ftype_ptr;
...@@ -2330,9 +2294,7 @@ c_init_decl_processing () ...@@ -2330,9 +2294,7 @@ c_init_decl_processing ()
are string merging candidates, which is wrong for C99's __func__. FIXME. */ are string merging candidates, which is wrong for C99's __func__. FIXME. */
static tree static tree
c_make_fname_decl (id, type_dep) c_make_fname_decl (tree id, int type_dep)
tree id;
int type_dep;
{ {
const char *name = fname_as_string (type_dep); const char *name = fname_as_string (type_dep);
tree decl, type, init; tree decl, type, init;
...@@ -2343,11 +2305,11 @@ c_make_fname_decl (id, type_dep) ...@@ -2343,11 +2305,11 @@ c_make_fname_decl (id, type_dep)
build_index_type (size_int (length))); build_index_type (size_int (length)));
decl = build_decl (VAR_DECL, id, type); decl = build_decl (VAR_DECL, id, type);
TREE_STATIC (decl) = 1; TREE_STATIC (decl) = 1;
TREE_READONLY (decl) = 1; TREE_READONLY (decl) = 1;
DECL_ARTIFICIAL (decl) = 1; DECL_ARTIFICIAL (decl) = 1;
init = build_string (length + 1, name); init = build_string (length + 1, name);
TREE_TYPE (init) = type; TREE_TYPE (init) = type;
DECL_INITIAL (decl) = init; DECL_INITIAL (decl) = init;
...@@ -2372,13 +2334,9 @@ c_make_fname_decl (id, type_dep) ...@@ -2372,13 +2334,9 @@ c_make_fname_decl (id, type_dep)
ATTRS is nonzero, use that for the function's attribute list. */ ATTRS is nonzero, use that for the function's attribute list. */
tree tree
builtin_function (name, type, function_code, class, library_name, attrs) builtin_function (const char *name, tree type, int function_code,
const char *name; enum built_in_class class, const char *library_name,
tree type; tree attrs)
int function_code;
enum built_in_class class;
const char *library_name;
tree attrs;
{ {
tree decl = build_decl (FUNCTION_DECL, get_identifier (name), type); tree decl = build_decl (FUNCTION_DECL, get_identifier (name), type);
DECL_EXTERNAL (decl) = 1; DECL_EXTERNAL (decl) = 1;
...@@ -2408,8 +2366,7 @@ builtin_function (name, type, function_code, class, library_name, attrs) ...@@ -2408,8 +2366,7 @@ builtin_function (name, type, function_code, class, library_name, attrs)
attributes. */ attributes. */
void void
c_insert_default_attributes (decl) c_insert_default_attributes (tree decl)
tree decl;
{ {
if (!TREE_PUBLIC (decl)) if (!TREE_PUBLIC (decl))
return; return;
...@@ -2425,16 +2382,15 @@ c_insert_default_attributes (decl) ...@@ -2425,16 +2382,15 @@ c_insert_default_attributes (decl)
Otherwise, it is an error. */ Otherwise, it is an error. */
void void
shadow_tag (declspecs) shadow_tag (tree declspecs)
tree declspecs;
{ {
shadow_tag_warned (declspecs, 0); shadow_tag_warned (declspecs, 0);
} }
void void
shadow_tag_warned (declspecs, warned) shadow_tag_warned (tree declspecs, int warned)
tree declspecs;
int warned;
/* 1 => we have done a pedwarn. 2 => we have done a warning, but /* 1 => we have done a pedwarn. 2 => we have done a warning, but
no pedwarn. */ no pedwarn. */
{ {
...@@ -2515,11 +2471,7 @@ shadow_tag_warned (declspecs, warned) ...@@ -2515,11 +2471,7 @@ shadow_tag_warned (declspecs, warned)
which has TREE_STATIC set if "static" is used. */ which has TREE_STATIC set if "static" is used. */
tree tree
build_array_declarator (expr, quals, static_p, vla_unspec_p) build_array_declarator (tree expr, tree quals, int static_p, int vla_unspec_p)
tree expr;
tree quals;
int static_p;
int vla_unspec_p;
{ {
tree decl; tree decl;
decl = build_nt (ARRAY_REF, NULL_TREE, expr); decl = build_nt (ARRAY_REF, NULL_TREE, expr);
...@@ -2545,10 +2497,7 @@ build_array_declarator (expr, quals, static_p, vla_unspec_p) ...@@ -2545,10 +2497,7 @@ build_array_declarator (expr, quals, static_p, vla_unspec_p)
C99 grammar. */ C99 grammar. */
tree tree
set_array_declarator_type (decl, type, abstract_p) set_array_declarator_type (tree decl, tree type, int abstract_p)
tree decl;
tree type;
int abstract_p;
{ {
TREE_OPERAND (decl, 0) = type; TREE_OPERAND (decl, 0) = type;
if (abstract_p && (TREE_TYPE (decl) != NULL_TREE || TREE_STATIC (decl))) if (abstract_p && (TREE_TYPE (decl) != NULL_TREE || TREE_STATIC (decl)))
...@@ -2559,8 +2508,7 @@ set_array_declarator_type (decl, type, abstract_p) ...@@ -2559,8 +2508,7 @@ set_array_declarator_type (decl, type, abstract_p)
/* Decode a "typename", such as "int **", returning a ..._TYPE node. */ /* Decode a "typename", such as "int **", returning a ..._TYPE node. */
tree tree
groktypename (typename) groktypename (tree typename)
tree typename;
{ {
tree specs, attrs; tree specs, attrs;
...@@ -2580,8 +2528,7 @@ groktypename (typename) ...@@ -2580,8 +2528,7 @@ groktypename (typename)
/* Return a PARM_DECL node for a given pair of specs and declarator. */ /* Return a PARM_DECL node for a given pair of specs and declarator. */
tree tree
groktypename_in_parm_context (typename) groktypename_in_parm_context (tree typename)
tree typename;
{ {
if (TREE_CODE (typename) != TREE_LIST) if (TREE_CODE (typename) != TREE_LIST)
return typename; return typename;
...@@ -2606,14 +2553,11 @@ groktypename_in_parm_context (typename) ...@@ -2606,14 +2553,11 @@ groktypename_in_parm_context (typename)
grokfield and not through here. */ grokfield and not through here. */
tree tree
start_decl (declarator, declspecs, initialized, attributes) start_decl (tree declarator, tree declspecs, int initialized, tree attributes)
tree declarator, declspecs;
int initialized;
tree attributes;
{ {
tree decl; tree decl;
tree tem; tree tem;
/* An object declared as __attribute__((deprecated)) suppresses /* An object declared as __attribute__((deprecated)) suppresses
warnings of uses of other deprecated items. */ warnings of uses of other deprecated items. */
if (lookup_attribute ("deprecated", attributes)) if (lookup_attribute ("deprecated", attributes))
...@@ -2621,7 +2565,7 @@ start_decl (declarator, declspecs, initialized, attributes) ...@@ -2621,7 +2565,7 @@ start_decl (declarator, declspecs, initialized, attributes)
decl = grokdeclarator (declarator, declspecs, decl = grokdeclarator (declarator, declspecs,
NORMAL, initialized); NORMAL, initialized);
deprecated_state = DEPRECATED_NORMAL; deprecated_state = DEPRECATED_NORMAL;
if (warn_main > 0 && TREE_CODE (decl) != FUNCTION_DECL if (warn_main > 0 && TREE_CODE (decl) != FUNCTION_DECL
...@@ -2773,9 +2717,7 @@ start_decl (declarator, declspecs, initialized, attributes) ...@@ -2773,9 +2717,7 @@ start_decl (declarator, declspecs, initialized, attributes)
it must be determined now, from the initial value, or it is an error. */ it must be determined now, from the initial value, or it is an error. */
void void
finish_decl (decl, init, asmspec_tree) finish_decl (tree decl, tree init, tree asmspec_tree)
tree decl, init;
tree asmspec_tree;
{ {
tree type = TREE_TYPE (decl); tree type = TREE_TYPE (decl);
int was_incomplete = (DECL_SIZE (decl) == 0); int was_incomplete = (DECL_SIZE (decl) == 0);
...@@ -2790,7 +2732,7 @@ finish_decl (decl, init, asmspec_tree) ...@@ -2790,7 +2732,7 @@ finish_decl (decl, init, asmspec_tree)
/* If `start_decl' didn't like having an initialization, ignore it now. */ /* If `start_decl' didn't like having an initialization, ignore it now. */
if (init != 0 && DECL_INITIAL (decl) == 0) if (init != 0 && DECL_INITIAL (decl) == 0)
init = 0; init = 0;
/* Don't crash if parm is initialized. */ /* Don't crash if parm is initialized. */
if (TREE_CODE (decl) == PARM_DECL) if (TREE_CODE (decl) == PARM_DECL)
init = 0; init = 0;
...@@ -2953,7 +2895,7 @@ finish_decl (decl, init, asmspec_tree) ...@@ -2953,7 +2895,7 @@ finish_decl (decl, init, asmspec_tree)
ordinary, non-register local variable. Historically, ordinary, non-register local variable. Historically,
GCC has accepted -- but ignored -- the ASMSPEC in GCC has accepted -- but ignored -- the ASMSPEC in
this case. */ this case. */
if (TREE_CODE (decl) == VAR_DECL if (TREE_CODE (decl) == VAR_DECL
&& !DECL_REGISTER (decl) && !DECL_REGISTER (decl)
&& !TREE_STATIC (decl)) && !TREE_STATIC (decl))
warning_with_decl (decl, warning_with_decl (decl,
...@@ -3038,8 +2980,7 @@ finish_decl (decl, init, asmspec_tree) ...@@ -3038,8 +2980,7 @@ finish_decl (decl, init, asmspec_tree)
record the given order of parms in `parm_order'. */ record the given order of parms in `parm_order'. */
void void
push_parm_decl (parm) push_parm_decl (tree parm)
tree parm;
{ {
tree decl; tree decl;
int old_immediate_size_expand = immediate_size_expand; int old_immediate_size_expand = immediate_size_expand;
...@@ -3077,7 +3018,7 @@ push_parm_decl (parm) ...@@ -3077,7 +3018,7 @@ push_parm_decl (parm)
and also at semicolon terminating forward decls. */ and also at semicolon terminating forward decls. */
void void
clear_parm_order () clear_parm_order (void)
{ {
current_binding_level->parm_order = NULL_TREE; current_binding_level->parm_order = NULL_TREE;
} }
...@@ -3090,9 +3031,7 @@ static GTY(()) int compound_literal_number; ...@@ -3090,9 +3031,7 @@ static GTY(()) int compound_literal_number;
literal. */ literal. */
tree tree
build_compound_literal (type, init) build_compound_literal (tree type, tree init)
tree type;
tree init;
{ {
/* We do not use start_decl here because we have a type, not a declarator; /* We do not use start_decl here because we have a type, not a declarator;
and do not use finish_decl because the decl should be stored inside and do not use finish_decl because the decl should be stored inside
...@@ -3132,7 +3071,7 @@ build_compound_literal (type, init) ...@@ -3132,7 +3071,7 @@ build_compound_literal (type, init)
a unique suffix to be added to the name. */ a unique suffix to be added to the name. */
char *name; char *name;
ASM_FORMAT_PRIVATE_NAME (name, "__compound_literal", ASM_FORMAT_PRIVATE_NAME (name, "__compound_literal",
compound_literal_number); compound_literal_number);
compound_literal_number++; compound_literal_number++;
DECL_NAME (decl) = get_identifier (name); DECL_NAME (decl) = get_identifier (name);
...@@ -3151,10 +3090,7 @@ build_compound_literal (type, init) ...@@ -3151,10 +3090,7 @@ build_compound_literal (type, init)
2 if there was no information (in which case assume 1 if DO_DEFAULT). */ 2 if there was no information (in which case assume 1 if DO_DEFAULT). */
int int
complete_array_type (type, initial_value, do_default) complete_array_type (tree type, tree initial_value, int do_default)
tree type;
tree initial_value;
int do_default;
{ {
tree maxindex = NULL_TREE; tree maxindex = NULL_TREE;
int value = 0; int value = 0;
...@@ -3220,8 +3156,7 @@ complete_array_type (type, initial_value, do_default) ...@@ -3220,8 +3156,7 @@ complete_array_type (type, initial_value, do_default)
or a union containing such a structure (possibly recursively). */ or a union containing such a structure (possibly recursively). */
static bool static bool
flexible_array_type_p (type) flexible_array_type_p (tree type)
tree type;
{ {
tree x; tree x;
switch (TREE_CODE (type)) switch (TREE_CODE (type))
...@@ -3280,11 +3215,8 @@ flexible_array_type_p (type) ...@@ -3280,11 +3215,8 @@ flexible_array_type_p (type)
and `extern' are interpreted. */ and `extern' are interpreted. */
static tree static tree
grokdeclarator (declarator, declspecs, decl_context, initialized) grokdeclarator (tree declarator, tree declspecs,
tree declspecs; enum decl_context decl_context, int initialized)
tree declarator;
enum decl_context decl_context;
int initialized;
{ {
int specbits = 0; int specbits = 0;
tree spec; tree spec;
...@@ -4301,7 +4233,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) ...@@ -4301,7 +4233,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
} }
else if (type_quals) else if (type_quals)
type = c_build_qualified_type (type, type_quals); type = c_build_qualified_type (type, type_quals);
type_as_written = type; type_as_written = type;
decl = build_decl (PARM_DECL, declarator, type); decl = build_decl (PARM_DECL, declarator, type);
...@@ -4464,7 +4396,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) ...@@ -4464,7 +4396,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
tree global_decl; tree global_decl;
global_decl = identifier_global_value (declarator); global_decl = identifier_global_value (declarator);
if (global_decl if (global_decl
&& TREE_CODE (global_decl) == VAR_DECL && TREE_CODE (global_decl) == VAR_DECL
&& !TREE_PUBLIC (global_decl)) && !TREE_PUBLIC (global_decl))
error ("variable previously declared `static' redeclared " error ("variable previously declared `static' redeclared "
...@@ -4548,9 +4480,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) ...@@ -4548,9 +4480,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
when FUNCDEF_FLAG is zero. */ when FUNCDEF_FLAG is zero. */
static tree static tree
grokparms (parms_info, funcdef_flag) grokparms (tree parms_info, int funcdef_flag)
tree parms_info;
int funcdef_flag;
{ {
tree first_parm = TREE_CHAIN (parms_info); tree first_parm = TREE_CHAIN (parms_info);
...@@ -4645,8 +4575,7 @@ grokparms (parms_info, funcdef_flag) ...@@ -4645,8 +4575,7 @@ grokparms (parms_info, funcdef_flag)
Zero means the parmlist ended with an ellipsis so don't append `void'. */ Zero means the parmlist ended with an ellipsis so don't append `void'. */
tree tree
get_parm_info (void_at_end) get_parm_info (int void_at_end)
int void_at_end;
{ {
tree decl, t; tree decl, t;
tree types = 0; tree types = 0;
...@@ -4746,7 +4675,7 @@ get_parm_info (void_at_end) ...@@ -4746,7 +4675,7 @@ get_parm_info (void_at_end)
defined within. Do so because these types cannot ever become complete. */ defined within. Do so because these types cannot ever become complete. */
void void
parmlist_tags_warning () parmlist_tags_warning (void)
{ {
tree elt; tree elt;
static int already; static int already;
...@@ -4792,9 +4721,7 @@ parmlist_tags_warning () ...@@ -4792,9 +4721,7 @@ parmlist_tags_warning ()
Define the tag as a forward-reference if it is not defined. */ Define the tag as a forward-reference if it is not defined. */
tree tree
xref_tag (code, name) xref_tag (enum tree_code code, tree name)
enum tree_code code;
tree name;
{ {
/* If a cross reference is requested, look up the type /* If a cross reference is requested, look up the type
already defined for this tag and return it. */ already defined for this tag and return it. */
...@@ -4843,9 +4770,7 @@ xref_tag (code, name) ...@@ -4843,9 +4770,7 @@ xref_tag (code, name)
CODE says which kind of tag NAME ought to be. */ CODE says which kind of tag NAME ought to be. */
tree tree
start_struct (code, name) start_struct (enum tree_code code, tree name)
enum tree_code code;
tree name;
{ {
/* If there is already a tag defined at this binding level /* If there is already a tag defined at this binding level
(as a forward reference), just return it. */ (as a forward reference), just return it. */
...@@ -4862,7 +4787,7 @@ start_struct (code, name) ...@@ -4862,7 +4787,7 @@ start_struct (code, name)
error ("redefinition of `union %s'", IDENTIFIER_POINTER (name)); error ("redefinition of `union %s'", IDENTIFIER_POINTER (name));
else else
error ("redefinition of `struct %s'", IDENTIFIER_POINTER (name)); error ("redefinition of `struct %s'", IDENTIFIER_POINTER (name));
} }
} }
else else
{ {
...@@ -4871,7 +4796,7 @@ start_struct (code, name) ...@@ -4871,7 +4796,7 @@ start_struct (code, name)
ref = make_node (code); ref = make_node (code);
pushtag (name, ref); pushtag (name, ref);
} }
C_TYPE_BEING_DEFINED (ref) = 1; C_TYPE_BEING_DEFINED (ref) = 1;
TYPE_PACKED (ref) = flag_pack_struct; TYPE_PACKED (ref) = flag_pack_struct;
return ref; return ref;
...@@ -4886,10 +4811,8 @@ start_struct (code, name) ...@@ -4886,10 +4811,8 @@ start_struct (code, name)
are ultimately passed to `build_struct' to make the RECORD_TYPE node. */ are ultimately passed to `build_struct' to make the RECORD_TYPE node. */
tree tree
grokfield (filename, line, declarator, declspecs, width) grokfield (const char *filename ATTRIBUTE_UNUSED, int line ATTRIBUTE_UNUSED,
const char *filename ATTRIBUTE_UNUSED; tree declarator, tree declspecs, tree width)
int line ATTRIBUTE_UNUSED;
tree declarator, declspecs, width;
{ {
tree value; tree value;
...@@ -5009,10 +4932,7 @@ detect_field_duplicates (tree fieldlist) ...@@ -5009,10 +4932,7 @@ detect_field_duplicates (tree fieldlist)
ATTRIBUTES are attributes to be applied to the structure. */ ATTRIBUTES are attributes to be applied to the structure. */
tree tree
finish_struct (t, fieldlist, attributes) finish_struct (tree t, tree fieldlist, tree attributes)
tree t;
tree fieldlist;
tree attributes;
{ {
tree x; tree x;
int toplevel = global_binding_level == current_binding_level; int toplevel = global_binding_level == current_binding_level;
...@@ -5289,8 +5209,7 @@ finish_struct (t, fieldlist, attributes) ...@@ -5289,8 +5209,7 @@ finish_struct (t, fieldlist, attributes)
/* Lay out the type T, and its element type, and so on. */ /* Lay out the type T, and its element type, and so on. */
static void static void
layout_array_type (t) layout_array_type (tree t)
tree t;
{ {
if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE) if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
layout_array_type (TREE_TYPE (t)); layout_array_type (TREE_TYPE (t));
...@@ -5304,8 +5223,7 @@ layout_array_type (t) ...@@ -5304,8 +5223,7 @@ layout_array_type (t)
may be used to declare the individual values as they are read. */ may be used to declare the individual values as they are read. */
tree tree
start_enum (name) start_enum (tree name)
tree name;
{ {
tree enumtype = 0; tree enumtype = 0;
...@@ -5350,10 +5268,7 @@ start_enum (name) ...@@ -5350,10 +5268,7 @@ start_enum (name)
Returns ENUMTYPE. */ Returns ENUMTYPE. */
tree tree
finish_enum (enumtype, values, attributes) finish_enum (tree enumtype, tree values, tree attributes)
tree enumtype;
tree values;
tree attributes;
{ {
tree pair, tem; tree pair, tem;
tree minnode = 0, maxnode = 0, enum_value_type; tree minnode = 0, maxnode = 0, enum_value_type;
...@@ -5478,8 +5393,7 @@ finish_enum (enumtype, values, attributes) ...@@ -5478,8 +5393,7 @@ finish_enum (enumtype, values, attributes)
Assignment of sequential values by default is handled here. */ Assignment of sequential values by default is handled here. */
tree tree
build_enumerator (name, value) build_enumerator (tree name, tree value)
tree name, value;
{ {
tree decl, type; tree decl, type;
...@@ -5554,8 +5468,7 @@ build_enumerator (name, value) ...@@ -5554,8 +5468,7 @@ build_enumerator (name, value)
yyparse to report a parse error. */ yyparse to report a parse error. */
int int
start_function (declspecs, declarator, attributes) start_function (tree declspecs, tree declarator, tree attributes)
tree declarator, declspecs, attributes;
{ {
tree decl1, old_decl; tree decl1, old_decl;
tree restype; tree restype;
...@@ -5768,7 +5681,7 @@ start_function (declspecs, declarator, attributes) ...@@ -5768,7 +5681,7 @@ start_function (declspecs, declarator, attributes)
immediate_size_expand = old_immediate_size_expand; immediate_size_expand = old_immediate_size_expand;
start_fname_decls (); start_fname_decls ();
return 1; return 1;
} }
...@@ -5780,7 +5693,7 @@ start_function (declspecs, declarator, attributes) ...@@ -5780,7 +5693,7 @@ start_function (declspecs, declarator, attributes)
to specify at least the number of arguments. */ to specify at least the number of arguments. */
void void
store_parm_decls () store_parm_decls (void)
{ {
tree fndecl = current_function_decl; tree fndecl = current_function_decl;
tree parm; tree parm;
...@@ -6175,7 +6088,7 @@ store_parm_decls () ...@@ -6175,7 +6088,7 @@ store_parm_decls ()
{ {
tree t; tree t;
DECL_LANG_SPECIFIC (fndecl)->pending_sizes DECL_LANG_SPECIFIC (fndecl)->pending_sizes
= nreverse (get_pending_sizes ()); = nreverse (get_pending_sizes ());
for (t = DECL_LANG_SPECIFIC (fndecl)->pending_sizes; for (t = DECL_LANG_SPECIFIC (fndecl)->pending_sizes;
t; t;
...@@ -6206,9 +6119,7 @@ store_parm_decls () ...@@ -6206,9 +6119,7 @@ store_parm_decls ()
CAN_DEFER_P is nonzero if the function may be deferred. */ CAN_DEFER_P is nonzero if the function may be deferred. */
void void
finish_function (nested, can_defer_p) finish_function (int nested, int can_defer_p)
int nested;
int can_defer_p;
{ {
tree fndecl = current_function_decl; tree fndecl = current_function_decl;
...@@ -6260,7 +6171,7 @@ finish_function (nested, can_defer_p) ...@@ -6260,7 +6171,7 @@ finish_function (nested, can_defer_p)
#endif #endif
} }
} }
finish_fname_decls (); finish_fname_decls ();
/* Tie off the statement tree for this function. */ /* Tie off the statement tree for this function. */
...@@ -6336,7 +6247,7 @@ finish_function (nested, can_defer_p) ...@@ -6336,7 +6247,7 @@ finish_function (nested, can_defer_p)
current_function_decl = NULL; current_function_decl = NULL;
return; return;
} }
/* Then, inline any functions called in it. */ /* Then, inline any functions called in it. */
optimize_inline_calls (fndecl); optimize_inline_calls (fndecl);
timevar_pop (TV_INTEGRATION); timevar_pop (TV_INTEGRATION);
...@@ -6361,8 +6272,7 @@ finish_function (nested, can_defer_p) ...@@ -6361,8 +6272,7 @@ finish_function (nested, can_defer_p)
/* Generate the RTL for a deferred function FNDECL. */ /* Generate the RTL for a deferred function FNDECL. */
void void
c_expand_deferred_function (fndecl) c_expand_deferred_function (tree fndecl)
tree fndecl;
{ {
/* DECL_INLINE or DECL_RESULT might got cleared after the inline /* DECL_INLINE or DECL_RESULT might got cleared after the inline
function was deferred, e.g. in duplicate_decls. */ function was deferred, e.g. in duplicate_decls. */
...@@ -6384,7 +6294,7 @@ c_expand_deferred_function (fndecl) ...@@ -6384,7 +6294,7 @@ c_expand_deferred_function (fndecl)
nested FUNCTION_DECL. */ nested FUNCTION_DECL. */
static tree static tree
set_save_expr_context (tree *tp, set_save_expr_context (tree *tp,
int *walk_subtrees, int *walk_subtrees,
void *data) void *data)
{ {
...@@ -6404,9 +6314,7 @@ set_save_expr_context (tree *tp, ...@@ -6404,9 +6314,7 @@ set_save_expr_context (tree *tp,
generation of RTL. */ generation of RTL. */
static void static void
c_expand_body_1 (fndecl, nested_p) c_expand_body_1 (tree fndecl, int nested_p)
tree fndecl;
int nested_p;
{ {
timevar_push (TV_EXPAND); timevar_push (TV_EXPAND);
...@@ -6445,7 +6353,7 @@ c_expand_body_1 (fndecl, nested_p) ...@@ -6445,7 +6353,7 @@ c_expand_body_1 (fndecl, nested_p)
&& variably_modified_type_p (TREE_TYPE (fndecl))) && variably_modified_type_p (TREE_TYPE (fndecl)))
walk_tree (&TREE_TYPE (fndecl), set_save_expr_context, fndecl, walk_tree (&TREE_TYPE (fndecl), set_save_expr_context, fndecl,
NULL); NULL);
/* If this function is `main', emit a call to `__main' /* If this function is `main', emit a call to `__main'
to run global initializers, etc. */ to run global initializers, etc. */
if (DECL_NAME (fndecl) if (DECL_NAME (fndecl)
...@@ -6556,8 +6464,7 @@ c_expand_body_1 (fndecl, nested_p) ...@@ -6556,8 +6464,7 @@ c_expand_body_1 (fndecl, nested_p)
/* Like c_expand_body_1 but only for unnested functions. */ /* Like c_expand_body_1 but only for unnested functions. */
void void
c_expand_body (fndecl) c_expand_body (tree fndecl)
tree fndecl;
{ {
c_expand_body_1 (fndecl, 0); c_expand_body_1 (fndecl, 0);
} }
...@@ -6565,7 +6472,7 @@ c_expand_body (fndecl) ...@@ -6565,7 +6472,7 @@ c_expand_body (fndecl)
/* Check the declarations given in a for-loop for satisfying the C99 /* Check the declarations given in a for-loop for satisfying the C99
constraints. */ constraints. */
void void
check_for_loop_decls () check_for_loop_decls (void)
{ {
tree t; tree t;
...@@ -6596,7 +6503,7 @@ check_for_loop_decls () ...@@ -6596,7 +6503,7 @@ check_for_loop_decls ()
if (TREE_PURPOSE (t) != 0) if (TREE_PURPOSE (t) != 0)
{ {
enum tree_code code = TREE_CODE (TREE_VALUE (t)); enum tree_code code = TREE_CODE (TREE_VALUE (t));
if (code == RECORD_TYPE) if (code == RECORD_TYPE)
error ("`struct %s' declared in `for' loop initial declaration", error ("`struct %s' declared in `for' loop initial declaration",
IDENTIFIER_POINTER (TREE_PURPOSE (t))); IDENTIFIER_POINTER (TREE_PURPOSE (t)));
...@@ -6641,8 +6548,7 @@ struct language_function GTY(()) ...@@ -6641,8 +6548,7 @@ struct language_function GTY(())
used during compilation of a C function. */ used during compilation of a C function. */
void void
c_push_function_context (f) c_push_function_context (struct function *f)
struct function *f;
{ {
struct language_function *p; struct language_function *p;
p = ((struct language_function *) p = ((struct language_function *)
...@@ -6664,8 +6570,7 @@ c_push_function_context (f) ...@@ -6664,8 +6570,7 @@ c_push_function_context (f)
/* Restore the variables used during compilation of a C function. */ /* Restore the variables used during compilation of a C function. */
void void
c_pop_function_context (f) c_pop_function_context (struct function *f)
struct function *f;
{ {
struct language_function *p = f->language; struct language_function *p = f->language;
tree link; tree link;
...@@ -6703,8 +6608,7 @@ c_pop_function_context (f) ...@@ -6703,8 +6608,7 @@ c_pop_function_context (f)
/* Copy the DECL_LANG_SPECIFIC data associated with DECL. */ /* Copy the DECL_LANG_SPECIFIC data associated with DECL. */
void void
c_dup_lang_specific_decl (decl) c_dup_lang_specific_decl (tree decl)
tree decl;
{ {
struct lang_decl *ld; struct lang_decl *ld;
...@@ -6727,7 +6631,7 @@ c_dup_lang_specific_decl (decl) ...@@ -6727,7 +6631,7 @@ c_dup_lang_specific_decl (decl)
at the end of the statement. */ at the end of the statement. */
int int
stmts_are_full_exprs_p () stmts_are_full_exprs_p (void)
{ {
return 0; return 0;
} }
...@@ -6737,7 +6641,7 @@ stmts_are_full_exprs_p () ...@@ -6737,7 +6641,7 @@ stmts_are_full_exprs_p ()
returned. */ returned. */
stmt_tree stmt_tree
current_stmt_tree () current_stmt_tree (void)
{ {
return &c_stmt_tree; return &c_stmt_tree;
} }
...@@ -6745,7 +6649,7 @@ current_stmt_tree () ...@@ -6745,7 +6649,7 @@ current_stmt_tree ()
/* Returns the stack of SCOPE_STMTs for the current function. */ /* Returns the stack of SCOPE_STMTs for the current function. */
tree * tree *
current_scope_stmt_stack () current_scope_stmt_stack (void)
{ {
return &c_scope_stmt_stack; return &c_scope_stmt_stack;
} }
...@@ -6754,8 +6658,7 @@ current_scope_stmt_stack () ...@@ -6754,8 +6658,7 @@ current_scope_stmt_stack ()
C. */ C. */
int int
anon_aggr_type_p (node) anon_aggr_type_p (tree node ATTRIBUTE_UNUSED)
tree node ATTRIBUTE_UNUSED;
{ {
return 0; return 0;
} }
...@@ -6763,7 +6666,7 @@ anon_aggr_type_p (node) ...@@ -6763,7 +6666,7 @@ anon_aggr_type_p (node)
/* Dummy function in place of callback used by C++. */ /* Dummy function in place of callback used by C++. */
void void
extract_interface_info () extract_interface_info (void)
{ {
} }
...@@ -6771,7 +6674,7 @@ extract_interface_info () ...@@ -6771,7 +6674,7 @@ extract_interface_info ()
statement tree. */ statement tree. */
tree tree
c_begin_compound_stmt () c_begin_compound_stmt (void)
{ {
tree stmt; tree stmt;
...@@ -6785,8 +6688,7 @@ c_begin_compound_stmt () ...@@ -6785,8 +6688,7 @@ c_begin_compound_stmt ()
common code. */ common code. */
void void
c_expand_decl_stmt (t) c_expand_decl_stmt (tree t)
tree t;
{ {
tree decl = DECL_STMT_DECL (t); tree decl = DECL_STMT_DECL (t);
...@@ -6800,8 +6702,7 @@ c_expand_decl_stmt (t) ...@@ -6800,8 +6702,7 @@ c_expand_decl_stmt (t)
/* Return the global value of T as a symbol. */ /* Return the global value of T as a symbol. */
tree tree
identifier_global_value (t) identifier_global_value (tree t)
tree t;
{ {
tree decl = IDENTIFIER_SYMBOL_VALUE (t); tree decl = IDENTIFIER_SYMBOL_VALUE (t);
if (decl == 0 || DECL_CONTEXT (decl) == 0) if (decl == 0 || DECL_CONTEXT (decl) == 0)
...@@ -6820,10 +6721,7 @@ identifier_global_value (t) ...@@ -6820,10 +6721,7 @@ identifier_global_value (t)
otherwise the name is found in ridpointers from RID_INDEX. */ otherwise the name is found in ridpointers from RID_INDEX. */
void void
record_builtin_type (rid_index, name, type) record_builtin_type (enum rid rid_index, const char *name, tree type)
enum rid rid_index;
const char *name;
tree type;
{ {
tree id; tree id;
if (name == 0) if (name == 0)
...@@ -6835,7 +6733,7 @@ record_builtin_type (rid_index, name, type) ...@@ -6835,7 +6733,7 @@ record_builtin_type (rid_index, name, type)
/* Build the void_list_node (void_type_node having been created). */ /* Build the void_list_node (void_type_node having been created). */
tree tree
build_void_list_node () build_void_list_node (void)
{ {
tree t = build_tree_list (NULL_TREE, void_type_node); tree t = build_tree_list (NULL_TREE, void_type_node);
return t; return t;
...@@ -6851,8 +6749,7 @@ build_void_list_node () ...@@ -6851,8 +6749,7 @@ build_void_list_node ()
if attributes are present) and whose type is the modifier list. */ if attributes are present) and whose type is the modifier list. */
tree tree
make_pointer_declarator (type_quals_attrs, target) make_pointer_declarator (tree type_quals_attrs, tree target)
tree type_quals_attrs, target;
{ {
tree quals, attrs; tree quals, attrs;
tree itarget = target; tree itarget = target;
......
...@@ -30,9 +30,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -30,9 +30,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* Dump information common to statements from STMT. */ /* Dump information common to statements from STMT. */
void void
dump_stmt (di, t) dump_stmt (dump_info_p di, tree t)
dump_info_p di;
tree t;
{ {
dump_int (di, "line", STMT_LINENO (t)); dump_int (di, "line", STMT_LINENO (t));
} }
...@@ -40,9 +38,7 @@ dump_stmt (di, t) ...@@ -40,9 +38,7 @@ dump_stmt (di, t)
/* Dump the next statement after STMT. */ /* Dump the next statement after STMT. */
void void
dump_next_stmt (di, t) dump_next_stmt (dump_info_p di, tree t)
dump_info_p di;
tree t;
{ {
dump_child ("next", TREE_CHAIN (t)); dump_child ("next", TREE_CHAIN (t));
} }
...@@ -50,9 +46,7 @@ dump_next_stmt (di, t) ...@@ -50,9 +46,7 @@ dump_next_stmt (di, t)
/* Dump any C-specific tree codes and attributes of common codes. */ /* Dump any C-specific tree codes and attributes of common codes. */
bool bool
c_dump_tree (dump_info, t) c_dump_tree (void *dump_info, tree t)
void *dump_info;
tree t;
{ {
enum tree_code code; enum tree_code code;
dump_info_p di = (dump_info_p) dump_info; dump_info_p di = (dump_info_p) dump_info;
......
...@@ -34,8 +34,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -34,8 +34,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* Set format warning options according to a -Wformat=n option. */ /* Set format warning options according to a -Wformat=n option. */
void void
set_Wformat (setting) set_Wformat (int setting)
int setting;
{ {
warn_format = setting; warn_format = setting;
warn_format_y2k = setting; warn_format_y2k = setting;
...@@ -67,9 +66,8 @@ typedef struct function_format_info ...@@ -67,9 +66,8 @@ typedef struct function_format_info
unsigned HOST_WIDE_INT first_arg_num; /* number of first arg (zero for varargs) */ unsigned HOST_WIDE_INT first_arg_num; /* number of first arg (zero for varargs) */
} function_format_info; } function_format_info;
static bool decode_format_attr PARAMS ((tree, static bool decode_format_attr (tree, function_format_info *, int);
function_format_info *, int)); static enum format_type decode_format_type (const char *);
static enum format_type decode_format_type PARAMS ((const char *));
static bool check_format_string (tree argument, static bool check_format_string (tree argument,
unsigned HOST_WIDE_INT format_num, unsigned HOST_WIDE_INT format_num,
...@@ -81,12 +79,8 @@ static bool get_constant (tree expr, unsigned HOST_WIDE_INT *value, ...@@ -81,12 +79,8 @@ static bool get_constant (tree expr, unsigned HOST_WIDE_INT *value,
/* Handle a "format_arg" attribute; arguments as in /* Handle a "format_arg" attribute; arguments as in
struct attribute_spec.handler. */ struct attribute_spec.handler. */
tree tree
handle_format_arg_attribute (node, name, args, flags, no_add_attrs) handle_format_arg_attribute (tree *node, tree name ATTRIBUTE_UNUSED,
tree *node; tree args, int flags, _Bool *no_add_attrs)
tree name ATTRIBUTE_UNUSED;
tree args;
int flags;
bool *no_add_attrs;
{ {
tree type = *node; tree type = *node;
tree format_num_expr = TREE_VALUE (args); tree format_num_expr = TREE_VALUE (args);
...@@ -180,10 +174,7 @@ get_constant(tree expr, unsigned HOST_WIDE_INT *value, int validated_p) ...@@ -180,10 +174,7 @@ get_constant(tree expr, unsigned HOST_WIDE_INT *value, int validated_p)
successfully decoded, false otherwise. */ successfully decoded, false otherwise. */
static bool static bool
decode_format_attr (args, info, validated_p) decode_format_attr (tree args, function_format_info *info, int validated_p)
tree args;
function_format_info *info;
int validated_p;
{ {
tree format_type_id = TREE_VALUE (args); tree format_type_id = TREE_VALUE (args);
tree format_num_expr = TREE_VALUE (TREE_CHAIN (args)); tree format_num_expr = TREE_VALUE (TREE_CHAIN (args));
...@@ -893,32 +884,30 @@ typedef struct ...@@ -893,32 +884,30 @@ typedef struct
int *status; int *status;
} format_check_context; } format_check_context;
static void check_format_info PARAMS ((int *, function_format_info *, tree)); static void check_format_info (int *, function_format_info *, tree);
static void check_format_arg PARAMS ((void *, tree, unsigned HOST_WIDE_INT)); static void check_format_arg (void *, tree, unsigned HOST_WIDE_INT);
static void check_format_info_main PARAMS ((int *, format_check_results *, static void check_format_info_main (int *, format_check_results *,
function_format_info *, function_format_info *,
const char *, int, tree, const char *, int, tree,
unsigned HOST_WIDE_INT)); unsigned HOST_WIDE_INT);
static void status_warning PARAMS ((int *, const char *, ...)) static void status_warning (int *, const char *, ...)
ATTRIBUTE_PRINTF_2; ATTRIBUTE_PRINTF_2;
static void init_dollar_format_checking PARAMS ((int, tree)); static void init_dollar_format_checking (int, tree);
static int maybe_read_dollar_number PARAMS ((int *, const char **, int, static int maybe_read_dollar_number (int *, const char **, int,
tree, tree *, tree, tree *, const format_kind_info *);
const format_kind_info *)); static void finish_dollar_format_checking (int *, format_check_results *, int);
static void finish_dollar_format_checking PARAMS ((int *, format_check_results *, int));
static const format_flag_spec *get_flag_spec PARAMS ((const format_flag_spec *, static const format_flag_spec *get_flag_spec (const format_flag_spec *,
int, const char *)); int, const char *);
static void check_format_types PARAMS ((int *, format_wanted_type *)); static void check_format_types (int *, format_wanted_type *);
/* Decode a format type from a string, returning the type, or /* Decode a format type from a string, returning the type, or
format_type_error if not valid, in which case the caller should print an format_type_error if not valid, in which case the caller should print an
error message. */ error message. */
static enum format_type static enum format_type
decode_format_type (s) decode_format_type (const char *s)
const char *s;
{ {
int i; int i;
int slen; int slen;
...@@ -945,10 +934,7 @@ decode_format_type (s) ...@@ -945,10 +934,7 @@ decode_format_type (s)
attribute themselves. */ attribute themselves. */
void void
check_function_format (status, attrs, params) check_function_format (int *status, tree attrs, tree params)
int *status;
tree attrs;
tree params;
{ {
tree a; tree a;
...@@ -1041,9 +1027,7 @@ static int dollar_format_warned; ...@@ -1041,9 +1027,7 @@ static int dollar_format_warned;
function; PARAMS is the list of arguments starting at this argument. */ function; PARAMS is the list of arguments starting at this argument. */
static void static void
init_dollar_format_checking (first_arg_num, params) init_dollar_format_checking (int first_arg_num, tree params)
int first_arg_num;
tree params;
{ {
tree oparams = params; tree oparams = params;
...@@ -1098,14 +1082,9 @@ init_dollar_format_checking (first_arg_num, params) ...@@ -1098,14 +1082,9 @@ init_dollar_format_checking (first_arg_num, params)
a $ format is found, *FORMAT is updated to point just after it. */ a $ format is found, *FORMAT is updated to point just after it. */
static int static int
maybe_read_dollar_number (status, format, dollar_needed, params, param_ptr, maybe_read_dollar_number (int *status, const char **format,
fki) int dollar_needed, tree params, tree *param_ptr,
int *status; const format_kind_info *fki)
const char **format;
int dollar_needed;
tree params;
tree *param_ptr;
const format_kind_info *fki;
{ {
int argnum; int argnum;
int overflow_flag; int overflow_flag;
...@@ -1210,10 +1189,7 @@ maybe_read_dollar_number (status, format, dollar_needed, params, param_ptr, ...@@ -1210,10 +1189,7 @@ maybe_read_dollar_number (status, format, dollar_needed, params, param_ptr,
pointers. */ pointers. */
static void static void
finish_dollar_format_checking (status, res, pointer_gap_ok) finish_dollar_format_checking (int *status, format_check_results *res, int pointer_gap_ok)
int *status;
format_check_results *res;
int pointer_gap_ok;
{ {
int i; int i;
bool found_pointer_gap = false; bool found_pointer_gap = false;
...@@ -1248,10 +1224,7 @@ finish_dollar_format_checking (status, res, pointer_gap_ok) ...@@ -1248,10 +1224,7 @@ finish_dollar_format_checking (status, res, pointer_gap_ok)
of these is found, it is returned, otherwise NULL is returned. */ of these is found, it is returned, otherwise NULL is returned. */
static const format_flag_spec * static const format_flag_spec *
get_flag_spec (spec, flag, predicates) get_flag_spec (const format_flag_spec *spec, int flag, const char *predicates)
const format_flag_spec *spec;
int flag;
const char *predicates;
{ {
int i; int i;
for (i = 0; spec[i].flag_char != 0; i++) for (i = 0; spec[i].flag_char != 0; i++)
...@@ -1279,10 +1252,7 @@ get_flag_spec (spec, flag, predicates) ...@@ -1279,10 +1252,7 @@ get_flag_spec (spec, flag, predicates)
PARAMS is the list of argument values. */ PARAMS is the list of argument values. */
static void static void
check_format_info (status, info, params) check_format_info (int *status, function_format_info *info, tree params)
int *status;
function_format_info *info;
tree params;
{ {
format_check_context format_ctx; format_check_context format_ctx;
unsigned HOST_WIDE_INT arg_num; unsigned HOST_WIDE_INT arg_num;
...@@ -1380,10 +1350,8 @@ check_format_info (status, info, params) ...@@ -1380,10 +1350,8 @@ check_format_info (status, info, params)
format_check_context. */ format_check_context. */
static void static void
check_format_arg (ctx, format_tree, arg_num) check_format_arg (void *ctx, tree format_tree,
void *ctx; unsigned HOST_WIDE_INT arg_num)
tree format_tree;
unsigned HOST_WIDE_INT arg_num;
{ {
format_check_context *format_ctx = ctx; format_check_context *format_ctx = ctx;
format_check_results *res = format_ctx->res; format_check_results *res = format_ctx->res;
...@@ -1539,15 +1507,10 @@ check_format_arg (ctx, format_tree, arg_num) ...@@ -1539,15 +1507,10 @@ check_format_arg (ctx, format_tree, arg_num)
argument in the list of arguments. */ argument in the list of arguments. */
static void static void
check_format_info_main (status, res, info, format_chars, format_length, check_format_info_main (int *status, format_check_results *res,
params, arg_num) function_format_info *info, const char *format_chars,
int *status; int format_length, tree params,
format_check_results *res; unsigned HOST_WIDE_INT arg_num)
function_format_info *info;
const char *format_chars;
int format_length;
tree params;
unsigned HOST_WIDE_INT arg_num;
{ {
const char *orig_format_chars = format_chars; const char *orig_format_chars = format_chars;
tree first_fillin_param = params; tree first_fillin_param = params;
...@@ -2170,9 +2133,7 @@ check_format_info_main (status, res, info, format_chars, format_length, ...@@ -2170,9 +2133,7 @@ check_format_info_main (status, res, info, format_chars, format_length,
/* Check the argument types from a single format conversion (possibly /* Check the argument types from a single format conversion (possibly
including width and precision arguments). */ including width and precision arguments). */
static void static void
check_format_types (status, types) check_format_types (int *status, format_wanted_type *types)
int *status;
format_wanted_type *types;
{ {
for (; types != 0; types = types->next) for (; types != 0; types = types->next)
{ {
...@@ -2433,12 +2394,8 @@ init_dynamic_asm_fprintf_info (void) ...@@ -2433,12 +2394,8 @@ init_dynamic_asm_fprintf_info (void)
/* Handle a "format" attribute; arguments as in /* Handle a "format" attribute; arguments as in
struct attribute_spec.handler. */ struct attribute_spec.handler. */
tree tree
handle_format_attribute (node, name, args, flags, no_add_attrs) handle_format_attribute (tree *node, tree name ATTRIBUTE_UNUSED, tree args,
tree *node; int flags, _Bool *no_add_attrs)
tree name ATTRIBUTE_UNUSED;
tree args;
int flags;
bool *no_add_attrs;
{ {
tree type = *node; tree type = *node;
function_format_info info; function_format_info info;
......
...@@ -43,13 +43,13 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ...@@ -43,13 +43,13 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
# define INO_T_COPY(DEST, SRC) (DEST) = (SRC) # define INO_T_COPY(DEST, SRC) (DEST) = (SRC)
#endif #endif
static void add_env_var_paths PARAMS ((const char *, int)); static void add_env_var_paths (const char *, int);
static void add_standard_paths PARAMS ((const char *, const char *, int)); static void add_standard_paths (const char *, const char *, int);
static void free_path PARAMS ((struct cpp_path *, int)); static void free_path (struct cpp_path *, int);
static void merge_include_chains PARAMS ((cpp_reader *, int)); static void merge_include_chains (cpp_reader *, int);
static struct cpp_path * static struct cpp_path *remove_duplicates (cpp_reader *, struct cpp_path *,
remove_duplicates PARAMS ((cpp_reader *, struct cpp_path *, struct cpp_path *,
struct cpp_path *, struct cpp_path *, int)); struct cpp_path *, int);
/* Include chains heads and tails. */ /* Include chains heads and tails. */
static struct cpp_path *heads[4]; static struct cpp_path *heads[4];
...@@ -59,9 +59,7 @@ enum { REASON_QUIET = 0, REASON_NOENT, REASON_DUP, REASON_DUP_SYS }; ...@@ -59,9 +59,7 @@ enum { REASON_QUIET = 0, REASON_NOENT, REASON_DUP, REASON_DUP_SYS };
/* Free an element of the include chain, possibly giving a reason. */ /* Free an element of the include chain, possibly giving a reason. */
static void static void
free_path (path, reason) free_path (struct cpp_path *path, int reason)
struct cpp_path *path;
int reason;
{ {
switch (reason) switch (reason)
{ {
...@@ -90,9 +88,7 @@ free_path (path, reason) ...@@ -90,9 +88,7 @@ free_path (path, reason)
/* Read ENV_VAR for a PATH_SEPARATOR-separated list of file names; and /* Read ENV_VAR for a PATH_SEPARATOR-separated list of file names; and
append all the names to the search path CHAIN. */ append all the names to the search path CHAIN. */
static void static void
add_env_var_paths (env_var, chain) add_env_var_paths (const char *env_var, int chain)
const char *env_var;
int chain;
{ {
char *p, *q, *path; char *p, *q, *path;
...@@ -122,9 +118,7 @@ add_env_var_paths (env_var, chain) ...@@ -122,9 +118,7 @@ add_env_var_paths (env_var, chain)
/* Append the standard include chain defined in cppdefault.c. */ /* Append the standard include chain defined in cppdefault.c. */
static void static void
add_standard_paths (sysroot, iprefix, cxx_stdinc) add_standard_paths (const char *sysroot, const char *iprefix, int cxx_stdinc)
const char *sysroot, *iprefix;
int cxx_stdinc;
{ {
const struct default_include *p; const struct default_include *p;
size_t len; size_t len;
...@@ -176,12 +170,9 @@ add_standard_paths (sysroot, iprefix, cxx_stdinc) ...@@ -176,12 +170,9 @@ add_standard_paths (sysroot, iprefix, cxx_stdinc)
removed. Return the head of the resulting chain. Any of HEAD, removed. Return the head of the resulting chain. Any of HEAD,
JOIN and SYSTEM can be NULL. */ JOIN and SYSTEM can be NULL. */
static struct cpp_path * static struct cpp_path *
remove_duplicates (pfile, head, system, join, verbose) remove_duplicates (cpp_reader *pfile, struct cpp_path *head,
cpp_reader *pfile; struct cpp_path *system, struct cpp_path *join,
struct cpp_path *head; int verbose)
struct cpp_path *system;
struct cpp_path *join;
int verbose;
{ {
struct cpp_path **pcur, *tmp, *cur; struct cpp_path **pcur, *tmp, *cur;
struct stat st; struct stat st;
...@@ -255,9 +246,7 @@ remove_duplicates (pfile, head, system, join, verbose) ...@@ -255,9 +246,7 @@ remove_duplicates (pfile, head, system, join, verbose)
to treat -Ibar -Ifoo -I- -Ifoo -Iquux as if written -Ibar -I- -Ifoo to treat -Ibar -Ifoo -I- -Ifoo -Iquux as if written -Ibar -I- -Ifoo
-Iquux. */ -Iquux. */
static void static void
merge_include_chains (pfile, verbose) merge_include_chains (cpp_reader *pfile, int verbose)
cpp_reader *pfile;
int verbose;
{ {
/* Join the SYSTEM and AFTER chains. Remove duplicates in the /* Join the SYSTEM and AFTER chains. Remove duplicates in the
resulting SYSTEM chain. */ resulting SYSTEM chain. */
...@@ -300,7 +289,7 @@ merge_include_chains (pfile, verbose) ...@@ -300,7 +289,7 @@ merge_include_chains (pfile, verbose)
(Note that -I. -I- is not the same as the default setup; -I. uses (Note that -I. -I- is not the same as the default setup; -I. uses
the compiler's working dir.) */ the compiler's working dir.) */
void void
split_quote_chain () split_quote_chain (void)
{ {
heads[QUOTE] = heads[BRACKET]; heads[QUOTE] = heads[BRACKET];
tails[QUOTE] = tails[BRACKET]; tails[QUOTE] = tails[BRACKET];
...@@ -313,10 +302,7 @@ split_quote_chain () ...@@ -313,10 +302,7 @@ split_quote_chain ()
/* Add PATH to the include chain CHAIN. PATH must be malloc-ed and /* Add PATH to the include chain CHAIN. PATH must be malloc-ed and
NUL-terminated. */ NUL-terminated. */
void void
add_path (path, chain, cxx_aware) add_path (char *path, int chain, int cxx_aware)
char *path;
int chain;
int cxx_aware;
{ {
struct cpp_path *p; struct cpp_path *p;
...@@ -338,11 +324,9 @@ add_path (path, chain, cxx_aware) ...@@ -338,11 +324,9 @@ add_path (path, chain, cxx_aware)
/* Exported function to handle include chain merging, duplicate /* Exported function to handle include chain merging, duplicate
removal, and registration with cpplib. */ removal, and registration with cpplib. */
void void
register_include_chains (pfile, sysroot, iprefix, register_include_chains (cpp_reader *pfile, const char *sysroot,
stdinc, cxx_stdinc, verbose) const char *iprefix, int stdinc, int cxx_stdinc,
cpp_reader *pfile; int verbose)
const char *sysroot, *iprefix;
int stdinc, cxx_stdinc, verbose;
{ {
static const char *const lang_env_vars[] = static const char *const lang_env_vars[] =
{ "C_INCLUDE_PATH", "CPLUS_INCLUDE_PATH", { "C_INCLUDE_PATH", "CPLUS_INCLUDE_PATH",
......
...@@ -15,9 +15,9 @@ You should have received a copy of the GNU General Public License ...@@ -15,9 +15,9 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
extern void split_quote_chain PARAMS ((void)); extern void split_quote_chain (void);
extern void add_path PARAMS ((char *, int, int)); extern void add_path (char *, int, int);
extern void register_include_chains PARAMS ((cpp_reader *, const char *, extern void register_include_chains (cpp_reader *, const char *,
const char *, int, int, int)); const char *, int, int, int);
enum { QUOTE = 0, BRACKET, SYSTEM, AFTER }; enum { QUOTE = 0, BRACKET, SYSTEM, AFTER };
...@@ -49,7 +49,7 @@ typedef struct align_stack GTY(()) ...@@ -49,7 +49,7 @@ typedef struct align_stack GTY(())
static GTY(()) struct align_stack * alignment_stack; static GTY(()) struct align_stack * alignment_stack;
#ifdef HANDLE_PRAGMA_PACK #ifdef HANDLE_PRAGMA_PACK
static void handle_pragma_pack PARAMS ((cpp_reader *)); static void handle_pragma_pack (cpp_reader *);
#ifdef HANDLE_PRAGMA_PACK_PUSH_POP #ifdef HANDLE_PRAGMA_PACK_PUSH_POP
/* If we have a "global" #pragma pack(<n>) in effect when the first /* If we have a "global" #pragma pack(<n>) in effect when the first
...@@ -61,14 +61,12 @@ static int default_alignment; ...@@ -61,14 +61,12 @@ static int default_alignment;
#define SET_GLOBAL_ALIGNMENT(ALIGN) \ #define SET_GLOBAL_ALIGNMENT(ALIGN) \
(default_alignment = maximum_field_alignment = (ALIGN)) (default_alignment = maximum_field_alignment = (ALIGN))
static void push_alignment PARAMS ((int, tree)); static void push_alignment (int, tree);
static void pop_alignment PARAMS ((tree)); static void pop_alignment (tree);
/* Push an alignment value onto the stack. */ /* Push an alignment value onto the stack. */
static void static void
push_alignment (alignment, id) push_alignment (int alignment, tree id)
int alignment;
tree id;
{ {
if (alignment_stack == NULL if (alignment_stack == NULL
|| alignment_stack->alignment != alignment || alignment_stack->alignment != alignment
...@@ -99,8 +97,7 @@ push_alignment (alignment, id) ...@@ -99,8 +97,7 @@ push_alignment (alignment, id)
/* Undo a push of an alignment onto the stack. */ /* Undo a push of an alignment onto the stack. */
static void static void
pop_alignment (id) pop_alignment (tree id)
tree id;
{ {
align_stack * entry; align_stack * entry;
...@@ -157,8 +154,7 @@ pop_alignment (id) ...@@ -157,8 +154,7 @@ pop_alignment (id)
#pragma pack (pop) #pragma pack (pop)
#pragma pack (pop, ID) */ #pragma pack (pop, ID) */
static void static void
handle_pragma_pack (dummy) handle_pragma_pack (cpp_reader *dummy ATTRIBUTE_UNUSED)
cpp_reader *dummy ATTRIBUTE_UNUSED;
{ {
tree x, id = 0; tree x, id = 0;
int align = -1; int align = -1;
...@@ -261,12 +257,11 @@ handle_pragma_pack (dummy) ...@@ -261,12 +257,11 @@ handle_pragma_pack (dummy)
static GTY(()) tree pending_weaks; static GTY(()) tree pending_weaks;
#ifdef HANDLE_PRAGMA_WEAK #ifdef HANDLE_PRAGMA_WEAK
static void apply_pragma_weak PARAMS ((tree, tree)); static void apply_pragma_weak (tree, tree);
static void handle_pragma_weak PARAMS ((cpp_reader *)); static void handle_pragma_weak (cpp_reader *);
static void static void
apply_pragma_weak (decl, value) apply_pragma_weak (tree decl, tree value)
tree decl, value;
{ {
if (value) if (value)
{ {
...@@ -285,8 +280,7 @@ apply_pragma_weak (decl, value) ...@@ -285,8 +280,7 @@ apply_pragma_weak (decl, value)
} }
void void
maybe_apply_pragma_weak (decl) maybe_apply_pragma_weak (tree decl)
tree decl;
{ {
tree *p, t, id; tree *p, t, id;
...@@ -311,8 +305,7 @@ maybe_apply_pragma_weak (decl) ...@@ -311,8 +305,7 @@ maybe_apply_pragma_weak (decl)
/* #pragma weak name [= value] */ /* #pragma weak name [= value] */
static void static void
handle_pragma_weak (dummy) handle_pragma_weak (cpp_reader *dummy ATTRIBUTE_UNUSED)
cpp_reader *dummy ATTRIBUTE_UNUSED;
{ {
tree name, value, x, decl; tree name, value, x, decl;
enum cpp_ttype t; enum cpp_ttype t;
...@@ -343,8 +336,7 @@ handle_pragma_weak (dummy) ...@@ -343,8 +336,7 @@ handle_pragma_weak (dummy)
} }
#else #else
void void
maybe_apply_pragma_weak (decl) maybe_apply_pragma_weak (tree decl ATTRIBUTE_UNUSED)
tree decl ATTRIBUTE_UNUSED;
{ {
} }
#endif /* HANDLE_PRAGMA_WEAK */ #endif /* HANDLE_PRAGMA_WEAK */
...@@ -352,12 +344,11 @@ maybe_apply_pragma_weak (decl) ...@@ -352,12 +344,11 @@ maybe_apply_pragma_weak (decl)
static GTY(()) tree pending_redefine_extname; static GTY(()) tree pending_redefine_extname;
#ifdef HANDLE_PRAGMA_REDEFINE_EXTNAME #ifdef HANDLE_PRAGMA_REDEFINE_EXTNAME
static void handle_pragma_redefine_extname PARAMS ((cpp_reader *)); static void handle_pragma_redefine_extname (cpp_reader *);
/* #pragma redefined_extname oldname newname */ /* #pragma redefined_extname oldname newname */
static void static void
handle_pragma_redefine_extname (dummy) handle_pragma_redefine_extname (cpp_reader *dummy ATTRIBUTE_UNUSED)
cpp_reader *dummy ATTRIBUTE_UNUSED;
{ {
tree oldname, newname, decl, x; tree oldname, newname, decl, x;
enum cpp_ttype t; enum cpp_ttype t;
...@@ -390,8 +381,7 @@ handle_pragma_redefine_extname (dummy) ...@@ -390,8 +381,7 @@ handle_pragma_redefine_extname (dummy)
#endif #endif
void void
add_to_renaming_pragma_list (oldname, newname) add_to_renaming_pragma_list (tree oldname, tree newname)
tree oldname, newname;
{ {
pending_redefine_extname pending_redefine_extname
= tree_cons (oldname, newname, pending_redefine_extname); = tree_cons (oldname, newname, pending_redefine_extname);
...@@ -400,12 +390,11 @@ add_to_renaming_pragma_list (oldname, newname) ...@@ -400,12 +390,11 @@ add_to_renaming_pragma_list (oldname, newname)
static GTY(()) tree pragma_extern_prefix; static GTY(()) tree pragma_extern_prefix;
#ifdef HANDLE_PRAGMA_EXTERN_PREFIX #ifdef HANDLE_PRAGMA_EXTERN_PREFIX
static void handle_pragma_extern_prefix PARAMS ((cpp_reader *)); static void handle_pragma_extern_prefix (cpp_reader *);
/* #pragma extern_prefix "prefix" */ /* #pragma extern_prefix "prefix" */
static void static void
handle_pragma_extern_prefix (dummy) handle_pragma_extern_prefix (cpp_reader *dummy ATTRIBUTE_UNUSED)
cpp_reader *dummy ATTRIBUTE_UNUSED;
{ {
tree prefix, x; tree prefix, x;
enum cpp_ttype t; enum cpp_ttype t;
...@@ -428,8 +417,7 @@ handle_pragma_extern_prefix (dummy) ...@@ -428,8 +417,7 @@ handle_pragma_extern_prefix (dummy)
pragmas that rename variables. */ pragmas that rename variables. */
tree tree
maybe_apply_renaming_pragma (decl, asmname) maybe_apply_renaming_pragma (tree decl, tree asmname)
tree decl, asmname;
{ {
tree oldname; tree oldname;
...@@ -486,17 +474,15 @@ maybe_apply_renaming_pragma (decl, asmname) ...@@ -486,17 +474,15 @@ maybe_apply_renaming_pragma (decl, asmname)
/* Front-end wrapper for pragma registration to avoid dragging /* Front-end wrapper for pragma registration to avoid dragging
cpplib.h in almost everywhere. */ cpplib.h in almost everywhere. */
void void
c_register_pragma (space, name, handler) c_register_pragma (const char *space, const char *name,
const char *space; void (*handler) (struct cpp_reader *))
const char *name;
void (*handler) PARAMS ((struct cpp_reader *));
{ {
cpp_register_pragma (parse_in, space, name, handler); cpp_register_pragma (parse_in, space, name, handler);
} }
/* Set up front-end pragmas. */ /* Set up front-end pragmas. */
void void
init_pragma () init_pragma (void)
{ {
#ifdef HANDLE_PRAGMA_PACK #ifdef HANDLE_PRAGMA_PACK
c_register_pragma (0, "pack", handle_pragma_pack); c_register_pragma (0, "pack", handle_pragma_pack);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment