diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2ff3c130e40df2a8035ba526d1a109271f013593..ee4daf58b1bc6ce1ec976d46a7646634fdbb11ef 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,42 @@ +Fri Apr 17 08:57:35 1998 Jeffrey A Law (law@cygnus.com) + + * tree.c (avoid_overlap): Add prototype. + + * spew.c (num_tokens): Add prototype. + (nth_noken, add_token, consume_token, debug_yychar): Likewise. + + * search.c (dfs_check_overlap): Add prototype. + (dfs_no_overlap_yet): Likewise. + + * pt.c (original_template): Add prototype. + (inline_needs_template_parms): Likewise. + (push_inline_template_parms_recursive): Likewise. + (retrieve_specialization, register_specialization): Likewise. + (print_candidates, reduce_template_parm_level): Likewise. + (build_template_decl, mark_template_parm): Likewise. + (tsubst_friend_function, get_bindings_real): Likewise. + + * method.c (start_squangling): Add prototype. + (end_squangling, check_ktype, issue_ktype): Likewise. + (build_overloaded_scope_ref, check_btype): Likewise. + (build_mangled_template_parm_index): Likewise. + + * lex.c (init_cpp_parse): Add prototype. + (handle_cp_pragma, handle_sysv_pragma): Likewise. + (reduce_cmp, token_cmp): Likewise. + + * except.c (call_eh_info): Add prototype. + (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise. + (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise. + + * decl2.c (is_namespace_ancestor): Add prototype. + (namespace_ancestor, add_using_namespace): Likewise. + (ambiguous_decl): Likewise. + + * decl.c (indent): Add prototype. + + * call.c (add_template_candidate_real): Add prototype. + Fri Apr 17 01:57:12 1998 Jason Merrill <jason@yorick.cygnus.com> * decl2.c (build_expr_from_tree): Just return a PMF. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 1c50b7eed4cb9843162ed5db213ca73a10951394..46a5be00ef3a694eae8af067fa9d9a2f87bcfdef 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -61,6 +61,8 @@ static struct z_candidate * splice_viable PROTO((struct z_candidate *)); static int any_viable PROTO((struct z_candidate *)); static struct z_candidate * add_template_candidate PROTO((struct z_candidate *, tree, tree, tree, tree, int)); +static struct z_candidate * add_template_candidate_real + PROTO((struct z_candidate *, tree, tree, tree, tree, int, tree)); static struct z_candidate * add_template_conv_candidate PROTO((struct z_candidate *, tree, tree, tree, tree)); static struct z_candidate * add_builtin_candidates diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 8f5b90c41accb148d01a4b18439f756a6ea6c89c..2a966a2f830007bd5fa9402caad7b131fd590713 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -171,6 +171,10 @@ static int member_function_or_else PROTO((tree, tree, char *)); static void bad_specifiers PROTO((tree, char *, int, int, int, int, int)); +#if defined (DEBUG_CP_BINDING_LEVELS) +static void indent PROTO((void)); +#endif + /* a node which has tree code ERROR_MARK, and whose type is itself. All erroneous expressions are replaced with this node. All functions that accept nodes as arguments should avoid generating error messages diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 5ab2f98da49dba847316eb04feefde972f812831..42e0e21eaced25d59e642d4dce4c7d7634b1e4c9 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -47,6 +47,10 @@ static void grok_function_init PROTO((tree, tree)); static int finish_vtable_vardecl PROTO((tree, tree)); static int prune_vtable_vardecl PROTO((tree, tree)); static void finish_sigtable_vardecl PROTO((tree, tree)); +static int is_namespace_ancestor PROTO((tree, tree)); +static tree namespace_ancestor PROTO((tree, tree)); +static void add_using_namespace PROTO((tree, tree, int)); +static tree ambiguous_decl PROTO((int, tree, tree)); extern int current_class_depth; diff --git a/gcc/cp/except.c b/gcc/cp/except.c index 63593eece4f3dcd7e06cb0fd2313da92318efb9b..0a6bb3386f90ea192c06421791a2d960a65e5d1c 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -47,6 +47,14 @@ static rtx do_function_call PROTO((tree, tree, tree)); static tree build_eh_type_type PROTO((tree)); static tree build_eh_type PROTO((tree)); static void expand_end_eh_spec PROTO((tree)); +static tree call_eh_info PROTO((void)); +static void push_eh_info PROTO((void)); +static tree get_eh_info PROTO((void)); +static tree get_eh_value PROTO((void)); +static tree get_eh_type PROTO((void)); +static tree get_eh_caught PROTO((void)); +static tree get_eh_handlers PROTO((void)); +static tree do_pop_exception PROTO((void)); #if 0 /* This is the startup, and finish stuff per exception table. */ diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 76bf527289f3219ccffa175196d6f8f0731dc054..93a2891f2605f3c91990fd9ab8295bb109b61e60 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -87,6 +87,17 @@ static void feed_defarg PROTO((tree, tree)); static int set_vardecl_interface_info PROTO((tree, tree)); static void store_pending_inline PROTO((tree, struct pending_inline *)); static void reinit_parse_for_expr PROTO((struct obstack *)); +static int *init_cpp_parse PROTO((void)); +static int handle_cp_pragma PROTO((char *)); +#ifdef HANDLE_SYSV_PRAGMA +static int handle_sysv_pragma PROTO((FILE *, int)); +#endif +#ifdef GATHER_STATISTICS +#ifdef REDUCE_LENGTH +static int reduce_cmp PROTO((int *, int *)); +static int token_cmp PROTO((int *, int *)); +#endif +#endif /* Given a file name X, return the nondirectory portion. Keep in mind that X can be computed more than once. */ diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 6e20848102eec153cc93c884341cf73cc97230d3..139086b088ec2f1c0ab6745ebca7c4a149668b13 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -75,6 +75,13 @@ static tree build_decl_overload_real PROTO((tree, tree, tree, tree, static void build_template_template_parm_names PROTO((tree)); static void build_template_parm_names PROTO((tree, tree)); static void build_underscore_int PROTO((int)); +static void start_sqangling PROTO((void)); +static void end_sqangling PROTO((void)); +static int check_ktype PROTO((tree, int)); +static int issue_ktype PROTO((tree)); +static void build_overloaded_scope_ref PROTO((tree)); +static void build_mangled_template_parm_index PROTO((char *, tree)); +static int check_btype PROTO((tree)); # define OB_INIT() (scratch_firstobj ? (obstack_free (&scratch_obstack, scratch_firstobj), 0) : 0) # define OB_PUTC(C) (obstack_1grow (&scratch_obstack, (C))) diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 6fce6bb1fea5d1ce06e67516bcc8c2c06a0a895c..7a8365c3856fdcfc6971e750f065304cfe8a2aba 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -90,6 +90,17 @@ static tree convert_nontype_argument PROTO((tree, tree)); static tree get_bindings_overload PROTO((tree, tree, tree)); static int for_each_template_parm PROTO((tree, tree_fn_t, void*)); static tree build_template_parm_index PROTO((int, int, int, tree, tree)); +static tree original_template PROTO((tree)); +static int inline_needs_template_parms PROTO((tree)); +static void push_inline_template_parms_recursive PROTO((tree, int)); +static tree retrieve_specialization PROTO((tree, tree)); +static void register_specialization PROTO((tree, tree, tree)); +static void print_candidates PROTO((tree)); +static tree reduce_template_parm_level PROTO((tree, tree, int)); +static tree build_template_decl PROTO((tree, tree)); +static int mark_template_parm PROTO((tree, void *)); +static tree tsubst_friend_function PROTO((tree, tree)); +static tree get_bindings_real PROTO((tree, tree, tree, int)); /* Do any processing required when DECL (a member template declaration using TEMPLATE_PARAMETERS as its innermost parameter list) is diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 4438372d79c1ce17d13368d17bba004774f89e93..820dbf1257fd5fd0a4be85ee93c70350db987220 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -90,6 +90,8 @@ static tree virtual_context PROTO((tree, tree, tree)); static tree get_template_base_recursive PROTO((tree, tree, tree, int)); static void dfs_walk PROTO((tree, void (*) (tree), int (*) (tree))); +static void dfs_check_overlap PROTO((tree)); +static int dfs_no_overlap_yet PROTO((tree)); static void envelope_add_decl PROTO((tree, tree, tree *)); static int get_base_distance_recursive PROTO((tree, int, int, int, int *, tree *, tree, tree *, diff --git a/gcc/cp/spew.c b/gcc/cp/spew.c index ceee4e66d1339aa25b61be492f0e2194a188fc3a..a13f659e1f4c5dc0ac6a27dd0b1c1354d358b8ed 100644 --- a/gcc/cp/spew.c +++ b/gcc/cp/spew.c @@ -49,6 +49,14 @@ static int do_aggr PROTO((void)); static int probe_obstack PROTO((struct obstack *, tree, unsigned int)); static void scan_tokens PROTO((int)); +#ifdef SPEW_DEBUG +static int num_tokens PROTO((void)); +static struct token *nth_token PROTO((int)); +static void add_token PROTO((struct token *)); +static void consume_token PROTO((void)); +static int debug_yychar PROTO((int)); +#endif + /* From lex.c: */ /* the declaration found for the last IDENTIFIER token read in. yylex must look this up to detect typedefs, which get token type TYPENAME, diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 8d694c201dcffe58057aade40fc9108e27ea21d4..de3906c580230c028206307c31d46b42bf1962ac 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -44,6 +44,7 @@ static tree list_hash_lookup PROTO((int, int, int, int, tree, tree, tree)); static void propagate_binfo_offsets PROTO((tree, tree)); static void unshare_base_binfos PROTO((tree)); +static int avoid_overlap PROTO((tree, tree)); #define CEIL(x,y) (((x) + (y) - 1) / (y))