OSDN Git Service

17701ecf1ac6bc76ae83ff98ddc6d2916505aa01
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 Mon May 18 01:24:08 1998  Jeffrey A Law  (law@cygnus.com)
2
3         * Makefile.in (program_transform_name, objdir): Define.
4
5         * Makefile.in (BISON): Use bison from the build tree if it exists.
6         (FLEX): Similarly.
7
8 Sun May 17 14:52:08 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
9
10         * typeck.c (type_unknown_p): Return true for TREE_LIST also.
11
12         * call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
13
14 Sun May 17 14:51:41 1998  Jason Merrill  <jason@yorick.cygnus.com>
15
16         * call.c (build_scoped_method_call): Likewise.
17
18 Sun May 17 13:53:48 1998  Mark Mitchell  <mmitchell@usa.net>
19
20         * init.c (build_new_1): Call suspend_momentary around the creation
21         of values that must be saved for exception handling.
22         * parse.y (.build_new_placement): New non-terminal.
23         (unary_expr, new_placement): Use it.
24         * parse.c: Regenerated.
25         
26 Sun May 17 12:32:08 1998  Jason Merrill  <jason@yorick.cygnus.com>
27
28         * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
29         old and new types.
30
31         * pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
32         canonical type.
33
34         * call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
35
36 Fri May 15 20:28:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
37
38         * decl.c (start_decl): Revert problem change.
39
40         * Makefile.in (CONFLICTS): Fix.
41
42 Fri May 15 15:34:02 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
43
44         * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
45
46 Fri May 15 00:46:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
47
48         * class.c (finish_struct_1): Use BINFO_SIZE.
49
50         * decl.c (start_decl): Use 'tem'.
51
52 Thu May 14 16:30:47 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
53
54         * exception.cc: Include eh-common.h.
55         (struct cp_eh_info): add eh_info struct with NEW_EH_MODEL.
56         (__cplus_type_matcher): First stab at new C++ runtime type matcher.
57         (__cp_push_exception): Initialize eh_info struct as well.
58         * except.c: Remove local structs and include eh-common.h.
59         (init_exception_processing): Set language and version codes.
60         (call_eh_info): add presence of eh_info to runtime description of 
61         struct cp_eh_info.
62         (expand_end_eh_spec): call start_catch_block() and end_catch_block().
63         * semantics.c (finish_try_block): call start_catch_block() and 
64         end_catch_block().
65         * parse.y (function_try_block): call start_catch_block() and 
66         end_catch_block().
67
68 Thu May 14 12:27:34 1998  Brendan Kehoe  <brendan@cygnus.com>
69
70         * typeck.c (original_type): New function.
71         (common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
72         to see if they're actually the same.
73         * cp-tree.h (original_type): Declare.
74
75 Wed May 13 12:54:30 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
76
77         * Makefile.in (lex.o): Depend on output.h.
78         
79         * call.c (add_function_candidate): Remove unused variable `cand'.
80         (add_conv_candidate): Likewise.
81         (build_builtin_candidate): Likewise.
82         
83         * cp-tree.h: Add prototype for `types_overlap_p'.
84
85         * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
86
87         * decl2.c (merge_functions): Remove unused variables `tmp' and
88         `tempn'.
89
90         * error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
91         (code_as_string): Likewise.
92         (language_as_string): Likewise.
93         (parm_as_string): Likewise.
94         (op_as_string): Likewise.
95         (assop_as_string): Likewise.
96         (cv_as_string): Likewise.
97
98         * lex.c: Include output.h.
99
100         * pt.c (type_unification): Cast first argument of `bzero' to a char*.
101
102         * search.c (dfs_no_overlap_yet): Mark parameter `t' with
103         ATTRIBUTE_UNUSED.
104
105         * tinfo.cc (__class_type_info::dcast): Change the type of variable
106         `i' from int to size_t.
107
108         * typeck.c (language_lvalue_valid): Mark parameter `exp' with
109         ATTRIBUTE_UNUSED.
110
111 Tue May 12 21:37:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
112
113         * error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
114         DECL_NAMESPACE_SCOPE_P.
115         (lang_decl_name): Likewise.
116         * pt.c (tsubst_friend_function, tsubst): Likewise.
117         * decl.c (pushdecl, redeclaration_error_message, start_decl, 
118         cp_finish_decl, start_function): Likewise.
119         * class.c (finish_struct_1): Likewise.
120         * call.c (build_over_call): Likewise.
121         (compare_ics): Use DERIVED_FROM_P.
122
123 Tue May 12 07:24:18 1998  Mark Mitchell  <mmitchell@usa.net>
124
125         * cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
126         * method.c (build_mangled_name): Use it.
127         (build_decl_overload_real): Likewise.
128
129         * error.c (dump_simple_decl): New function, broken out from ...
130         (dump_decl): Use it.
131
132 Mon May 11 11:38:07 1998  Mark Mitchell  <mmitchell@usa.net>
133
134         * ptree.c (lang_print_xnode): Add missing `break'.
135
136         * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
137
138         * call.c (add_template_candidate): Adjust for changes to
139         fn_type_unification. 
140         (add_template_candidate_real): Likewise.
141         (add_template_conv_candidate): Likewise.
142         (build_user_type_conversion_1): Likewise.
143         (build_new_function_call): Likewise.
144         (build_object_call): Likewise.
145         (build_new_op): Likewise.
146         (build_new_method_call): Likewise.
147         * class.c (instantiate_type): Likewise.
148         * cp-tree.h (unification_kind_t): New type.
149         (fn_type_unification): Adjust prototype.
150         (type_unificaiton): Likewise.
151         * pt.c (UNIFY_ALLOW_NONE): New macro.
152         (UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
153         (UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
154         (UNIFY_ALLOW_DERIVED): Likewise.
155         (unify): Change prototype.
156         (maybe_adjust_types_for_deduction): New function.
157         (check_cv_quals_for_unify): Likewise.
158         (determine_specialization): Adjust.
159         (fn_type_unification): Likewise.
160         (type_unification): Likewise.
161         (type_unification_real): Likewise.  Use
162         maybe_adjust_types_for_deduction.  Fix mishandling of
163         back-unification of template functions passed as arguments.  Pass
164         appropriate combination of UNIFY_ALLOW_* to unify.
165         (unify): Remove unused NTPARMS parameter.  Use
166         check_cv_quals_for_unify.  Remove bogus code that allowed
167         too-generous unification in order to adhere more closely to standard.
168         (get_bindings_real): Adjust.
169         (get_class_bindings): Likewise.
170
171         * method.c (build_overload_identifier): Only use the innermost
172         template arguments when mangling.
173         * pt.c (tsubst_template_argument_vector): New function.
174         (complete_template_args): Deal with the situation where the
175         extra_args contain more than one level of arguments.
176         (lookup_template_class): Deal with member template classes, which
177         may have more than one level of arguments.
178         (tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
179         Improve handling of member template classes.  Use
180         DECL_PRIMARY_TEMPLATE instead of inline expansion.  Use
181         tsubst_template_argument_vector where appropriate.
182         (regenerate_decl_from_template): Break out from ...
183         (instantiate_decl): Here.
184         
185         * lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
186         * parse.h: Regenerated.
187         * parse.c: Really regenerated.
188         
189         * cp-tree.h (finish_unary_op_expr): New function.
190         (finish_id_expr): Likewise.
191         (begin_new_placement): Likewise.
192         (finish_new_placement): Likewise.
193         (finish_declarator): Likewise.
194         (finish_translation_unit): Likewise.
195         (finish_parmlist): Likewise.
196         (begin_class_definition): Likewise.
197         (finish_class_definition): Likewise.
198         (finish_default_args): Likewise.
199         (finish_inline_definitions): Likewise.
200         * parse.y (GCC_ASM_KEYWORD): Remove.
201         (TYPENAME_ELLIPSIS): Likewise.
202         * parse.c: Regenerated.
203         Use new functions in semantics.c in the actions for many rules.
204         * gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
205         * hash.h: Regenerated.
206         * semantics.c (finish_expr_stmt): Allow NULL expr.
207         (finish_unary_op_expr): New function, containing
208         code previously in parse.y.
209         (finish_id_expr): Likewise.
210         (begin_new_placement): Likewise.
211         (finish_new_placement): Likewise.
212         (finish_declarator): Likewise.
213         (finish_translation_unit): Likewise.
214         (finish_parmlist): Likewise.
215         (begin_class_definition): Likewise.
216         (finish_class_definition): Likewise.
217         (finish_default_args): Likewise.
218         (finish_inline_definitions): Likewise.
219
220 Sun May 10 23:43:13 1998  Mark Mitchell  <mmitchell@usa.net>
221
222         * typeck.c (build_c_cast): Don't decay arrays and functions to
223         pointer type when converting to a class type.
224
225 Sun May 10 22:53:56 1998  Jason Merrill  <jason@yorick.cygnus.com>
226
227         * cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
228         (DECL_CLASS_SCOPE_P): Likewise.
229
230 Sun May 10 22:48:22 1998  H.J. Lu  (hjl@gnu.org)
231
232         * class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
233         * decl2.c (constructor_name_full): Likewise.
234
235 Sun May 10 22:48:12 1998  Mike Stump  <mrs@wrs.com>
236
237         * tree.c (mapcar): Add OVERLOAD support.
238
239         * init.c (resolve_offset_ref): We must use basetype_path before we
240         destroy it with a call to convert_pointer_to.
241
242 Sat May  9 14:44:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
243
244         * class.c (currently_open_class): New fn.
245         * decl.c (lookup_name_real): Use it.
246         * search.c (lookup_field): Likewise.
247
248 Fri May  8 23:32:42 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
249
250         * cp-tree.def (OVERLOAD): New node.  
251         * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
252         SET_IDENTIFIER_NAMESPACE_VALUE): Define.
253         (NAMESPACE_BINDING): Remove.
254         (IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
255         namespace_binding.
256         (OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
257         Define.
258         (tree_overload): New struct.
259         (IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
260         (REAL_IDENTIFIER_TYPE_VALUE): Define.
261         (IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
262         (lang_decl_flags): Remove in_namespace.
263         (lang_decl): Remove chain.
264         (DECL_CHAIN, DECL_NAMESPACE): Remove.
265         (flag_honor_std): Declare extern.
266         (identifier_type_value, pushdecl_namespace_level, push_using_decl,
267         namespace_binding, set_namespace_binding,
268         lookup_function_nonclass, cat_namespace_levels,
269         set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
270         scratch_ovl_cons, ovl_member, build_overload): Declare.
271         (decl_list_length, get_namespace_id, current_namespace_id,
272         overloaded_globals_p): Remove.
273         (lookup_using_namespace, qualified_lookup_using_namespace): Change
274         return type.
275         (push_scratch_obstack): New macro.
276         * call.c (add_function_candidate): Special-case type of OVERLOAD node.
277         (build_user_conversions_1): Iterate using OVL_NEXT for ctors,
278         convs, fns.
279         (build_new_function_call): Iterate using OVL_CHAIN.  
280         Print DECL_NAME in when reporting ambiguities.
281         (build_object_call): Iterate using OVL_NEXT for fns, convs.
282         (build_new_op): Call lookup_function_nonclass.  
283         Iterate using OVL_NEXT.
284         (build_op_delete_call): Change detection of members.
285         Do not wrap TREE_LIST around fields and single global functions.
286         (build_over_call): Don't push a class level if the context is a
287         namespace.
288         (build_new_method_call): Iterate using OVL_NEXT.
289         * class.c (add_method): Chain overloaded members using
290         build_overload.  Remove copying of method.
291         (grow_method): When iterating through the obstack, expect OVERLOAD
292         nodes.  Chain overload members.
293         (finish_struct_methods): Chain overload members.  Unpack OVERLOAD
294         nodes in call to get_baselinks.
295         (duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
296         (finish_struct_1): Iterate over ctor using OVL_NEXT.  Handle
297         fdecls that are OVERLOAD nodes.
298         (validate_lhs): New function.
299         (instantiate_type): Do not copy OVERLOAD nodes.  Remove dead
300         code. Use DECL_NAME in error messages. Split code between global
301         and member function processing.
302         * decl.c (global_type_node): New static variable.
303         (in_std): New global.
304         (struct binding_level): New field usings.
305         (resume_binding_level): Assert that we are not in a class.
306         (toplevel_bindings_p): Just check for namespace_p or
307         pseudo_global.
308         (resume_level): Remove.
309         (find_binding): New function.
310         (binding_for_name): Call it.
311         (namespace_binding, set_namespace_binding): New functions.
312         (push_namespace): Associate binding level with new namespace,
313         resume_binding_level for existing namespace.  Remove old code.
314         Fake std by counting.
315         (store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
316         (maybe_push_to_top_level): Save current namespace.
317         (pop_from_top_level): Restore saved namespace.
318         (pop_namespace): Call suspend_binding_level.  Remove old code.
319         (cat_namespace_levels): New function.
320         (set_identifier_type_value_with_scope): For namespace bindings,
321         set BINDING_TYPE, and use global_type_node.
322         Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
323         (identifier_type_value): New function.
324         (pushtag): If no context, use current_namespace.
325         (duplicate_decls): Don't process DECL_CHAIN.
326         (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
327         already set. Never reset it to NULL_TREE.  Lookup global variables
328         in their namespace.  Push overloaded templates if they are on
329         namespace level.
330         (pushdecl_namespace_level): New function.
331         (pushdecl_top_level): Implement using pushdecl_namespace_level.
332         (pushdecl_using_decl): New function.
333         (overloaded_globals_p): Remove.
334         (push_overloaded_decl): Create OVERLOAD nodes, and iterate through
335         them. Use namespace_binding and set_namespace_value.
336         (redeclaration_error_message): Complain if the declarations come
337         from different namespaces.
338         (lookup_tag): On namespace level, look in the BINDING_TYPE.
339         (lookup_namespace_name): Pass tree_bindings from stack.  Remove
340         old code.
341         (select_decl): New function.
342         (lookup_name_real): Call it for qualified and unqualified lookup.
343         Pass tree_bindings from the stack.
344         If prefer_type is 1, also accept namespaces.
345         (lookup_function_nonclass): New function.
346         (init_decl_processing): Set the binding level of the global
347         namespace to global_binding_level.
348         Build a proper type list for __builtin_apply.
349         Initialize std_node to "fake std" if flag_honor_std is set.
350         Initialize global_type_node.
351         Allocated bad_alloc in namespace std if flag_honor_std.
352         (define_function): Set the DECL_CONTEXT to the current_namespace.
353         (start_decl): A namespace is not considered as a context here.  If
354         the DECL_CONTEXT is a namespace, push the decl.
355         (cp_finish_decl): Check for namespaces used as initializers.
356         (grokfndecl): Add namespace parameter.  Remove processing of
357         DECL_CHAIN.
358         (grokvardecl): Add namespace parameter.
359         (grokdeclarator): Process SCOPEs that are namespaces.  For
360         mangling, temporarily set the DECL_CONTEXT on anonymous structs.
361         (start_function): Check for contexts that are namespaces.  
362         Set context for declarations that have not been pushed.
363         (store_parm_decls): Check for ::main only.
364         (finish_function): Likewise.
365         (start_method): Check for contexts that are namespaces.
366         (start_method): Remove DECL_CHAIN processing.
367         * decl2.c (flag_honor_std): Declare.
368         (lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
369         (decl_namespace_list): New static global.
370         (grok_x_components): Ignore namespaces as type contexts.
371         (check_classfn): Expect OVERLOAD nodes.
372         (grokfield): Remove DECL_CHAIN processing.
373         (finish_file): Call cat_namespace_levels.
374         (merge_functions): New function.
375         (ambiguous_decl): Rewrite.
376         (lookup_using_namespace): Produce tree_bindings.
377         (qualified_lookup_using_namespace): Likewise.
378         (set_decl_namespace, decl_namespace, current_decl_namespace,
379         push_decl_namespace, pop_decl_namespace): New functions.
380         (arg_lookup): New struct.
381         (add_function, arg_assoc_namespace, arg_assoc_class,
382         arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
383         New functions.
384         (get_namespace_id, current_namespace_id): Remove.
385         (do_toplevel_using_decl): Rewrite.
386         (do_class_using_decl): Complain about namespace qualifiers.
387         (do_using_directive): Sorry if not on namespace level.  Complain
388         about unknown namespaces.
389         * error.c (dump_aggr_type): Check for namespace contexts.
390         * except.c (init_exception_processing): Push terminate into std.
391         * friend.c (is_friend): A namespace is not a context, here.
392         * init.c (expand_member_init): Remove DECL_CHAIN processing.
393         (build_offset_ref): Process OVERLOAD nodes.
394         * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
395         * lex.c (identifier_type): Loop using OVL_CHAIN.
396         (see_typename): Set looking_for_typename to 2.
397         (real_yylex): Likewise. 
398         (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
399         (do_scoped_id): Expect OVERLOAD nodes.
400         Change calling convention for qualified_lookup_using_namespace.
401         (build_lang_decl): Don't set in_namespace anymore.
402         * method.c (typevec_size): New global.
403         (build_overload_nested_name): Return if global_namespace.
404         Otherwise, always expect a declaration context.
405         (build_qualified_name): Likewise.
406         Make sure we don't write beyond typevec_size.
407         (build_decl_overload_real): Likewise.
408         Allocate one extra slot for the namespace.
409         (hack_identifier): Mark code dead.
410         Process OVERLOAD and NAMESPACE_DECL nodes.
411         * parse.y (program): Pop namespaces until in global namespace.
412         (extdef): In a using-declaration, don't discard the identifier if
413         there is no declaration.
414         (left_curly): Ignore type contexts which are namespaces.
415         (typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
416         used as scope.
417         * pt.c (template_class_depth): Expect types to be namespaces.
418         (determine_specialization): Simplify by expecting OVERLOAD nodes.
419         (push_template_decl): Push into namespace level.
420         Reset ctx if it is a namespace.
421         Set DECL_CONTEXT to current_namespace if not set already.
422         Ignore real contexts that are namespaces.
423         (mangle_class_name_for_template): Skip global_namespace.
424         Mangle other namepaces as declarations.
425         (lookup_template_function): Set type of OVERLOAD nodes to unknown.
426         (lookup_template_class): Push into namespace of context.
427         If the context is a namespace, set it to global_namespace.
428         Use id_context for mangling.
429         (for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
430         (tsubst_friend_function): Ignore namespace contexts.
431         Push into namespace level.
432         (tsubst): Handle NAMESPACE_DECL nodes.
433         Remove DECL_CHAIN processing.
434         (type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
435         * ptree.c (print_lang_identifier): Print bindings.
436         (lang_print_xnode): Print OVERLOAD nodes.
437         * rtti.c (init_rtti_processing): Push type_info into std.
438         * search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
439         (lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
440         dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
441         lookup_fnfields_here): Likewise.
442         Process all nodes, instead of going through TREE_CHAIN.
443         * sig.c (build_signature_pointer_or_reference_type): Set context
444         to global_namespace.
445         (build_signature_table_constructor): Expect OVERLOAD nodes.
446         * spew.c (yylex): Save old setting of looking_for_typename.
447         * tree.c (decl_list_length): Remove.
448         (binding_init): New function.
449         (count_functions): Rewrite.
450         (is_overloaded_fn): Expect OVERLOAD nodes.
451         (really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
452         (ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
453         ovl_member): New functions.
454         * typeck.c (require_complete_type): Expect OVERLOAD nodes.
455         (type_unknown_p): Likewise.
456         (require_instantiated_type): Likewise.
457         (build_component_ref): Declare code dead.
458         (build_x_function_call): Create and expect OVERLOAD nodes.
459         (build_function_call_real): Check for ::main only.
460         (build_unary_op): Likewise.  Expect OVERLOAD nodes.
461         (convert_for_assignment): Check for TREE_LIST before accessing
462         TREE_VALUE.
463         * decl.c (duplicate_decls): Check for namespace bindings instead
464         of global bindings.
465         (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
466         lookup_name_current_level, start_decl, xref_tag, 
467         finish_enum): Likewise.
468         * init.c (build_offset_ref): Likewise.
469         * search.c (lookup_field): Likewise.
470         (lookup_fnfields): Likewise.
471         (dfs_debug_mark): Likewise.
472         * decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
473         (poplevel_class, pop_from_top_level): Likewise.
474         * decl2.c (finish_method): Likewise.
475         * class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
476         * decl.c (record_builtin_type): Likewise.
477         (init_decl_processing, grokfndecl): Likewise.
478         * lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
479         (make_lang_type): Likewise.
480         * parse.y (make_thunk): Likewise.
481         * pt.c (tsubst): Likewise.
482         * tree.c (debug_binfo): Likewise.
483         * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h, 
484         tinfo2.cc, inc/new.h: Add std qualifications.
485         * inc/new: Wrap with namespace std if __HONOR_STD.
486         * inc/typeinfo: Likewise.
487
488 Fri May  8 00:43:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
489
490         * call.c (build_user_type_conversion_1): Handle second_conv 
491         properly for templates.
492
493 Thu May  7 17:09:25 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
494
495         * method.c (build_decl_overload_real): Set TREE_USED flag to
496         zero for build_type_variants nodes as well.
497
498 Wed May  6 19:27:09 1998  Jason Merrill  <jason@yorick.cygnus.com>
499
500         * pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
501
502 Wed May  6 16:49:48 1998  Jim Wilson  <wilson@cygnus.com>
503
504         * Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
505         except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
506         rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o, 
507         xref.o): Add toplev.h dependencies.
508
509 Wed May  6 16:44:58 1998  Jeffrey A Law  (law@cygnus.com)
510
511         * errfn.c (cp_error, cp_warning): Remove declarations for
512         error and warning respectively.
513
514 Wed May  6 14:28:18 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
515
516         * error.c: Convert to using ctype macros defined in system.h.
517         * method.c: Likewise.
518         * xref.c: Likewise.
519         * lex.c: Likewise.  Also remove redundant system header stuff.
520
521 Wed May  6 06:36:41 1998  Robert Lipe  <robertl@dgii.com>
522
523         * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c, 
524         expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c, 
525         search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c, 
526         xref.c: Add include of toplev.h.
527
528 Wed May  6 02:33:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
529
530         * tree.c (perm_manip): Also regenerate the RTL of an extern.
531         (copy_to_permanent): Use end_temporary_allocation.
532
533 Tue May  5 23:54:04 1998  Jason Merrill  <jason@yorick.cygnus.com>
534
535         * init.c (expand_vec_init): The initialization of each array
536         element is a full-expression.
537
538 Tue May  5 18:24:13 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
539
540         * method.c (build_mangled_name): Add a call to build_type_variant 
541         to get the right type.
542
543 Tue May  5 01:25:03 1998  Jason Merrill  <jason@yorick.cygnus.com>
544
545         * Makefile.in: Add .SUFFIXES.
546
547         * cp-tree.def: Remove NAMESPACE_DECL.
548
549 Sun May  3 01:32:14 1998  Jason Merrill  <jason@yorick.cygnus.com>
550
551         * call.c (build_over_call): Do evaluate arg even if it has empty 
552         class type.
553         * decl.c (start_function): Don't push a member function.
554
555 Thu Apr 30 18:59:23 1998  Jim Wilson  <wilson@cygnus.com>
556
557         * Makefile.in (g++FAQ.info): Put -o option before input file.
558
559 Thu Apr 30 13:05:33 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
560
561         * gxxint.texi: Add info for squangling codes K and B.
562
563 Tue Apr 28 13:22:01 1998  Mark Mitchell  <mmitchell@usa.net>
564
565         * semantics.c (begin_stmt_expr): Avoid duplicating the effect of
566         the expression in templates.
567         (finish_stmt_expr): Likewise.
568
569 1998-04-28  Brendan Kehoe  <brendan@cygnus.com>
570
571         * decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
572
573 Mon Apr 27 13:58:10 1998  Mark Mitchell  <mmitchell@usa.net>
574
575         * decl.c (maybe_push_to_top_level): Always clear
576         current_template_parms and processing_template_decl.
577         (pushtag): Remove check of current_class_type and some comments,
578         since maybe_push_to_top_level no longer creates confusion.
579
580 Sun Apr 26 12:10:18 1998  Mark Mitchell  <mmitchell@usa.net>
581
582         * cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
583         (DECL_CLASS_TEMPLATE_P): Likewise.
584         (DECL_PRIMARY_TEMPLATE): Likewise.
585         (PRIMARY_TEMPLATE_P): Use it.
586         (push_template_decl_real): New function.
587         (redeclare_class_template): Take new template parameters as
588         input. 
589         (is_specialization_of): New function.
590         (comp_template_args): Declare.
591         * decl.c (pushtag): Handle friend template classes.
592         (xref_tag): Likewise.  Use new calling convention for
593         redeclare_class_template.
594         * decl2.c (grok_x_components): Handle friend templates.
595         * friend.c (is_friend): Use is_specialization_of where
596         appropriate.  Deal with friend class templates.
597         (make_friend_class): Let a class template be friends with itself.
598         * pt.c (comp_template_args): Remove declaration.
599         (tsubst_friend_class): New function.
600         (push_template_decl_real): New function.
601         (push_template_decl): Use it.
602         (redeclare_class_template): Adjust for new calling convention.
603         (comp_template_args): Give it external linkage.
604         (instantiate_class_type): Use tsubst_friend_class to deal
605         with friend templates.
606         * typeck.c (comptypes): Use comp_template_args, rather than
607         expanding it inline.
608         * parse.y (component_decl): Handle a nested template type 
609         like other component type declarations.
610
611         * pt.c (check_explicit_specialization): Handle overloaded
612         constructors correctly.
613
614         * pt.c (mabybe_get_template_decl_from_type_decl): New function.
615         (lookup_template_class): Use it.
616
617 Thu Apr 23 21:19:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
618
619         * cp-tree.def: Add WRAPPER.  USER_CONV now only has two ops.
620         * cp-tree.h: Add WRAPPER support.
621         * call.c (add_candidate): Split out from add_*_candidate fns.
622         (build_over_call): Take the candidate instead of function and args.
623         Enforce access control here.  Emit overload warnings here.
624         (add_warning): New fn.
625         (joust): Add WARN parm.  If not set, call add_warning instead of
626         printing a warning.  Reenable some warnings.
627         (tourney): Pass it.
628         (convert_like): Adjust.
629         (build_new_op): Adjust.
630         (build_new_function_call): Adjust.
631         (build_user_type_conversion_1): Adjust.
632         (USER_CONV_FN): Adjust.
633         * tree.c (build_expr_wrapper, build_expr_ptr_wrapper, 
634         build_int_wrapper): New fns.
635
636 Thu Apr 23 18:27:53 1998  Mark P. Mitchell  <mmitchell@usa.net>
637
638         * pt.c (unify): Fix typo in previous change.
639
640 Thu Apr 23 09:32:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
641
642         * error.c (dump_type_real): Declare canonical_name.
643
644         * typeck.c (comp_target_types): Fix PMFs.
645
646 Wed Apr 22 13:24:48 1998  Mark Mitchell  <mmitchell@usa.net>
647
648         * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
649         the DECL_RESULTs of a member TEMPLATE_DECL, not just the
650         TEMPLATE_DECL.
651
652          * pt.c (tsubst): Decrease the template-level of
653          TEMPLATE_TEMPLATE_PARMS.  Likewise for the DECL_INITIAL of a
654          TEMPLATE_PARM_INDEX.
655          (template_decl_level): New function.
656          (unify): Make sure to record unifications for template
657          parameters, even when the parameters exactly match the arguments.
658          Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
659          TEMPLATE_TYPE_PARMS.  Don't try to unify template parameters that
660          aren't from the level we're currently working on.
661
662 Tue Apr 21 22:00:04 1998  Mark Mitchell  <mmitchell@usa.net>
663
664         * errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
665
666         * decl2.c (check_member_template): Set DECL_IGNORED for member
667         class templates, too.
668
669         * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
670
671 Tue Apr 21 18:59:11 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
672
673         * decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
674
675 Tue Apr 21 14:22:00 1998  Jeffrey A Law  (law@cygnus.com)
676
677         * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
678         * decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
679         (init_decl_processing): Handle TI types.
680         * typeck.c (unsigned_type, signed_type): Handle TI types.
681
682 Sat Apr 18 15:25:21 1998  Jim Wilson  <wilson@cygnus.com>
683
684         * g++spec.c (lang_specific_driver): New argument in_added_libraries.
685         New local added_libraries.  Increment count when add library to
686         arglist.
687
688 Fri Apr 17 21:25:00 1998  Mark Mitchell  <mmitchell@usa.net>
689
690         * cp-tree.h (type_as_string_real): New function.
691         * pt.c (mangle_class_name_for_template): Use it.
692         * error.c (dump_aggr_type): Change prototype.
693         (dump_type_prefix): Likewise.
694         (dump_type_suffix): Likewise.
695         (dump_type_real): Convert from dump_type.  If desired, the
696         "canonica" name of a typedef, i.e., the name of the underlying
697         type, can be printed.
698         (dump_type): Call dump_type_real.
699
700 Fri Apr 17 14:30:45 1998  Jason Merrill  <jason@yorick.cygnus.com>
701
702         * decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
703
704         * typeck.c (comp_target_types): Tweak pedantic case.
705         (comp_target_parms): Tweak pedantic case.  Clean up somewhat.
706         Return -1 or 1 instead of 1 or 2.
707         (compparms): Remove STRICT handling.
708         (convert_for_assignment): Fix handling of pmfs.
709
710 Fri Apr 17 14:04:16 1998  Mark Mitchell  <mmitchell@usa.net>
711
712         * typeck.c (comp_target_types): Handle references like pointers.
713         (comp_target_parms): Note that return code from comp_target_types
714         can be negative to indicate failure.
715
716 Fri Apr 17 09:10:52 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
717
718         * Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
719         which requires a working target compiler to build.
720
721 Fri Apr 17 08:57:35 1998  Jeffrey A Law  (law@cygnus.com)
722
723         * tree.c (avoid_overlap): Add prototype.
724
725         * spew.c (num_tokens): Add prototype.
726         (nth_noken, add_token, consume_token, debug_yychar): Likewise.
727
728         * search.c (dfs_check_overlap): Add prototype.
729         (dfs_no_overlap_yet): Likewise.
730
731         * pt.c (original_template): Add prototype.
732         (inline_needs_template_parms): Likewise.
733         (push_inline_template_parms_recursive): Likewise.
734         (retrieve_specialization, register_specialization): Likewise.
735         (print_candidates, reduce_template_parm_level): Likewise.
736         (build_template_decl, mark_template_parm): Likewise.
737         (tsubst_friend_function, get_bindings_real): Likewise.
738
739         * method.c (start_squangling): Add prototype.
740         (end_squangling, check_ktype, issue_ktype): Likewise.
741         (build_overloaded_scope_ref, check_btype): Likewise.
742         (build_mangled_template_parm_index): Likewise.
743
744         * lex.c (init_cpp_parse): Add prototype.
745         (handle_cp_pragma, handle_sysv_pragma): Likewise.
746         (reduce_cmp, token_cmp): Likewise.
747
748         * except.c (call_eh_info): Add prototype.
749         (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
750         (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
751
752         * decl2.c (is_namespace_ancestor): Add prototype.
753         (namespace_ancestor, add_using_namespace): Likewise.
754         (ambiguous_decl): Likewise.
755
756         * decl.c (indent): Add prototype.
757
758         * call.c (add_template_candidate_real): Add prototype.
759
760 Fri Apr 17 01:57:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
761
762         * decl2.c (build_expr_from_tree): Just return a PMF.
763
764 Fri Apr 17 00:45:12 1998  Mark Mitchell  <mmitchell@usa.net>
765
766         * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
767         when doing initializations.
768
769         * pt.c (unify): Use comptypes to compare type args.
770
771 Fri Apr 17 00:24:22 1998  Jason Merrill  <jason@yorick.cygnus.com>
772
773         * decl.c (duplicate_decls): Fix check for when it's safe to free
774         the new decl.
775
776         * pt.c (mangle_class_name_for_template): Don't pass a typedef type
777         to type_as_string.
778
779 Thu Apr 16 17:47:30 1998  Jeffrey A Law  (law@cygnus.com)
780
781         * pt.c (build_template_parm_index): Add prototype.
782
783         * search.c (my_tree_cons): Don't clear words outside the
784         newly allocated node.
785
786 Wed Apr 15 15:34:44 1998  Dave Brolley  <brolley@cygnus.com>
787
788         * lex.c (init_parse): Now returns char* containing the filename.
789
790 Wed Apr 15 13:20:06 1998  John Carr  <jfc@mit.edu>
791                           Jeff Law   <law@cygnus.com>
792
793         * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
794         than a pointer.
795
796 Sun Apr 12 22:31:19 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
797
798         * cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
799
800 Fri Apr 10 12:16:49 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
801
802         * decl.c (duplicate_decls): Don't warn for redundant decls if
803         friend: let add_friend take care of it.
804
805 Thu Apr  9 02:40:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
806
807         * sig.c (build_signature_pointer_constructor): Don't set
808         TREE_HAS_CONSTRUCTOR for a signature pointer.
809         * cvt.c (ocp_convert): Don't force a temporary for internal structs.
810         * init.c (resolve_offset_ref): Warn about implicit & on pmfs 
811         here, too.
812         * typeck.c (build_unary_op): Only allow taking the address of a 
813         real constructor.
814         * typeck2.c (digest_init): Simplify.
815         (store_init_value): Don't pedwarn about using { } for pmfs.
816
817 Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>
818
819         * cp-tree.h (start_decl):  Update prototype.
820         * decl.c (start_decl):  Like the C version, new parameters
821         for the attributes.  Call cplus_decl_attributes here,
822         (pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
823         (grokdeclarator):  Pass NULL for new start_decl arguments.
824         * pt.c (tsubst_expr):  Likewise.
825         * parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
826         * typeck.c (common_type): Check TYPE_MAIN_VARIANT.
827         * lex.c (build_lang_decl): Add lang_name_java.
828         * class.c (push_lang_context): Add lang_name_java.
829         * method.c (build_mangled_name): Check for is_java_type.
830
831 Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
832
833         * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
834         * call.c (build_scoped_method_call): Check for TREE_CODE for
835         VOID_TYPE instead of type ==  void_type_node.
836         (build_method_call): Ditto.
837         * decl.c (lookup_name_real): Ditto.
838         (grokdeclarator): Ditto.
839         (start_decl): Ditto.
840         (grokparms): Ditto.
841         (start_function): Ditto.
842         (finish_function): Ditto.
843         (start_method): Ditto.
844
845 Thu Apr  9 00:18:44 1998  Dave Brolley  (brolley@cygnus.com)
846
847         * lex.c (finput): New variable.
848         (init_cpp_parse):  Renamed from init_parse.
849         (init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
850         (finish_parse): New function.
851         * cp-tree.h (init_lex, init_parse): Remove declarations.
852
853 Mon Apr  6 02:25:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
854
855         * call.c (build_call): Still evaluate the actual argument.
856         * class.c (is_empty_class): Update for -fnew-abi.
857
858         * decl2.c: -fnew-abi implies -fsquangle.
859
860         * method.c (do_build_assign_ref): Don't do anything to copy
861         an empty class.
862         (do_build_copy_constructor): Likewise.
863         * call.c (build_over_call): Likewise.
864
865 Sat Apr  4 18:43:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
866
867         * tree.c (avoid_overlap): Return a value.
868
869 Sat Apr  4 12:52:35 1998  Jeffrey A Law  (law@cygnus.com)
870
871         * method.c (check_btype): Add missing argument to xrealloc.
872         (check_ktype): Likewise.
873
874 Fri Apr  3 02:22:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
875
876         Implement empty base optimization.
877         * class.c (finish_struct_1): Add vbase fields earlier.  Set 
878         CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
879         * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
880         (types_overlap_p): New fn.
881         * tree.c (avoid_overlap): New fn.
882         (build_base_fields): Use it to avoid overlapping empty bases.
883         * cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
884
885         * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
886
887         Re-implement allocation of base class subobjects.
888         * tree.c (unshare_base_binfos): New fn.
889         (layout_basetypes): Use it.  Now handles offsets of both virtual and
890         non-virtual bases, after layout_type.
891         (layout_vbasetypes): Remove.
892         (build_base_fields): Generate FIELD_DECLs for each non-virtual base.
893         (build_vbase_pointer_fields): Split out from old layout_basetypes.
894         * class.c (finish_base_struct): Lose offset handling code.
895         Move nonvdtor warning here.  Don't mess with t_binfo anymore.
896         (finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
897         * cp-tree.h: Adjust.
898
899 Thu Apr  2 14:25:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
900
901         * cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
902         * decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
903         * class.c (duplicate_tag_error): Likewise.
904         (finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
905         * tree.c (layout_vbasetypes): Update from layout_record, remove
906         var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
907         (layout_basetypes): Likewise.
908
909 Wed Apr  1 18:22:25 1998  Jeffrey A Law  (law@cygnus.com)
910
911         * class.c, Make sure system.h is included just after config.h.
912         Delete lingering stdio and errno references too.
913         * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
914         
915 Wed Apr  1 15:38:36 1998  Jason Merrill  <jason@yorick.cygnus.com>
916
917         * friend.c (is_friend): Fix access control for local classes.
918
919         * class.c (is_empty_class): New fn.
920         * call.c (build_call): Don't pass empty class objects to a function.
921
922 Wed Apr  1 14:58:35 1998  Mark Mitchell  <mmitchell@usa.net>
923
924         * call.c (build_over_call): Do name resolution for default
925         arguments of function templates in the scope of the templates.
926
927 Tue Mar 31 13:43:57 1998  Jeffrey A Law  (law@cygnus.com)
928
929         * call.c: Include system.h.  Remove includes, declarations and
930         defines provided by system.h.
931         * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
932         * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
933         * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
934         * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
935         * typeck2.c, xref.c: Likewise.
936         * Makefile.in: Dependencies updated as appropriate.
937         * Make-lang.in: Likewise.
938
939 Mon Mar 30 12:15:00 1998  Mark Mitchell  <mmitchell@usa.net>
940
941         * pt.c (fn_type_unification): Allow incomplete unification without 
942         an immediate error message.
943
944 Mon Mar 30 08:55:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
945
946         * tree.c (member_p): New fn.
947         * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
948         initializing class members.
949
950         * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
951         * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
952
953         * call.c (build_method_call): Handle non-scoped destructors, too.
954         * pt.c (tsubst_copy): Likewise.
955
956         * pt.c (print_template_context): Split out...
957         (push_tinst_level): ...from here.
958
959         * friend.c (is_friend): Don't pass a type to decl_function_context.
960
961         * typeck.c (convert_for_initialization): Always hand off
962         conversions to class type.
963
964 Sun Mar 29 20:01:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
965
966         * friend.c (is_friend): Local classes have the same access as the
967         enclosing function.
968
969 Sun Mar 29 00:47:32 1998  Jeffrey A Law  (law@cygnus.com)
970
971         * typeck.c (expand_target_expr): Delete dead function.
972
973         * search.c: Put various prototypes inside #ifdef MI_MATRIX.
974
975         * repo.c (save_string): Delete dead function.
976
977         * method.c (thunk_printable_name): Delete dead function.
978
979         * lex.c (yynextch): Delete dead function.
980
981         * expr.c (tree_extract_aggr_init): #if 0 out.
982
983         * except.c (do_unwind): Delete dead function.
984         (easy_expand_asm): Likewise.
985
986         * cvt.c (build_conversion_type_1): Delete dead function.
987
988         * cp-tree.h (push_expression_obstack): Declare.
989
990         * call.c (source_type): #if 0 out.
991
992         * class.c (alter_access): Remove unused label.  Add braces
993         around empty else clause.
994
995         * lex.c (yyprint): Fix argument to printf.
996
997 Sat Mar 28 17:43:52 1998  Mark Mitchell  <mmitchell@usa.net>
998
999         * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
1000
1001         * pt.c (instantiate_class_template): Make sure template
1002         arguments are permanent.
1003         * init.c (resolve_offset_ref): Don't go looking around in
1004         template types.
1005
1006         * semantics.c: Add routines to handle expressions, and some
1007         declaration processing.
1008         * parse.y: Use them.
1009         (current_class_depth): Move declaration to cp-tree.h.
1010         * parse.c: Regenerated.
1011         * cp-tree.h: Use them.
1012         (current_class_depth): Declare.
1013         * pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
1014
1015 Fri Mar 27 20:23:18 1998  Mark Mitchell  <mmitchell@usa.net>
1016
1017         * error.c (dump_decl): Be a bit more explicit with template
1018         type arguments, when verbose.
1019         
1020 Fri Mar 27 18:16:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
1021
1022         * inc/exception: Reorder closing braces.
1023
1024 Fri Mar 27 13:22:18 1998  Mark Mitchell  <mmitchell@usa.net>
1025
1026         * pt.c (redeclare_class_template): New function.
1027         * cp_tree.h (redeclare_class_template): Declare it.
1028         * decl.c (xref_tag): Use it.
1029
1030 Thu Mar 26 11:16:30 1998  Jason Merrill  <jason@yorick.cygnus.com>
1031
1032         * call.c (build_over_call): Check IS_AGGR_TYPE, not 
1033         TYPE_LANG_SPECIFIC.
1034         * typeck.c (convert_arguments): Likewise.
1035
1036         * decl.c (grokdeclarator): Remove const and volatile from type after
1037         setting constp and volatilep.
1038
1039         * class.c (finish_struct_1): Don't warn about bool bitfield larger
1040         than one bit.
1041
1042 Thu Mar 26 10:25:52 1998  Mark Mitchell  <mmitchell@usa.net>
1043
1044         * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
1045
1046 Thu Mar 26 10:24:05 1998  Mark Mitchell  <mmitchell@usa.net>
1047
1048         * call.c (build_object_call): Complain about ambiguous operator(),
1049         rather that crashing.
1050         (build_new_op): Likewise.
1051         (build_op_delete_call): Likewise.
1052
1053 Thu Mar 26 10:23:24 1998  Mark Mitchell  <mmitchell@usa.net>
1054
1055         * cvt.c (perform_qualification_conversions): Use comp_target_types
1056         instead of comp_ptr_ttypes.
1057
1058 Wed Mar 25 16:10:50 1998  Mark Mitchell  <mmitchell@usa.net>
1059
1060         * cp-tree.h (enforce_access): Declare.
1061         * call.c (enforce_access): Make it extern, not static.
1062         * class.c (alter_access): Use enforce_access; modify code for ISO
1063         compliance, rather than ARM rules.
1064
1065 Wed Mar 25 12:10:45 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1066
1067         * cp-tree.h: Fix typo.
1068
1069 Wed Mar 25 02:01:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
1070
1071         * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
1072         if (aggregate_value_p (type)).
1073
1074         * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
1075
1076 Tue Mar 24 16:12:01 1998  Mark Mitchell  <mmitchell@usa.net>
1077
1078         * tree.c (mapcar): When dealing with a DECL, use it's constant
1079         value, if any.
1080         * pt.c (lookup_template_class): Don't mangle the names of template
1081         classes whose arguments are unknown.
1082
1083         * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
1084
1085 Tue Mar 24 12:21:55 1998  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
1086
1087         * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
1088
1089 Tue Mar 24 12:21:48 1998  Jim Wilson  <wilson@cygnus.com>
1090
1091         * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
1092         boolean_type_node to 1.
1093
1094 Tue Mar 24 10:23:47 1998  Mark Mitchell  <mmitchell@usa.net>
1095
1096         * error.c (dump_expr): Remove unused variable `l'.
1097
1098         * pt.c (for_each_template_parm): New function, created by
1099         converting uses_template_parms.
1100         (tree_fn_t): New typedef.
1101         (uses_template_parms): Use it.
1102         (mark_template_parm): New function.
1103         (push_template_decl): Check that the argument list of a partial
1104         specialization uses all the template parameters.
1105
1106         * Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
1107         with it; we might want it for debugging.
1108         * cp-tree.h (type_unification): Change interface.
1109         * class.c (finish_struct_1): Skip nested template types, just like
1110         ordinary nested types.
1111         (instantiate_type): Use new interface to type_unification.
1112         * lex.c (init_lex): Add __sz as opname for sizeof.
1113         * method.c (build_overload_scope_ref): New function.
1114         (build_overload_int): Handle complex expressions.  Set
1115         numeric_output_need_bar if necessary.
1116         (build_overload_value): Handle non-PARM_DECL nodes; this
1117         routine is now used by build_overload_int.  Remove some
1118         assignments to numeric_output_need_bar.  Use
1119         build_overload_scope_ref.
1120         (build_qualified_name): Note that some template mangled names end
1121         with digits, and set numeric_output_need_bar appropriately.  Use
1122         build_underscore_int.
1123         * pt.c (unify): Change interface.
1124         (type_unification_real): Likewise.
1125         (determine_specialization): Use new interfaces.
1126         (tsubst): Deal gracefully with situations in which the argument
1127         vector is not fully filled.
1128         (fn_type_unification): Use new interfaces.
1129         (type_unification): Likewise.  Remove NOP_EXPR hack.
1130         (type_unification_real): Likewise.
1131         (unify): Likewise.  Deal with unification of complex expresions.
1132
1133 Mon Mar 23 12:24:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
1134
1135         * pt.c (complete_template_args): Initialize skip properly.
1136
1137         * decl.c (make_typename_type): Revert.
1138         (make_implicit_typename): Remove.
1139         (lookup_name_real): Don't call it.  Call lookup_field if we see a
1140         TYPE_DECL from a template base.
1141         * search.c (lookup_field): Do implicit typename stuff.
1142
1143 Sun Mar 22 00:50:42 1998  Nick Clifton  <nickc@cygnus.com>
1144                           Geoff Noer    <noer@cygnus.com>
1145
1146         * Makefile.in: Various fixes for building cygwin32 native toolchains.
1147         * Make-lang.in: Likewise.
1148
1149 Fri Mar 20 18:07:39 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1150
1151         * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
1152
1153 Fri Mar 20 10:42:07 1998  Jason Merrill  <jason@yorick.cygnus.com>
1154
1155         * decl.c (make_implicit_typename): Rewrite removed code.
1156         (make_typename_type): Call it if the type we look up comes from
1157         a base that uses template parms.
1158
1159         * pt.c (complete_template_args): Rewrite.
1160         (tsubst, FUNCTION_DECL): Use it.
1161
1162 Fri Mar 20 08:12:43 1998  H.J. Lu  (hjl@gnu.org)
1163
1164         * semantics.c (finish_asm_stmt): Fix combine strings. Call
1165         c_expand_asm_operands () if output_operands, input_operands or
1166         clobbers is not NULL_TREE.
1167
1168 Fri Mar 20 00:10:19 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1169
1170         * pt.c (complete_template_args): New function.
1171         (get_bindings): Deal with specializations of function templates
1172         with return type containing parameters from outer class 
1173         templates.
1174         (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
1175         substitute arguments and compose a new type.
1176
1177 Thu Mar 19 19:01:48 1998  Mark Mitchell  <mmitchell@usa.net>
1178
1179         * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
1180         FUNCTION_DECLs.
1181
1182 Thu Mar 19 11:51:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
1183
1184         * decl.c (make_implicit_typename): Lose useless code.
1185
1186         * call.c (standard_conversion): Handle A* -> const A* properly.
1187
1188         * pt.c (get_bindings_real): Rename from get_bindings.  Add 
1189         check_rettype parm.
1190         (get_bindings): Pass 1.
1191         (get_bindings_overload): Pass 0.
1192
1193 Wed Mar 19 09:08:12 1998  Mark Mitchell  <mmitchell@usa.net>
1194
1195         * pt.c (check_explicit_specialization): When reverting a static
1196         member function, also remove the `this' parameter from
1197         last_function_parms.
1198
1199 Thu Mar 19 02:27:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
1200
1201         * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
1202         a function context.
1203
1204         * decl.c (store_bindings): Use free_binding_vecs.
1205         (pop_from_top_level): Likewise.
1206
1207 Wed Mar 18 12:41:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
1208
1209         * decl.c (make_implicit_typename): Only change the type of a 
1210         TYPENAME_TYPE.
1211
1212 Wed Mar 18 10:09:51 1998  Mark Mitchell  <mmitchell@usa.net>
1213
1214         * semantics.c: New file, containing routines to perform the
1215         semantic phase of parsing.
1216         * parse.y: Use it.
1217         * pt.c (tsubst_expr): Likewise.
1218         * cp-tree.h: Declare the various functions in semantics.c.
1219         Provide macros to access _STMT tree nodes.
1220         * cp-tree.def: Add ASM_STMT tree node.
1221         * Makefile.in, Make-lang.in: Add dependencies on and for
1222         semantics.c.
1223         
1224 Wed Mar 18 00:24:10 1998  Jason Merrill  <jason@yorick.cygnus.com>
1225
1226         * pt.c (push_template_decl): Only check primary templates.
1227
1228         * pt.c (check_explicit_specialization): Complain about default args
1229         in explicit specialization.
1230
1231         * parse.y (nomods_initdcl0): Also call cp_finish_decl for a 
1232         constructor_declarator.
1233
1234 Tue Mar 17 14:44:54 1998  Mark Mitchell  <mmitchell@usa.net>
1235
1236         * typeck2.c (build_x_arrow): Don't crash when an aggregate type
1237         has no overloaded operator ->.
1238
1239         * call.c (build_field_call): Don't crash when presented with a
1240         field that is actually a nested type.
1241
1242         * decl.c (pushtag): Deal with friend class injection in local
1243         classes.
1244
1245         * call.c (build_object_call): Don't crash if OBJ is a
1246         pointer-to-member-function.
1247
1248 Tue Mar 17 11:40:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
1249
1250         * pt.c (push_template_decl): Complain about template with C linkage,
1251         anonymous template class.
1252
1253 Mon Mar 16 12:10:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
1254
1255         * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
1256         * search.c: Likewise.
1257
1258         * lex.c (do_pending_defargs): Only call 
1259         maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
1260
1261         * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
1262
1263 Mon Mar 16 10:47:22 1998  Mark Mitchell  <mmitchell@usa.net>
1264
1265         * parse.y: Deal with CONSTRUCTORS in new_initializers.
1266
1267 Mon Mar 16 10:54:21 1998  Mark Mitchell  <mmitchell@usa.net>
1268
1269         * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
1270         closely mimics the behavior in parse.y.
1271         (tsubst_expr): Return the resuting BLOCK when making a tsubst'ing
1272         into a compound statement.
1273         
1274 Sun Mar 15 02:07:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
1275
1276         * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
1277         * pt.c (inline_needs_template_parms): New fn.
1278         (original_template): New fn.
1279         (push_inline_template_parms_recursive): New fn.
1280         (maybe_begin_member_template_processing): Use them.
1281         (maybe_end_member_template_processing): Likewise.
1282         (is_member_or_friend_template): Rename to is_member_template.
1283         Member functions of local classes are never member templates.
1284
1285 Sun Mar 15 01:14:22 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1286
1287         * lex.c (do_identifier): Handle TEMPLATE_DECL that was
1288         added in the class scope to catch redefinition error.
1289
1290         * pt.c (reduce_template_parm_level): Also copy 
1291         the DECL_TEMPLATE_PARMS field.
1292
1293 Sun Mar 15 10:54:08 1998  Mark Mitchell  <mmitchell@usa.net>
1294
1295         * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
1296         reduced-level template type parameter.
1297
1298 Sun Mar 15 12:26:02 1998  Manfred Hollstein  <manfred@s-direktnet.de>
1299
1300         * cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
1301         (DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
1302         * class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
1303         * decl.c (duplicate_decls): Propagate it.
1304         * typeck2.c (abstract_virtuals_error): Use two loops to emit
1305         abstract virtual functions and virtual functions which need a
1306         final overrider separately.
1307         
1308 Thu Mar 12 09:39:40 1998  Manfred Hollstein  <manfred@s-direktnet.de>
1309
1310         * lang-specs.h: Properly put brackets around array elements in 
1311         initializer.
1312
1313         * typeck.c (build_binary_op_nodefault): Correctly place parens around
1314         && and || in expression.
1315
1316 Thu Mar 12 09:26:04 1998  Manfred Hollstein  <manfred@s-direktnet.de>
1317
1318         * call.c (default_parm_conversions): Remove prototype definition.
1319         (build_method_call): Remove unused variable result.
1320
1321         * cvt.c (ocp_convert): Remove unused variable conversion.
1322
1323         * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
1324
1325         * except.c (do_unwind): #if 0 definition of unused variables fcall
1326         and next_pc.
1327
1328         * expr.c (extract_scalar_init): #if 0 prototype and function 
1329         definition.
1330
1331         * init.c (expand_aggr_init_1): Remove unused variable init_type.
1332         (build_new_1): Remove unused variable t.
1333
1334         * pt.c (instantiate_class_template): Remove unused variable newtag;
1335         cast called function return value to void.
1336         (do_decl_instantiation): Remove unused variables name and fn.
1337
1338         * tree.c (get_type_decl): Add default return to shut up compiler from
1339         complaining control reaches end of non-void function.
1340
1341         * typeck.c (build_x_conditional_expr): Remove unused variable rval.
1342
1343 Thu Mar 12 09:12:15 1998  Manfred Hollstein  <manfred@s-direktnet.de>
1344
1345         * call.c (default_parm_conversions): Remove prototype definition.
1346         (build_method_call): Remove unused variable result.
1347         (build_over_call): Add default case in enumeration switch.
1348
1349 Thu Mar 12 08:39:13 1998  Manfred Hollstein  <manfred@s-direktnet.de>
1350
1351         * decl2.c (lang_decode_option): Change j's type to size_t.
1352
1353         * tree.c (layout_vbasetypes): record_align and desired_align are of
1354         type unsigned int; const_size and nonvirtual_const_size likewise.
1355
1356 Wed Mar 11 07:25:20 1998  Mark Mitchell  <mmitchell@usa.net>
1357
1358         * parse.y (new_initializer): Make sure all initializers are
1359         lists.
1360
1361 Tue Mar 10 07:32:36 1998  Mark Mitchell  <mmitchell@usa.net>
1362
1363         * decl2.c (import_export_decl): Mark tinfo functions for
1364         cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
1365
1366 Fri Mar  6 23:27:35 1998  Jeffrey A Law  (law@cygnus.com)
1367
1368         * method.c: Fix typo.
1369
1370 Fri Mar  6 10:06:59 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1371
1372         * method.c: Include "system.h" to get stdlib.h, stdio.h,
1373         ctype.h, string.h, etc.
1374         (issue_nrepeats): Add default case in enumeration switch.
1375         (check_btype): Likewise.
1376         (process_overload_item): Likewise.
1377          
1378         * Makefile.in (method.o): Depend on system.h.
1379
1380 Wed Mar  4 22:26:53 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
1381
1382         * lex.c (do_scoped_id): Fix parenthesizing.
1383
1384 Wed Mar  4 12:11:53 1998  Michael Tiemann  <tiemann@axon.cygnus.com>
1385
1386         * rtti.c (get_tinfo_fn_dynamic): If this function is called an
1387         FLAG_RTTI is unset, initialize type info machinery and continue
1388         with FLAG_RTTI enabled.
1389         (get_typeid): Ditto.
1390
1391 Wed Mar  4 11:47:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
1392
1393         * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
1394         from B.
1395
1396 Wed Mar  4 11:28:08 1998  Mark Mitchell  <mmitchell@usa.net>
1397
1398         * pt.c (finish_member_template_decl): Deal more gracefully with
1399         invalid declarations.
1400
1401 Tue Mar  3 01:38:17 1998  Jason Merrill  <jason@yorick.cygnus.com>
1402
1403         * cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
1404         cp-tree.h: Clean up more old overloading code, old RTTI code, and
1405         some formatting quirks.
1406
1407         * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
1408         method.c, pt.c, ptree.c, typeck.c: Remove support for 
1409         -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
1410         * class.h: Remove.
1411         * Makefile.in: Adjust.
1412
1413         * pt.c (unify): Don't allow reduced cv-quals when strict.
1414
1415         * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
1416         *type_unification* and unify.
1417
1418 Mon Mar  2 12:11:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
1419
1420         * parse.y (explicit_template_type): Remove TEMPLATE keyword.
1421         (nested_name_specifier): And add it before this use.
1422         (typename_sub0): And this use.  Also add use without the keyword.
1423         (typename_sub1): Likewise.
1424         * pt.c (instantiate_class_template): Don't actually instantiate 
1425         anything if our type uses template parms.
1426
1427 Mon Mar  2 11:04:59 1998  Jim Wilson  <wilson@cygnus.com>
1428
1429         * decl.c (start_function): Don't call temporary_allocation for a
1430         nested function.
1431
1432 Sun Mar  1 21:06:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
1433
1434         * pt.c (instantiate_class_template): Don't mess with friends if
1435         our type uses template parms.
1436
1437 Sat Feb 28 12:06:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
1438
1439         * parse.y (nested_name_specifier): Use explicit_template_type.
1440         (typename_sub): Allow a template_type, an explicit_template_type,
1441         or an implicit template type at the end.
1442         * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
1443         * decl.c (make_typename_type): Handle template-id where the name
1444         is a TEMPLATE_DECL.
1445         * call.c (build_scoped_method_call): Handle member template 
1446         destructor call.
1447         * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member 
1448         destructor is represented by the type.
1449
1450         * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
1451         * parse.y (nested_name_specifier): Add 'template' case.
1452         (explicit_template_type): New rule.
1453         (typename_sub): Use it.
1454         * decl.c (make_typename_type): Handle getting a template-id for NAME.
1455         * pt.c (tsubst): Likewise.
1456
1457 Fri Feb 27 11:17:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
1458
1459         * pt.c (add_to_template_args): Fix thinko.
1460         (instantiate_class_template): Call it later.
1461
1462         * pt.c (get_class_bindings): Add outer_args parm.
1463         (most_specialized_class): Likewise.
1464         (instantiate_class_template): Pass it.
1465         (more_specialized_class): Likewise.
1466         (lookup_template_class): Get context from template if none
1467         was specified.
1468         (finish_member_template_decl): Don't do anything with a
1469         partial specialization.
1470         * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
1471         AGGREGATE_TYPE_P.
1472         * class.c (finish_struct): Member class templates have already been
1473         checked for name clashes.
1474         * decl.c (pushdecl_with_scope): Handle pushing at class level.
1475
1476 Fri Feb 27 02:25:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
1477
1478         * pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
1479         (tsubst, *_PARM): Support multiple levels of template classes.
1480         (instantiate_class_template): Look up the pattern from the
1481         original template.
1482         (lookup_template_class): Handle getting a template for d1.
1483         (push_template_decl): Correct setting of 'primary'.
1484         (reduce_template_parm_level): Add 'levels' parm.
1485         (finish_member_template_decl): Support member class templates.
1486         (template_class_depth): Handle multiple levels.
1487         * parse.y (component_decl_1, fn.def2): Remove member template case.
1488         (component_decl): Add member template cases.
1489         * decl2.c (check_member_template): We now handle member template
1490         classes.
1491         * decl.c (pushtag): Handle member templates.
1492         * method.c (do_inline_function_hair): Don't touch
1493         IDENTIFIER_GLOBAL_VALUE.
1494         * init.c (build_offset_ref): If name isn't an identifier, just 
1495         return it.
1496         * spew.c (yylex): Handle PTYPENAME like TYPENAME.
1497
1498         * typeck.c (get_delta_difference): Do adjust for conversions to
1499         and from virtual base.
1500
1501 Wed Feb 25 09:51:29 1998  Jason Merrill  <jason@yorick.cygnus.com>
1502
1503         * typeck.c (get_delta_difference): Give hard error for conversion
1504         from virtual base.
1505
1506         * cp-tree.h: Tweak formatting.
1507
1508 Wed Feb 25 00:35:33 1998  Jason Merrill  <jason@yorick.cygnus.com>
1509
1510         * decl.c (push_namespace): Handle redeclaration error.
1511
1512         * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
1513         (IDENTIFIER_NAMESPACE_BINDINGS): New macro.
1514         (NAMESPACE_BINDING): New macro.
1515         (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
1516         * *.c: Use them.
1517
1518         * pt.c (push_template_decl): Use innermost_args.
1519
1520         * decl.c (get_unique_name): Tweak from earlier in the name.
1521
1522 Tue Feb 24 22:15:04 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
1523
1524         * cp-tree.def: Add CPLUS_BINDING node.
1525         * cp-tree.h (tree_binding): new struct
1526         (BINDING_SCOPE, BINDING_VALUE): new macros
1527         (current_namespace, global_namespace): declare extern
1528         (struct lang_decl_flags): new field in_namespace
1529         (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros
1530         (DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros
1531         (TREE_INDIRECT_USING): new macro
1532         * decl2.c (current_namespace, global_namespace): Declare.  The
1533         value is a NAMESPACE_DECL now, not a TREE_LIST.
1534         (is_namespace_ancestor, namespace_ancestor):new static functions.
1535         (add_using_namespace, ambiguous_decl): likewise.
1536         (lookup_using_namespace): new support function for lookup_name.
1537         (qualified_lookup_using_namespace): new support function for
1538         do_scoped_id and lookup_namespace_name
1539         (get_namespace_id): mark as obsolete.
1540         (current_namespace_id): Likewise.
1541         (do_namespace_alias): Implement.
1542         (do_using_directive): Implement as call to add_using_namespace.
1543         * decl.c (binding_for_name): new function.
1544         (push_namespace, pop_namespace): implement.
1545         (push_decl): don't install a FUNCTION_DECL in the global branch.
1546         (lookup_namespace_name): implement using qualified lookup.
1547         (lookup_name_real): For global scoping, lookup in
1548         global_namespace. For namespace scoping, lookup in given
1549         namespace. For unscoped lookup, iterate over namespace,
1550         considering using directives.
1551         (init_decl_processing): initialize global_namespace.
1552         (grokvardecl): Build assembler name as static name for globals.
1553         (grokdeclarator): Remove old namespace mangling.
1554         (xref_tag): When installing a global binding for the
1555         tag, make sure we have an identifier.
1556         * method.c (build_overload_nested_name): mangle namespaces.
1557         (build_qualified_name): Likewise.
1558         (build_decl_overload_real): Likewise.
1559         * lex.c (build_lang_decl): set namespace for new declaration to
1560         current_namespace.
1561         (do_scoped_id): find global names in global or current
1562         namespace, or using qualified namespace lookup, depending on
1563         context.
1564         * init.c (build_member_call): When scope is namespace, use
1565         build_x_function_call instead.
1566         (build_offset_ref): When scope is namespace, collapse processing
1567         to lookup_namespace_name instead.
1568         * error.c (dump_decl): Support NAMESPACE_DECL.
1569         * decl.c (pushdecl): Bind globals to current namespace.
1570         (push_overloaded_decl): Likewise.
1571         (lookup_tag): Likewise.
1572         (lookup_name_current_level): Likewise.
1573         (xref_tag): Likewise.
1574         (start_function): Likewise.
1575         * lex.c (do_identifier): Likewise.
1576         (identifier_typedecl_value): Likewise.
1577         (real_yylex): Likewise.
1578         * method.c (do_inline_function_hair): Likewise.
1579         * parse.y (unscoped): Likewise.
1580         * pt.c (check_explicit_specialization): Likewise.
1581         (lookup_template_class): Likewise.
1582         * rtti.c (call_void_fn): Likewise.
1583         * sig.c (build_sigtable): Likewise.
1584         * ptree.c (lang_print_xnode): New function.
1585
1586 Tue Feb 24 01:40:24 1998  Jason Merrill  <jason@yorick.cygnus.com>
1587
1588         * pt.c (instantiate_class_template): Don't instantiate if pedantic
1589         and the args use template parms.
1590
1591         * pt.c (push_tinst_level): If the instantiaton uses template parms,
1592         fail silently.
1593         * decl.c (xref_basetypes): Do call complete_type for basetypes
1594         that involve template parameters.
1595
1596 Tue Feb 24 00:36:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
1597
1598         * typeck2.c (process_init_constructor): Fix labeled init check.
1599
1600 Mon Feb 23 05:08:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
1601
1602         * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
1603         argument to tsubst and friends.
1604
1605         * pt.c (tsubst, FUNCTION_DECL): Tidy.
1606
1607         * typeck.c (build_x_function_call): Handle static member function
1608         templates like non-templates.  Handle friend templates like normal
1609         function templates.
1610         * pt.c (tsubst, *_PARM): Don't use orig_level.
1611         (get_bindings): Don't call add_to_template_args.
1612         (instantiate_template): Likewise.
1613         (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
1614         * ptree.c (print_lang_type): Print index/level for template parms.
1615
1616 Mon Feb 23 02:52:29 1998  Mark Mitchell  <mmitchell@usa.net>
1617
1618         * Make-lang.in (cc1plus): Note that cc1plus depends on
1619         cp/cp-tree.h and cp/cp-tree.def.
1620         
1621         * cp-tree.def (TEMPLATE_CONST_PARM): Remove.
1622         (TEMPLATE_PARM_INDEX): New tree code, used to indicate a
1623         position in a template parameter list.
1624         * cp-tree.h (template_parm_index): New structure, used as the tree
1625         structure for a TEMPLATE_PARM_INDEX.
1626         (TEMPLATE_PARM_IDX): New macro.
1627         (TEMPLATE_PARM_LEVEL): Likewise.
1628         (TEMPLATE_PARM_DESCENDANTS): Likewise.
1629         (TEMPLATE_PARM_ORIG_LEVEL): Likewise.
1630         (TEMPLATE_PARM_DECL): Likewise.
1631         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
1632         (TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
1633         (TEMPLATE_TYPE_DECL): Likewise.
1634         (TEMPLATE_CONST_IDX): Remove.
1635         (TEMPLATE_CONST_LEVEL): Likewise.
1636         (TEMPLATE_CONST_SET_INFO): Likewise.
1637         (TEMPLATE_TYPE_SET_INFO): Likewise.
1638         (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
1639         node.
1640         (TEMPLATE_TYPE_LEVEL): Likewise.
1641         * decl.c (decls_match): Call comp_template_parms, rather than
1642         expanding it inline.
1643         (duplicate_decls): If two template declarations are being merged,
1644         then their TEMPLATE_INFOs should be merged as well.
1645         (grokfndecl): Save template-id information when declaring a friend
1646         with explicit template arguments.  Pass arguments to
1647         check_explicit_specialization via correct convention; at some
1648         point check_explicit_specialization changed, but these call-sites
1649         did not.
1650         (grokdeclarator): Tidy up slightly.
1651         * decl2.c (check_classfn): Tidy up slightly.  Don't assume that
1652         two template functions with the same DECL_ASSEMBLER_NAME the same,
1653         since the names are not yet mangled.
1654         * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
1655         TEMPLATE_CONST_PARM. 
1656         (dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
1657         decl for a non-type parameter, rather than printing `<tparm ...>'.
1658         * friend.c (is_friend): Handle TEMPLATE_DECL friends.
1659         (do_friend): Deal with template friends.
1660         * lex.c (do_pending_inlines): Call
1661         maybe_begin_member_template_processing, rather than
1662         conditionally calling begin_member_template_processing.
1663         (process_next_inline): Likewise.  Call
1664         maybe_end_member_template_processing, rather than
1665         conditionally calling end_member_template_processing.
1666         (do_pending_defargs): Likewise.
1667         (do_identifier): Use TEMPLATE_PARM_INDEX instead of
1668         TEMPLATE_CONST_PARM.  
1669         * method.c (build_mangled_template_parm_index): New function.
1670         (build_overload_value): Use it.
1671         (build_overload_name): Likewise.
1672         * pt.c (finish_member_template_decl): Allow friend declarations.
1673         (template_class_depth): New function.
1674         (is_member_template): Rename, and modify, to become...
1675         (is_member_or_friend_template): New function.
1676         (end_member_template_processing): Rename, and modify, to become...
1677         (maybe_end_member_template_processing).
1678         (build_template_parm_index): New function.
1679         (reduce_template_parm_level): New function.
1680         (process_template_parm): Modify to use build_template_parm_index.
1681         (push_template_decl): Deal with friend templates.
1682         (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
1683         TEMPLATE_CONST_PARM.
1684         (tsubst_friend_function): New function.
1685         (instantiate_class_template): Generate the DECL_FRIENDLIST
1686         for a new instantiation by using tsubst_friend_function rather
1687         than just tsubst.
1688         (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
1689         Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
1690         appropriate new macros.  Use reduce_template_parm_level to
1691         generate lower-level template parameters.  Handle tsubst'ing into
1692         TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
1693         to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
1694         templates.  Similarly for the template parameters for a new
1695         template.
1696         (tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
1697         of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
1698         (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.  
1699         (get_bindings): Call add_to_template_args if necessary.
1700         (instantiate_decl): Handle instantiations of friend templates.
1701         * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
1702         TEMPLATE_TYPE_PARM as a list of fields; it's not!
1703         * spew.c (yylex): Do a little manual constant propogation to
1704         clarify the code.
1705         
1706 Sun Feb 22 19:53:29 1998  Jeffrey A Law  (law@cygnus.com)
1707
1708         * error.c: Include sys/types.h.
1709
1710 Thu Feb 19 14:49:09 1998  Jeffrey A Law  (law@cygnus.com)
1711
1712         * method.c (build_mangled_name): Start CPP directives in column zero.
1713
1714 Thu Feb 19 10:36:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
1715
1716         * typeck2.c (process_init_constructor): Sorry about non-trivial
1717         labeled initializers.
1718         * parse.y (initlist): Reenable labeled initializers.
1719
1720 Thu Feb 19 10:15:55 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1721
1722         * pt.c (coerce_template_parms) Add a new parameter, is_tmpl_parm,
1723         all callers changed.  Rely on the new parameter instead of arg 
1724         being a TREE_LIST when determine whether we are working inside
1725         template template parameter.  Clean up is_type test.
1726         
1727 Thu Feb 19 10:04:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
1728
1729         * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
1730         * typeck2.c (initializer_constant_valid_p): Allow conversions
1731         between pointers and refrerences.
1732
1733 1998-02-19  Brendan Kehoe  <brendan@cygnus.com>
1734
1735         * typeck.c (build_unary_op): Only warn about incr/decr a pointer
1736         if pedantic || warn_pointer_arith.
1737
1738 Thu Feb 19 09:37:21 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1739
1740         * pt.c (unify): Handle TEMPLATE_DECL.
1741
1742 1998-02-18  Brendan Kehoe  <brendan@cygnus.com>
1743
1744         * cp-tree.h (strip_attrs): Remove decl.
1745
1746 1998-02-18  Doug Evans  <devans@cygnus.com>
1747
1748         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
1749         Update olddecl's attributes too.
1750         (strip_attrs): Remove function.
1751         * typeck.c (common_type): Call merge_machine_type_attributes.
1752
1753 Tue Feb 17 14:07:52 1998  Mark Mitchell  <mmitchell@usa.net>
1754
1755         * parse.y (initdcl0_innards): New grammar symbol.
1756         (nomods_initdecls, nomods_initdcl0): Change type from itype to
1757         none, since the resulting value is never used.
1758         (parse_decl): New function.
1759         (datadef): Remove redundant actions.
1760         (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
1761         * parse.c: Regenerated.
1762         
1763 Tue Feb 17 11:54:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
1764
1765         * parse.y (simple_stmt): Use getdecls() to check for decl.
1766
1767 Sat Feb 14 11:50:51 1998  Manfred Hollstein  <manfred@s-direktnet.de>
1768
1769         * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New 
1770         macros.
1771         (c++.install-common): Install c++filt properly as native or as cross
1772         variant.
1773         (c++.uninstall): Add c++filt.
1774
1775 Fri Feb 13 14:55:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
1776
1777         * call.c (standard_conversion): Fix multi-level ptr conversions.
1778
1779 Fri Feb 13 14:06:22 1998  Mike Stump  <mrs@wrs.com>
1780
1781         * init.c (build_new): Propagate error_mark_node up.
1782
1783 Fri Feb 13 13:24:32 1998  Jason Merrill  <jason@yorick.cygnus.com>
1784
1785         * parse.y (simple_stmt): If the condition isn't a declaration, 
1786         start the controlled block after the test.
1787
1788 Fri Feb 13 02:26:10 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
1789
1790         * call.c (build_over_call): Convert builtin abs, labs and fabs to
1791         tree-codes.
1792         * decl.c (init_decl_processing): Reenable abs, labs and fabs as
1793         builtins.
1794
1795 Fri Feb 13 01:36:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
1796
1797         * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
1798
1799 Fri Feb 13 00:21:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
1800
1801         * cp-tree.h: Add access_protected_virtual_node.
1802         * class.c (init_class_processing): Initialize it.
1803         * decl.c (xref_basetypes): Use it.
1804         * parse.y (base_class_access_list): Likewise.
1805
1806         * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
1807         (c++.install-common): Install c++filt.
1808
1809 Thu Feb 12 12:46:51 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
1810
1811         * decl.c (shadow_tag): Give error for typedef-ing built-in types.
1812
1813 Wed Feb 11 23:28:05 1998  Mark Mitchell  <mmitchell@usa.net>
1814
1815         * call.c (reference_binding): Use comptypes when comparing
1816         TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
1817
1818 Wed Feb 11 16:42:04 1998  Mark Mitchell  <mmitchell@usa.net>
1819
1820         * tree.c (is_overloaded_fn): Use really_overloaded_fn.
1821         (really_overloaded_fn): Move check here from is_overloaded_fn. 
1822         (get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
1823
1824 Wed Feb 11 15:54:18 1998  Mark Mitchell  <mmitchell@usa.net>
1825
1826         * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
1827         conversions.
1828
1829 Mon Feb  9 22:23:31 1998  Mark Mitchell  <mmitchell@usa.net>
1830
1831         * cp-tree.h (push_template_decl): Return the decl passed in, or an
1832         equivalent duplicate.
1833         * decl.c (pushtag): Use the return value from push_template_decl.
1834         (duplicate_decls): When duplicating a template declaration, merge
1835         the DECL_TEMPLATE_RESULTs as well.
1836         (make_implicit_typename): Don't try to dive into typename types to
1837         find a context for making a new implicit typename.
1838         (start_decl): Use the return value from push_template_decl.
1839         (grokdeclarator): Complain about declarations list `const operator
1840         int'.  Since we don't correctly handle in-class initializations of
1841         non-static data members, complain about this (now illegal)
1842         practice.  Issue an error for initializations of non-const statics
1843         since that is illegal as well, and since we don't handle that case
1844         correctly either.
1845         (start_function): Use the return value from push_template_decl.
1846         (start_method): Likewise.
1847         * decl2.c (grokfield): Likewise.  Since the change to
1848         grokdeclarator ensures that all initialized fields are in fact
1849         static, remove a redundant test for TREE_PUBLIC.
1850         * parse.y (initlist): Disable labeled initializers since they do
1851         not work as per the documentation, and since they do not use the
1852         same syntax as the C front end.
1853         * pt.c (push_template_decl): Return the decl passed in, or an
1854         equivalent duplicate.
1855         (lookup_template_class): When searching in a nested context,
1856         use the right arguments.
1857         (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
1858         * typeck.c (build_component_ref): Assign the correct type to the
1859         result of build_vfn_ref.
1860         
1861 Tue Feb 10 23:56:46 1998  Jason Merrill  <jason@yorick.cygnus.com>
1862
1863         * pt.c (convert_nontype_argument): Fix typo.
1864         (check_explicit_specialization): Allow old-style specialization
1865         of class template members.
1866
1867 Tue Feb 10 20:36:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
1868                           Manfred Hollstein  <manfred@s-direktnet.de>
1869
1870         * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
1871         when deciding to override DECL_ASSEMBLER_NAME.
1872
1873 Tue Feb 10 15:30:55 EST 1998 Andrew MacLeod <amacleod@torpedo.to.cygnus.com>
1874
1875         * decl2.c (lang_f_options): Add -fsquangle to option processing list.
1876         * cp-tree.h (flag_do_squangling): Add declaration.
1877         * lang-options.h: Add -fsquangle and -fno-squangle.
1878         * method.c: Add macros and static variables for squangling.
1879         (build_overload_name): Rename to build_mangled_name, add logic for B 
1880         compression, and split into process_modifiers and 
1881         process_overload_item.
1882         (process_modifiers): New function, to handle constant, reference, 
1883         and pointer types. 
1884         (process_overload_item): New function, handles issue of type codes.
1885         (build_overload_name): New function, start squangling and call 
1886         build_mangled_name.
1887         (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
1888         (start_squangling): New function to initialize squangling structs.
1889         (end_squangling): New function to destroy squangling structs.
1890         (nrepeats): Rename variable to Nrepeats.
1891         (issue_nrepeats): New function for issuing 'n' type repeats.
1892         (check_ktype): New function to check for type K name compression.
1893         (build_overload_nested_name): Add a check for K name compression.
1894         (build_qualified_name): Add a check for K name compression and don't
1895         use DECL_ASSEMBLER_NAME when squangling is on.
1896         (check_btype): New function, checks for B type compression.
1897         (build_static_name, build_decl_overload_real): Initiate squangling.
1898         (build_typename_overload, build_overload_with_type): Initiate 
1899         squangling
1900
1901 Sun Feb  8 23:47:38 1998  scott snyder  <sss@d0linux01.fnal.gov>
1902
1903         * method.c (make_thunk): Avoid name buffer overflow.
1904
1905 Sat Feb  7 16:48:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
1906
1907         * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
1908         don't define them yet.
1909
1910         * parse.y (nomods_initdcl0): Add constructor_declarator case.
1911
1912 Fri Feb  6 21:32:25 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1913
1914         * config-lang.in (diff_excludes): Use basename only.
1915
1916 Thu Feb  5 19:10:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
1917
1918         * tinfo2.cc: Add tinfo for signed char.
1919
1920 Thu Feb  5 14:38:23 1998  Mike Stump  <mrs@wrs.com>
1921
1922         * search.c (compute_access): Handle protected constructors in derived
1923         classes as accessible.
1924
1925 Wed Feb  4 01:26:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
1926
1927         * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
1928         Call convert_from_reference sooner.
1929
1930 Tue Feb  3 23:50:52 1998  Mark Mitchell  <mmitchell@usa.net>
1931
1932         * cvt.c (ocp_convert): Obtain the constant values from constant
1933         decls even if the destination type is the same as the type of the
1934         decl. 
1935
1936         * decl2.c (finish_file): Make sure that static inlines with
1937         definitions are not marked DECL_EXTERNAL before returning.
1938
1939 Tue Feb  3 22:43:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
1940
1941         * decl.c: Lose arg_looking_for_template.
1942         (lookup_name_real): Likewise.
1943         * parse.y: Lose processing_template_arg, template_arg1
1944         (primary): Likewise.
1945         * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
1946
1947 Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1948
1949         * error.c (dump_decl): Fix type of default arguments for template
1950         template parameters and nontype template parameters.
1951         * parse.y (template_parm): Handle invalid default template 
1952         template arguments here.
1953
1954         * parse.y (template_parm): Use template_arg instead of PTYPENAME 
1955         for default template template argument.
1956         * pt.c (coerce_template_parms): Merge default template argument 
1957         codes.  Can treat RECORD_TYPE as template name if it is implicitly
1958         created.  Fix argument index in error message.
1959         * typeck.c (comptypes): Merge template argument comparison codes in 
1960         TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
1961
1962 Tue Jan  6 01:42:44 1998  Mumit Khan <khan@xraylith.wisc.edu>
1963
1964         * lex.c (file_name_nondirectory): Also check for '/'.
1965
1966 Mon Feb  2 11:24:22 1998  Mark Mitchell  <mmitchell@usa.net>
1967
1968         * parse.y (primary): Deal with statement-expressions in
1969         templates. 
1970         * pt.c (tsubst_copy): Handle BIND_EXPR.
1971         * tree.c (mapcar): Likewise.
1972
1973         * call.c (add_template_candidate_real): Pass extra parameter to
1974         fn_type_unification. 
1975         * cp-tree.h (fn_type_unification): Add parameter.
1976         * pt.c (fn_type_unification): Add additional parameter to deal with
1977         static member functions.
1978         (get_bindings): Deal with static member functions.
1979
1980         * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.      
1981         (revert_static_member_fn): Declare.
1982         * decl.c (revert_static_member_fn): Remove declaration.  Change
1983         linkage from internal to external.
1984         (cp_finish_decl): Deal with virtual functions in classes local to
1985         template functions.
1986         * decl2.c (finish_file): Don't forget to emit increment/decrement
1987         expressions in initializers for file-scope variables.
1988         * parse.y (typename_sub2): If the typename doesn't names a
1989         template, rather than a type, issue an error message.
1990         * pt.c (check_explicit_specialization): Handle specializations of
1991         static member functions.
1992         (coerce_template_parms): Handle offset references to lists of
1993         member functions.
1994         * search.c (note_debug_info_needed): Don't crash when handed a
1995         type which is being defined.
1996         * typeck.c (complete_type): Don't crash when handed NULL_TREE;
1997         that can happen with some illegal code.
1998
1999 Mon Feb  2 00:57:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2000
2001         * call.c (user_harshness): Initialize `code' to 0.
2002         (build_method_call): Initialize `candidates', `cp' and `len' to 0.
2003         (null_ptr_cst_p): Add parentheses around && within ||.
2004         (standard_conversion): Likewise.
2005         (z_candidate): Likewise.
2006         (build_user_type_conversion_1): Initialize `args' to NULL_TREE.
2007         (build_object_call): Likewise for `mem_args'.
2008         (build_new_op): Likewise for `mem_arglist'.  Add `return' from
2009         default case in enumeration switch.
2010
2011         * class.c (build_vtable_entry): Add explicit braces to avoid
2012         ambiguous `else'.
2013         (build_class_init_list): Likewise.
2014         (finish_struct_1): Initialize `width' to 0.
2015         (instantiate_type): Initialize `name' to NULL_TREE.  Add
2016         explicit braces to avoid ambiguous `else'.
2017
2018         * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
2019         `else'.
2020
2021         * decl.c (grok_reference_init): Eliminate unused parameter, all
2022         callers changed.
2023         (record_builtin_type): Initialize `tdecl' to NULL_TREE.
2024         (init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
2025         (cp_finish_decl): Initialize `ttype' to NULL_TREE.
2026         (grokdeclarator): Add parentheses around && within ||.  Add
2027         explicit braces to avoid ambiguous `else'.
2028         (grokparms): Initialize `type' to NULL_TREE.
2029         (xref_tag): Remove unused label `just_return'.
2030         (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
2031         (finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
2032         (hack_incomplete_structures): Add parentheses around assignment
2033         used as truth value.
2034
2035         * decl2.c (coerce_delete_type): Hide definition of `e3'.
2036
2037         * error.c: Include <stdlib.h>.
2038         (dump_expr): Change the type of `i' to size_t.  Remove unused
2039         label `error'. 
2040
2041         * except.c (init_exception_processing): Remove unused variable `d'.
2042         (expand_throw): Likewise for `label'.
2043
2044         * friend.c (add_friends): Add explicit braces to avoid ambiguous
2045         `else'.
2046
2047         * init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
2048         (sort_base_init): Likewise for `binfo'.
2049         (expand_member_init): Likewise for `rval'.
2050         (build_member_call): Add parentheses around assignment used as
2051         truth value.
2052         (build_offset_ref): Add explicit braces to avoid ambiguous `else'.
2053         (build_new): Initialize `nelts' to NULL_TREE.  Initialize
2054         `old_immediate_size_expand' to 0.
2055         (build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
2056         (build_vec_delete_1): Remove unused variable `block'.
2057         (expand_vec_init): Initialize `itype' to NULL_TREE.
2058
2059         * lex.c: Include <strings.h> if we don't have <string.h>.  Protect
2060         declaration of `index' and `rindex' with autoconf macros.
2061         (reinit_parse_for_expr): Remove unused variables
2062         `look_for_semicolon' and `look_for_lbrac'.
2063         (cons_up_default_function): Initialize `args' to NULL_TREE.
2064         (readescape): Initialize `firstdig' to 0.
2065         (real_yylex): Add parentheses around assignment used as truth value. 
2066
2067         * method.c: Include <strings.h> if we don't have <string.h>.
2068         Protect declaration of `index' with autoconf macro.
2069
2070         * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
2071         Initialize `type' to NULL_TREE.
2072         (structsp): Remove unused variable `id'.
2073
2074         * pt.c (coerce_template_parms): Add explicit braces to avoid
2075         ambiguous `else'.
2076         (lookup_template_class): Initialize `template' to NULL_TREE.
2077         (instantiate_class_template): Remove unused variable `name' and `e'.
2078         (tsubst): Likewise for `i'.  Initialize `last' to NULL_TREE.
2079         (do_poplevel): Initialize `saved_warn_unused' to 0.
2080         (type_unification): Remove unused varable `parm'.
2081         (unify): Likewise for `j'.
2082
2083         * repo.c (init_repo): Add parentheses around assignment used as
2084         truth value.
2085         (finish_repo): Remove unused varable `p'.
2086         
2087         * search.c (get_binfo): Initiize `type' to NULL_TREE.
2088         (get_base_distance): Likewise.
2089         (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
2090         and `new_v' to NULL_TREE.
2091         (lookup_fnfields): Likewise for `rval_binfo_h'.
2092         (breadth_first_search): Add parentheses around assignment used as
2093         truth value.
2094         (get_template_base): Initialize `type' to NULL_TREE.
2095
2096         * sig.c (append_signature_fields): Initialize `last_mfptr' to
2097         NULL_TREE.
2098         (build_signature_table_constructor): Likewise for
2099         `last_rhs_field', `pfn' and `vt_off'.
2100         (build_sigtable): Likewise for `init'.
2101
2102         * tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
2103         (propagate_binfo_offsets): Likewise for `delta'.
2104         (hash_tree_cons): Initialize hashcode to 0.
2105         (can_free): Likewise for `size'.
2106         (cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
2107         
2108         * typeck.c (convert_sequence): Hide prototype.
2109         (common_type): Add explicit braces to avoid ambiguous `else'.
2110         (comp_target_types): Likewise.
2111         (build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
2112         (build_function_call_real): Add explicit braces to avoid ambiguous
2113         `else'.
2114         (convert_arguments): Initialize `called_thing' to 0.
2115         (convert_for_initialization): Initialize `savew' and `savee' to 0.
2116
2117         * typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
2118         (digest_init): Initialize `old_tail_contents' to NULL_TREE.
2119         (build_x_arrow): Likewise for `last_rval'.
2120
2121         * xref.c (GNU_xref_decl): Initialize `cls' to 0.
2122
2123 Sun Feb  1 12:45:34 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
2124
2125         * decl.c (init_decl_processing): Use set_sizetype.
2126         * decl2.c (sizetype): Don't declare.
2127         * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
2128         (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
2129         (build_component_addr, unary_complex_lvalue): Likewise.
2130         * rtti.c (expand_class_desc): Likewise.
2131         * class.c (get_vfield_offset): Likewise.
2132
2133 Thu Jan 29 10:39:30 1998  Mark Mitchell  <mmitchell@usa.net>
2134
2135         * pt.c (convert_nontype_argument): Move check for is_overloaded_fn
2136         early to avoid bogus error.  Handle overloaded function
2137         names provided as template arguments correctly.
2138         (coerce_template_parms): Don't mishandle overloaded functions when
2139         dealing with template template parameters.
2140         (lookup_template_class): Issue an error message, rather than
2141         crashing, when the TYPE_DECL provided is not a template type.
2142
2143 Wed Jan 28 23:14:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
2144
2145         * class.c (instantiate_type): Don't just return a known type if
2146         it's wrong.
2147
2148 Wed Jan 28 11:04:07 1998  Mark Mitchell  <mmitchell@usa.net>
2149
2150         * class.c (instantiate_type): Remove handling of FUNCTION_DECL
2151         since that code could never be reached.
2152         
2153         * error.c (dump_decl): Avoid aborting in the midst of printing an
2154         error message about an illegal template declaration.
2155
2156         * parse.y (structsp): Print an error message, rather than crashing,
2157         when a class-head does not name a class.
2158
2159         * pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
2160         template arguments as a g++ extension.
2161         
2162         * cp-tree.def (ALIGNOF_EXPR): New tree code.
2163         * decl2.c (grok_alignof): If processing_template_decl, just store
2164         the expression.
2165         * typeck.c (c_alignof): Likewise.
2166         * decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
2167         * error.c (dump_expr): Likewise.
2168         * pt.c (tsubst_copy): Likewise.
2169         * tree.c (cp_tree_equal): Likewise.
2170         * pt.c (uses_template_parms): Correctly determine whether or not a
2171         SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
2172         folding can be done.
2173         
2174         * cp-tree.h (grok_enum_decls): Remove type parameter.
2175         * decl.c (grok_enum_decls): Likewise.
2176         * decl2.c (grok_x_components): Call grok_enum_decls
2177         unconditionally, since it will do nothing if there is no
2178         current_local_enum.  Use the new calling sequence.
2179         * pt.c (tsubst_enum): Use the new calling sequence for
2180         grok_enum_decls.
2181
2182         * decl.c (start_function): Make member functions of local classes
2183         in extern inline functions have comdat linkage here...
2184         (grokdeclarator): Rather than here.
2185         
2186 Wed Jan 28 10:55:47 1998  Jason Merrill  <jason@yorick.cygnus.com>
2187
2188         * pt.c (convert_nontype_argument): Use decl_constant_value.
2189
2190 Tue Jan 27 16:42:21 1998  Mark Mitchell  <mmitchell@usa.net>
2191
2192         * call.c (add_template_candidate_real): New function.
2193         (add_template_candidate): Use it.
2194         (add_template_conv_candidate): Likewise.
2195         (joust): Pass extra argument to more_specialized.
2196         * class.c (instantiate_type): Handle a single FUNCTION_DECL.
2197         (is_local_class): Remove.
2198         (finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
2199         * cp-tree.h (is_local_class): Remove.
2200         (perform_array_to_pointer_conversion): Likewise.
2201         (finish_member_template_decl): Add.
2202         (check_explicit_specialization): Return a tree, not an int.
2203         (more_specialized): Take additional argument.
2204         (get_bindings): Likewise.
2205         (TI_PENDING_SPECIALIZATION_FLAG): New macro.
2206         * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
2207         (perform_array_to_pointer_conversion): Remove.
2208         * decl.c (saved_scope): Add processing_specialization,
2209         processing_explicit_instantiation fields.
2210         (maybe_push_to_top_level): Save them.
2211         (pop_from_top_level): Restore them.
2212         (grokfndecl): Use new return value from
2213         check_explicit_specialization. 
2214         (start_decl): Don't check flag_guiding_decls before pushing
2215         decls. 
2216         (cp_finish_decl): Remove previous (bogus) change.
2217         (grok_declarator): Use decl_function_context rather than
2218         is_local_class. 
2219         * decl2.c (finish_file): Pass extra argument to get_bindings.
2220         (build_expr_from_tree): Let build_x_component_ref check 
2221         validity of arguments rather than doing it here.
2222         * lex.c (cons_up_default_function): Remove code fooling with
2223         processing_specialization, processing_explicit_instantiation
2224         flags, as that is now done in {maybe_push_top,pop_from}_top_level. 
2225         * method.c (build_overload_identifier): Mangle local classes in
2226         template functions correctly.
2227         * parse.y (finish_member_template_decl): Move to pt.c.
2228         * pt.c (finish_member_template_decl): Moved here from parse.y.
2229         (print_candidates): New function.
2230         (determine_specialization): Change interface.  Properly look for
2231         most specialized versions of template candidates.
2232         (check_explicit_specialization): Fully process explicit
2233         instantiations. 
2234         (push_template_decl): Avoid looking at CLASSTYPE fields in
2235         FUNCTION_DECLS. 
2236         (determine_overloaded_function): Remove.
2237         (convert_nontype_argument): Change name from
2238         convert_nontype_parameter.  Use determine_overloaded_function
2239         instead of instantiate_type.
2240         (mangle_class_name_for_template): Handle type contexts as well as
2241         function contexts.
2242         (classtype_mangled_name): Likewise.
2243         (lookup_template_class): Likewise.
2244         (tsubst): Likewise.
2245         (more_specialized): Take explict template arguments as a
2246         parameter. 
2247         (most_specialized): Likewise.
2248         (get_bindings): Likewise.  Check that return types match before
2249         proclaiming a function a match.
2250         (do_decl_instantiation): Remove code searching for function to
2251         instantiate; that is now done in check_explicit_specialization.
2252         (add_maybe_template): Pass extra argument to get_bindings.
2253         * tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
2254         implementation.
2255         * typeck.c (build_component_ref): Check for invalid arguments.
2256
2257 Tue Jan 27 01:44:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
2258
2259         * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that 
2260         return_target and call_target are equivalent.
2261
2262         * pt.c (type_unification_real): Just accept function parms that
2263         don't use any template parms.
2264
2265 Sun Jan 25 03:30:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
2266
2267         * decl.c (cp_finish_decl): When bailing on a comdat variable, also
2268         unset DECL_NOT_REALLY_EXTERN.
2269
2270         * parse.y (typename_sub*): Fix std::.
2271
2272 Sat Jan 24 12:13:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
2273
2274         * error.c (dump_decl): Fix type default template args.
2275         (dump_type): Hand TEMPLATE_DECL off to dump_decl.
2276
2277 Fri Jan 23 18:34:37 1998  Mumit Khan <khan@xraylith.wisc.edu>
2278
2279         * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
2280         (file_name_nondirectory): Use.
2281
2282 Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2283
2284         * pt.c (coerce_template_parms): Don't access elements of ARGLIST
2285         that are not really present.  Substitute default arguments in 
2286         template template arguments.  Correctly convert TEMPLATE_DECL to 
2287         TEMPLATE_TEMPLATE_PARM.
2288         (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM 
2289         are no longer treated specially here.
2290         * parse.y (template_template_parm): Fix copy error.
2291         * decl.c (grokdeclarator): Warn about missing `typename' for nested
2292         type created from template template parameters.
2293         * parse.y (bad_parm): Likewise
2294
2295         * class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
2296         (push_nested_class): Likewise.
2297         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
2298         * cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
2299         (copy_template_template_parm): Declare.
2300         * decl.c (arg_looking_for_template): New variable.
2301         (lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
2302         Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
2303         node if arg_looking_for_template is nonzero.
2304         (pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
2305         (grok_op_properties, xref_tag, xref_basetypes): Likewise.
2306         (grokdeclarator): Handle TEMPLATE_DECL.
2307         * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
2308         * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
2309         (dump_type_prefix, dump_type_suffix) Handle TEMPLATE_TEMPLATE_PARM.
2310         (dump_decl): Handle unnamed template type parameters.
2311         Handle template template parameters.
2312         (dump_function_name): Handle template template parameters.
2313         * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef): 
2314         Handle TEMPLATE_TEMPLATE_PARM.
2315         * method.c (build_template_template_parm_names): New function.
2316         (build_template_parm_names): Handle TEMPLATE_DECL.
2317         (build_overload_nested_name, build_overload_name): 
2318         Handle TEMPLATE_TEMPLATE_PARM.
2319         * parse.y (maybe_identifier): New nonterminal.
2320         (template_type_parm): Use it.
2321         (template_template_parm, template_arg1): New nonterminal.
2322         (template_parm): Add template_template_parm rules.
2323         (template_arg): Set processing_template_arg.
2324         (template_arg1): Rules moved from template_arg.
2325         (primary, nonnested_type): Set arg_looking_for_template if we are
2326         processing template arguments.
2327         * pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
2328         (process_template_parm): Handle template template parameters.
2329         (coerce_template_parms, comp_template_args): Likewise.
2330         (mangle_class_name_for_template, lookup_template_class): Likewise.
2331         (uses_template_parms): Handle TEMPLATE_DECL and 
2332         TEMPLATE_TEMPLATE_PARM.
2333         (current_template_args): Handle TEMPLATE_DECL.
2334         (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
2335         * search.c (dfs_walk, dfs_record_inheritance): 
2336         Handle TEMPLATE_TEMPLATE_PARM.
2337         * tree.c (copy_template_template_parm): New function.
2338         (mapcar): Handle TEMPLATE_TEMPLATE_PARM.
2339         * typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
2340
2341 Mon Jan 19 22:40:03 1998  Mark Mitchell  <mmitchell@usa.net>
2342
2343         * decl.c (start_decl): Don't allow duplicate definitions of static
2344         data members.
2345
2346         * call.c (build_user_type_conversion_1): Handle user-defined
2347         template conversion operators correctly.
2348
2349         * decl2.c (build_expr_from_tree): Issue an error message if the
2350         object in a COMPONENT_REF is a TEMPLATE_DECL.
2351         
2352         * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
2353         
2354         * class.c (is_local_class): New function.
2355         * cp-tree.h (is_local_class): Declare it.
2356         (last_tree): Likewise.
2357         (begin_tree): Likewise.
2358         (end_tree): Likewise.
2359         (lookup_template_class): Change prototype.
2360         * decl.c (cp_finish_decl): Check for NULL where necesary.
2361         Consider FUNCTION_DECLS to declare objects with top-level binding,
2362         when calling make_decl_rtl.
2363         (grokdeclarator): Give members of local classes internal linkage.
2364         (start_function): Remove declaration of last_tree.
2365         (finish_function): Set flag_keep_inline_functions around call to
2366         rest_of_compilation if we are processing a member function in a
2367         local class.
2368         (start_method): Call push_template_decl for member functions of
2369         local classes in template functions.
2370         * decl2.c (import_export_decl): Don't give external linkage to
2371         instantiations of templates with internal linkage.
2372         * parse.y (last_tree): Remove declaration.
2373         (template_type): Pass extra parameter to lookup_template_class.
2374         (self_template_type): Likewise.
2375         (structsp): Move call to reset_specialization into left_curly.
2376         (left_curly): Call reset_specialization, and begin_tree.
2377         * pt.c (saved_trees): New variable.
2378         (mangle_class_name_for_template): Change prototype.  Use
2379         additional function context to name local classes in templates
2380         correctly. 
2381         (classtype_mangled_name): Pass the context.
2382         (push_template_decl): Handle local classes and templates, and
2383         member functions for such classes.
2384         (convert_nontype_parameter): Fix handling of pointer-to-member
2385         constants. 
2386         (lookup_template_class): Handle local classes in templates.
2387         (tsubst): Likewise.  Don't assume that template instantiations
2388         have external linkage; pay attention to the template declaration. 
2389         (mark_decl_instantiated): Likewise.
2390         (begin_tree): New function.
2391         (end_tree): Likewise.
2392         
2393         * decl.c (xref_basetypes): Don't call complete_type for basetypes
2394         that involve template parameters; that can lead to infinite
2395         recursion unnecessarily.
2396
2397         * pt.c (register_specialization): Do not register specializations
2398         that aren't ready to be registered yet.
2399         (check_explicit_specialization): Handle explicit specialization of
2400         constructors and destructors.
2401         (build_template_decl): New function.
2402         (push_template_delc): Handle out-of-class specializations of
2403         member templates.
2404         
2405         * pt.c (check_explicit_specialization): Set up the template
2406         information before registering the specialization.
2407         (coerce_template_parms): Fix thinko.
2408         (tsubst): Handle specializations of member templates correctly.
2409
2410         * class.c (finish_struct_methods): Remove calls to
2411         check_explicit_specialization from here.
2412         (finish_struct): And insert them here.
2413         * cp-tree.h (perform_qualification_conversions): New function.
2414         (perform_array_to_pointer_conversion): Likewise.
2415         (begin_explicit_instantiation): Likewise.
2416         (end_explicit_instantiation): Likewise.
2417         (determine_specialization): Renamed from
2418         determine_explicit_specialization. 
2419         (comp_template_parms): New function.
2420         (processing_explicit_instantiation): New variable.
2421         * cvt.c (perform_qualification_conversions): New function.
2422         (perform_array_to_pointer_conversion): Likewise.
2423         * decl.c (duplicate_decls): Don't consider template functions
2424         alike unless they have the same parameters.  Refine handling of
2425         instantiation/specialization mismatches.
2426         (start_decl): Don't call pushdecl for template specializations,
2427         since they don't affect overloading.
2428         (start_function): Likewise
2429         (grokfndecl): Call check_explicit_specialization a little later.
2430         Don't call duplicate_decls for memberm template specializations.
2431         (grokdeclarator): Don't update template_count for classes that are
2432         themselves specializations.  Remove use of `2' as parameter to
2433         grokfndecl since that value isn't used.
2434         * lex.c (cons_up_default_function): Save and restore
2435         processing_explicit_instantiation around calls to grokfield.
2436         * parse.y (finish_member_template_decl): New function.
2437         (component_decl_1): Use it.
2438         (fn.def2): Likewise.
2439         (template_arg_list_opt): New nonterminal.       
2440         (template_type): Use it.
2441         (self_template_type): Likewise.
2442         (template_id): Likewise.
2443         (object_template_id): Likewise.
2444         (notype_template_declarator): Likwise.
2445         (begin_explicit_instantiation): Likewise.
2446         (end_explicit_instantiation): Likewise.
2447         (explicit_instantiation): Use them.
2448         * pt.c (coerce_template_parms): Add parameters.
2449         (processing_explicit_instantiation): New variable.
2450         (convert_nontype_parameter): New function.
2451         (determine_overloaded_function): Likewise.
2452         (begin_explicit_instantiation): Likewise.
2453         (end_explicit_instantiation): Likewise.
2454         (retrieve_specialization): Likewise.
2455         (register_specialization): Likewise.
2456         (processing_explicit_specialization): Removed.
2457         (determine_specialization): Handle specializations of member
2458         functions of template class instantiations.
2459         (check_explicit_specialization): Refine to conform to standard.
2460         (comp_template_parms): New function.
2461         (coerce_template_parms): Call convert_nontype_parameter.
2462         (tsubst): Refine handling of member templates.  Use
2463         register_specialization. 
2464         (instantiate_template): Use retrieve_specialization.
2465         (do_decl_instantiation): Likewise.
2466         (instantiate_decl): Likewise.
2467         (type_unification): Improve handling of explict template
2468         arguments. 
2469         * tree.c (mapcar): Return error_mark_node, rather than aborting,
2470         on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
2471         * typeck.c (build_unary_op): Call determine_specialization, rather
2472         than determine_explicit_specialization.
2473
2474 Mon Jan 19 13:18:51 1998  Jason Merrill  <jason@yorick.cygnus.com>
2475
2476         * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
2477
2478 Fri Jan 16 11:40:50 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
2479
2480         * error.c (dump_decl): For enum tags, output the tag, not its value.
2481
2482 1998-01-13  Brendan Kehoe  <brendan@cygnus.com>
2483
2484         * decl.c (init_decl_processing): Only call init_rtti_processing
2485         FLAG_RTTI is set.
2486
2487 Mon Jan 12 01:35:18 1998  Jason Merrill  <jason@yorick.cygnus.com>
2488
2489         * init.c (build_new_1): Split out from build_new.
2490         (build_new): Just return a NEW_EXPR.
2491         * expr.c (cplus_expand_expr): Handle NEW_EXPR.
2492
2493         * decl2.c (get_temp_regvar): Tweak.
2494
2495         * cp-tree.h (TREE_CALLS_NEW): Comment out.
2496         * class.c (resolves_to_fixed_type_p): Remove use.
2497         * method.c (build_opfncall): Likewise.
2498         * call.c (build_new_op): Likewise.
2499
2500 Wed Jan  7 23:47:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
2501
2502         * exception.cc (__eh_alloc, __eh_free): New fns.
2503         (__cp_push_exception, __cp_pop_exception): Use them.
2504         (__uncatch_exception): Call terminate here if no exception.
2505         * except.c (build_terminate_handler): New fn.
2506         (expand_start_catch_block): Use it.
2507         (expand_exception_blocks): Likewise.
2508         (alloc_eh_object): New fn.
2509         (expand_throw): Use it.  Protect exception init with terminate.
2510         * typeck.c (build_modify_expr): Remove code that ignores trivial 
2511         methods.
2512
2513 Mon Dec 22 11:36:27 1997  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2514  
2515         * call.c (add_builtin_candidate): Add default case in enumeration
2516         switch.
2517         (build_new_op): Likewise.
2518         (convert_like): Likewise.
2519         * cvt.c (build_expr_type_conversion): Likewise.
2520         * tree.c (real_lvalue_p): Likewise.
2521         (lvalue_p): Likewise.
2522         (cp_tree_equal): Likewise.
2523         * typeck.c (comptypes): Likewise.
2524         (build_component_ref): Likewise.
2525         (build_function_call_real): Likewise.
2526         (build_binary_op_nodefault): Likewise.
2527         (build_unary_op): Likewise.
2528         (build_modify_expr): Likewise.
2529         * typeck2.c (initializer_constant_valid_p): Likewise.
2530
2531 Sun Dec 21 15:59:00 1997  Nick Clifton  <nickc@cygnus.com>
2532
2533         * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
2534
2535 Thu Dec 18 14:51:50 1997  Mark Mitchell  <mmitchell@usa.net>
2536
2537         * pt.c (coerce_template_parms): Make sure to digest_init if
2538         possible.
2539
2540         * decl.c (duplicate_decls): Make the newdecl virtual if the
2541         olddecl was, just as is done with other attributes of olddecl.
2542
2543 Thu Dec 18 14:43:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
2544
2545         * typeck.c (unary_complex_lvalue): Ignore op0 when taking the 
2546         address of an OFFSET_REF.
2547
2548         * cp-tree.def: Add AGGR_INIT_EXPR.
2549         * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
2550         AGGR_INIT_EXPR where appropriate.
2551         * expr.c (cplus_expand_expr): Likewise.  Simplify.
2552
2553         * decl2.c (finish_file): Remove call to register_exception_table.
2554
2555 Wed Dec 17 17:08:52 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2556
2557         * pt.c (instantiate_class_template): Don't do injection when
2558         processing_template_decl is true, as pollutes current_binding_level 
2559         for base classes.
2560
2561 Wed Dec 17 21:17:39 1997  Peter Schmid <schmid@ltoi.iap.physik.tu-darmstadt.de>
2562
2563         * pt.c (maybe_fold_nontype_arg): Add prototype.
2564
2565 Tue Dec 16 10:31:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
2566
2567         * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
2568         * error.c (dump_expr): Likewise.
2569
2570 Mon Dec 15 12:22:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
2571
2572         * typeck.c (build_function_call_real): Remove "inline called before
2573         definition" pedwarn.
2574
2575         * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
2576
2577 Sun Dec 14 22:34:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
2578
2579         * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
2580
2581         * pt.c (type_unification_real): Change __null to type void* with 
2582         a warning.
2583
2584 Sun Dec 14 20:38:35 1997  Mark Mitchell  <mmitchell@usa.net>
2585
2586         * call.c (implicit_conversion): Don't call
2587         build_user_type_conversion_1 with a NULL expr, since it will
2588         crash. 
2589
2590         * pt.c (unify): Don't try to unify array bounds if either array is
2591         unbounded.
2592
2593 Fri Dec 12 16:09:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
2594
2595         * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at): 
2596         Replace extern decls with casts.
2597
2598         * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
2599         Update last_parm_cleanup_insn.
2600         (store_after_parms): Remove.
2601         * cp-tree.h: Adjust.
2602
2603 Thu Dec 11 22:18:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
2604
2605         * decl2.c (comdat_linkage): Also set DECL_COMDAT.
2606         (finish_file): Check DECL_COMDAT instead of weak|one_only.
2607         (import_export_vtable): Use make_decl_one_only instead of
2608         comdat_linkage for win32 tweak.
2609         (import_export_decl): Likewise.
2610         * pt.c (mark_decl_instantiated): Likewise.
2611
2612         * decl2.c (finish_file): Lose handling of templates in pending_statics.
2613
2614 Thu Dec 11 21:12:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
2615
2616         * decl2.c (finish_file): Lose call to expand_builtin_throw.
2617         * except.c (expand_builtin_throw): Remove.
2618         * cp-tree.h: Remove ptr_ptr_type_node.
2619         * decl.c: Likewise.
2620
2621 Thu Dec 11 20:43:33 1997  Teemu Torma  <tot@trema.com>
2622         
2623         * decl.c (ptr_ptr_type_node): Define.
2624         (init_decl_processing): Initialize it.
2625         * cp-tree.h: Declare it.
2626         * exception.cc (__cp_exception_info): Use __get_eh_info.
2627         (__cp_push_exception): Ditto.
2628         (__cp_pop_exception): Ditto.
2629
2630         From Scott Snyder <snyder@d0sgif.fnal.gov>:
2631         * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
2632         saved_pc.
2633         (init_exception_processing): Removed saved_pc initialization.
2634
2635 Wed Dec 10 11:04:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
2636
2637         * pt.c (instantiate_decl): Defer all templates but inline functions.
2638
2639 Mon Dec  8 23:17:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
2640
2641         * init.c (expand_vec_init): Don't fold a list of parameters.
2642
2643         * decl.c (copy_args_p): Handle copy elision for types with virtual
2644         bases.
2645         * call.c (build_over_call): Likewise.
2646
2647 Sun Dec  7 22:38:12 1997  Mark Mitchell  <mmitchell@usa.net>
2648
2649         * pt.c (lookup_template_function): Copy the template arguments,
2650         not just the list containing them, to the permanent obstack.
2651
2652 Sun Dec  7 15:53:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
2653
2654         * except.c (expand_start_catch_block): suspend_momentary for the
2655         terminate handler.
2656
2657         * error.c (dump_decl): Handle LOOKUP_EXPR.
2658
2659 Sun Dec  7 15:45:07 1997  Mark Mitchell  <mmitchell@usa.net>
2660
2661         * rtti.c (build_dynamic_cast): Copy the cast-to type to the
2662         permanent obstack if we are processing a template decl.
2663         * typeck.c (build_static_cast): Likewise.
2664         (build_const_cast): Likewise.
2665         (build_reinterpret_cast): Likewise.
2666
2667         * pt.c (coerce_template_parms): Coerce some expressions, even
2668         when processing_template_decl.
2669
2670 Sun Dec  7 01:46:33 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
2671
2672         * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
2673         handling of pointer difference expressions.
2674
2675         * typeck.c (comp_target_types): Comparison of function/method types
2676         is independent of nptrs.
2677
2678 Sun Dec  7 01:40:27 1997  Mark Mitchell  <mmitchell@usa.net>
2679
2680         * pt.c (tsubst): Avoid creating pointer to reference and
2681         reference to reference types.
2682
2683 Sat Dec  6 01:29:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
2684
2685         * parse.y (do_id): New nonterminal.
2686         (template_id): Use it.
2687
2688 Fri Dec  5 01:17:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
2689
2690         * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
2691         * spew.c (yylex): Don't do_identifier here.
2692         * decl2.c (build_expr_from_tree): Revert last change.
2693
2694         * decl2.c (build_expr_from_tree): Expand the name for a method call.
2695         * parse.y (object_template_id): Don't try to take the DECL_NAME.
2696
2697 Wed Dec  3 20:02:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
2698
2699         * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
2700         alloc_expr.
2701         * call.c (build_op_delete_call): Adjust.
2702
2703         * except.c (expand_end_catch_block): Lose rethrow region.
2704         (expand_start_catch_block): Likewise.
2705         (expand_end_catch_block): Don't expand_leftover_cleanups.
2706
2707 Wed Dec  3 13:24:04 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2708
2709         * pt.c (tsubst): Remove tree_cons call (places redundant info into
2710         DECL_TEMPLATE_INSTANTIATION).   
2711
2712 Wed Dec  3 11:44:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
2713
2714         * tree.c (is_overloaded_fn): Handle getting a fn template.
2715         (really_overloaded_fn): Likewise.
2716         * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
2717         * pt.c (check_explicit_specialization): Tweak.
2718         (determine_explicit_specialization): Tweak.
2719
2720         * tree.c, cp-tree.h (get_target_expr): New fn.
2721
2722 Wed Dec  3 08:47:27 1997  Paul Eggert  <eggert@twinsun.com>
2723
2724         * pt.c (check_explicit_specialization): Fix misspelling in
2725         diagnostic: `preceeded'.
2726         * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
2727         `conversiona'.
2728
2729 1997-12-02  Mark Mitchell  <mmitchell@usa.net>
2730
2731         * pt.c (determine_explicit_specialization): Avoid an internal
2732         error for bad specializations.
2733
2734         * method.c (build_overload_value): Handle SCOPE_REF.
2735
2736 Tue Dec  2 19:18:50 1997  Mike Stump  <mrs@wrs.com>
2737
2738         * class.c (prepare_fresh_vtable): Enable even more complex MI
2739         vtable names.
2740
2741 Tue Dec  2 01:37:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
2742
2743         * exception.cc (__check_eh_spec): Optimize a bit.
2744
2745         * exception.cc (__cp_pop_exception): Lose handler arg.
2746         * except.c (do_pop_exception): Likewise.
2747         (push_eh_cleanup): Let the cleanup mechanism supply the handler.
2748         (expand_end_catch_block): Likewise.
2749
2750 Fri Nov 28 01:58:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
2751
2752         * pt.c (check_explicit_specialization): Complain about using a 
2753         template-id for a non-specialization.
2754
2755 Fri Nov 28 12:35:19 1997  Scott Christley  <scottc@net-community.com>
2756
2757         * repo.c: Prototype rindex only if needed.
2758         * xref.c: Likewise.
2759
2760 Fri Nov 28 01:56:35 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
2761
2762         * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
2763
2764 Thu Nov 27 00:59:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
2765
2766         * typeck.c (build_const_cast): Handle references here instead of
2767         handing off to convert_to_reference.
2768
2769         * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
2770         TerminateFunctionCall.
2771         (init_exception_processing): Likewise.  Terminate et al are now
2772         the fns, not ADDR_EXPRs.
2773         (various): Lose redundant assemble_external calls.
2774         (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
2775
2776         * cp-tree.h (struct lang_decl_flags): Add comdat.
2777         (DECL_COMDAT): New macro.
2778         * decl.c (duplicate_decls): Propagate it.
2779         (cp_finish_decl): Handle it.
2780         * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
2781
2782         * class.c: Remove static pending_hard_virtuals.
2783         (add_virtual_function): Take pointers to pending_virtuals
2784         and pending_hard_virtuals.
2785         (finish_struct_1): Pass them.  Declare pending_hard_virtuals.
2786
2787 Wed Nov 26 20:28:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
2788
2789         * decl2.c (import_export_vtable): If we support one_only but not
2790         weak symbols, mark instantiated template vtables one_only.
2791         (import_export_decl): Likewise for tinfo functions.
2792         (finish_vtable_vardecl): Also write out vtables from explicitly 
2793         instantiated template classes.
2794         * pt.c (mark_class_instantiated): Revert last change.
2795
2796         * except.c (expand_throw): Call mark_used on the destructor.
2797
2798 Wed Nov 26 15:13:48 1997  Jeffrey A Law  (law@cygnus.com)
2799
2800         * lex.c (lang_init): Enable flag_exceptions by default if no
2801         command line switch was specified.
2802
2803 1997-11-26  Mark Mitchell  <mmitchell@usa.net>
2804
2805         * pt.c (unify): Handle `void' template parameters in
2806         specializations.
2807
2808 Wed Nov 26 01:11:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
2809
2810         * rtti.c (build_dynamic_cast): Handle template case here.
2811         (build_dynamic_cast_1): Not here.
2812
2813         * typeck2.c (digest_init): Make copies where appropriate.
2814
2815         * decl2.c (delete_sanity): resolve_offset_ref.
2816
2817         * except.c: Call terminate without caching so many bits.
2818
2819         * except.c (expand_start_catch_block): Fix catching a reference
2820         to pointer.
2821
2822 Tue Nov 25 11:28:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
2823
2824         * init.c (build_new): Copy size to the saveable obstack.
2825
2826         * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
2827         TRY_CATCH_EXPR for now.
2828
2829 Mon Nov 24 12:15:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
2830
2831         * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
2832         has DECL_LANG_SPECIFIC.
2833
2834         * exception.cc (struct cp_eh_info): Add handlers field.
2835         (__cp_push_exception): Initialize it.
2836         (__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
2837         (__throw_bad_exception): Remove.
2838         * except.c (call_eh_info): Add handlers field.
2839         (get_eh_handlers): New fn.
2840         (push_eh_cleanup): Increment handlers.
2841
2842 Fri Nov 21 12:22:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
2843
2844         * except.c (expand_start_eh_spec): Use the try/catch code.
2845         (expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
2846         doing everything inline.
2847         (init_exception_processing): throw_type_match now takes
2848         const void pointers.
2849         * exception.cc (__check_eh_spec): New fn.
2850         * inc/exception: Neither terminate nor unexpected return.
2851         * decl.c: Make const_ptr_type_node public.
2852         * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
2853
2854         * except.c (expand_start_catch_block): We only need the rethrow
2855         region for non-sjlj exceptions.
2856         (expand_end_catch_block): Likewise.  Use outer_context_label_stack.
2857
2858 Thu Nov 20 14:40:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
2859
2860         * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
2861         (various.o): Likewise.
2862         * inc/new: Add placement deletes.  Add throw specs for default new.
2863         * new.cc (set_new_handler): Move here from libgcc2.
2864         * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
2865         (new): Move from libgcc2.  Throw bad_alloc.
2866         * new2.cc: Move the rest of the op news and op deletes from libgcc2.
2867         * decl.c (init_decl_processing): Update exception specs on new and
2868         delete.
2869
2870         * method.c (build_decl_overload_real): Don't mess with global 
2871         placement delete.
2872
2873         * init.c (build_new): Check for null throw spec, not nothrow_t.
2874
2875         * decl.c (duplicate_decls): Don't complain about different exceptions
2876         from an internal declaration.
2877
2878         * call.c (build_op_delete_call): Fix check for member fns again.
2879
2880         * decl2.c (import_export_decl): Interface hackery affects
2881         virtual synthesized methods.
2882
2883 Wed Nov 19 18:24:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
2884
2885         * decl.c (start_decl): Don't just complain about a mismatched 
2886         scope, fix it.
2887
2888         * decl.c (make_implicit_typename): Handle case where t is not
2889         actually from context.
2890         * tree.c (get_type_decl): Lose identifier case.
2891         * spew.c (yylex): Lose useless call to identifer_typedecl_value.
2892         * parse.y (nonnested_type): Just use lookup_name.
2893         (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
2894
2895 Wed Nov 19 11:45:07 1997  Michael Tiemann  <tiemann@axon.cygnus.com>
2896
2897         * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
2898         T was built in C language context (for example, by
2899         output_func_start_profiler).
2900
2901 Wed Nov 19 10:39:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
2902
2903         * decl.c (make_implicit_typename): New fn.
2904         (lookup_name_real): Use it.  Use current_class_type as the context.
2905
2906 Mon Nov 17 23:42:03 1997  Bruno Haible <haible@ilog.fr>
2907
2908         * pt.c (do_poplevel): Don't prohibit jumps into this contour.
2909
2910 Mon Nov 17 02:01:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
2911
2912         * friend.c (do_friend): Warn about non-template friends in templates.
2913
2914         * call.c (build_op_delete_call): Fix handling of inherited delete.
2915
2916         * search.c (dfs_record_inheritance): Ignore template type parms.
2917
2918 Sat Nov 15 00:30:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
2919
2920         * call.c (build_new_op): Fix copy error.
2921         (build_op_new_call): New fn.
2922         (build_op_delete_call): New fn.
2923         * cp-tree.h: Declare them.
2924         * init.c (build_new): Use them.  Support placement delete.
2925         (build_x_delete): Use build_op_delete_call.
2926         (build_delete): Likewise.
2927         * decl2.c (delete_sanity): Likewise.
2928         (coerce_delete_type): Don't complain about placement delete.
2929
2930 Thu Nov 13 01:52:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
2931
2932         * call.c (build_new_function_call): Remove unused 'obj' parm.
2933         * cp-tree.h, typeck.c: Adjust.
2934
2935         * init.c (build_new): Make the cleanup last longer.
2936         (expand_vec_init): Call do_pending_stack_adjust.
2937
2938 Wed Nov 12 11:04:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
2939
2940         * pt.c (do_type_instantiation): Fix typo.
2941         (mark_class_instantiated): If we support one_only but not weak 
2942         symbols, don't mark this as known.
2943
2944         * init.c (build_new): Handle vec delete in EH cleanup.
2945
2946 Wed Nov 12 08:11:55 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2947
2948         * call.c (build_method_call): Call complete_type before checking
2949         for destructor.
2950
2951 Sun Nov  9 01:29:55 1997  Jim Wilson  (wilson@cygnus.com)
2952
2953         * decl.c (add_block_current_level): Delete.
2954         * init.c (build_vec_delete_1): Delete build_block and
2955         add_block_current_level calls.
2956
2957 Wed Nov 12 00:48:16 1997  Jason Merrill  <jason@yorick.cygnus.com>
2958
2959         * init.c (build_new): Handle freeing allocated memory when the
2960         constructor throws.
2961
2962         * call.c (build_new_method_call): Fix flags arg.
2963
2964         * pt.c (do_type_instantiation): Don't try to instantiate
2965         member templates.
2966         (mark_decl_instantiated): If we support one_only but not
2967         weak symbols, mark this one_only.
2968         * decl2.c (import_export_vtable): Don't defer handling of vtables
2969         if MULTIPLE_SYMBOL_SPACES.
2970
2971 Tue Nov 11 12:02:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
2972
2973         * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
2974
2975 Tue Nov 11 02:53:44 1997  Jason Merrill  <jason@lasher.cygnus.com>
2976
2977         * except.c (do_pop_exception): Return a value.
2978
2979 Mon Nov 10 20:25:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
2980
2981         * call.c (build_new_method_call): Handle getting a
2982         TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
2983         if we got template parms.
2984         * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
2985         not just the args.
2986         * decl2.c (build_expr_from_tree): Tweak last change.
2987         * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
2988         (maybe_fold_nontype_arg): Split out from tsubst_copy.
2989         * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
2990
2991 Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
2992
2993         * pt.c (tsubst_copy): Handle explicit template arguments in 
2994         function calls.
2995         * typeck.c (build_x_function_call): Likewise.
2996         * decl2.c (build_expr_from_tree): Lookup function name if it 
2997         hasn't been done.
2998
2999         * pt.c (tsubst): Instantiate template functions properly when 
3000         template parameter does not appear in function arguments and return 
3001         type.
3002         (comp_template_args): Handle member templates required by tsubst.
3003
3004 Mon Nov 10 20:08:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
3005
3006         * decl.c (grokdeclarator): Tweak conditions for pedwarn in
3007         previous change.
3008
3009 Mon Nov 10 20:08:29 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
3010
3011         * pt.c (coerce_template_parms): Tweak error message.
3012
3013         * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
3014         return type defaults to `int', even if there are storage-class
3015         specifiers.
3016
3017 Mon Nov 10 03:04:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
3018
3019         Complete nested exception support.
3020         * except.c (do_pop_exception): Split out...
3021         (push_eh_cleanup): From here.  Handle the EH region by hand.
3022         (expand_start_catch_block): Add a new level for the catch parm.
3023         Move the rethrow region outside the two cleanup regions.
3024         Protect the initializer for the catch parm with terminate.
3025         (expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
3026         * exception.cc (__cp_pop_exception): Now takes two parms.  Handle
3027         popping off the middle of the stack.
3028         * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR, 
3029         WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
3030         (build_cplus_new): Only wrap CALL_EXPRs.
3031         * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around 
3032         the constructor call.
3033
3034 Sun Nov  9 18:00:26 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3035
3036         * Make-lang.in (c++.distdir): Make inc subdirectory.
3037
3038 Fri Nov  7 11:57:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
3039
3040         * decl2.c (finish_file): Put back some code.
3041
3042 Thu Nov  6 11:28:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
3043
3044         * decl2.c (finish_file): Remove redundant code.
3045         * method.c (emit_thunk): Don't let the backend defer generic thunks.
3046
3047 Wed Nov  5 23:52:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
3048
3049         * except.c (call_eh_info): Split out...
3050         (push_eh_info): From here.
3051         (expand_builtin_throw): Use it.
3052         (expand_start_catch_block): Move region start back.
3053
3054 Tue Nov  4 13:45:10 1997  Doug Evans  <devans@canuck.cygnus.com>
3055
3056         * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
3057         (real_yylex): Record wide strings using target endianness, not host.
3058
3059 1997-11-03  Brendan Kehoe  <brendan@lisa.cygnus.com>
3060
3061         * repo.c (rindex): Add decl unconditionally.
3062         (get_base_filename, open_repo_file): Don't cast rindex.
3063         * xref.c (rindex): Add decl unconditionally.
3064         (index): Remove unused decl.
3065         (open_xref_file): Don't cast rindex.
3066
3067 Sun Nov  2 15:04:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
3068
3069         * class.c (build_vbase_path): Propagate the result type properly.
3070
3071 1997-11-01  Brendan Kehoe  <brendan@lisa.cygnus.com>
3072
3073         * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
3074         remaining use of saved_throw_type with a call to get_eh_type.
3075
3076 1997-10-31  Brendan Kehoe  <brendan@lisa.cygnus.com>
3077
3078         * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
3079         (file_name_nondirectory): New function, doing the same as the macro.
3080         (set_typedecl_interface_info): Use it instead of the macro.
3081         (check_newline): Likewise.
3082         (handle_cp_pragma): Likewise.
3083
3084         * repo.c (get_base_filename): Cast result of rindex to char*.
3085         (open_repo_file): Likewise.
3086         * xref.c (open_xref_file): Likewise.
3087         * error.c (dump_char): Make its arg int, not char.
3088
3089         * except.c (push_eh_info): Pass the number of fields - 1 down, not
3090         the exact number of fields.
3091
3092 Fri Oct 31 01:47:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
3093
3094         Support for nested exceptions.
3095         * tinfo2.cc (__is_pointer): New fn.
3096         * exception.cc (struct cp_eh_info): Define.
3097         (__cp_exception_info, __uncatch_exception): New fns.
3098         (__cp_push_exception, __cp_pop_exception): New fns.
3099         * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
3100         Lose empty_fndecl.
3101         (init_exception_processing): Likewise.  __eh_pc is now external.
3102         (push_eh_info): New fn.
3103         (get_eh_{info,value,type,caught}): New fns.
3104         (push_eh_cleanup): Just call __cp_pop_exception.
3105         (expand_start_catch_block): Use push_eh_info.  Start the eh region
3106         sooner.
3107         (expand_end_eh_spec): Use push_eh_info.
3108         (expand_throw): Call __cp_push_exception to set up the exception info.
3109         Just pass the destructor or 0 as the cleanup.  Call __uncatch_exception
3110         when we rethrow.
3111         (expand_builtin_throw): Don't refer to empty_fndecl.
3112
3113 Thu Oct 23 02:01:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
3114
3115         * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
3116
3117 1997-10-22  Brendan Kehoe  <brendan@cygnus.com>
3118
3119         * method.c (build_template_parm_names, build_decl_overload_real):
3120         Add static to definitions.
3121         * pt.c (add_to_template_args, note_template_header,
3122         processing_explicit_specialization, type_unification_real): Likewise.
3123         ({determine,check}_explicit_specialization): Use a single string for
3124         error messages.
3125
3126 Mon Oct 20 12:06:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
3127
3128         * except.c (expand_exception_blocks): Call do_pending_stack_adust.
3129         (expand_end_catch_block): Likewise.
3130         (expand_end_eh_spec): Likewise.
3131
3132 Mon Oct 20 11:44:20 1997  Mark Mitchell  <mmitchell@usa.net>
3133
3134         * decl.c (duplicate_decls): Handle template specializations
3135         correctly. 
3136         * error.c (dump_function_name): Fix printing of specializations of
3137         member functions that are not member templates.
3138         * cp-tree.h (processing_specialization): Make global.
3139         * pt.c (processing_specialization): Likewise.
3140         * lex.c (cons_up_default_function): Save and restore
3141         processing_specialization to avoid confusion.
3142         
3143 Mon Oct 20 10:52:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
3144
3145         * decl.c (init_decl_processing): Give null_node unknown* type.
3146         * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
3147         (common_type): Likewise.
3148         * error.c (args_as_string): Recognize null_node.
3149
3150 Sun Oct 19 09:13:01 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3151
3152         * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
3153         (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
3154
3155         * decl.c (init_decl_processing): Call using_eh_for_cleanups.
3156
3157         * Make-lang.in (g++): Include prefix.o.
3158
3159 Thu Oct 16 15:31:09 1997  Judy Goldberg <judygold@sanwafp.com>
3160
3161         * pt.c (determine_explicit_specialization): Initialize "dummy"
3162         to keep Purify quiet.
3163
3164 Thu Oct 16 00:14:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
3165
3166         * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
3167         (build_overload_int): Not here.
3168
3169 Wed Oct 15 00:35:28 1997  Mike Stump  <mrs@wrs.com>
3170
3171         * class.c (build_type_pathname): Remove.
3172         (prepare_fresh_vtable): Fix problem with complex MI vtable names.
3173
3174 1997-10-14  Brendan Kehoe  <brendan@lisa.cygnus.com>
3175
3176         * parse.y (unary_expr): Give a pedwarn if someone tries to use the
3177         &&label GNU extension.
3178
3179 Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>
3180
3181         * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
3182         so as to avoid incorrect manglings.
3183         * method.c (build_decl_overload_real): Don't mangle return types
3184         for constructors.
3185         
3186 Tue Oct 14 11:46:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
3187
3188         * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
3189         scratch_tree_cons): Define as macros for now.
3190         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c, 
3191         lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
3192         typeck2.c: Use them and the expression_obstack variants.
3193
3194 Mon Oct 13 17:41:26 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3195
3196         * decl.c (store_return_init): Allow classes with explicit ctors to
3197         be used with the named return values extension.
3198
3199 Fri Oct 10 12:21:11 1997  Jason Merrill  <jason@yorick.cygnus.com>
3200
3201         * pt.c (instantiate_decl): Fix previous change.
3202
3203 Thu Oct  9 12:08:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
3204
3205         * pt.c (tsubst): Fix thinko.
3206         (instantiate_decl): Really use the original template.
3207
3208         * call.c (build_new_method_call): Use simple constructor_name for
3209         error messages.
3210
3211 Wed Oct  8 22:44:42 1997  Jeffrey A Law  (law@cygnus.com)
3212
3213         * method.c (build_underscore_int): Don't use ANSI specific
3214         features.
3215
3216 Wed Oct  8 00:18:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
3217
3218         * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
3219         for our key method; it might have been inlined by -O3.
3220
3221 Tue Oct  7 23:00:12 1997  Mark Mitchell  <mmitchell@usa.net>
3222
3223         * decl.c (make_typename_type): Do not try to call lookup_field for
3224         non-aggregate types.
3225
3226 Tue Oct  7 22:52:10 1997  Jason Merrill  <jason@yorick.cygnus.com>
3227
3228         * typeck.c (build_reinterpret_cast): Tweak.
3229
3230 Tue Oct  7 22:45:31 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
3231
3232         * typeck.c (build_reinterpret_cast): converting a void pointer
3233         to function pointer with a reinterpret_cast produces a warning
3234         if -pedantic is issued
3235
3236 Tue Oct  7 22:43:43 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
3237
3238         * typeck.c (c_expand_return): Don't warn about returning a
3239         reference-type variable as a reference.
3240
3241 Tue Oct  7 21:11:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
3242
3243         * method.c (build_static_name): Fix typo.
3244
3245 1997-10-07  Brendan Kehoe  <brendan@lisa.cygnus.com>
3246
3247         * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
3248         OLDDECL before we try to do DECL_USE_TEMPLATE.
3249
3250 Tue Oct  7 00:48:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
3251
3252         * decl.c (duplicate_decls): Don't warn about template instances.
3253
3254         * typeck.c (mark_addressable): Lose ancient code that unsets
3255         DECL_EXTERNAL.
3256
3257         * pt.c (do_decl_instantiation): Lose support for instantiating
3258         non-templates.
3259
3260         * call.c (build_new_function_call): Fix handling of null explicit
3261         template args.
3262         (build_new_method_call): Likewise.
3263
3264 Mon Oct  6 23:44:34 1997  Mark Mitchell  <mmitchell@usa.net>
3265
3266         * method.c (build_underscore_int): Fix typo.
3267
3268 1997-10-06  Brendan Kehoe  <brendan@lisa.cygnus.com>
3269
3270         * tree.c (print_lang_statistics): #if 0 call to
3271         print_inline_obstack_statistics until its definition is checked in.
3272
3273 Mon Oct  6 09:27:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
3274
3275         * decl2.c (finish_file): Move dump_tree_statistics to end.
3276
3277         * pt.c (instantiate_decl): Look for the original template.
3278         (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
3279         of member templates.
3280
3281 Wed Oct  1 08:41:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
3282
3283         * Makefile.in (g++FAQ.*): New rules.
3284         (CONFLICTS): Update.
3285         * g++FAQ.texi: Moved from libg++.
3286
3287         * parse.y (PFUNCNAME): Only specify the type once.
3288
3289 1997-10-01  Brendan Kehoe  <brendan@lasher.cygnus.com>
3290
3291         * lex.c (real_yylex): Clean up the code to fully behave the way
3292         the c-lex.c parser does for complex and real numbers.
3293
3294 Tue Sep 30 08:51:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
3295
3296         * method.c (build_decl_overload_real): Reformat.
3297
3298 Tue Sep 30 00:18:26 1997  Jason Merrill  <jason@yorick.cygnus.com>
3299
3300         * method.c (synthesize_method): If at_eof, determine our linkage.
3301
3302 1997-09-29  Paul Eggert  <eggert@twinsun.com>
3303
3304         * lex.c (real_yylex): Treat `$' just like `_', except issue a
3305         diagnostic if !dollars_in_ident or if pedantic.
3306
3307         * lang-specs.h (@c++): -ansi no longer implies -$.
3308
3309         * decl2.c (lang_decode_option):
3310         -traditional and -ansi now do not mess with
3311         dollars_in_ident.
3312
3313 Mon Sep 29 19:57:51 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
3314
3315         * Makefile.in (parse.o, decl.o): Also depend on
3316         $(srcdir)/../except.h $(srcdir)/../output.h.
3317         (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
3318         $(srcdir)/../except.h $(srcdir)/../output.h.
3319         (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
3320         ../insn-codes.h.
3321
3322         * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
3323
3324         * expr.c (cplus_expand_expr): Make it static. 
3325
3326         * decl2.c, init.c, typeck.c: Include "expr.h".
3327         (expand_expr): Use proper values when calling the function.
3328
3329 Mon Sep 29 11:05:54 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
3330
3331         * lang-options.h: new -Wold-style-cast flag.
3332         * cp-tree.h (warn_old_style_cast): new variable.
3333         * decl2.c (warn_old_style_cast): ditto.
3334         (lang_decode_option): support -Wold-style-cast.
3335         (reparse_absdcl_as_casts): produce old-style-cast warning.
3336
3337 Mon Sep 29 09:20:53 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3338
3339         * decl.c (cp_finish_decl): Allow expand_aggr_init to set
3340         TREE_USED, reset value based on already_used.
3341
3342         * init.c (expand_member_init): Revert change.
3343         
3344 Mon Sep 29 08:57:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
3345
3346         * cp-tree.h, decl.c, decl2.c, pt.c:
3347         Lose DECL_C_STATIC and DECL_PUBLIC.  Don't pretend statics are public.
3348
3349         * decl2.c (lang_decode_option): Add missing ;.
3350
3351 Sat Sep 27 16:22:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
3352
3353         * friend.c (do_friend): Disable injection for all template-derived
3354         decls.
3355         * decl2.c (lang_decode_option): Handle -fguiding-decls.
3356         * parse.y (notype_template_declarator): New nonterminal.
3357         (direct_notype_declarator): Use it.
3358         (complex_direct_notype_declarator): Likewise.
3359         (object_template_id): Accept any kind of identifier after TEMPLATE.
3360         (notype_qualified_id): Don't add template declarators here.
3361
3362 Sat Sep 27 16:21:58 1997  Mark Mitchell  <mmitchell@usa.net>
3363
3364         * call.c (add_template_candidate): Add explicit_targs parameter.
3365         (build_scoped_method_call): Use it.
3366         (build_overload_call_real): Likewise.
3367         (build_user_type_conversion_1): Likewise.
3368         (build_new_function_call): Likewise.
3369         (build_object_call): Likewise.
3370         (build_new_op): Likewise.
3371         (build_new_method_call): Likewise.
3372         (build_new_function_call): Handle TEMPLATE_ID_EXPR.
3373         (build_new_method_call): Likewise.
3374
3375         * class.c (finish_struct_methods): Add specialization pass to
3376         determine which methods were specializing which other methods.
3377         (instantiate_type): Handle TEMPLATE_ID_EXPR.
3378
3379         * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
3380
3381         * cp-tree.h (name_mangling_version): New variable.
3382         (flag_guiding_decls): Likewise.
3383         (build_template_decl_overload): New function.
3384         (begin_specialization): Likewise.
3385         (reset_specialization): Likewise.
3386         (end_specialization): Likewise.
3387         (determine_explicit_specialization): Likewise.
3388         (check_explicit_specialization): Likewise.
3389         (lookup_template_function): Likewise.
3390         (fn_type_unification): Add explicit_targs parameter.
3391         (type_unification): Likewise.
3392
3393         * decl.c (duplicate_decls): Add smarts for explicit
3394         specializations.
3395         (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
3396         specializations.
3397         (grokfndecl): Call check_explicit_specialization.
3398
3399         * decl2.c (lang_decode_option): Handle -fname-mangling-version.
3400         (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
3401         (check_classfn): Handle specializations.
3402
3403         * error.c (dump_function_name): Print specialization arguments.
3404
3405         * friend.c (do_friend): Don't call pushdecl for template 
3406         instantiations. 
3407
3408         * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
3409
3410         * lang-options.h: Add -fname-mangling-version, -fguiding-decls, 
3411         and -fno-guiding-decls.
3412
3413         * lex.c (identifier_type): Return PFUNCNAME for template function
3414         names.
3415
3416         * method.c (build_decl_overload_real): New function.
3417         (build_template_parm_names): New function.
3418         (build_overload_identifier): Use it.
3419         (build_underscore_int): New function.
3420         (build_overload_int): Use it.  Add levels for template
3421         parameters.
3422         (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
3423         (build_overload_nested_names): Handle template type parameters.
3424         (build_template_decl_overload): New function.
3425
3426         * parse.y (YYSTYPE): New ntype member.
3427         (nested_name_specifier): Use it.
3428         (nested_name_specifier_1): Likewise.
3429         (PFUNCNAME): New token.
3430         (template_id, object_template_id): New non-terminals.
3431         (template_parm_list): Note specializations.
3432         (template_def): Likewise.
3433         (structsp): Likewise.
3434         (fn.def2): Handle member template specializations.
3435         (component_decl_1): Likewise.
3436         (direct_notype_declarator): Handle template-ids.
3437         (component_decl_1): Likewise.
3438         (direct_notype_declarator): Handle template-ids.
3439         (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
3440
3441         * pt.c (processing_specializations): New variable.
3442         (template_header_count): Likewise.
3443         (type_unification_real): New function.
3444         (processing_explicit_specialization): Likewise.
3445         (note_template_header): Likewise.
3446         (is_member_template): Handle specializations.
3447         (end_template_decl): Call reset_specialization.
3448         (push_template_decl): Handle member template specializations.
3449         (tsubst): Likewise.
3450         (tsubst_copy): Handle TEMPLATE_ID_EXPR.
3451         (instantiate_template): Handle specializations.
3452         (instantiate_decl): Likewise.
3453         (fn_type_unification): Handle explicit_targs.
3454         (type_unification): Likewise.  Allow incomplete unification
3455         without an error message, if allow_incomplete.
3456         (get_bindings): Use new calling sequence for fn_type_unification.
3457
3458         * spew.c (yylex): Handle PFUNCNAME.
3459
3460         * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
3461         (really_overloaded_fn): Likewise.
3462         (get_first_fn): Handle function templates.
3463
3464         * typeck.c (build_x_function_call): Use really_overloaded_fn.
3465         Handle TEMPLATE_ID_EXPR.
3466         (build_x_unary_op): Likewise.
3467         (build_unary_op): Likewise.
3468         (mark_addressable): Templates whose address is taken are marked  
3469         as used. 
3470
3471 1997-09-25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
3472
3473         * decl.c (init_decl_processing): Declare __builtin_constant_p as
3474         accepting any kind of type, not only int.
3475
3476 Fri Sep 26 00:22:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
3477
3478         * search.c (get_matching_virtual): Notice virtual bases when sorrying
3479         about covariant returns.
3480
3481         * parse.y (member_init): Also imply typename here.  Remove ancient
3482         extension for initializing base members.
3483
3484 Thu Sep 25 11:11:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
3485
3486         Handle multi-level typenames and implicit typename in base list.
3487         * parse.y (typename_sub{,[0-2]}): New rules.
3488         (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
3489         (nonnested_type): New rule.
3490         (complete_type_name): Use it.
3491         (base_class.1): Use typename_sub and nonnested_type.
3492         (nested_name_specifier): Don't elide std:: here.
3493         * decl.c (make_typename_type): Handle getting a type for NAME.
3494         (lookup_name_real): Turn std:: into :: here.
3495
3496         Rvalue conversions were removed in London.
3497         * call.c (is_subseq): Don't consider lvalue transformations.
3498         (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
3499         (joust): Reenable ?: kludge.
3500
3501 1997-09-22  Brendan Kehoe  <brendan@lisa.cygnus.com>
3502
3503         * decl.c (start_function): Up warning of no return type to be a
3504         pedwarn.
3505
3506 Mon Sep 22 14:15:34 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3507
3508         * init.c (expand_member_init): Don't set TREE_USED.
3509         * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
3510         set,don't clear TREE_USED wholesale.
3511
3512 Sat Sep 20 15:31:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
3513
3514         * call.c (build_over_call): Do require_complete_type before
3515         build_cplus_new.
3516
3517 Thu Sep 18 16:47:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
3518
3519         * search.c (lookup_field): Call complete_type in all cases.
3520
3521         * decl.c (finish_function): Just warn about flowing off the end.
3522
3523 Wed Sep 17 10:31:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
3524
3525         * decl.c (grokparms): Don't bash a permanent list node if we're
3526         in a function.
3527
3528 1997-09-17  Brendan Kehoe  <brendan@lisa.cygnus.com>
3529
3530         * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
3531
3532 Tue Sep 16 14:06:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
3533
3534         * call.c (build_new_op): Give better error for syntactically
3535         correct, but semantically invalid, use of undeclared template.
3536
3537         * call.c (compare_qual): Handle pmfs.
3538
3539         * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
3540         after the exception spec.
3541
3542 Mon Sep 15 11:52:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
3543
3544         * call.c (null_ptr_cst_p): Integer type, not integral type.
3545
3546         * call.c (joust): Disable warnings until they can be moved to the
3547         right place.
3548
3549 Fri Sep 12 16:11:13 1997  Per Bothner  <bothner@cygnus.com>
3550
3551         * Makefile.in, config-lang.in:  Convert to autoconf.
3552
3553 Thu Sep 11 17:14:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
3554
3555         * decl.c (lookup_name_real): Add implicit 'typename' to types from
3556         base classes.
3557
3558         * pt.c (most_specialized_class): Fix typo.
3559         (tsubst): Move constant folding to TREE_VEC case.
3560
3561 Thu Sep 11 10:08:45 1997  Mark Mitchell  <mmitchell@usa.net>
3562
3563         * pt.c (do_poplevel): Don't warn about unused local variables
3564         while processing_template_decl since we don't always know whether
3565         or not they will need constructing/destructing.
3566
3567         * pt.c (uses_template_parms): Check the values of an enumeration
3568         type to make sure they don't depend on template parms.
3569
3570         * decl.c (make_typename_type): Don't lookup the field if the
3571         context uses template parms, even if we're not
3572         processing_template_decl at the moment.
3573
3574         * pt.c (coerce_template_parms): Avoid looking at the
3575         TYPE_LANG_DECL portion of a typename type, since there won't be
3576         one. 
3577         (tsubst): Do constant folding as necessary to make sure that
3578         arguments passed to lookup_template_class really are constants. 
3579
3580 Wed Sep 10 11:21:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
3581
3582         * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
3583         * decl2.c (finish_file): Only register exception tables if we
3584         need to.
3585
3586         * decl.c (init_decl_processing): Add __builtin_[fs]p.
3587
3588 Tue Sep  9 19:49:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
3589
3590         * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
3591
3592 Tue Sep  9 17:57:25 1997  Mark Mitchell  <mmitchell@usa.net>
3593
3594         * error.c (dump_decl): Avoid crashing when presented with a
3595         uninitialized constant, as can occur with a template parameter.
3596         (dump_expr): Make sure that there are enough levels of
3597         current_template_parms before we start diving through them.
3598
3599 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
3600
3601         * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
3602         c-typeck.c.
3603
3604 Tue Sep  9 09:36:39 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3605
3606         * except.c (expand_throw): Call build_delete for all 
3607         exception types, not just objects with destructors.
3608
3609 Mon Sep  8 02:33:20 1997  Jody Goldberg  <jodyg@idt.net>
3610
3611         * decl.c (current_local_enum): Remove static.
3612         * pt.c (tsubst_enum): Save and restore value of current_local_enum
3613         in case template is expanded in enum decl.
3614         (instantiate_class_template) : Use new tsubst_enum signature.
3615         (tsubst_expr): Likewise.
3616
3617 Mon Sep  8 01:21:43 1997  Mark Mitchell  <mmitchell@usa.net>
3618
3619         * pt.c (begin_member_template_processing): Take a function as
3620         argument, not a set of template arguments.  Use the template
3621         parameters, rather than the arguments.  Handle non-type parameters
3622         correctly.  Push a binding level for the parameters so that multiple
3623         member templates using the same parameter names can be declared.
3624         (end_member_template_processing): Pop the binding level.
3625         (push_template_decl): Mark member templates as static when
3626         appropriate. 
3627
3628         * lex.c (do_pending_inlines): Pass the function, not its template
3629         arguments, to begin_member_template_processing.
3630         (process_next_inline): Likewise.
3631         (do_pending_defargs): Likewise.
3632
3633         * error.c (dump_expr): Obtain the correct declaration for a
3634         TEMPLATE_CONST_PARM. 
3635
3636         * call.c (add_template_conv_candidate): New function.
3637         (build_object_call): Handle member templates, as done in the other
3638         build_ functions.
3639         
3640 Sat Sep  6 10:20:27 1997  Mark Mitchell  <mmitchell@usa.net>
3641
3642         * decl.c (replace_defag): Undo previous change.
3643         * lex.c (do_pending_defargs): Deal with member templates.
3644         
3645         * pt.c (is_member_template): Avoid crashing when passed a
3646         non-function argument.
3647
3648 Fri Sep  5 17:27:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
3649
3650         * class.c (grow_method): Remove check for redeclaration.
3651
3652 Fri Sep  5 01:37:17 1997  Mark Mitchell  <mmitchell@usa.net>
3653
3654         * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
3655         (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
3656         (PRIMARY_TEMPLATE_P): Use it.
3657         * call.c (build_overload_call_real): Use it.
3658         * class.c (instantiate_type): Likewise.
3659         * decl.c (decls_match): Likewise.
3660         * method.c (build_overload_identifier): Likewise.
3661         * pt.c (push_template_decl): Likewise.
3662         (classtype_mangled_name): Likewise.
3663         (lookup_template_class): Likewise.
3664         
3665         * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
3666         DECL_NTPARMS to conform to usage elsewhere.
3667         * call.c (add_template_candidate): Likewise.
3668         * class.c (instantiate_type): Likewise.
3669         * pt.c (instantiate_template): Likewise.
3670         (get_bindings): Likewise.
3671         
3672         * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
3673         is_member_template.
3674
3675         * pt.c (unify): Undo changes to allow multiple levels of template
3676         parameters. 
3677         (type_unification): Likewise.
3678         (fn_type_unification): Likewise.
3679         (get_class_bindings): Likewise.
3680         * cp-tree.h (Likewise).
3681         
3682         * decl.c (replace_defarg): Check that the type of the default
3683         parameter does not invlove a template type before complaining
3684         about the initialization.
3685
3686         * error.c (dump_expr): Deal with template constant parameters in
3687         member templates correctly.
3688
3689         * pt.c (is_member_template): Deal with class specializations
3690         correctly. 
3691         (tsubst): Handle "partial instantiation" of member templates
3692         correctly. 
3693
3694 Wed Sep  3 12:30:24 1997  Mark Mitchell  <mmitchell@usa.net>
3695
3696         * pt.c (type_unification): Change calling squence to allow for
3697         multiple levels of template parameters.
3698         (tsubst_expr): Likewise.
3699         (tsubst): Likewise.
3700         (tsubst_copy): Likewise.
3701         (instantiate_template): Likewise.
3702         (unify): Likewise.
3703         * call.c (build_overload_call_real): Use it.
3704         (add_builtin_candidate): Use it.
3705         (build_new_method_call): Use it.
3706         * class.c (instantiate_type): Use it.
3707         * decl.c (grokdeclarator): Use it.
3708         * decl2.c (finish_file): Use it.
3709         * method.c (build_overload_identifier): Use it.
3710         
3711         * call.c (add_template_candidate):  Add additional parameter for
3712         the function return type.  Call fn_type_unification istead of
3713         type_unification.
3714         (build_user_type_conversion_1): Handle member templates.
3715         (build_new_function_call): Likewise.
3716         (build_new_op): Likewise.
3717         (build_new_method_call): Likewise.
3718         
3719         * class.c (grow_method): Don't give an error message indicating
3720         that two member templates with the same name are ambiguous.
3721         (finish_struct): Treat member template functions just like member
3722         functions.
3723         
3724         * cp-tree.h (check_member_template): Add declaration.
3725         (begin_member_template_processing): Likewise.
3726         (end_member_template_processing): Likewise.
3727         (fn_type_unification): Likewise.
3728         (is_member_template): Likewise.
3729         (tsubst): Change prototype.
3730         (tsubst_expr): Likewise.
3731         (tsubst_copy): Likewise.
3732         (instantiate_template): Likewise.
3733         (get_bindings): Likewise.
3734
3735         * decl.c (decls_match): Handle multiple levels of template
3736         parameters. 
3737         (pushdecl): Handle template type params just like other type
3738         declarations. 
3739         (push_class_level_binding): Return immediately if the
3740         class_binding_level is NULL.
3741         (grokfndecl): If check_classfn() returns a member_template, use
3742         the result of the template, not the template itself.
3743         
3744         * decl2.c (check_member_template): New function.  Check to see
3745         that the entity declared to be a member template can be one.
3746         (check_classfn): Allow redeclaration of member template functions
3747         with different types; the new functions can be specializations or
3748         explicit instantiations.
3749         
3750         * error.c (dump_decl): Handle multiple levels of template
3751         parameters. 
3752         (dump_function_decl): Update to handle function templates.
3753
3754         * lex.c (do_pending_inlines): Set up template parameter context
3755         for member templates.
3756         (process_next_inline): Likewise.
3757
3758         * method. (build_overload_identifier): Adjust for multiple levels
3759         of template parameters.
3760         
3761         * parse.y (fn.def2): Add member templates.
3762         (component_decl_1): Likewise.
3763
3764         * pt.c (begin_member_template_processing): New function.
3765         (end_member_template_processing): Likewise.
3766         (is_member_template): Likewise.
3767         (fn_type_unification): Likewise.
3768         (current_template_parms): Return a vector of all the template
3769         parms, not just the innermost level of parms.
3770         (push_template_decl): Deal with the possibility of member
3771         templates. 
3772         (lookup_template_class): Likewise.
3773         (uses_template_parms): Likewise.
3774         (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
3775         TEMPLATE_CONST_PARM to deal with multiple levels of template
3776         arguments.   Add processing of TEMPLATE_DECL to produce new
3777         TEMPLATE_DECLs from old ones.
3778         (do_decl_instantiation): Handle member templates.
3779
3780         * search.c (lookup_fnfields_1): Handle member template conversion
3781         operators. 
3782
3783         * tree.c (cp_tree_equal): Check the levels, as well as the
3784         indices, of TEMPLATE_CONST_PARMs.
3785
3786         * typeck.c (comptypes): Check the levels, as well as the indices,
3787         fo TEMPLATE_TYPE_PARMs.
3788         (build_x_function_call): Treat member templates like member
3789         functions. 
3790         
3791 Wed Sep  3 11:09:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
3792
3793         * typeck.c (c_expand_return): Always convert_for_initialization
3794         before checking for returning a pointer to local.
3795
3796         * pt.c (type_unification): If strict and the function parm doesn't
3797         use template parms, just compare types.
3798
3799 Wed Sep  3 10:35:49 1997  Klaus Espenlaub  <kespenla@student.informatik.uni-ulm.de>
3800
3801         * method.c (build_overloaded_value): Replace direct call
3802         to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
3803
3804 Wed Sep  3 00:02:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
3805
3806         * typeck.c (convert_arguments): Don't arbitrarily choose the first
3807         of a set of overloaded functions.
3808
3809 Tue Sep  2 12:09:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
3810
3811         * lex.c (real_yylex): Don't elide __FUNCTION__.
3812
3813         * method.c (build_overload_value): Add in_template parm.
3814         (build_overload_int): Likewise.
3815         (build_overload_identifier): Pass it.
3816
3817         * decl.c (duplicate_decls): Don't bash a previous template
3818         definition with a redeclaration.
3819
3820         * pt.c (unify): float doesn't match double.
3821
3822         * pt.c (do_type_instantiation): Handle getting a _TYPE or a
3823         TYPE_DECL.  Handle getting non-template types.
3824         * parse.y (explicit_instantiation): Use typespec instead of
3825         aggr template_type.
3826
3827 Tue Sep  2 10:27:08 1997  Richard Henderson  <rth@cygnus.com>
3828
3829         * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
3830
3831 Mon Sep  1 13:19:04 1997  Eugene Mamchits <eugin@ips.ras.ru>
3832
3833         * call.c (add_builtin_candidate): Add missing TREE_TYPE.
3834         (compare_ics): Likewise.
3835
3836 Mon Sep  1 13:19:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
3837
3838         * call.c (joust): Warn about choosing one conversion op over
3839         another because of 'this' argument when the other return type is
3840         better.
3841         (source_type): New fn.
3842
3843         * call.c (build_new_op): Strip leading REF_BIND from first operand
3844         to builtin operator.
3845
3846         * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
3847         use its RTL.
3848
3849 Thu Aug 28 09:45:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
3850
3851         * call.c (null_ptr_cst_p): Remove support for (void*)0.
3852
3853 Wed Aug 27 02:03:34 1997  Jeffrey A Law  (law@cygnus.com)
3854
3855         * typeck.c (expand_target_expr): Make definition match declaration.
3856
3857         * class.c (get_basefndecls): Make definition match declaration.
3858
3859 Mon Aug 25 14:30:02 1997  Jason Merrill  <jason@yorick.cygnus.com>
3860
3861         * input.c (sub_getch): Eventually give up and release the input file.
3862
3863         * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
3864         right place.
3865
3866         * call.c (joust): Tweak message.
3867
3868 Sat Aug 23 18:02:59 1997  Mark Mitchell  <mmitchell@usa.net>
3869
3870         * error.c (type_as_string): Put const/volatile on template type
3871         parameters where appropriate.
3872
3873 Sat Aug 23 17:47:22 1997  Jeffrey A Law  (law@cygnus.com)
3874
3875         * call.c (strictly_better): Make arguments unsigned ints.
3876
3877 Thu Aug 21 18:48:44 1997  Jason Merrill  <jason@yorick.cygnus.com>
3878
3879         * lex.c (real_yylex): Refer to __complex instead of complex.
3880
3881 Thu Aug 21 22:25:46 1997  J"orn Rennecke <amylaar@cygnus.co.uk>
3882
3883         * lex.c (real_yylex): Don't use getc directly.
3884
3885 Wed Aug 20 17:25:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
3886
3887         * call.c (is_subseq): Don't try to be clever.
3888
3889 Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
3890
3891         * parse.y, pt.c: Include "except.h".
3892         * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
3893         error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
3894         lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
3895         sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
3896         prototyping.
3897
3898 Wed Aug 20 01:34:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
3899
3900         * decl2.c (mark_vtable_entries): Instead of replacing pure
3901         virtuals with a reference to __pure_virtual, copy the decl and
3902         change the RTL.
3903
3904 Tue Aug 19 02:26:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
3905
3906         * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
3907
3908         * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
3909
3910         * pt.c (instantiate_class_template): Call repo_template_used
3911         before finish_prevtable_vardecl.
3912
3913         * call.c (is_subseq): New fn.
3914         (compare_ics): Use it.
3915
3916         * repo.c (finish_repo): Don't crash on no args.
3917
3918         * parse.y (named_complex_class_head_sans_basetype): Handle
3919         explicit global scope.
3920         * decl2.c (handle_class_head): New fn.
3921
3922         * pt.c (unify): Add CONST_DECL case.
3923
3924 Thu Aug 14 10:05:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3925
3926         * rtti.c (permanent_obstack): Fix decl to not be a pointer.
3927
3928         * cp-tree.h (report_type_mismatch): Add prototype.
3929         * call.c (build_overload_call_real): Remove erroneous fourth
3930         argument to report_type_mismatch.
3931         (build_user_type_conversion_1): Remove erroneous second arg to
3932         tourney.
3933         (build_new_function_call): Likewise.
3934         (build_object_call): Likewise.
3935         (build_new_op): Likewise.
3936         (build_new_method_call): Likewise.
3937
3938 Wed Aug 13 19:19:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
3939
3940         * error.c (dump_decl): Don't bother processing a function with no
3941         DECL_LANG_SPECIFIC.
3942
3943         * method.c (emit_thunk): Call init_function_start in the macro case.
3944
3945 Wed Aug 13 10:46:19 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
3946
3947         * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
3948         defined and used to set flag_vtable_thunks.
3949
3950 Tue Aug 12 20:13:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
3951
3952         * parse.y: Don't clear the inlines from their obstack until they've 
3953         all been processed.
3954
3955         * decl.c (duplicate_decls): Don't complain about exception
3956         specification mismatch if flag_exceptions is off.
3957
3958 Mon Aug 11 15:01:56  1997  Marc Lehmann <pcg@goof.com>
3959
3960         * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
3961
3962 Sun Aug 10 12:06:09 1997  Paul Eggert  <eggert@twinsun.com>
3963
3964         * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
3965         * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
3966         Include <stdio.h> before include files that formerly used STDIO_PROTO. 
3967
3968         * decl.c, g++spec.c, lex.c, method.c, repo.c:
3969         Include "config.h" first, as per autoconf manual.
3970
3971 Fri Aug  8 11:47:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
3972
3973         * decl.c (duplicate_decls): Tweak wording.
3974         * lex.c (do_pending_defargs): Don't die if we see a default arg
3975         that isn't a DEFAULT_ARG.
3976         * error.c (dump_expr): Handle DEFAULT_ARG.
3977
3978         * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
3979         * lang-options.h: Add -fhandle-exceptions.
3980
3981         * class.c (build_vtable): vtables are artificial.
3982         (prepare_fresh_vtable): Likewise.
3983
3984 Wed Aug  6 11:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
3985
3986         * cvt.c (ocp_convert): After converting to the target type, set
3987         LOOKUP_NO_CONVERSION.
3988
3989         * call.c (joust): Warn about potentially confusing promotion rules
3990         with -Wsign-promo.
3991         * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
3992
3993 Tue Aug  5 15:15:07 1997  Michael Meissner  <meissner@cygnus.com>
3994
3995         * exception.cc: Declare __terminate_func with noreturn attribute.
3996
3997 Fri Aug  1 03:18:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
3998
3999         * parse.y: Break out eat_saved_input, handle errors.
4000         (function_try_block): Use compstmt instead of compstmt_or_error.
4001
4002 Thu Jul 31 17:14:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
4003
4004         * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
4005
4006 Fri Jul  4 01:45:16 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
4007
4008         * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
4009         existence of cc1plus check whether $(LANGUAGES) contains C++.
4010
4011 Wed Jul 30 13:04:21 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
4012
4013         * method.c (do_build_copy_constructor): When copying an anonymous
4014         union member loop around to handle nested anonymous unions.  Use
4015         the offset of the member relative to the outer structure, not the
4016         union.
4017
4018 Tue Jul 29 21:17:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
4019
4020         * call.c (resolve_args): New fn.
4021         (build_new_function_call): Use it.
4022         (build_object_call): Likewise.
4023         (build_new_method_call): Likewise.
4024
4025 Mon Jul 28 16:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
4026
4027         * call.c (build_over_call): tsubst all default parms from templates.
4028
4029 Wed Jul 23 13:36:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
4030
4031         * decl.c (struct cp_function): Add static_labelno.
4032         (push_cp_function_context): Save it.
4033         (pop_cp_function_context): Restore it.
4034
4035 Tue Jul 22 14:43:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
4036
4037         * typeck.c (build_component_ref_1): Convert from reference.
4038
4039 Tue Jul 22 11:06:23 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4040
4041         * parse.y (current_declspecs, prefix_attributes): Initialize to
4042         NULL_TREE.
4043
4044         * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
4045         before we try to force it to be a TREE_LIST.
4046         (decl): Make sure $1.t is non-nil.
4047
4048 Sun Jul 20 11:53:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
4049
4050         * pt.c (uses_template_parms): Handle template first-parse codes.
4051
4052         * decl.c (cp_finish_decl): Only warn about user-defined statics.
4053
4054 Fri Jul 18 17:56:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
4055
4056         * pt.c (unify): Handle BOOLEAN_TYPE.
4057
4058         * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
4059         * pt.c (tsubst): Don't set it.
4060         * call.c (build_over_call): Use uses_template_parms.
4061
4062 Thu Jul 17 18:06:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
4063
4064         * method.c (build_overload_nested_name): Use static_labelno
4065         instead of var_labelno.
4066         (build_qualified_name): New fn.
4067         (build_overload_name): Split out from here.
4068         (build_static_name): Use build_qualified_name.
4069         * decl.c (cp_finish_decl): Statics in extern inline functions 
4070         have comdat linkage.
4071         (start_function): Initialize static_labelno.
4072
4073 Thu Jul 17 11:20:17 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4074
4075         * class.c (finish_struct_methods): add check of warn_ctor_dtor_privacy
4076         before "all member functions in class [] are private"
4077
4078 Wed Jul 16 23:47:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
4079
4080         * lex.c (do_scoped_id): convert_from_reference.
4081         * init.c (build_offset_ref): Likewise.
4082
4083 Wed Jul 16 12:34:29 1997  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
4084
4085         * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
4086
4087 Mon Jul 14 03:23:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
4088
4089         * typeck.c (get_member_function_from_ptrfunc): Promote index
4090         before saving it.
4091
4092 Sun Jul 13 00:11:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
4093
4094         * tree.c (layout_basetypes): Move non-virtual destructor warning.
4095         * decl.c (xref_basetypes): Remove non-virtual destructor warning.
4096
4097 Sat Jul 12 12:47:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
4098
4099         * decl.c (grokdeclarator): Call add_defarg_fn for the function
4100         type, too.
4101         * lex.c (add_defarg_fn): Adjust.
4102         (do_pending_defargs): Adjust.  Don't skip the first parm.
4103
4104 Fri Jul 11 01:39:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
4105
4106         * decl.c (build_enumerator): Global enumerators are also readonly.
4107
4108         * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
4109         (build_dynamic_cast): Call it and convert_from_reference.
4110
4111         * lex.c (add_defarg_fn): New fn.
4112         (snarf_defarg): Don't add to defarg_types.
4113         (do_pending_defargs): Lose defarg_types.  All fns we process now
4114         have defargs.
4115         * decl.c (grokfndecl): Call add_defarg_fn.
4116
4117         * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
4118         * cp-tree.def: Add DEFAULT_ARG.
4119         * spew.c (yylex): Call snarf_defarg as appropriate.
4120         * parse.y: New tokens DEFARG and DEFARG_MARKER.
4121         (defarg_again, pending_defargs, defarg, defarg1): New rules.
4122         (structsp): Use pending_defargs.
4123         (parms, full_parm): Use defarg.
4124         * lex.c (init_lex): Initialize inline_text_firstobj.
4125         (do_pending_inlines): Never pass the obstack to feed_input.
4126         (process_next_inline): Call end_input instead of restore_pending_input.
4127         (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
4128         finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
4129         * input.c (end_input): New fn.
4130         (sub_getch): At the end of some fed input, just keep returning EOF
4131         until someone calls end_input.
4132         Remove 'obstack' field from struct input_source.
4133         * decl.c (grokparms): Handle DEFAULT_ARG.
4134         (replace_defarg): New fn.
4135         * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
4136
4137 Wed Jul  9 13:44:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
4138
4139         * call.c (implicit_conversion): If nothing else works, try binding
4140         an rvalue to a reference.
4141
4142 Wed Jul  9 13:04:38 1997  Geoffrey Noer  <noer@cygnus.com>
4143
4144         * decl.c (init_decl_processing): fix Jun 30 patch -- move
4145         ifndef for Cygwin32 to include SIGSEGV.
4146
4147 Thu Jul  3 01:44:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
4148
4149         * class.c (finish_struct_1): Only complain about pointers without
4150         copy stuff if there are any constructors.
4151
4152         * rtti.c (build_dynamic_cast): Call complete_type on the types.
4153
4154         * decl.c (grokfndecl): If the function we chose doesn't actually
4155         match, die.
4156
4157         * decl2.c (grokclassfn): Don't specify 'const int' for the
4158         artificial destructor parm.
4159
4160         * pt.c (type_unification): If we are called recursively, nothing 
4161         decays.
4162
4163 Mon Jun 30 17:53:21 1997  Geoffrey Noer  <noer@cygnus.com>
4164
4165         * decl.c (init_decl_processing): Stop trying to catch signals
4166         other than SIGABRT since the Cygwin32 library doesn't support
4167         them correctly yet.  This fixes a situation in which g++ causes
4168         a hang on SIGSEGVs and other such signals in our Win32-hosted
4169         tools.
4170
4171 Mon Jun 30 14:50:01 1997  Jason Merrill  <jason@yorick.cygnus.com>
4172
4173         * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
4174
4175 Fri Jun 27 15:18:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
4176
4177         * typeck2.c (store_init_value): Always return the value if our 
4178         type needs constructing.
4179
4180         * method.c (hack_identifier): Convert class statics from
4181         reference, too.
4182
4183 Thu Jun 26 11:44:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
4184
4185         * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
4186
4187 Thu Jun 19 16:49:28 1997  Mike Stump  <mrs@cygnus.com>
4188
4189         * typeck.c (c_expand_return): Make sure we clean up temporaries at
4190         the end of return x;
4191
4192 Thu Jun 19 12:28:43 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4193
4194         * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
4195
4196 Tue Jun 17 18:35:57 1997  Mike Stump  <mrs@cygnus.com>
4197
4198         * except.c (expand_builtin_throw): Add support
4199         -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
4200
4201 Mon Jun 16 01:24:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
4202
4203         * repo.c (extract_string): Null-terminate.
4204
4205         * cp-tree.h (TI_SPEC_INFO): New macro.
4206         (CLASSTYPE_TI_SPEC_INFO): New macro.
4207         * pt.c (push_template_decl): Correctly determine # of template parms 
4208         for partial specs.
4209
4210         * call.c (compare_ics): Really fix 'this' conversions.
4211
4212         * pt.c (do_decl_instantiation): Don't crash on explicit inst of
4213         non-template fn.
4214
4215         * pt.c (push_template_decl): Complain about mismatch in # of
4216         template parms between a class template and a member template.
4217
4218 Sun Jun 15 02:38:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
4219
4220         * method.c (synthesize_method): You can't call
4221         function_cannot_inline_p after finish_function.
4222         * decl.c (finish_function): Turn on flag_inline_functions and turn
4223         off DECL_INLINE before handing a synthesized method to the
4224         backend.
4225
4226 Thu Jun 12 17:35:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
4227
4228         * method.c (synthesize_method): Remove July 30 change to never set
4229         DECL_INLINE if at_eof.
4230
4231 Thu Jun 12 15:25:08 1997  Mike Stump  <mrs@cygnus.com>
4232
4233         * xref.c (GNU_xref_member): Ensure that the node has a
4234         decl_lang_specific part before checking DECL_FRIEND_P.
4235
4236 Thu Jun 12 12:36:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
4237
4238         * pt.c (instantiate_class_template): Diagnose non-class types used
4239         as bases.
4240
4241 Wed Jun 11 17:33:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
4242
4243         * typeck.c (build_conditional_expr): Use convert_for_initialization
4244         instead of convert_and_check.
4245
4246 Wed Jun 11 12:31:33 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4247
4248         * parse.y (typespec): Don't pedwarn for typeof.
4249
4250 Tue Jun 10 00:22:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
4251
4252         * repo.c (finish_repo): Only check changes if we would write a
4253         repo file.
4254
4255         * call.c (compare_ics): Fix handling of 'this' conversions.
4256
4257         * pt.c (do_decl_instantiation): Support static data too.  Rename
4258         from do_function_instantiation.
4259         * cp-tree.h: Adjust.
4260         * parse.y: Adjust.
4261
4262         * repo.c (extract_string): New fn.
4263         (get_base_filename): Use it.
4264         (init_repo): Compare old args with current args.
4265
4266 Mon Jun  9 14:25:30 1997  Mike Stump  <mrs@cygnus.com>
4267
4268         * Makefile.in, Make-lang.in: Protect C-ls with a comment
4269         character, idea from Paul Eggert <eggert@twinsun.com>.
4270
4271 Mon Jun  9 01:52:03 1997  Jason Merrill  <jason@yorick.cygnus.com>
4272
4273         * typeck.c (c_expand_return): Be more persistent in looking for
4274         returned temps.
4275
4276         * cvt.c (build_up_reference): Use NOP_EXPR for switching from
4277         pointer to reference.
4278
4279         * class.c (build_vbase_path): Don't do anything if PATH has no steps.
4280
4281 Sun Jun  8 03:07:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
4282
4283         * init.c (build_member_call, build_offset_ref):
4284         Use do_scoped_id instead of do_identifier.
4285
4286         * cvt.c (convert): Remove bogosity.
4287
4288 Sat Jun  7 20:50:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4289
4290         * cvt.c (build_up_reference): Do checks of ARGTYPE and
4291         TARGET_TYPE before trying to use get_binfo.
4292
4293 Fri Jun  6 17:36:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
4294
4295         * cvt.c (build_up_reference): Call get_binfo to get access control.
4296
4297         * decl2.c (import_export_decl): If we don't support weaks, leave
4298         statics undefined.
4299
4300 Fri Jun  6 15:55:49 1997  Mike Stump  <mrs@cygnus.com>
4301
4302         * except.c (expand_builtin_throw): Add support for machines that
4303         cannot access globals after throw's epilogue when
4304         -fno-sjlj-exceptions is used.
4305
4306 Thu Jun  5 16:28:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
4307
4308         * parse.y: 'std::' becomes '::'.
4309         * lex.c (real_yylex): Remove 'namespace' warning.
4310         * init.c (build_member_call): Ignore 'std::'.
4311         (build_offset_ref): Likewise.
4312         * decl2.c (do_using_directive): Ignore 'using namespace std;'.
4313         (do_toplevel_using_decl): Ignore 'using std::whatever'.
4314         * decl.c (push_namespace): Just sorry.
4315         (pop_namespace): Nop.
4316         (init_decl_processing): Declare std namespace.
4317
4318 Tue Jun  3 18:08:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
4319
4320         * search.c (push_class_decls): A name which ambiguously refers to
4321         several instantiations of the same template just refers to the
4322         template.
4323
4324 Tue Jun  3 12:30:40 1997  Benjamin Kosnik  <bkoz@cirdan.cygnus.com>
4325
4326         * decl.c (build_enumerator): fix problem with unsigned long
4327         enumerated values being smashed to ints, causing overflow
4328         when computing next enumerated value. (for enum values around
4329         MAX_VAL).
4330
4331 Mon Jun  2 17:40:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
4332
4333         * typeck.c (build_component_ref): Only call mark_used on a decl.
4334
4335 Thu May 29 15:54:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4336
4337         * typeck.c (build_c_cast): Make the check for a ptr to function
4338         more specific before possible default_conversion call.
4339
4340 Thu May 29 13:02:06 1997  Mike Stump  <mrs@cygnus.com>
4341
4342         * except.c (expand_exception_blocks): Simplify and fix and make
4343         sure we don't end a region in a sequence, as expand_end_bindings
4344         doesn't like it.
4345
4346 Wed May 28 17:08:03 1997  Mike Stump  <mrs@cygnus.com>
4347
4348         * except.c (init_exception_processing): Mark terminate as not
4349         returning so that the optimizer can optimize better.
4350
4351 Tue May 27 19:49:19 1997  Mike Stump  <mrs@cygnus.com>
4352
4353         * cvt.c (convert): Don't do any extra work, if we can avoid it
4354         easily.
4355
4356 Tue May 27 18:21:47 1997  Mike Stump  <mrs@cygnus.com>
4357
4358         * *.[chy]: Change cp_convert to ocp_convert, change convert to
4359         cp_convert.  convert is now reserved for the backend, and doesn't
4360         have the semantics a frontend person should ever want.
4361
4362 Fri May 23 10:58:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
4363
4364         * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
4365         Lose -traditional support.
4366
4367 Thu May 22 15:41:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
4368
4369         * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
4370
4371         * parse.y (self_reference): Do it for templates, too.
4372         * class.c (pushclass): Don't overload_template_name; the alias
4373         generated by build_self_reference serves the same purpose.
4374
4375         * tree.c (list_hash): Make static, take more args.
4376         (list_hash_lookup): Likewise.
4377         (list_hash_add): Make static.
4378         (list_hash_canon): Lose.
4379         (hash_tree_cons): Only build a new node if one isn't already in the
4380         hashtable.
4381         (hash_tree_chain): Use hash_tree_cons.
4382         * cp-tree.h: Adjust.
4383         * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
4384         of calling lookup_name.
4385
4386 Wed May 21 18:24:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
4387
4388         * pt.c (instantiate_class_template): TYPE_VALUES for an enum
4389         doesn't refer to the CONST_DECLs.
4390
4391 Tue May 20 21:09:32 1997  Bob Manson  <manson@charmed.cygnus.com>
4392
4393         * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
4394         is bigger.
4395         (expand_class_desc): Convert the last argument to a sizetype.
4396
4397 Tue May 20 13:55:57 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4398
4399         * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
4400         __real__): Add reswords.
4401         * hash.h: Regenerate.
4402         * lex.h (rid): Add RID_COMPLEX.
4403         (RID_LAST_MODIFIER): Set to RID_COMPLEX.
4404         * lex.c (init_lex): Add building of RID_COMPLEX.
4405         (real_yylex): General cleanup in line with what c-lex.c also has,
4406         sans the cruft for traditional; add handling of SPEC_IMAG, complex
4407         types, and imaginary numeric constants.
4408         * parse.y (REALPART, IMAGPART): Add tokens.
4409         (unary_expr): Add REALPART and IMAGPART rules.
4410         * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
4411         * decl.c (complex_{integer,float,double,long}_type_node): Define
4412         types.
4413         (init_decl_processing): Set up the types.
4414         (grokdeclarator): Add handling of RID_COMPLEX.  Set and use
4415         DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
4416         * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
4417         * cvt.c (cp_convert): Handle COMPLEX_TYPE.
4418         * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
4419         COMPLEX_TYPE case.
4420         * method.c (build_overload_name): Add handling of the different
4421         COMPLEX_TYPEs, prefixing them with `J'.
4422         * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
4423         as a template parm.
4424         (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
4425         * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
4426         (mapcar): Handle COMPLEX_CST.
4427         * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
4428         (common_type): Add code for complex types.
4429         (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
4430         (convert_for_assignment): Likewise.
4431         (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
4432
4433 Mon May 19 12:26:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
4434
4435         * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
4436         tsubst_expr, as it might try to do overload resolution.
4437
4438 Sat May 17 10:48:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
4439
4440         * pt.c (instantiate_class_template): Oops.
4441
4442 Fri May 16 14:23:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
4443
4444         * cp-tree.def: Add TAG_DEFN.
4445         * pt.c (tsubst_enum): New fn.
4446         (instantiate_class_template): Use it.
4447         (tsubst_expr): Support TAG_DEFN.
4448         (tsubst): Support local enums.
4449         (tsubst_copy): Likewise.
4450         * decl.c (finish_enum): Likewise.
4451         (start_enum): If this is a local enum, switch to permanent_obstack.
4452
4453 Wed May 14 19:08:28 1997  Mike Stump  <mrs@cygnus.com>
4454
4455         * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
4456         (finish_function): Put the base init code for constructors just
4457         after the parm cleanup insns.
4458         (struct cp_function): Add last_parm_cleanup_insn.
4459         (push_cp_function_context): Likewise.
4460         (pop_cp_function_context): Likewise.
4461         
4462 Tue May 13 15:51:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
4463
4464         * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
4465
4466 Wed May  7 11:17:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4467
4468         * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
4469         for THUNK_FNDECL before we switch to temporary allocation.
4470
4471 Mon May  5 14:46:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
4472
4473         * call.c (build_new_op): Handle null arg2 for ?:.
4474
4475 Thu May  1 18:26:37 1997  Mike Stump  <mrs@cygnus.com>
4476
4477         * except.c (expand_exception_blocks): Ensure that we flow through
4478         the end of the exception region for the exception specification.
4479         Move exception region for the exception specification in, so that
4480         it doesn't protect the parm cleanup.  Remove some obsolete code.
4481         * decl.c (store_parm_decls): Likewise.
4482         (finish_function): Likewise.
4483
4484 Tue Apr 29 15:38:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
4485
4486         * init.c (build_new): Fix nothrow handling.
4487
4488 Tue Apr 29 14:29:50 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4489
4490         * init.c (emit_base_init): Don't warn about the initialization
4491         list for an artificial member.
4492
4493 Fri Apr 25 17:47:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4494
4495         * expr.c (do_case): Handle !START case for the error msg.
4496
4497 Fri Apr 25 11:55:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
4498
4499         * decl2.c, lang-options.h: New option -Weffc++.
4500         * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
4501         to -Weffc++.
4502
4503         * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
4504         to MULTIPLE_SYMBOL_SPACES.
4505
4506 Wed Apr 23 18:06:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
4507
4508         * method.c (emit_thunk, generic case): Set current_function_is_thunk.
4509
4510         * method.c (emit_thunk, macro case): Set up DECL_RESULT.
4511
4512         * typeck.c (c_expand_return): Don't complain about returning void
4513         to void in an artificial function.
4514         * method.c (make_thunk): Change settings of READONLY/VOLATILE, 
4515         don't set DECL_RESULT, set DECL_ARTIFICIAL.
4516         (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC. 
4517
4518 Wed Apr 23 14:43:06 1997  Mike Stump  <mrs@cygnus.com>
4519
4520         * init.c (init_decl_processing): Add supoprt for setjmp/longjmp based
4521         exception handling.
4522         * except.c (init_exception_processing): Likewise.
4523         (expand_end_catch_block): Likewise.
4524         (expand_exception_blocks): Likewise.
4525         (expand_throw): Likewise.
4526         * exception.cc (__default_terminate): Likewise.
4527
4528         * init.c (perform_member_init): Use new method of expr level
4529         cleanups, instead of cleanups_this_call and friends.
4530         (emit_base_init): Likewise.
4531         (expand_aggr_vbase_init_1): Likewise.
4532         (expand_vec_init): Likewise.
4533         * decl.c (cp_finish_decl): Likewise.
4534         (expand_static_init): Likewise.
4535         (store_parm_decls): Likewise.
4536         (cplus_expand_expr_stmt): Likewise.
4537         * decl2.c (finish_file): Likewise.
4538         
4539         * Make-lang.in (exception.o): Ok to compile with -O now.
4540
4541         * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
4542         we know it will be done later by the backend.
4543
4544         * decl2.c (lang_f_options): Remove support for short temps.
4545         * lang-options.h: Likewise.
4546         
4547 Wed Apr 23 04:12:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
4548
4549         * tree.c (varargs_function_p): New fn.
4550         * method.c (emit_thunk): Replace broken generic code with code to
4551         generate a heavyweight thunk function.
4552
4553 Tue Apr 22 02:45:18 1997  Jason Merrill  <jason@yorick.cygnus.com>
4554
4555         * pt.c (process_template_parm): pedwarn about floating-point parms.
4556
4557         * decl.c (grokdeclarator): inline no longer implies static.
4558
4559         * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
4560
4561 Mon Apr 21 15:42:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
4562
4563         * class.c (check_for_override): The signature of an overriding
4564         function is not changed.
4565
4566         * call.c (build_over_call): Move setting of conv into the loop.
4567         Note: this change, along with the related changes of the 18th thru
4568         the 20th of April, fix an infinite loop problem in conversions.
4569
4570 Sun Apr 20 16:24:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
4571
4572         * call.c (build_user_type_conversion_1): Really ignore rvalue
4573         conversions when looking for a REFERENCE_TYPE.
4574
4575         * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
4576         * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
4577         * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
4578         (build_unary_op): Likewise.
4579         * call.c (build_over_call): See through a CONVERT_EXPR around the
4580         ADDR_EXPR for on a temporary.
4581         * typeck.c (c_expand_return): See through a CONVERT_EXPR around
4582         the ADDR_EXPR for a local variable.
4583
4584 Fri Apr 18 12:11:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
4585
4586         * call.c (build_user_type_conversion_1): If we're trying to
4587         convert to a REFERENCE_TYPE, only consider lvalue conversions.
4588         (build_new_function_call): Print candidates.
4589         (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
4590         (reference_binding): Binding a temporary of a reference-related type
4591         is BAD.
4592
4593 Thu Apr 17 14:37:22 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4594
4595         * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
4596         * tinfo2.cc (type_info::before): Likewise.
4597
4598 Mon Apr 14 12:38:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
4599
4600         * call.c (implicit_conversion): Oops.
4601
4602 Fri Apr 11 02:18:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
4603
4604         * call.c (implicit_conversion): Try to find a reference conversion
4605         before binding a const reference to a temporary.
4606
4607 Wed Apr  2 12:51:36 1997  Mike Stump  <mrs@cygnus.com>
4608
4609         * exception.cc (__default_unexpected): Call terminate by default,
4610         so that if the user overrides terminate, the correct function will
4611         be called.
4612         
4613 Wed Mar 19 14:14:45 1997  Mike Stump  <mrs@cygnus.com>
4614
4615         * parse.y (left_curly): Avoid trying to use any fields of
4616         error_mark_node, as there aren't any.
4617
4618 Thu Mar 13 16:33:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
4619
4620         * lex.c (do_identifier): Avoid breaking on overloaded methods
4621         as default arguments.
4622
4623 Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  <Hans-Peter.Nilsson@axis.se>
4624
4625         * call.c (add_template_candidate): Initialize the variable "dummy".
4626
4627 Mon Mar 10 15:13:14 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>
4628
4629         * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
4630         before we try to use TYPE_SIZE and TREE_CONSTANT on it.
4631
4632 Fri Mar  7 13:19:36 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4633
4634         * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
4635         (debug_binfo): Delete decl, not needed.
4636
4637         * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
4638         promotes_to_aggr_type): Delete fns.
4639         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
4640         SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
4641         PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
4642
4643         * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
4644
4645         * friend.c (is_friend_type): Delete fn.
4646         * cp-tree.h (is_friend_type): Delete decl.
4647
4648         * decl.c (original_result_rtx, double_ftype_double,
4649         double_ftype_double_double, int_ftype_int, long_ftype_long,
4650         float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
4651         * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
4652
4653         * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
4654         fwd decls.
4655         * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
4656
4657         * decl.c (pushdecl_nonclass_level): #if 0, unused.
4658         * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
4659
4660         * lex.c (reinit_lang_specific): #if 0, unused.
4661         * cp-tree.h (reinit_lang_specific): #if 0 decl.
4662
4663         * decl.c (revert_static_member_fn): Make static, adding fwd decl.
4664         * cp-tree.h (revert_static_member_fn): Delete decl.
4665
4666         * class.c (root_lang_context_p): Delete fn.
4667         * cp-tree.h (root_lang_context_p): Delete decl.
4668
4669         * decl.c (set_current_level_tags_transparency): #if 0, unused.
4670         * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
4671
4672         * lex.c (set_vardecl_interface_info): Make static.
4673         * cp-tree.h (set_vardecl_interface_info): Delete decl.
4674
4675         * call.c (find_scoped_type): Make static.
4676         * cp-tree.h (find_scoped_type): Delete decl.
4677
4678         * search.c (convert_pointer_to_vbase): Make static.
4679         * cp-tree.h (convert_pointer_to_vbase): Delete decl.
4680
4681         * decl.c (const_ptr_type_node): Likewise.
4682         * cp-tree.h (const_ptr_type_node): Delete decl.
4683
4684         * typeck.c (common_base_type): Make static.
4685         * cp-tree.h (common_base_types): Delete erroneous decl.
4686
4687         * pt.c (classtype_mangled_name): Make static.
4688         * cp-tree.h (classtype_mangled_name): Delete decl.
4689
4690         * lex.c (check_newline): Make static.
4691         * cp-tree.h (check_newline): Delete decl.
4692
4693         * typeck.c (build_x_array_ref): Delete fn, same idea as
4694         grok_array_decl.
4695         * cp-tree.h (build_x_array_ref): Delete decl.
4696
4697         * lex.c (copy_decl_lang_specific): Delete fn, same idea as
4698         copy_lang_decl.
4699         * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
4700
4701         * class.c (build_vtable_entry): Make static.
4702         * cp-tree.h (build_vtable_entry): Delete decl.
4703
4704         * class.c (build_vbase_pointer): Make static.
4705         * cp-tree.h (build_vbase_pointer): Delete decl.
4706
4707         * sig.c (build_sptr_ref): Add forward decl and make static.
4708         * cp-tree.h (build_sptr_ref): Delete decl.
4709
4710         * call.c (build_new_method_call): Add forward decl and make static.
4711         * cp-tree.h (build_new_method_call): Delete decl.
4712
4713         * call.c (build_object_call): Make static.
4714         * class.c (check_for_override, complete_type_p, mark_overriders):
4715         Likewise.
4716         * decl.c (cp_function_chain): Likewise.
4717         * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
4718         Likewise.
4719         * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
4720         Likewise.
4721         * tree.c (build_cplus_array_type_1): Likewise.
4722         * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
4723         (comp_target_parms): Likewise.
4724
4725         * init.c (build_builtin_call): Make static.
4726         * cp-tree.h (build_builtin_call): Delete decl.
4727
4728         * typeck.c (binary_op_error): Delete decl.
4729         * cp-tree.h (binary_op_error): Likewise.
4730
4731 Thu Mar  6 16:13:52 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4732
4733         * call.c (build_method_call): Compare against error_mark_node
4734         directly, rather than the ERROR_MARK tree code.
4735         * cvt.c (cp_convert): Likewise.
4736         * decl.c (print_binding_level): Likewise.
4737         (duplicate_decls): Likewise.
4738         (grokdeclarator): Likewise.
4739         (grokdeclarator): Likewise.
4740         * init.c (expand_aggr_init_1): Likewise.
4741         (decl_constant_value): Likewise.
4742         * method.c (build_opfncall): Likewise.
4743         (hack_identifier): Likewise.
4744         * typeck.c (build_modify_expr): Likewise.
4745
4746         * typeck.c (build_c_cast): Don't decl TYPE as register tree.
4747
4748 Sun Mar  2 02:54:36 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4749
4750         * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
4751
4752         * pt.c (coerce_template_parms): Add new error message.
4753
4754         * method.c (build_overload_value): Implement name mangling for
4755         floating-point template arguments.
4756
4757         * method.c (build_overload_int, icat, dicat): Fix mangling of template
4758         arguments whose absolute value doesn't fit in a signed word.
4759
4760 Mon Mar  3 12:14:54 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4761
4762         * friend.c: New file; put all of the friend stuff in here.
4763         * init.c: Instead of here.
4764         * Makefile.in (CXX_OBJS): Add friend.o.
4765         (friend.o): Add dependencies.
4766         * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
4767
4768 Sun Mar  2 11:04:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
4769
4770         * call.c (build_scoped_method_call): Complain if the scope isn't a
4771         base.
4772
4773 Wed Feb 26 11:31:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
4774
4775         * parse.y (left_curly): Don't crash on erroneous type.
4776
4777         * init.c (build_delete): Fix type of ref.
4778
4779 Tue Feb 25 12:41:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
4780
4781         * search.c (get_vbase_1): Renamed from get_vbase.
4782         (get_vbase): Wrapper, now non-static.
4783         (convert_pointer_to_vbase): Now static.
4784
4785         * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
4786         * init.c (build_delete): Pass one.
4787         (build_partial_cleanup_for): Use build_scoped_method_call.
4788         * decl.c (finish_function): Pass a binfo.
4789
4790 Mon Feb 24 15:00:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
4791
4792         * call.c (build_over_call): Only synthesize non-trivial copy ctors.
4793
4794         * typeck.c (build_c_cast): Lose other reference to flag.
4795
4796         * call.c (build_field_call): Don't look for [cd]tor_identifier.
4797         * decl2.c (delete_sanity): Remove meaningless use of
4798         LOOKUP_HAS_IN_CHARGE.
4799         * decl.c (finish_function): Use build_scoped_method_call instead
4800         of build_delete for running vbase dtors.
4801         * init.c (build_delete): Call overload resolution code instead of
4802         duplicating it badly.
4803
4804 Thu Feb 20 15:12:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
4805
4806         * call.c (build_over_call): Call mark_used before trying to elide
4807         the call.
4808
4809         * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
4810
4811 Wed Feb 19 11:18:53 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4812
4813         * typeck.c (build_modify_expr): Always pedwarn for a cast to
4814         non-reference used as an lvalue.
4815
4816 Wed Feb 19 10:35:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
4817
4818         * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
4819
4820 Tue Feb 18 15:40:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
4821
4822         * parse.y (handler): Fix template typo.
4823
4824 Sun Feb 16 02:12:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
4825
4826         * error.c (lang_decl_name): New fn.
4827         * tree.c (lang_printable_name): Use it.
4828
4829 Fri Feb 14 16:57:05 1997  Mike Stump  <mrs@cygnus.com>
4830
4831         * g++spec.c: Include config.h so that we can catch bzero #defines
4832         from the config file.
4833
4834 Tue Feb 11 13:50:48 1997  Mike Stump  <mrs@cygnus.com>
4835
4836         * new1.cc: Include a declaration for malloc, to avoid warning, and
4837         avoid lossing on systems that require one (ones that define malloc
4838         in xm.h).
4839
4840 Mon Feb 10 22:51:13 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4841
4842         * decl2.c (max_tinst_depth): New variable.
4843         (lang_decode_option): Parse "-ftemplate-depth-NN" command line
4844         option.
4845         * pt.c (max_tinst_depth): Variable moved.
4846         * lang-options.h: Declare "-ftemplate-depth-NN" command line option
4847         as legal.
4848
4849 Fri Feb  7 15:43:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
4850
4851         * decl.c (xref_basetypes): Allow a base class that depends on
4852         template parms to be incomplete.
4853
4854         * decl2.c (build_expr_from_tree): Support typeid(type).
4855         * rtti.c (get_typeid): Support templates.
4856         (expand_si_desc, expand_class_desc): Fix string length.
4857         (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
4858
4859 Tue Feb  4 11:28:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
4860
4861         * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
4862
4863         * pt.c (tsubst): Put it back for -fno-ansi-overloading.
4864
4865 Mon Feb  3 18:41:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
4866
4867         * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
4868         smashes together template and non-template decls of the same
4869         signature.
4870
4871 Thu Jan 30 19:18:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
4872
4873         * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
4874
4875 Wed Jan 29 11:40:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4876
4877         * decl.c (duplicate_decls): Next route, pedwarn about different
4878         exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
4879
4880 Tue Jan 28 20:43:29 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4881
4882         * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
4883         (struct lang_type): Delete has_default_implementation member.
4884         Increase dummy to 21.
4885         * decl.c (start_method): Delete usage.
4886
4887         * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
4888         store_after_parms, start_decl_1, auto_function): Add decls.
4889         (get_arglist_len_in_bytes, declare_implicit_exception,
4890         have_exceptions_p, make_type_decl, typedecl_for_tag,
4891         store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
4892         build_component_type_expr, cplus_exception_name,
4893         {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
4894         * call.c (build_this): Make static.
4895         (is_complete): Likewise.
4896         (implicit_conversion): Likewise.
4897         (reference_binding): Likewise.
4898         (standard_conversion): Likewise.
4899         (strip_top_quals): Likewise.
4900         (non_reference): Likewise.
4901         (build_conv): Likewise.
4902         (user_harshness): Likewise.
4903         (rank_for_ideal): Likewise.
4904         * decl.c (start_decl_1): Delete forward decl.
4905         (push_decl_level): Make static.
4906         (resume_binding_level): Make static.
4907         (namespace_bindings_p): Make static.
4908         (declare_namespace_level): Make static.
4909         (lookup_name_real): Make static.
4910         (duplicate_decls): Make static.  Take register off NEWDECL and
4911         OLDDECL parm decls.
4912         * decl2.c (get_sentry): Make static.
4913         (temp_name_p): Delete fn.
4914         * except.c (auto_function): Delete decl.
4915         * lex.c (handle_{cp,sysv}_pragma): Make static.
4916         (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
4917         * method.c (do_build_{copy_constructor,assign_ref}): Make static.
4918         * pt.c (tsubst_expr_values): Make static.
4919         * rtti.c (combine_strings): Delete decl.
4920
4921 Tue Jan 28 16:40:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
4922
4923         * pt.c (push_template_decl): Handle getting a typedef.
4924
4925         * call.c (build_new_function_call): Complain about void arg.
4926
4927 Tue Jan 28 15:25:09 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4928
4929         * decl.c (duplicate_decls): Give pedwarn of different exceptions
4930         if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
4931
4932 Mon Jan 27 19:21:29 1997  Mike Stump  <mrs@cygnus.com>
4933
4934         * except.c (expand_throw): Don't expand the cleanup tree here,
4935         since we are not going to write the rtl out.  Fixes problem with
4936         -g -O on SPARC.
4937
4938 Mon Jan 27 16:24:35 1997  Sean McNeil  <sean@mcneil.com>
4939
4940         * Make-lang.in: Add $(exeext) as necessary.
4941
4942 Mon Jan 27 13:20:39 1997  Mike Stump  <mrs@cygnus.com>
4943
4944         * parse.y (handler_seq): Must have at least one catch clause.
4945
4946 Sat Jan 25 12:00:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
4947
4948         * call.c (add_builtin_candidate): Restore ?: hack.
4949
4950         * decl.c (grok_op_properties): More warnings.
4951
4952 Sat Jan 25 08:50:03 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4953
4954         * decl.c (duplicate_decls): On second thought, do it as a pedwarn
4955         still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
4956
4957         * decl.c (duplicate_decls): Scale back to a warning, and only do
4958         'em if -pedantic.
4959
4960 Fri Jan 24 17:52:54 1997  Mike Stump  <mrs@cygnus.com>
4961
4962         * decl.c (duplicate_decls): pedwarn mismatched exception
4963         specifications.
4964
4965 Thu Jan 23 18:18:54 1997  Mike Stump  <mrs@cygnus.com>
4966
4967         * call.c (build_new_method_call): Don't display the invisible
4968         argument for controlling virtual bases.
4969
4970 Thu Jan 23 16:48:10 1997  Mike Stump  <mrs@cygnus.com>
4971
4972         * new: Add nothrow new and delete, bad_alloc and throw specifications
4973         for delete.
4974         * decl.c (init_decl_processing): Add throw specification for delete.
4975         * new.cc (nothrow): Define.
4976         * lex.c (real_yylex): Removing warning that throw and friends are
4977         keywords.
4978         * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
4979         * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
4980         * Make-lang.in: Add new{1,2}.{cc,o}.
4981
4982 Thu Jan 23 16:39:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
4983
4984         * lex.c (cons_up_default_function): Fix return type of synth op=.
4985
4986         * init.c (emit_base_init): Add warnings for uninitialized members
4987         and bases.
4988
4989         * decl.c (xref_basetypes): Add warning for non-polymorphic type
4990         with destructor used as base type.
4991
4992         * decl.c (grok_op_properties): Add warning for op= returning void.
4993         * typeck.c (c_expand_return): Add warning for op= returning anything
4994         other than *this.
4995
4996         * class.c (finish_struct_1): Add warning for class with pointers
4997         but not copy ctor or copy op=.
4998
4999         * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
5000         * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
5001         (instantiate_template): If -fexternal-templates, add this
5002         instantiation to pending_templates.
5003
5004         * decl2.c (copy_assignment_arg_p): Disable old hack to support
5005         Booch components.
5006
5007 Tue Jan 21 18:32:04 1997  Mike Stump  <mrs@cygnus.com>
5008
5009         * cvt.c (cp_convert): Pedwarn enum to pointer conversions.
5010
5011 Mon Jan 20 17:59:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
5012
5013         * call.c (standard_conversion): Handle getting references.  Tack
5014         on RVALUE_CONV here.  Do it for non-class types, too.
5015         (reference_binding): Pass references to standard_conversion.
5016         (implicit_conversion): Likewise.
5017         (add_builtin_candidate): Disable one ?: kludge.
5018         (convert_like): Handle RVALUE_CONVs for non-class types.
5019         (joust): Disable the other ?: kludge.
5020
5021 Mon Jan 20 14:53:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5022
5023         * decl.c (init_decl_processing): Add code to build up common
5024         function types beforehand, to avoid creation then removal of
5025         things already in the hash table.
5026
5027 Mon Jan 20 14:43:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
5028
5029         * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
5030         the arguments.
5031
5032         * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
5033         current_template_parms.
5034
5035 Fri Jan 17 10:25:42 1997  Jason Merrill  <jason@yorick.cygnus.com>
5036
5037         * search.c (lookup_field): Don't return a function, check want_type.
5038
5039 Thu Jan 16 18:14:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5040
5041         * init.c (build_new): Make sure PLACEMENT has a type.
5042
5043 Thu Jan 16 17:40:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
5044
5045         * init.c (build_new): Support new (nothrow).
5046
5047 Wed Jan 15 12:38:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
5048
5049         * pt.c (instantiate_decl): Also do push_to_top_level before setting
5050         up DECL_INITIAL.
5051
5052         * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
5053         * pt.c (tsubst): Defer instantiation of default args.
5054         * call.c (build_over_call): Until here.
5055
5056 Wed Jan 15 10:08:10 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5057
5058         * search.c (lookup_field): Make sure we have an
5059         IDENTIFIER_CLASS_VALUE before we try to return it.
5060
5061 Thu Jan  9 07:19:01 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5062
5063         * call.c (build_method_call): Delete unused var PARM.
5064         (build_overload_call_real): Likewise.
5065         (build_object_call): Delete unused var P.
5066         (build_new_op): Likewise.
5067         * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
5068         var definitions, which are never used.
5069         (shadow_tag): Delete unused var FN.
5070         * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
5071         * init.c (build_new): Delete unused var ALLOC_TEMP.
5072         * method.c (hack_identifier): Delete unused var CONTEXT.
5073         (do_build_copy_constructor): Delete unused var NAME.
5074         (synthesize_method): Delete unused var BASE.
5075         * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
5076         * rtti.c (build_headof): Delete unused var VPTR.
5077         (get_typeid): Delete unused var T.
5078         * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
5079         and ORIG_OP2.
5080         (build_ptrmemfunc): Delete unused vars U and NINDEX.
5081         * typeck2.c (build_functional_cast): Delete unused var BINFO.
5082
5083 Wed Jan  8 13:09:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
5084
5085         * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
5086         things in a type being defined.
5087         * decl.c (finish_enum): Reverse the values so that they are in
5088         the correct order.
5089
5090         * pt.c (instantiate_class_template): Don't initialize
5091         BINFO_BASETYPES until the vector is filled out.
5092         (unify): Don't abort on conflicting bindings, just fail.
5093         (instantiate_decl): Do push_tinst_level before any tsubsting.
5094
5095         * method.c (build_overload_value): Handle getting a
5096         TEMPLATE_CONST_PARM for a pointer.
5097
5098 Tue Jan  7 14:00:58 1997  Jason Merrill  <jason@yorick.cygnus.com>
5099
5100         * init.c (expand_member_init): Don't give 'not a base' error for
5101         templates.
5102
5103         * pt.c (instantiate_decl): Call import_export_decl later.
5104
5105         * pt.c (instantiate_class_template): Return a value.
5106
5107         * parse.y (extension): New rule for __extension__.
5108         (extdef, unary_expr, decl, component_decl): Use it.
5109
5110 Tue Jan  7 09:20:28 1997  Mike Stump  <mrs@cygnus.com>
5111
5112         * class.c (base_binfo): Remove unused base_has_virtual member.
5113         (finish_base_struct): Likewise.
5114         (finish_struct_1): Likewise.
5115
5116 Tue Dec 31 20:25:50 1996  Mike Stump  <mrs@cygnus.com>
5117
5118         * search.c (expand_upcast_fixups): Fix bogus code generation
5119         problem where the generated code uses the wrong index into the
5120         runtime built vtable on the stack.  Old code could clobber random
5121         stack values.
5122
5123 Tue Dec 31 15:16:56 1996  Mike Stump  <mrs@cygnus.com>
5124
5125         * init.c (perform_member_init): Make sure the partial EH cleanups
5126         live on the function_obstack.
5127
5128 Fri Dec 27 10:31:40 1996  Paul Eggert  <eggert@twinsun.com>
5129
5130         * Make-lang.in (g++spec.o): Don't use $< with an explicit target;
5131         this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
5132
5133 Tue Dec 24 10:24:03 1996  Jeffrey A Law  (law@cygnus.com)
5134
5135         * decl.c (grokvardecl): Avoid ANSI style initialization.
5136
5137 Sun Dec 22 04:22:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
5138
5139         * pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
5140
5141 Fri Dec 20 17:09:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
5142
5143         * pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
5144
5145 Fri Dec 20 12:17:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5146
5147         * g++spec.c (lang_specific_driver): Put missing hyphen in front of
5148         arguments we compare against.  Start the count of I at 1, not 0,
5149         since argv[0] is still the command.
5150
5151 Thu Dec 19 11:53:57 1996  Stan Shebs  <shebs@andros.cygnus.com>
5152
5153         * lang-specs.h: Accept .cp as an C++ extension.
5154
5155 Mon Dec 16 22:43:31 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5156
5157         * cp-tree.h (ptr_reasonably_similar): Add decl.
5158
5159 Thu Dec 12 15:00:35 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5160
5161         * decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
5162         pointer.  New local SPECBITS with the parm's value.
5163         (grokdeclarator): Pass &specbits down.
5164
5165         * parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
5166         before we try to do C_SET_EXP_ORIGINAL_CODE on it.
5167
5168         * search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
5169         CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
5170
5171         * decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
5172         not an error_mark_node.
5173
5174 Sat Dec  7 17:20:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
5175
5176         * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
5177         * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
5178         
5179 Fri Dec  6 14:40:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
5180
5181         * decl.c (grokdeclarator): When giving an anonymous struct a name,
5182         replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
5183         not affected).
5184
5185         * typeck2.c (build_m_component_ref): If component is a pointer
5186         to data member, resolve the OFFSET_REF now.
5187
5188         * call.c (convert_like): Don't go into infinite recursion.
5189
5190         * pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
5191
5192         * class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
5193         * tree.c (layout_basetypes): And on the vbase ptr.
5194
5195 Thu Dec  5 02:11:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
5196
5197         * decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
5198         CHAR_TYPE_SIZE so bool is always the same size as another type.
5199
5200         * decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
5201
5202 Tue Dec  3 23:18:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
5203
5204         * decl2.c (grok_x_components): Remove synthesized methods from
5205         TYPE_METHODS of an anonymous union, complain about member
5206         functions.
5207         * decl.c (shadow_tag): Wipe out memory of synthesized methods in
5208         anonymous unions.
5209         (finish_function): Just clear the DECL_RTL of our arguments.
5210
5211 Fri Nov 29 21:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
5212
5213         * decl2.c (finish_file): Emit DWARF debugging info for static data
5214         members.
5215
5216         * pt.c (tsubst): If t is a stub decl, return the stub decl for type.
5217
5218 Wed Nov 27 14:47:15 1996  Bob Manson  <manson@charmed.cygnus.com>
5219
5220         * typeck.c (build_component_ref): Don't die if COMPONENT isn't a
5221         IDENTIFIER_NODE.
5222
5223 Wed Nov 27 16:05:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
5224
5225         * Make-lang.in (g++-cross$(exeext)): Fix typo.
5226
5227 Wed Nov 27 08:14:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5228
5229         Make the g++ driver now be a standalone program, rather than one
5230         that tries to run the gcc driver after munging up the options.
5231         * Make-lang.in (g++.c, g++spec.o): New rules.
5232         (g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
5233         added.
5234         (g++$(exeext)): New rule, based on xgcc rule.
5235         (g++-cross$(exeext)): Now just copies g++$(exeext) over.
5236         * g++spec.c: New file.
5237         * g++.c: Removed file.
5238
5239 Tue Nov 26 19:01:09 1996  Mike Stump  <mrs@cygnus.com>
5240
5241         * cvt.c (build_up_reference): Arrange for any temporary values
5242         that have been keep in registers until now to be put into memory.
5243
5244 Mon Nov 25 15:16:41 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5245
5246         * Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
5247         that make -j3 bootstrap works better.
5248
5249 Sun Nov 24 02:09:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
5250
5251         * decl.c (pushtag): Do pushdecl for anon tags.
5252
5253 Thu Nov 21 16:30:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
5254
5255         * typeck.c (c_expand_return): Fix logic.
5256         (unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
5257
5258 Wed Nov 20 18:47:31 1996  Bob Manson  <manson@charmed.cygnus.com>
5259
5260         * g++.c (main): Make sure arglist has a final NULL entry.  Add
5261         PEXECUTE_LAST to the flags passed to pexecute, as otherwise
5262         stdin/stdout of the invoked program are redirected to
5263         nowheresville.
5264
5265 Tue Nov 19 16:12:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
5266
5267         * decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
5268
5269 Tue Nov 19 15:48:19 1996  Mike Stump  <mrs@cygnus.com>
5270
5271         * init.c (resolve_offset_ref): Handle obj.vfn better.
5272         * typeck.c (build_component_ref): Set TREE_TYPE on result from
5273         build_vfn_ref.
5274
5275 Tue Nov 19 13:14:33 1996  Mike Stump  <mrs@cygnus.com>
5276
5277         * typeck.c (convert_for_assignment): Also handle anachronistic
5278         implicit conversions from (::*)() to cv void*.
5279         * cvt.c (cp_convert_to_pointer): Likewise.
5280
5281 Mon Nov 18 17:05:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
5282
5283         * lex.c (handle_cp_pragma): Fix bogus warning.
5284
5285 Mon Nov 18 16:10:43 1996  Mike Stump  <mrs@cygnus.com>
5286
5287         * cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
5288         (METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
5289
5290 Thu Nov 14 23:18:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
5291
5292         * class.c (finish_struct_1): Support DWARF2_DEBUG.
5293         * search.c (dfs_debug_mark): Likewise.
5294         * decl2.c (finish_vtable_vardecl): Likewise.
5295         * decl.c (pushtag, finish_enum): Likewise.
5296         * lex.c (check_newline): Use debug_* instead of calling *out
5297         functions directly.
5298
5299 Thu Nov 14 15:21:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5300
5301         * Make-lang.in (cplib2.ready): Add else clause to avoid problems
5302         on some picky hosts.
5303
5304 Wed Nov 13 12:32:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
5305
5306         * class.c (finish_struct_1): A class has a non-trivial copy
5307         constructor if it has virtual functions.
5308
5309         * cvt.c (cp_convert): Always call a constructor.
5310
5311         * call.c (reference_binding): Still tack on a REF_BIND
5312         for bad conversions.
5313         (build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
5314
5315         * typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
5316         (c_expand_return): Likewise.
5317         * typeck2.c (digest_init): Likewise for { }.
5318         * init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
5319         * cvt.c (cp_convert): Handle failure better.
5320
5321 Wed Nov 13 11:51:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5322
5323         * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
5324         of GCC be path-relative. 
5325
5326 Wed Nov 13 11:27:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
5327
5328         * Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
5329         it does need choose-temp.o and pexecute.o.
5330
5331 Wed Nov 13 07:53:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5332
5333         * g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
5334         that we still use it.
5335         (P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
5336
5337 Wed Nov 13 02:00:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
5338
5339         * init.c (expand_default_init): Avoid calling constructors to 
5340         initialize reference temps.
5341
5342         * cvt.c (convert_to_reference): Fix.
5343
5344 Tue Nov 12 19:10:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
5345
5346         * cvt.c (cp_convert): Simplify for flag_ansi_overloading.
5347         (convert_to_reference): Likewise.
5348         * typeck.c (convert_for_initialization): Likewise.
5349         * init.c (expand_default_init): Likewise.
5350         (expand_aggr_init_1): Likewise.
5351         * cp-tree.h (CONV_NONCONVERTING): Lose.
5352         * typeck.c (build_c_cast): Lose allow_nonconverting parm.
5353         * *.c: Adjust.
5354         * call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
5355
5356 Tue Nov 12 16:29:04 1996  Brendan Kehoe  <brendan@canuck.cygnus.com>
5357
5358         * pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
5359
5360 Tue Nov 12 15:26:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
5361
5362         * init.c (expand_aggr_init_1): Don't crash on non-constructor
5363         TARGET_EXPR.
5364
5365 Tue Nov 12 14:00:50 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5366
5367         * g++.c: Include gansidecl.h.
5368         (VPROTO, PVPROTO, VA_START): Delete.
5369         (choose_temp_base_try, choose_temp_base, perror_exec,
5370         run_dos) [__MSDOS__]: Delete fns.
5371         (pfatal_with_name): Delete fn.
5372         (temp_filename): Declare like in gcc.c.
5373         (pexecute, pwait, choose_temp_base): Declare from gcc.c.
5374         (error_count, signal_count): Define.
5375         (error): Delete both definitions.
5376         (PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
5377         (pfatal_pexecute): Add fn from gcc.c.
5378         (main): Rename local VERBOSE var to VERBOSE_FLAG.  Rewrite the
5379         code to use the pexecute stuff also used by gcc.c.
5380         (MIN_FATAL_STATUS): Define.
5381         * Make-lang.in (g++): Add dependency on and linking with
5382         choose-temp.o and pexecute.o.
5383
5384         * cp-tree.h: Include gansidecl.h.
5385         (STDIO_PROTO): Delete #undef/#define.
5386         * cvt.c (NULL): Delete #undef/#define.
5387         * expr.c (NULL): Likewise.
5388         * init.c (NULL): Likewise.
5389         * rtti.c (NULL): Likewise.
5390         * xref.c (NULL): Likewise.
5391
5392         * cp-tree.h (build_user_type_conversion): Add prototype.
5393         * call.c (build_user_type_conversion): Delete prototype.  Correct
5394         decl of FLAGS arg to be an int.
5395         * cvt.c (build_user_type_conversion): Likewise.
5396
5397 Tue Nov 12 12:16:20 1996  Jason Merrill  <jason@yorick.cygnus.com>
5398
5399         * cp-tree.def: Add TRY_BLOCK and HANDLER.
5400         * except.c (expand_start_catch_block): Support templates.
5401         * parse.y (try_block, handler_seq): Likewise.
5402         * pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
5403
5404 Mon Nov 11 13:57:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
5405
5406         * pt.c (current_template_args): New fn.
5407         (push_template_decl): Use it.
5408         * decl.c (grokdeclarator): Use it.
5409
5410         * decl2.c (build_expr_from_tree): Dereference ref vars.
5411
5412         * decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
5413         the decl-specifier-seq.
5414
5415         * decl.c (grok_op_properties): Don't force the type of a conversion
5416         op to be complete.  Don't warn about converting to the same type
5417         for template instantiations.
5418
5419         * decl2.c (finish_file): Don't call instantiate_decl on synthesized
5420         methods.
5421
5422 Mon Nov 11 13:20:34 1996  Bob Manson  <manson@charmed.cygnus.com>
5423
5424         * typeck.c (get_delta_difference): Remove previous bogusness.
5425         Don't give errors if force is set.
5426
5427 Fri Nov  8 17:38:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
5428
5429         * decl2.c (finish_file): Don't emit debug info.
5430         * decl.c (pushdecl): Lose obsolete code.
5431         (grokdeclarator): Still do the long long thing after complaining.
5432         * search.c (note_debug_info_needed): Don't do anything if we're in a 
5433         template.
5434         * method.c (synthesize_method): For non-local classes,
5435         push_to_top_level first.
5436
5437 Fri Nov  8 11:52:28 1996  Bob Manson  <manson@charmed.cygnus.com>
5438
5439         * typeck.c (get_delta_difference): Add no_error parameter.
5440         (build_ptrmemfunc): Call get_delta_difference with no_error set;
5441         we don't want error messages when converting unrelated
5442         pointer-to-member functions.
5443
5444 Thu Nov  7 11:16:24 1996  Mike Stump  <mrs@cygnus.com>
5445
5446         * error.c (dump_expr): Improve the wording on error messages that
5447         involve pointer to member functions.
5448
5449 Tue Nov  5 17:12:05 1996  Mike Stump  <mrs@cygnus.com>
5450
5451         * cvt.c (cp_convert_to_pointer): Move code for conversions from
5452         (::*)() to void* or (*)() up a bit, so that we can convert from
5453         METHOD_TYPEs as well.
5454
5455 Tue Nov  5 14:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
5456
5457         * rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
5458         There are no 'member' types.
5459         (get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
5460         (build_x_typeid): Handle errors.
5461
5462 Mon Nov  4 17:43:12 1996  Mike Stump  <mrs@cygnus.com>
5463
5464         * typeck.c (convert_for_assignment): Handle anachronistic implicit
5465         conversions from (::*)() to void* or (*)().
5466         * cvt.c (cp_convert_to_pointer): Likewise.
5467         (cp_convert_to_pointer_force): Remove cp_convert_to_pointer
5468         conversions from here.
5469         * decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
5470         * lang-options.h: Likewise.
5471         * decl2.c (warn_pmf2ptr): Define.
5472         * cp-tree.h: Declare it.
5473         * typeck2.c (digest_init): Allow pmfs down into
5474         convert_for_initialization.
5475
5476 Sun Nov  3 09:43:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
5477
5478         * typeck.c (c_expand_return): Fix for returning overloaded fn.
5479
5480 Fri Nov  1 08:53:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
5481
5482         * cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
5483         * decl.c (grok_reference_init): Pass DIRECT_BIND.
5484         * cvt.c (build_up_reference): Don't mark 'this' addressable.  Use
5485         DIRECT_BIND.
5486         * call.c (convert_like): Don't pass INDIRECT_BIND.
5487         * typeck.c (convert_arguments): Likewise.
5488         * typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
5489
5490 Thu Oct 31 17:08:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
5491
5492         * typeck.c (mark_addressable): Support TARGET_EXPR, unify with
5493         similar code in build_up_ref.
5494         * cvt.c (build_up_reference): Drastically simplify.
5495
5496 Mon Oct 28 12:45:05 1996  Jeffrey A Law  (law@cygnus.com)
5497
5498         * typeck.c (signed_or_unsigned_type): If the given type already
5499         as the correct signedness, then just return it.
5500
5501         * typeck.c ({un,}signed_type): If can't do anything, call
5502         signed_or_unsigned_type.
5503
5504 Thu Oct 24 14:21:59 1996  Bob Manson  <manson@charmed.cygnus.com>
5505
5506         * decl2.c (copy_assignment_arg_p): Don't buy the farm if
5507         current_class_type is NULL.
5508
5509 Wed Oct 23 00:43:10 1996  Jason Merrill  <jason@gerbil.cygnus.com>
5510
5511         * class.c (finish_struct_1): Avoid empty structs by adding a field
5512         so layout_type gets the mode right.
5513
5514         * typeck.c (c_expand_return): Drastically simplify.
5515
5516 Mon Oct 21 22:34:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
5517
5518         * typeck.c (decay_conversion): Handle overloaded methods.
5519
5520 Fri Oct 18 16:03:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
5521
5522         * call.c (build_over_call): A TARGET_EXPR has side-effects.
5523
5524 Thu Oct 17 11:31:59 1996  Mike Stump  <mrs@cygnus.com>
5525
5526         * cvt.c (convert_to_pointer_force): Add code to support pointer to
5527         member function to pointer to function conversions.
5528         * init.c (resolve_offset_ref): Add code to allow faked up objects,
5529         ignoring them if they are not used, and giving an error, if they
5530         are needed.
5531         * typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
5532         code, and so that we can give an error, if we needed an object,
5533         and one was not provided.
5534         (build_c_cast): Don't call default_conversion when we want to
5535         convert to pointer to function from a METHOD_TYPE.
5536
5537 Mon Oct 14 00:28:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
5538
5539         * Make-lang.in (cplib2.ready): Fix logic.
5540
5541         * decl.c (shadow_tag): Only complain about non-artificial function
5542         members.
5543
5544         * class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
5545
5546 Fri Oct 11 16:12:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
5547
5548         * expr.c (cplus_expand_expr): Pre-tweak call_target like
5549         expand_inline_function would.
5550
5551         * pt.c (mark_decl_instantiated): If extern_p, call
5552         mark_inline_for_output.
5553
5554 Thu Oct 10 15:58:08 1996  Mike Stump  <mrs@cygnus.com>
5555
5556         * typeck.c (unary_complex_lvalue): Add code to handle intermediate
5557         pmd conversions.
5558
5559         * typeck.c (get_delta_difference): Fix wording, as we can be used
5560         for pointer to data members.
5561
5562 Tue Oct  8 12:43:51 1996  Bob Manson  <manson@charmed.cygnus.com>
5563
5564         * pt.c (tsubst): If the function decl isn't a member of this
5565         template, return a copy of the decl (including copying the
5566         lang-specific part) so we don't hose ourselves later.
5567
5568 Thu Oct  3 16:24:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
5569
5570         * class.c (finish_struct): Remove DWARF-specific tag handling.
5571         * decl.c (pushtag): Likewise.
5572         (finish_function): Always clear DECL_ARGUMENTS on function decls with
5573         no saved RTX.
5574         * decl2.c (finish_file): Emit DWARF debugging info for static data
5575         members.
5576
5577 Wed Oct  2 21:58:01 1996  Bob Manson  <manson@charmed.cygnus.com>
5578
5579         * decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
5580         isn't the same as the new one before we whack it.
5581
5582 Mon Sep 30 13:38:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
5583
5584         * class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
5585         lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
5586         warn_traditional and warn_strict_prototypes; remove ancient
5587         'overload' code; remove references to flag_traditional.
5588
5589 Mon Sep 30 12:58:40 1996  Mike Stump  <mrs@cygnus.com>
5590
5591         * input.c (sub_getch): Handle 8-bit characters in string literals.
5592
5593 Sun Sep 29 03:12:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
5594
5595         * tree.c (mapcar): Handle CONSTRUCTORs.
5596         (copy_to_permanent): Handle expression_obstack properly.
5597
5598         * Make-lang.in (cplib2.txt): Also depend on the headers.
5599
5600         * rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
5601         INT_TYPE_SIZE.
5602         (expand_class_desc): Use USItype for offset field.
5603         * tinfo.h (struct __class_type_info): Likewise.
5604
5605         * method.c (build_overload_int): TYPE_PRECISION should be applied
5606         to types.
5607
5608 Sat Sep 28 14:44:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
5609
5610         * call.c (build_new_op): A COND_EXPR involving void must be a
5611         builtin.
5612
5613 Fri Sep 27 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
5614
5615         * typeck.c (build_x_component_ref): New fn.
5616         (build_object_ref): Use it.
5617         * parse.y (primary): Use it.
5618         * decl2.c (build_expr_from_tree): Use it.
5619         * cp-tree.h: Declare it.
5620
5621         * decl.c (start_decl): variable-sized arrays cannot be initialized.
5622         * error.c (dump_type_suffix): Handle variable arrays.
5623
5624 Fri Sep 27 13:14:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5625
5626         * Make-lang.in (exception.o): Put back compiling it with -fPIC.
5627
5628 Fri Sep 27 03:00:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
5629
5630         * decl.c (lookup_name_real): Don't try to look up anything in a
5631         TYPENAME_TYPE.
5632
5633         * tinfo2.cc (__throw_type_match_rtti): Oops.
5634
5635 Thu Sep 26 22:11:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5636
5637         * Make-lang.in (exception.o): Use -fno-PIC for now.
5638
5639 Thu Sep 26 10:59:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
5640
5641         * rtti.c (build_dynamic_cast): Pass tinfo fns rather than
5642         calling them.
5643         (get_tinfo_fn_dynamic): Extracted from build_typeid.
5644         * tinfo2.cc (__dynamic_cast): Adjust.
5645         
5646         * rtti.c (build_typeid): Use resolves_to_fixed_type_p.
5647         (build_x_typeid): Likewise.
5648
5649         * parse.y: Call build_x_typeid instead of build_typeid.
5650         * cp-tree.def: Add TYPEID_EXPR.
5651         * pt.c (tsubst_copy): Handle typeid.
5652         * decl2.c (build_expr_from_tree): Likewise.
5653         * rtti.c (build_x_typeid): Throw bad_typeid from here.
5654         (build_typeid): Not here.
5655         * cp-tree.h: Declare build_x_typeid.
5656
5657 Wed Sep 25 17:26:16 1996  Jason Merrill  <jason@yorick.cygnus.com>
5658
5659         * call.c (convert_like): Pull out constant values.
5660
5661         * tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
5662
5663 Wed Sep 25 17:28:53 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
5664
5665         * decl.c (init_decl_processing): Create short int types before
5666         creating size_t in case a machine description needs to use
5667         unsigned short for size_t.
5668
5669 Tue Sep 24 18:18:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
5670
5671         * Make-lang.in (exception.o): Turn off pic.
5672
5673         * tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
5674         type, multi-level ptr conversions.
5675
5676         * rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
5677         (throw_bad_cast): Use it.
5678         (throw_bad_typeid): New fn.
5679         (build_typeid): Throw bad_typeid as needed.
5680         Use build_call.
5681         (synthesize_tinfo_fn): Handle functions and arrays before checking
5682         for cv-quals.
5683
5684         * Remove .h from standard C++ headers, add new.h, move into inc
5685         subdirectory.
5686
5687         * exception*: Remove pointer from object, constructors.  Add
5688         default exception::what that uses type_info::name.  Add
5689         __throw_bad_typeid.
5690
5691         * init.c (build_new): Don't add a cookie to new (void *) T[2].
5692
5693 Mon Sep 23 15:21:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
5694
5695         * Make-lang.in: Building C++ code depends on cc1plus.
5696
5697 Mon Sep 23 12:38:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5698
5699         * decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
5700         a HOST_WIDE_INT, not a tree.
5701
5702 Mon Sep 23 12:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
5703
5704         * exception.cc: Don't include <stdlib.h>.
5705
5706         * Make-lang.in (c++.clean): Remove cplib2.*.
5707
5708 Mon Sep 23 09:42:19 1996  Doug Evans  <dje@canuck.cygnus.com>
5709
5710         * parse.y (component_decl_1, component_costructor_declarator case):
5711         Pass attributes/prefix_attributes in tree list.
5712
5713 Mon Sep 23 01:18:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
5714
5715         * tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
5716
5717 Sun Sep 22 05:31:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
5718
5719         * lex.c (do_identifier): Don't do deferred lookup in a template
5720         header.
5721
5722         * typeck2.c (store_init_value): Oops.
5723
5724         * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}: 
5725         New files for C++ lang-support library.
5726         * Make-lang.in (CXX_EXTRA_HEADERS): Define.
5727         (CXX_LIB2FUNCS): Define.
5728         And rules for building the C++ lang-support code.
5729         * config-lang.in (headers): Define.
5730         (lib2funcs): Define.
5731
5732 Sat Sep 21 19:17:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
5733
5734         * decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
5735         digest_init.
5736         * pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
5737         * typeck2.c (store_init_value): Check for initializing pmf with { }
5738         here.
5739         (process_init_constructor): Not here.
5740
5741 Thu Sep 19 16:41:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
5742
5743         * pt.c (begin_template_parm_list): Increment
5744         processing_template_decl here.
5745         (end_template_parm_list): Not here.
5746         (process_template_parm): No need to add 1 to it now.
5747         * *.c: Use processing_template_decl instead of current_template_parms
5748         to check for being in a template.
5749
5750         * pt.c (uses_template_parms): Handle SCOPE_REF.  Fix CONSTRUCTOR.
5751         (tsubst_copy): Handle CONSTRUCTOR.
5752         (instantiate_decl): Set up context properly for variables.
5753         * decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
5754         * class.c (finish_struct): Reverse CLASSTYPE_TAGS.
5755
5756 Wed Sep 18 13:30:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5757
5758         * lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
5759
5760 Wed Sep 18 04:24:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
5761
5762         * method.c (make_thunk): Call comdat_linkage before setting the
5763         TREE_CODE.
5764
5765         * decl2.c (comdat_linkage): Use make_decl_one_only.
5766         (import_export_decl): Likewise.
5767         * decl.c (init_decl_processing): Check supports_one_only instead of
5768         SUPPORTS_WEAK.
5769
5770 Sat Sep 14 08:34:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
5771
5772         * decl2.c (grokfield): Tighten checking for access decls.
5773
5774         * decl.c (make_typename_type): Resolve references to
5775         current_class_type.  Set CLASSTYPE_GOT_SEMICOLON.
5776         (lookup_name_real): Types that depend on a template parameter get
5777         an implicit 'typename' unless they're in the current scope.
5778         (start_decl_1): We don't care about incomplete types that depend
5779         on a template parm.
5780         (grokdeclarator): Resolve 'typename's in the type specifier that
5781         refer to members of the current scope.
5782
5783         * call.c (build_over_call): Remove 'inline called before
5784         definition' diagnostic.
5785         (build_method_call): Likewise.
5786         * decl.c (duplicate_decls): Downgrade 'used before declared
5787         inline' to a warning, only with -Winline.
5788
5789 Fri Sep 13 17:31:40 1996  Stan Shebs  <shebs@andros.cygnus.com>
5790
5791         * mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
5792
5793 Wed Sep 11 22:38:13 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
5794
5795         * call.c (build_method_call): When calling a signature
5796         default implementation, as in other cases, let instance_ptr simply
5797         be instance.
5798
5799 Wed Sep 11 22:14:44 1996  Mike Stump  <mrs@cygnus.com>
5800
5801         * parse.y (simple_stmt): Cleanup and use do_poplevel ().
5802
5803 Wed Sep 11 22:10:48 1996  Mike Stump  <mrs@cygnus.com>
5804
5805         * except.c (expand_start_catch_block): Add a pushlevel so that -g
5806         works on hppa and SPARC.
5807
5808 Wed Sep 11 10:18:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5809
5810         * typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
5811
5812 Mon Sep  9 19:51:14 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
5813
5814         * call.c (build_over_call): Check first whether DECL_CONTEXT exists
5815         before testing whether it's a signature.
5816
5817 Sun Sep  8 16:06:57 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
5818
5819         * call.c (build_new_method_call): Don't complain about signature
5820         pointers and references not being an aggr type.
5821         (build_this): If a signature pointer or reference was passed in,
5822         just return it.
5823         (build_new_method_call): If instance is a signature pointer, set
5824         basetype to the signature type of instance.
5825         * sig.c (build_signature_method_call): Deleted basetype and
5826         instance parameters, they can be found as the DECL_CONTEXT of
5827         function and as the first argument passed in.
5828         * cp-tree.h: Changed declaration of build_signature_method_call.
5829         * call.c (build_method_call): Deleted first two arguments in call
5830         of build_signature_method_call.
5831         (build_over_call): Added call to build_signature_method_call.
5832
5833 Thu Sep  5 16:51:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
5834
5835         * typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
5836         target_expr.
5837
5838 Thu Sep  5 10:05:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5839
5840         * cvt.c (convert_to_reference): Use %#T, not %#D, for error.
5841
5842 Wed Sep  4 17:16:09 1996  Bob Manson  <manson@charmed.cygnus.com>
5843
5844         * except.c (expand_start_try_stmts): Move to except.c in the backend.
5845         (expand_end_try_stmts): Remove.
5846
5847         * init.c (perform_member_init): Use add_partial_entry () instead
5848         of directly manipulating lists.
5849         (emit_base_init): Ditto.
5850
5851 Wed Sep  4 12:14:36 1996  Mike Stump  <mrs@cygnus.com>
5852
5853         * except.c (expand_exception_blocks): Always make sure USE and
5854         CLOBBER insns that came at the end still do, the backend relies
5855         upon this.
5856
5857 Wed Sep  4 07:44:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
5858
5859         * call.c (build_over_call): We can only use a TARGET_EXPR of the
5860         right type.
5861
5862 Tue Sep  3 19:26:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
5863
5864         * cvt.c (convert_to_reference): Revert last change, don't complain
5865         about temp without target decl.
5866
5867 Tue Sep  3 10:22:56 1996  Mike Stump  <mrs@cygnus.com>
5868
5869         * decl.c (grokdeclarator): Don't core dump when void() is given.
5870
5871 Tue Sep  3 02:38:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
5872
5873         * decl.c (copy_args_p): Don't crash.
5874
5875 Fri Aug 30 14:26:57 1996  Mike Stump  <mrs@cygnus.com>
5876
5877         * pt.c (tsubst): And support template args inside the exception
5878         specification.
5879
5880         * pt.c (tsubst): Add support for exception specifications in
5881         template functions.
5882
5883 Fri Aug 30 10:01:55 1996  Mike Stump  <mrs@cygnus.com>
5884
5885         * cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
5886         fields now.
5887         * cp-tree.h (start_decl): Eliminate the throw spec parameter.
5888         (start_function): Likewise.
5889         (start_method): Likewise.
5890         (grokfield): Likewise.
5891         (make_call_declarator): Add throw spec parameter.
5892         (set_quals_and_spec): Add routine.
5893         * lex.c (set_quals_and_spec): Likewise.
5894         * decl.h (grokdeclarator): Eliminate the throw spec parameter.
5895         * decl.c (shadow_tag): Eliminate the throw spec parameter to
5896         grokdeclarator.
5897         (groktypename): Likewise.
5898         (start_decl): Eliminate the throw spec parameter.  Eliminate the
5899         throw spec parameter to grokdeclarator.  Eliminate the throw spec
5900         field in DECL_STMT.
5901         (cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
5902         (grokfndecl): Remove useless set of raises.
5903         (grokdeclarator): Eliminate the throw spec parameter.  Eliminate
5904         the throw spec parameter to start_decl.  Pull the throw spec out
5905         of the call declarator.
5906         (grokparms): Eliminate the throw spec parameter to grokdeclarator.
5907         (start_function): Eliminate the throw spec parameter.  Eliminate
5908         the throw spec parameter to grokdeclarator.
5909         (start_method): Likewise.
5910         * decl2.c (grokfield): Likewise.
5911         (grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
5912         (grokoptypename): Likewise.
5913         (finish_file): Eliminate the throw spec parameter to
5914         start_function.  Add throw spec to make_call_declarator.
5915         * except.c (init_exception_processing): Add throw spec to
5916         make_call_declarator.  Eliminate the throw spec parameter to
5917         start_decl.
5918         (expand_start_catch_block): Eliminate the throw spec parameter to
5919         grokdeclarator.
5920         (expand_builtin_throw): Add throw spec to make_call_declarator.
5921         Eliminate the throw spec parameter to start_function.
5922         (start_anon_func): Likewise.
5923         * lex.c (make_call_declarator): Add throw spec parameter.
5924         (set_quals_and_spec): New routine.
5925         (cons_up_default_function): Add throw spec to make_call_declarator.
5926         Eliminate the throw spec parameter to grokfield.
5927         * method.c (synthesize_method): Eliminate the throw spec parameter
5928         to start_function.
5929         * pt.c (process_template_parm): Eliminate the throw spec parameter
5930         to grokdeclarator.
5931         (tsubst): Add throw spec to make_call_declarator.
5932         (tsubst_expr): Eliminate the throw spec parameter to start_decl.
5933         (do_function_instantiation): Eliminate the throw spec parameter to
5934         grokdeclarator.  Eliminate the throw spec parameter to
5935         start_function.
5936         * rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
5937         to start_function.
5938         * parse.y (datadef): Remove non-winning optimization.
5939         (decl): Likewise.
5940         (fndef): Remove ambiguous error productions uncovered by grammer
5941         fixing.
5942         (constructor_declarator): Add exception_specification_opt here.
5943         (component_constructor_declarator): Likewise.
5944         (direct_after_type_declarator): Likewise.
5945         (complex_direct_notype_declarator): Likewise.
5946         (direct_abstract_declarator): Likewise.
5947         (fn.def1): Remove exception_specification_opt.
5948         (fn.def2): Likewise.
5949         (condition): Likewise.
5950         (initdcl0): Likewise.
5951         (initdcl): Likewise.
5952         (notype_initdcl0): Likewise.
5953         (nomods_initdcl0): Likewise.
5954         (component_decl_1): Likewise.
5955         (component_declarator): Likewise.
5956         (after_type_component_declarator0): Likewise.
5957         (after_type_component_declarator): Likewise.
5958         (notype_component_declarator): Likewise.
5959
5960 Wed Aug 28 01:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
5961
5962         * call.c (build_over_call): Also use an INIT_EXPR when
5963         initializing anything from an rvalue.
5964
5965         * call.c (build_over_call): Call stabilize_reference when building
5966         an INIT_EXPR instead of calling the copy ctor.
5967
5968         * call.c (joust): Extend the previous change to all comparisons.
5969
5970         * decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and 
5971         NO_LINKAGE_HEURISTICS.
5972
5973         * decl2.c (finish_file): Emit any statics that weren't already.
5974
5975         * typeck.c (build_static_cast): Implement.
5976         * tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
5977         * decl.c (grokparms): Use can_convert_arg instead of
5978         implicit_conversion directly.
5979         (copy_args_p): New fn.
5980         * cvt.c (convert_to_reference): Don't complain about temp with
5981         static_cast.
5982         (build_up_reference): Handle TARGET_EXPRs.
5983         * call.c (build_over_call): Elide unnecessary temps.
5984         (can_convert*): Use new overloading code.
5985
5986 Tue Aug 27 13:12:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
5987
5988         * call.c: Move TYPE_PTR*_MACROS ...
5989         * cp-tree.h: To here.
5990         * typeck.c (build_reinterpret_cast): Implement.
5991
5992         * call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
5993         ptr_complete_ob.
5994         (joust): If we're comparing a function to a builtin and the worst
5995         conversion for the builtin is worse than the worst conversion for the
5996         function, take the function.
5997
5998         * typeck.c (build_const_cast): Implement.
5999         (comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
6000         (comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
6001
6002 Tue Aug 27 13:14:58 1996  Bob Manson  <manson@charmed.cygnus.com>
6003
6004         * rtti.c (build_dynamic_cast): Don't try to dereference exprtype
6005         too early. Make sure we explode if exprtype turns out to be a
6006         NULL_TREE when it shouldn't be.
6007
6008 Tue Aug 27 10:56:21 1996  Mike Stump  <mrs@cygnus.com>
6009
6010         * cp-tree.h: New routine make_call_declarator.
6011         * lex.c (make_call_declarator): Define it.
6012         * except.c (init_exception_processing): Use it.
6013         (expand_builtin_throw): Likewise.
6014         (start_anon_func): Likewise.
6015         * decl2.c (finish_file): Likewise.
6016         * lex.c (cons_up_default_function): Likewise.
6017         * parse.y: Likewise.
6018         * pt.c (tsubst): Likewise.
6019         
6020 Mon Aug 26 17:40:03 1996  Mike Stump  <mrs@cygnus.com>
6021
6022         * decl2.c (groktypefield): Remove unused code.
6023
6024 Mon Aug 26 17:00:33 1996  Mike Stump  <mrs@cygnus.com>
6025
6026         * gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
6027         * parse.y: Likewise.  Change maybe_type_qual into maybe_cv_qualifier.
6028         Change type_quals into cv_qualifiers.  Change nonempty_type_quals into
6029         nonempty_cv_qualifiers.
6030         * hash.h: Rebuild.
6031         
6032         * lex.c (make_pointer_declarator): Change type_quals into
6033         cv_qualifiers.
6034         (make_reference_declarator): Likewise.
6035         
6036 Thu Aug 22 01:09:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
6037
6038         * decl.c (start_function): Only check interface_* for templates
6039         with flag_alt_external_templates.
6040
6041         * call.c (build_new_op): Check for comparison of different enum types.
6042         (build_over_call): Fix arg # output.
6043
6044         * typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
6045
6046 Wed Aug 21 00:13:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
6047
6048         * call.c (build_new_op): Check for erroneous args.
6049
6050         * call.c (build_new_method_call): Add missing args to cp_error.
6051
6052         * tree.c (error_type): Dont print reference-to-array.
6053
6054         * typeck.c (convert_for_assignment): Don't say contravariance for
6055         removing const.
6056
6057 Tue Aug 20 13:23:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
6058
6059         * call.c (build_over_call): Diagnose bad convs for `this'.
6060
6061         * lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
6062         on _ctor_arg.
6063
6064         * call.c (convert_like): Handle bad convs.
6065         (build_over_call): Handle bad convs better.
6066
6067         * decl2.c: -fansi-overloading is now the default.
6068
6069         * call.c (build_new_method_call): Check for erroneous args.
6070
6071         * pt.c (instantiate_class_template): Propagate
6072         TYPE_USES_MULTIPLE_INHERITANCE.
6073
6074 Tue Aug 20 13:09:57 1996  Mike Stump  <mrs@cygnus.com>
6075
6076         * call.c (enforce_access): Add static to routine.
6077
6078 Sun Aug 18 14:35:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
6079
6080         * call.c (build_user_type_conversion_1): Fix bad handling.
6081         (compare_ics): Likewise.
6082
6083 Sat Aug 17 21:54:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
6084
6085         * call.c (standard_conversion): Oops.
6086
6087 Sat Aug 17 16:28:11 1996  Geoffrey Noer  <noer@cygnus.com>
6088
6089         * g++.c: Update test for win32 (&& ! cygwin32).
6090
6091 Sat Aug 17 03:45:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
6092
6093         * typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
6094         (ptr_reasonably_similar): New fn.
6095         * call.c (BAD_RANK): New rank.
6096         (ICS_BAD_FLAG): New macro.
6097         (standard_conversion): Handle almost-right pointer conversions.
6098         (reference_binding): Handle bad rvalue bindings.
6099         (add_*_candidate): Stuff.
6100         (build_over_call): Pass bad conversions to convert_for_initialization.
6101         (compare_ics): Handle bad convs.
6102         (joust): Likewise.
6103
6104 Fri Aug 16 15:02:19 1996  Bob Manson  <manson@charmed.cygnus.com>
6105
6106         * init.c (expand_vec_init): Use ptrdiff_type_node instead of
6107         integer_type_node when computing pointer offsets.
6108
6109 Fri Aug 16 01:28:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
6110
6111         * tree.c (lvalue_type): New fn.
6112         (error_type): New fn.
6113         * call.c (op_error): Use error_type.
6114         (add_conv_candidate): Use lvalue_type.
6115         (add_builtin_candidates): Likewise.
6116         * error.c (args_as_string): Use error_type.
6117
6118 Thu Aug 15 17:27:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
6119
6120         * pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
6121         (tsubst): Not here.
6122
6123         * decl.c (init_decl_processing): With -ansi, __null's type is the
6124         signed integral type with the same number of bits as a pointer.
6125         Introduce a new variable null_node for it.
6126         * cp-tree.h: Adjust.
6127         * call.c (null_ptr_cst_p): Adjust.
6128
6129 Thu Aug 15 17:09:54 1996  Mike Stump  <mrs@cygnus.com>
6130
6131         * except.c (do_unwind): Mark %i7 as used on the SPARC so we can
6132         optimize.
6133
6134 Thu Aug 15 01:36:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
6135
6136         * decl2.c (import_export_decl): Ignore #pragma interface for tinfo
6137         fns of classes without virtual functions.
6138
6139         * call.c (add_function_candidate): Handle `this' specially.
6140         (compare_ics): Likewise.
6141
6142 Tue Aug 13 12:16:10 1996  Jason Merrill  <jason@yorick.cygnus.com>
6143
6144         * typeck.c (build_conditional_expr): Fix handling of __null.
6145
6146         * decl2.c (comdat_linkage): New fn.
6147         (import_export_vtable): Use it.
6148         (import_export_decl): Use it.
6149         * method.c (make_thunk): Use it.
6150
6151 Mon Aug 12 00:09:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
6152
6153         * pt.c (end_template_decl): If we don't actually have parms, return.
6154         * parse.y (template_header): Accept 'template <>'.
6155
6156         * errfn.c: Allow 5 args.
6157
6158 Sun Aug 11 15:20:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
6159
6160         * tree.c (make_temp_vec): New fn.
6161         * pt.c (push_template_decl): Handle partial specs.
6162         (instantiate_class_template): Likewise.
6163         (more_specialized): Use get_bindings.
6164         (more_specialized_class): New fn.
6165         (get_class_bindings): New fn.
6166         (most_specialized_class): New fn.
6167         (do_function_instantiation): List candidates for ambiguous case.
6168         * decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
6169         (shadow_tag): Call push_template_decl for partial specializations.
6170         * parse.y: Likewise.
6171         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
6172         DECL_TEMPLATE_MEMBERS.
6173         * call.c (print_z_candidates): Reduce duplication.
6174
6175 Fri Aug  9 14:36:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
6176
6177         * decl2.c (lang_decode_option): Allow -fansi-overloading.
6178
6179 Thu Aug  8 17:04:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
6180
6181         * pt.c (get_bindings): New fn.
6182         (most_specialized): Likewise.
6183         (do_function_instantiation): Use them.
6184         (add_maybe_template): New fn.
6185         * cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
6186         * call.c (build_new_op): Handle guiding decls.
6187         (build_new_function_call): Likewise.
6188         * decl2.c (finish_file): Likewise.
6189
6190         * decl2.c (mark_used): Do synthesis here.
6191         * call.c (build_method_call): Not here.
6192         (build_over_call): Or here.
6193         * typeck.c (build_function_call_real): Or here.
6194         * tree.c (bot_manip): Call mark_used on functions used in default
6195         args.
6196
6197 Thu Aug  8 17:48:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
6198
6199         * decl2.c (import_export_vtable): Delete code that disabled vtable
6200         heuristic on systems with ASM_OUTPUT_EXTERNAL.
6201
6202 Wed Aug  7 12:44:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
6203
6204         * typeck.c (build_x_function_call): Handle static call context
6205         better.
6206
6207         * decl.c (finish_function): Set the DECL_CONTEXT of the result to
6208         the function, not its outer block.
6209
6210         * call.c (build_field_call): Pass fields on to build_opfncall
6211         regardless of TYPE_OVERLOADS_CALL_EXPR.
6212         (build_method_call): Pass on to build_new_method_call sooner.
6213
6214         * typeck.c (build_ptrmemfunc): Just return what instantiate_type
6215         gives us.
6216         * class.c (instantiate_type): Don't put a POINTER_TYPE to
6217         METHOD_TYPE on an expression.  Also make a copy of rhs instead of
6218         modifying it.
6219
6220 Tue Aug  6 12:58:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
6221
6222         * call.c (compare_ics): Handle qual_conv after lvalue_conv.
6223         (add_builtin_candidate): Don't take enums for ++.
6224         (build_new_method_call): Handle non-aggregates and field calls.
6225         Move new overloading code from...
6226         * cvt.c: Here.
6227
6228         * decl.c (grokparms): Don't check default args in templates.
6229
6230 Mon Aug  5 17:17:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
6231
6232         * cvt.c (build_new_op): Fix args to build_unary_op.
6233         (add_builtin_candidates): Don't call type_promotes_to on float.
6234
6235         * decl.c (grokparms): Check the type of the default arg.
6236
6237         * cvt.c (build_new_op): Pass non-overloaded cases on rather than
6238         returning NULL_TREE.
6239
6240         * typeck.c (build_x_binary_op): Avoid doing extra work.
6241         (build_x_unary_op): Likewise.
6242         (build_x_conditional_expr): Likewise.
6243         * cvt.c (build_over_call): Return.
6244         (add_builtin_candidate): Fix MEMBER_REF.
6245         (build_new_op): Likewise.
6246
6247 Mon Aug  5 17:07:47 1996  Mike Stump  <mrs@cygnus.com>
6248
6249         * method.c (build_overload_name): Put bug fix into code but leave
6250         disabled for now so we can be bug compatible with older releases
6251         that do repeats incorrectly.  In the future, we can enable it.
6252
6253 Mon Aug  5 13:46:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
6254
6255         * cvt.c (convert_like): Don't call build_cplus_new twice.
6256
6257         * call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
6258         Control new overloading code with -fansi-overloading.
6259
6260 Sun Aug  4 15:29:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
6261
6262         * cvt.c (build_over_call): Call build_cplus_new.
6263         * call.c (build_method_call): Likewise.
6264         * typeck.c (build_function_call_real): Likewise.
6265         (build_conditional_expr): If both operands are TARGET_EXPRs, wrap
6266         the COND_EXPR in a TARGET_EXPR so they use the same slot.
6267
6268         * cvt.c (build_up_reference): Propagate INDIRECT_BIND to 
6269         recursive calls.
6270         * typeck.c (complete_type): Propagate
6271         TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
6272
6273 Sat Aug  3 14:05:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
6274
6275         * cvt.c (joust): More ?: kludging.  Sigh.
6276         (build_over_call): Don't try to synthesize global fns.
6277
6278         * search.c (lookup_conversions): Use binfo marking.
6279
6280 Sat Aug  3 12:33:42 1996  Bob Manson  <manson@charmed.cygnus.com>
6281
6282         * search.c (build_mi_matrix): Use the correct value of cid
6283         when determining the new mi_size.
6284
6285 Sat Aug  3 01:27:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
6286
6287         * cvt.c (add_builtin_candidates): Do consider type conversion ops
6288         for the first parms of += et al.
6289         (strip_top_quals): New fn.
6290         (reference_binding): Use it instead of TYPE_MAIN_VARIANT.
6291         (implicit_conversion): Likewise.
6292         (add_builtin_candidates): Be careful about arrays.
6293         (build_new_method_call): Handle vtable optimization.
6294
6295 Fri Aug  2 01:26:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
6296
6297         * cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
6298         * cvt.c (reference_binding): Use it.
6299         (implicit_conversion): Use it.
6300         (add_builtin_candidate, COND_EXPR): Use it.
6301
6302         * cvt.c (build_new_function_call): Check for error args.
6303
6304         * typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
6305
6306         * gxx.gperf: Add __null.
6307         * hash.h: Regenerate.
6308         * lex.h: Add RID_NULL.
6309         * lex.c (init_lex): Create null_pointer_node here, stick it in
6310         RID_NULL.
6311         * decl.c (init_decl_processing): Still set its type here.
6312         * cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
6313         (convert_to_pointer_force): Likewise.
6314         (null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
6315         if (! pedantic).
6316         * call.c (convert_harshness): Use null_ptr_cst_p.
6317         * typeck.c (convert_for_assignment): Likewise.  Don't produce
6318         null_pointer_node.
6319
6320         * error.c (args_as_string): Handle lists of actual args, too.
6321         * cvt.c (null_ptr_cst): Support (void*)0 for now.
6322         (build_user_type_conversion_1): Improve diagnostics.
6323         (build_new_function_call): Likewise.
6324         (build_object_call): Likewise.
6325         (build_new_method_call): Likewise.  Move call before def diagnostic...
6326         (build_over_call): Here.
6327
6328         * cvt.c (build_new_method_call): Don't complain about no match if
6329         LOOKUP_SPECULATIVELY.
6330         (build_over_call): Fix 'this' for virtual fn.
6331         (build_new_method_call): Add diagnostic.
6332
6333 Thu Aug  1 16:45:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
6334
6335         * cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
6336         constructors to be passed in.
6337         (build_over_call): Likewise.
6338         (build_user_type_conversion_1): Pass them in.
6339         (convert_like): Likewise.
6340         (build_object_call): Handle overloaded conversions.
6341         (build_over_call): Pass the right args to build_vfn_ref.
6342         (standard_conversion): Fix pmf convs.
6343         (joust): Handle comparing statics and non-statics.
6344         (build_new_method_call): New fn.
6345         * call.c (build_method_call): Call it if NEW_OVER.
6346
6347 Thu Aug  1 16:06:14 1996  Mike Stump  <mrs@cygnus.com>
6348
6349         * lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
6350         %D instead.
6351
6352 Thu Aug  1 15:24:02 1996  Mike Stump  <mrs@cygnus.com>
6353
6354         * except.c (expand_throw): Use maybe_build_cleanup_and_delete
6355         instead of just maybe_build_cleanup so that we deallocate the
6356         thrown object.
6357
6358 Thu Aug  1 15:18:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6359
6360         * decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
6361         * cp-tree.h (finish_prevtable_vardecl): Add decl.
6362
6363 Thu Aug  1 11:53:51 1996  Bob Manson  <manson@charmed.cygnus.com>
6364
6365         * pt.c (instantiate_class_template): Call complete_type. Also, if
6366         we're at the end of the file and we just instantiated a template
6367         class with a vtable, call finish_prevtable_vardecl.
6368
6369         * error.c (dump_decl): Don't explode (or explode more gracefully
6370         as appropriate) if the object being dumped has a null type.
6371         (dump_expr): Likewise.
6372
6373         * search.c (build_mi_matrix): Ensure that mi_size is large enough,
6374         by counting the number of nodes that we'll need before allocating
6375         the array.
6376         (lookup_fnfields): Fix comment.
6377         (breadth_first_search): Fix comment.
6378
6379 Wed Jul 31 09:57:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
6380
6381         * pt.c (instantiate_class_template): Propagate TYPE_PACKED and
6382         TYPE_ALIGN.
6383         * class.c (finish_struct): Call cplus_decl_attributes here.
6384         (finish_struct_1): Not here.
6385         * cp-tree.h: Adjust.
6386
6387         * pt.c (type_unification): New parameter STRICT.
6388         (unify): If STRICT, don't allow cv addition or base deduction.
6389         * call.c, class.c, cvt.c, cp-tree.h: Adjust.
6390
6391 Tue Jul 30 13:06:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
6392
6393         * search.c (get_template_base{_recursive}): New fns.
6394         * pt.c (more_specialized): New fn.
6395         (do_function_instantiation): Use it.
6396         (unify): Handle base deduction.
6397         * cvt.c (joust): Use more_specialized.
6398         Don't arbitrarily choose between non-builtin candidates.
6399         (build_over_call): Call require_complete_type.
6400
6401         * decl.c (start_function): Statics are static even in a #pragma
6402         interface file.
6403
6404         * decl2.c (import_export_vtable): Disable vtable heuristic on
6405         systems with ASM_OUTPUT_EXTERNAL.
6406
6407         * cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
6408         (standard_conversion): No std conv to enum type.
6409
6410         * cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
6411         for ptm's.
6412
6413         * cvt.c (reference_binding): Bind directly to a base subobject of
6414         a class rvalue.
6415
6416         * cvt.c (build_new_op): Enforce access control.
6417
6418 Tue Jul 30 09:22:53 1996  Bob Manson  <manson@charmed.cygnus.com>
6419
6420         * typeck2.c (process_init_constructor): When scanning the
6421         union for a named field, skip things that aren't FIELD_DECLs.
6422
6423         * method.c (synthesize_method): Don't scan fndecl's rtl if
6424         we're at the end of the file; just assume the function can't
6425         be inlined.
6426
6427 Mon Jul 29 15:48:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
6428
6429         * cvt.c (build_builtin_candidate): Stick a dummy conversion in if
6430         it failed.
6431
6432         * cvt.c (build_user_type_conversion_1): Handle overloaded
6433         conversion ops.
6434
6435         * cvt.c (add_builtin_candidates): Don't consider type conversion
6436         operators for the first parameter of operator=.
6437
6438 Mon Jul 29 15:33:55 1996  Bob Manson  <manson@charmed.cygnus.com>
6439
6440         * typeck.c (complete_type): Only call layout_type if we're not
6441         expanding a template.
6442
6443 Mon Jul 29 14:40:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
6444
6445         * cvt.c (compare_ics): Oops.
6446
6447         * cvt.c (op_error): Oops.
6448
6449         * cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
6450         * cvt.c: Add IDENTITY_RANK before others.  Use real_lvalue_p.
6451         (build_conv): Use them.
6452         (implicit_conversion): Use them.
6453         (convert_like): Handle them.
6454         (build_new_op): Handle builtin COND_EXPR again.
6455         (add_builtin_candidates): Strip cv-quals.  Fix oops.  Include enums
6456         in lists of types for COND_EXPR.
6457         (add_builtin_candidate): Add enum candidates for COND_EXPR.
6458
6459 Mon Jul 29 12:05:40 1996  Bob Manson  <manson@charmed.cygnus.com>
6460
6461         * typeck.c (build_modify_expr): Always attempt to build a call to
6462         the assignment operator, even if we're using a default one.
6463         (convert_for_initialization): Call complete_type.
6464
6465 Mon Jul 29 11:25:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
6466
6467         * cvt.c (reference_binding): A REF_BIND gets the reference type.
6468         (implicit_conversion): Likewise.
6469         (convert_like): Likewise.
6470         (compare_ics): Likewise.
6471         (compare_qual): Likewise.
6472         (print_z_candidates): Handle no candidates.
6473         (build_new_op): Don't handle builtin COND_EXPR for now.
6474
6475 Sat Jul 27 11:27:47 1996  Stan Shebs  <shebs@andros.cygnus.com>
6476
6477         * cvt.c (build_builtin_candidate): Init local var in an ANSI way.
6478
6479 Fri Jul 26 01:07:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
6480
6481         * cvt.c (joust): If the candidates are the same, arbitrarily pick one.
6482
6483         * cvt.c (build_builtin_candidate): Oops.
6484         (build_new_op): Oops.
6485
6486         * method.c (build_opfncall): Pass COND_EXPR on.
6487         * cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
6488         (add_builtin_candidate{,s}): Likewise.
6489         (add_builtin_candidates): Likewise.
6490         (print_z_candidates, op_error, build_new_op): Likewise.
6491         (type_decays_to): New fn.
6492         * lex.c (init_lex): Just say ?: for COND_EXPR.
6493
6494 Thu Jul 25 09:33:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
6495
6496         * typeck.c (complete_type): Call layout_type rather than building
6497         a new array type.
6498
6499         * cvt.c (add_builtin_candidate): Pointer arithmetic candidates
6500         only use ptrdiff_t.
6501
6502 Wed Jul 24 12:45:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
6503
6504         * cvt.c: Always compile the new overloading code (but don't use it).
6505         (implicit_conversion): Add a BASE_CONV when converting to
6506         the same class type.
6507         (convert_like): Handle BASE_CONV.
6508
6509 Tue Jul 23 12:46:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
6510
6511         * cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
6512         (add_builtin_candidate): Likewise.
6513
6514         NEW_OVER changes:
6515         * typeck.c (build_x_function_call): Try an operator function
6516         whenever we call an object of class type.
6517         * method.c (build_opfncall): Pass CALL_EXPRs through.
6518         * cvt.c (implicit_conversion): Do const-ref case first.
6519         (add_conv_candidate, build_object_call, op_error): New fns.
6520         (ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
6521         ({add,build}_builtin_candidate{,s}, print_z_candidates): Display 
6522         builtin candidates.
6523         (build_new_op): Handle CALL_EXPR.  Don't try to decay void.
6524         Fall back on preincrement handling.  Use op_error.  
6525         Handle warn_synth.
6526         (convert_like): Pass INDIRECT_BIND.  Don't try to do anything with 
6527         an error_mark_node.
6528         (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
6529         properly.
6530
6531 Mon Jul 22 16:21:55 1996  Bob Manson  <manson@charmed.cygnus.com>
6532
6533         * pt.c (tsubst_expr): Handle CONTINUE_STMT.
6534
6535 Mon Jul 22 15:38:58 1996  Mike Stump  <mrs@cygnus.com>
6536
6537         * typeck.c (build_component_ref_1): Use build_component_ref
6538         instead of open coding it here.
6539
6540 Mon Jul 22 12:18:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
6541
6542         * g++.c (main): Don't link with -lg++.
6543
6544         NEW_OVER changes:
6545         * cvt.c (convert_to_reference): Don't use convert_from_refeence on
6546         result of build_type_conversion.
6547         (cp_convert): Only call build_method_call for ctors if
6548         build_type_conversion failed.
6549         (ptr_complete_ob): New function.
6550         (TYPE_PTR{,OB,MEM}_P): New macros.
6551         ({add,build}_builtin_candidate{,s}): New functions.
6552         (print_z_candidates): Handle builtins.
6553         (build_user_type_conversion_1): Don't use conversion fns for 
6554         converting to a base type.
6555         (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
6556         (build_user_type_conversion): Use convert_from_reference.
6557         (build_new_op): New function.
6558         (build_over_call): Fix handling of methods.
6559         (compare_ics): Handle AMBIG_CONV properly.
6560         * typeck2.c: Increment abort count.
6561         * method.c (build_opfncall): Forward most requests to build_new_op.
6562         * cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
6563
6564 Fri Jul 19 17:59:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6565
6566         * error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
6567         invalid second argument to dump_expr_list.
6568
6569 Fri Jul 19 14:04:05 1996  Mike Stump  <mrs@cygnus.com>
6570
6571         * decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
6572
6573 Thu Jul 18 14:48:23 1996  Bob Manson  <manson@charmed.cygnus.com>
6574
6575         * decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
6576         ASSEMBLE_EXTERNAL.
6577
6578 Mon Jul 15 17:48:43 1996  Mike Stump  <mrs@cygnus.com>
6579
6580         * typeck2.c (process_init_constructor): New pedwarn for using { }
6581         to initialize a pointer to member function.
6582         * typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
6583         we can avoid the new error.
6584
6585 Mon Jul 15 15:42:03 1996  Mike Stump  <mrs@cygnus.com>
6586
6587         * typeck.c (build_ptrmemfunc1): New function to hide details of
6588         pointer to member functions better.
6589
6590 Mon Jul 15 14:23:02 1996  Mike Stump  <mrs@cygnus.com>
6591
6592         * init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
6593         methods into the actual method, as we know the implied object is
6594         not used.
6595
6596 Mon Jul 15 13:08:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6597
6598         * parse.y (maybecomma_warn): Only emit the pedwarn if we're not
6599         inside a system header.
6600
6601 Fri Jul 12 16:30:05 1996  Bob Manson  <manson@charmed.cygnus.com>
6602
6603         * call.c (build_method_call): Call complete_type on the
6604         instance type.
6605
6606 Thu Jul 11 17:16:40 1996  Mike Stump  <mrs@cygnus.com>
6607
6608         * typeck.c (build_component_ref): Always build up an OFFSET_REF
6609         for obj_ptr->func so that we can know which object to use in a
6610         method call.
6611
6612 Wed Jul 10 19:36:37 1996  Mike Stump  <mrs@cygnus.com>
6613
6614         * typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
6615         around things.  Also improve maintainability.
6616
6617 Wed Jul 10 18:20:11 1996  Bob Manson  <manson@charmed.cygnus.com>
6618
6619         * decl.c (grokdeclarator): Check for overflow when evaluating an
6620         array dimension.
6621
6622 Wed Jul 10 17:26:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
6623
6624         * cvt.c (cp_convert): Don't check for ambiguity with constructor
6625         if NEW_OVER.
6626
6627         * typeck.c (build_x_function_call): Pass function overload
6628         questions to new overloading code if NEW_OVER.
6629         * init.c (expand_aggr_init_1): Only check for type conversion ops
6630         if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
6631         Don't check for ambiguity with constructor if NEW_OVER.
6632         * cvt.c (convert_to_reference): Dereference the result of a type
6633         conversion operator.
6634         (build_conv): Propagate ICS_USER_FLAG.
6635         (implicit_conversion): Call instantiate_type.
6636         Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
6637         (add_function_candidate): Fix cv-quals on argtype.
6638         (print_z_candidates): New function.
6639         (build_new_function_call): Call it.
6640         (build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
6641         consider non-converting constructors.
6642         Call print_z_candidates.
6643         Return an AMBIG_CONV for an ambiguous conversion.
6644         (build_user_type_conversion): Handle AMBIG_CONV.
6645         (convert_like): Fix test for building TARGET_EXPR.
6646         Call instantiate_type.
6647         Handle AMBIG_CONV and LVALUE_CONV.
6648         (build_over_call): Handle 0 args and ellipsis.
6649         * cp-tree.def: Add AMBIG_CONV.
6650
6651 Tue Jul  9 17:48:48 1996  Mike Stump  <mrs@cygnus.com>
6652
6653         * decl.c (lookup_name_real): If we find mem in obj when parsing
6654         `obj->mem', make sure we return the right value.
6655
6656 Tue Jul  9 16:11:28 1996  Bob Manson  <manson@charmed.cygnus.com>
6657
6658         * search.c (get_base_distance): Call complete_type.
6659
6660 Tue Jul  9 12:46:34 1996  Mike Stump  <mrs@cygnus.com>
6661
6662         * decl.c (store_bindings): Make static.
6663
6664 Mon Jul  8 16:42:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
6665
6666         * init.c (expand_aggr_init_1): Don't check type conversions if
6667         NEW_OVER.
6668
6669         * cvt.c (z_candidate): Put back template field.
6670         (add_function_candidate): Set it.
6671         (add_template_candidate): Likewise.
6672         (joust): Use it.
6673         (compare_qual): Handle references and pointers to members.
6674         (compare_ics): Handle reference bindings.
6675
6676         * decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
6677
6678 Mon Jul  8 16:18:56 1996  Bob Manson  <manson@charmed.cygnus.com>
6679
6680         * call.c (compute_conversion_costs): Call complete_type.
6681
6682         * tree.c (vec_binfo_member): Use comptypes instead of comparing
6683         pointers, so we can handle template parameters.
6684
6685 Fri Jul  5 16:51:53 1996  Bob Manson  <manson@charmed.cygnus.com>
6686
6687         * cvt.c (cp_convert_to_pointer): We have to call complete_type
6688         here; let's make it explicit instead of a side effect of an
6689         error check.
6690
6691 Wed Jul  3 16:29:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
6692
6693         * cvt.c (z_candidate): Remove template field.
6694         (reference_binding): Handle binding to temporary.
6695         (implicit_conversion): Likewise.
6696         (add_function_candidate): Handle artificial constructor parms.
6697         Handle functions with too few parms.
6698         (add_template_candidate): New function.
6699         (build_user_type_conversion_1): Handle constructors.
6700         (convert_like): Likewise.
6701         (build_over_call): Likewise.
6702         (build_new_function_call): Support templates.
6703         (compare_ics): Fix reference, inheritance handling.
6704
6705 Mon Jul  1 22:58:18 1996  Bob Manson  <manson@charmed.cygnus.com>
6706
6707         * decl.c: Add signed_size_zero_node.
6708         (init_decl_processing): Build it.
6709         * class.c (prepare_fresh_vtable): Use it instead of size_zero_node
6710         when we're trying to make a negative delta.
6711
6712 Mon Jul  1 17:56:19 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6713
6714         Stop doing this damn index==strchr variable name confusion.
6715         * class.c (add_virtual_function): Change local var INDEX to be
6716         named IDX.
6717         (add_method): Likewise.
6718         * lex.c (print_parse_statistics): Likewise.
6719         * search.c (make_memoized_table_entry): Likewise.
6720         (lookup_fnfields_here): Likewise.
6721         (lookup_field): Likewise.
6722         (lookup_fnfields): Likewise.
6723         (get_baselinks): Likewise.
6724         * sig.c (build_signature_table_constructor): Likewise.
6725         (build_signature_method_call): Likewise.
6726         * typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
6727         (get_member_function_from_ptrfunc): Likewise.
6728         (build_ptrmemfunc): Change local var INDEX to be IDX.
6729         (c_expand_start_case): Likewise.
6730
6731 Sat Jun 29 14:05:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
6732
6733         * cvt.c (cp_convert_to_pointer): Move user-defined type conversion
6734         handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
6735         (convert_to_reference): Use build_type_conversion to convert to
6736         the reference type directly.
6737         (standard_conversion): Fix void* case, non-conversions.
6738         (reference_binding): Fix expr == 0 case, non-conversions.
6739         (convert_like): Support REF_BIND.
6740         (compare_qual): Split out from compare_ics.
6741         (compare_ics): Use it, handle icses with only a qual_conv.
6742
6743         * init.c (expand_vec_init): Don't crash if decl is NULL.
6744
6745 Fri Jun 28 11:52:51 1996  Stan Shebs  <shebs@andros.cygnus.com>
6746
6747         * mpw-config.in: New file, configury for Mac MPW.
6748         * mpw-make.sed: New file, makefile editing for MPW.
6749
6750 Thu Jun 27 15:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
6751
6752         * pt.c (instantiate_class_template): Call repo_template_used.
6753
6754         * search.c (lookup_conversions): Only lookup conversions in
6755         complete types.
6756
6757 Thu Jun 27 12:59:53 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6758
6759         * cp-tree.def: Renamed from tree.def, to avoid confusion with
6760         gcc's tree.def.
6761         * cp-tree.h, lex.c: Include cp-tree.def.
6762         * Makefile.in (CXX_TREE_H): Reference cp-tree.def.
6763
6764 Wed Jun 26 18:29:47 1996  Bob Manson  <manson@charmed.cygnus.com>
6765
6766         * init.c (build_vec_delete_1): Call complete_type.
6767
6768 Mon Jun 24 17:17:32 1996  Mike Stump  <mrs@cygnus.com>
6769
6770         * except.c (start_anon_func): Make sure anonymous functions are
6771         never external.
6772
6773 Fri Jun 21 15:10:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
6774
6775         * decl.c (finish_function): If function_depth > 1, set nested.
6776
6777         * decl2.c (grokbitfield): Revert Bob's change.
6778         * class.c (finish_struct_1): Fix handling of named bitfield widths.
6779
6780 Thu Jun 20 23:35:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
6781
6782         * pt.c (add_pending_template): Handle types.
6783         (lookup_template_class): With -fexternal-templates, just add the class
6784         to pending_templates instead of instantiating it now.
6785         * decl2.c (finish_file): Handle types in pending_templates.
6786
6787 Thu Jun 20 14:08:40 1996  Bob Manson  <manson@charmed.cygnus.com>
6788
6789         * decl2.c (grokbitfield): Handle constant decls appropriately.
6790         Give an appropriate error message now instead of spewing core
6791         later.
6792
6793 Thu Jun 20 13:01:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
6794
6795         * decl2.c: Don't turn on thunks by default for now.
6796
6797 Wed Jun 19 11:37:04 1996  Jason Merrill  <jason@yorick.cygnus.com>
6798
6799         * typeck.c (complete_type): Handle error_mark_node.
6800         (common_type, OFFSET_TYPE): Handle template_type_parms.
6801
6802 Tue Jun 18 10:02:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
6803
6804         * pt.c (instantiate_decl): If at_eof, call import_export_decl
6805         regardless of DECL_INLINE.
6806
6807         * typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
6808
6809         * class.c (finish_struct_bits): Copy TYPE_SIZE.
6810
6811         * rtti.c (build_dynamic_cast): Support templates.
6812         * tree.def: Support DYNAMIC_CAST_EXPR.
6813         * pt.c (tsubst_copy): Likewise.
6814         * decl2.c (build_expr_from_tree): Likewise.
6815
6816 Mon Jun 17 15:23:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
6817
6818         * typeck.c (build_static_cast): Support templates.
6819         (build_const_cast): Likewise.
6820         * tree.def: Support CONST/STATIC_CAST_EXPR.
6821         * pt.c (tsubst_copy): Likewise.
6822         * decl2.c (build_expr_from_tree): Likewise.
6823
6824 Sun Jun 16 12:33:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
6825
6826         * decl2.c (finish_vtable_vardecl): Don't trust
6827         TREE_SYMBOL_REFERENCED for vtables of local classes.
6828
6829 Fri Jun 14 18:13:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
6830
6831         * pt.c (tsubst_copy): Handle operator T.
6832
6833 Wed Jun 12 17:52:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6834
6835         * init.c (build_delete): Move creation of PARMS inside test of
6836         TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
6837
6838 Tue Jun 11 15:09:18 1996  Bob Manson  <manson@charmed.cygnus.com>
6839
6840         * typeck.c (build_conditional_expr): Don't assume that
6841         the arguments to ?: are always pointers or records.
6842
6843 Tue Jun 11 13:56:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
6844
6845         * decl2.c (import_export_decl): Still emit static/weak/comdat
6846         copies of inline template functions with -fno-implicit-templates.
6847
6848 Tue Jun 11 11:42:13 1996  Bob Manson  <manson@charmed.cygnus.com>
6849
6850         * init.c (build_delete): Determine the complete basetype
6851         path to the destructor we're calling.
6852
6853 Fri Jun  7 15:30:10 1996  Bob Manson  <manson@charmed.cygnus.com>
6854
6855         * decl.c (build_enumerator): Always copy the INTEGER_CST used to
6856         initialize the enum, because we really and truly don't know where
6857         it came from.
6858         (start_enum): Don't copy integer_zero_node because
6859         build_enumerator will do it.
6860
6861 Fri Jun  7 11:11:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
6862
6863         * decl.c (finish_function): Do access control on base destructors.
6864
6865         * pt.c (tsubst, case FUNCTION_DECL): Set up
6866         IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
6867         hose us.
6868
6869 Fri Jun  7 10:37:33 1996  Mike Stump  <mrs@cygnus.com>
6870
6871         * cvt.c (build_up_reference): If we have already extended the
6872         lifetime of the temporary, don't try it again.
6873         * typeck.c (c_expand_return): Don't try and convert the return
6874         value twice when we want a reference, once is enough.
6875         
6876 Tue Jun  4 15:41:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
6877
6878         * pt.c (tsubst_expr, case DECL_STMT): Don't pass
6879         LOOKUP_ONLYCONVERTING at all for now.
6880
6881         * search.c (add_conversions): Put the conversion function in
6882         TREE_VALUE, the basetype in TREE_PURPOSE.
6883         * cvt.c (build_type_conversion): Adjust.
6884         * cvt.c (build_expr_type_conversion): Adjust.
6885         * call.c (user_harshness): Adjust.
6886
6887 Mon Jun  3 15:30:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
6888
6889         * method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
6890         backend's benefit.
6891
6892 Mon Jun 10 18:58:19 1996  Mike Stump  <mrs@cygnus.com>
6893
6894         * except.c (expand_start_catch_block): Add a dummy region, if we
6895         get an error, so that we can avoid core dumping later.
6896
6897 Fri May 31 14:56:13 1996  Mike Stump  <mrs@cygnus.com>
6898
6899         * cp-tree.h (OFFSET_REF): Remove.
6900         * tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
6901         * expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
6902         * init.c (expand_aggr_init_1): Likewise.
6903         (build_new): Likewise.
6904         * typeck.c (expand_target_expr): Likewise.
6905
6906 Fri May 31 14:22:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
6907
6908         * typeck.c (build_modify_expr): Don't use TREE_VALUE on a
6909         TARGET_EXPR.
6910
6911 Wed May 29 17:04:33 1996  Mike Stump  <mrs@cygnus.com>
6912
6913         * cvt.c (build_up_reference): Redo how and when temporaries are
6914         created.
6915         * decl.c (grok_reference_init): Don't try and be smart about
6916         running cleanups.
6917
6918 Wed May 29 16:02:08 1996  Mike Stump  <mrs@cygnus.com>
6919
6920         * cvt.c (build_up_reference): Add NULL_TREE to all calls to build
6921         (TARGET_EXPR...), now that it has 4 arguments.
6922         * tree.c (build_cplus_new): Likewise.
6923
6924 Thu May 23 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
6925
6926         * error.c (dump_expr, case CAST_EXPR): Handle T() properly.
6927
6928         * pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
6929         * decl.c (struct saved_scope): Remove named_labels,
6930         {base,member}_init_list.
6931         (maybe_push_to_top_level): Don't set them.  Call
6932         push_cp_function_context if appropriate.
6933         (pop_from_top_level): Likewise.
6934
6935         * method.c (do_build_assign_ref): Remove obsolete check of
6936         TYPE_HAS_ASSIGN_REF (basetype).
6937
6938         * decl.c (grokfndecl): Diagnose user definition of
6939         implicitly-declared methods.
6940
6941 Thu May 23 12:13:08 1996  Bob Manson  <manson@charmed.cygnus.com>
6942
6943         * method.c (do_build_copy_constructor): Add code to give
6944         meaningful error messages instead of crashing.
6945         (do_build_assign_ref): Don't synthesize assignment operators for
6946         classes containing reference or const members.
6947
6948         * class.c (struct base_info): Remove cant_synth_copy_ctor
6949         and cant_synth_asn_ref.
6950         (finish_base_struct): Remove the code that tries to conditionalize
6951         synthesis of copy constructors & assignment operators based on
6952         access permissions. Instead, let it fail when it tries to
6953         synthesize the copy constructor. This will give meaningful error
6954         messages instead of silently generating code to perform a bitcopy.
6955
6956 Wed May 22 11:45:19 1996  Bob Manson  <manson@charmed.cygnus.com>
6957
6958         * lex.c (real_yylex): Remove old-n-crufty #if 0 code for
6959         determining types for constant values.
6960
6961         * decl.c (struct named_label_list): Use instead of stuffing
6962         random items into a TREE_LIST node.
6963         (named_label_uses): Use the new struct.
6964         (poplevel): Likewise.
6965         (lookup_label): Likewise.
6966         (define_label): Add an error message to tell the user the line
6967         where the goto is located in addition to the destination of the
6968         goto.
6969         (init_decl_processing): Use NULL instead of NULL_TREE to initialize
6970         named_label_uses.
6971         (finish_function): Likewise.
6972         
6973         (start_decl): Complain about defining a static data member
6974         in a different type from which it was declared.
6975
6976 Wed May 22 09:33:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
6977
6978         * cvt.c (build_expr_type_conversion): Adjust.
6979
6980 Tue May 21 11:21:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
6981
6982         * call.c (build_method_call): Always convert 'this' to the
6983         appropriate type.
6984
6985         * search.c (add_conversions): Put the conversion function in
6986         TREE_VALUE, the type in TREE_PURPOSE.
6987         * cvt.c (build_type_conversion): Adjust.
6988         * call.c (user_harshness): Adjust.
6989
6990         * method.c (emit_thunk): Call temporary_allocation and
6991         permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
6992
6993         * tree.c (build_cplus_array_type): Handle tweaking of
6994         TYPE_MAIN_VARIANT here.
6995         * typeck.c (common_type): Not here.
6996
6997         * typeck.c (complete_type): Only try to complete an array type if
6998         it has a domain.
6999
7000 Mon May 20 14:55:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
7001
7002         * decl.c (grokvardecl): Call complete_type.
7003         (grokdeclarator): Call complete_type for PARM_DECLs.
7004
7005 Fri May 17 16:41:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
7006
7007         * pt.c (instantiate_class_template): Re-set
7008         CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
7009
7010 Fri May 17 14:56:55 1996  Mike Stump  <mrs@cygnus.com>
7011
7012         * cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
7013         smart enough to do it right.
7014         * tree.c (cp_expand_decl_cleanup): Likewise.
7015         * decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
7016         cp_expand_decl_cleanup.
7017         (store_parm_decls): Likewise.
7018         (hack_incomplete_structures): Likewise.
7019         * except.c (push_eh_cleanup): Likewise.
7020
7021 Fri May 17 13:13:51 1996  Mike Stump  <mrs@cygnus.com>
7022
7023         * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
7024         frontend to the backend where it belongs.
7025         * tree.c (unsave_expr): Likewise.
7026         (unsave_expr_now): Likewise.
7027         * tree.def (UNSAVE_EXPR): Likewise.
7028         * cp-tree.h (unsave_expr): Likewise.
7029         (unsave_expr_now): Likewise.
7030
7031 Fri May 17 11:02:41 1996  Mike Stump  <mrs@cygnus.com>
7032
7033         * init.c (emit_base_init): Make sure the partial EH cleanups live
7034         on the function_obstack.
7035
7036 Thu May 16 15:29:33 1996  Bob Manson  <manson@charmed.cygnus.com>
7037
7038         * expr.c (do_case): Don't try to dereference null TREE_TYPEs
7039         when checking for pointer types.
7040
7041 Thu May 16 13:38:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
7042
7043         * pt.c (instantiate_class_template): Remove obsolete check for
7044         access declarations.
7045
7046 Thu May 16 13:34:15 1996  Mike Stump  <mrs@cygnus.com>
7047
7048         * call.c (build_overload_call): Simplify calls to
7049         build_overload_call by removing last parameter.
7050         (build_method_call): Likewise.
7051         * cp-tree.h: Likewise.
7052         * method.c (build_opfncall): Likewise.
7053         * typeck.c (build_x_function_call): Likewise.
7054
7055 Thu May 16 13:15:43 1996  Mike Stump  <mrs@cygnus.com>
7056
7057         * call.c (default_parm_conversions): Factor out common code.
7058         (build_method_call): Use it.
7059         (build_overload_call_real): Use it.
7060
7061 Wed May 15 14:46:14 1996  Mike Stump  <mrs@cygnus.com>
7062
7063         * call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
7064         but pedwarn as the code is bogus.
7065         * typeck.c (decay_conversion): Likewise.
7066         (build_function_call_real): Use build_addr_func instead of
7067         default_conversion.  Don't allow pointer-to-method functions down
7068         here.
7069         (build_unary_op): Use real pointer-to-member functions instead of
7070         fake ones.
7071         (build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
7072         (convert_for_assignment): Removed some obsolete code.
7073         * decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
7074         build_x_function_call instead of current_class_ptr.  Only call
7075         digest_init once on an initializer, we do this just checking
7076         TREE_TYPE.
7077         (build_expr_from_tree): Pass current_class_ref to
7078         build_x_function_call instead of current_class_ptr.
7079         * init.c (build_member_call): Likewise.
7080         * pase.y: Likewise.
7081         * error.c (dump_expr): Handle OFFSET_REFs better.
7082         * pt.c (unify): Handle pointer-to-member functions better.
7083         * decl.c (finish_function): Clear out current_class_ref just like
7084         we do for current_class_ptr.
7085
7086         * typeck.c (get_delta_difference): Handle virtual bases better.
7087
7088 Tue May 14 16:37:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
7089
7090         * sig.c (build_signature_table_constructor): Use the delta for
7091         the original basetype for this virtual function with thunks.
7092         (build_signature_method_call): We still need to adjust 'this'
7093         with thunks.
7094
7095 Tue May 14 16:27:25 1996  Mike Stump  <mrs@cygnus.com>
7096
7097         * call.c (build_addr_func): New routine.  Used to get the `real'
7098         address of a function or a method.  Needed to avoid getting a
7099         pointer-to-member function.
7100         (build_call): New routine to build CALL_EXPRs.
7101         (build_method_call): Use it.
7102         * cvt.c (convert_to_aggr): Likewise.
7103         * typeck.c (build_function_call_real): Likewise.
7104         * sig.c (build_signature_table_constructor): Use build_addr_func.
7105         * cp-tree.h (build_call, build_addr_func): Declare them.
7106
7107 Tue May 14 12:47:47 1996  Mike Stump  <mrs@cygnus.com>
7108
7109         * cp-tree.h (LOOKUP_AGGR): Remove, unused.
7110         * parse.y: Remove uses of LOOKUP_AGGR.
7111
7112 Tue May 14 12:07:51 1996  Mike Stump  <mrs@cygnus.com>
7113
7114         * *.[chy]: Rename current_class_decl to current_class_ptr, and
7115         C_C_D to current_class_ref.
7116
7117 Mon May 13 16:55:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
7118
7119         * call.c (convert_harshness): Tighten up pointer conversions.
7120
7121 Sat May 11 04:33:50 1996  Doug Evans  <dje@canuck.cygnus.com>
7122
7123         * decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
7124         (finish_file): Likewise.
7125
7126 Fri May 10 11:09:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
7127
7128         * cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
7129
7130         * method.c (emit_thunk): Set flag_omit_frame_pointer in default
7131         code.
7132
7133 Thu May  9 18:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
7134
7135         * decl2.c: Turn on thunks by default where supported.
7136
7137 Tue May  7 20:39:57 1996  Mike Stump  <mrs@cygnus.com>
7138
7139         * cp-tree.h (build_overload_call_maybe): Removed.
7140         * call.c (build_overload_call_real): Invert meaning of last arg to
7141         be require_complete.
7142         (build_overload_call): Likewise.
7143         * typeck.c (build_x_function_call): Use build_overload_call_real
7144         instead of build_overload_call_maybe.
7145
7146 Mon May  6 01:23:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
7147
7148         * decl2.c (finish_file): Don't try to emit functions that haven't
7149         been compiled.
7150
7151 Fri May  3 09:30:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
7152
7153         * decl2.c (finish_vtable_vardecl): Oops.
7154
7155         * decl.c (maybe_push_to_top_level): Do save previous_class_*.
7156         Also store the bindings from previous_class_values.
7157         (pop_from_top_level): Restore them.
7158
7159 Thu May  2 21:56:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
7160
7161         * decl2.c (finish_vtable_vardecl): Only write out vtable if its
7162         symbol has been referenced.
7163         (finish_file): Re-join synthesis/vtable loop with inline emission
7164         loop, disable inlining when an inline is output.
7165
7166 Thu May  2 17:20:02 1996  Mike Stump  <mrs@cygnus.com>
7167
7168         * except.c (init_exception_processing): Setup saved_in_catch.
7169         (push_eh_cleanup): Reset __eh_in_catch.
7170         (expand_start_catch_block): Set __eh_in_catch.
7171
7172 Thu May  2 16:21:17 1996  Mike Stump  <mrs@cygnus.com>
7173
7174         * except.c (push_eh_cleanup): Add tracking for whether or not we
7175         have an active exception object.
7176         (expand_builtin_throw): Use it to make sure a rethrow without an
7177         exception object is caught.
7178
7179 Thu May  2 11:26:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
7180
7181         * decl.c (maybe_push_to_top_level): Clear out class-level bindings
7182         cache.
7183
7184 Wed May  1 11:26:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
7185
7186         * decl2.c (finish_file): Also use sentries for vars with
7187         DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
7188         created).
7189
7190         * lex.c (handle_cp_pragma): Disable #pragma
7191         interface/implementation if SUPPORTS_ONE_ONLY > 1.
7192
7193 Tue Apr 30 11:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
7194
7195         * method.c (emit_thunk): Wrap default case in
7196         temporary/permanent_allocation.
7197
7198         * method.c (make_thunk): Use DECL_ONE_ONLY.
7199         (emit_thunk): Call assemble_end_function.
7200
7201 Mon Apr 29 15:38:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
7202
7203         * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
7204         (import_export_decl): Likewise.
7205         (finish_prevtable_vardecl): Disable vtable hack if
7206         SUPPORTS_ONE_ONLY > 1.
7207
7208 Mon Apr 29 14:32:47 1996  Mike Stump  <mrs@cygnus.com>
7209
7210         * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
7211         PREDECREMENT_EXPRs take two arguments, not one.
7212
7213 Mon Apr 29 00:27:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
7214
7215         * class.c (build_vtable_entry): Don't build thunks for abstract
7216         virtuals.
7217
7218         * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
7219         frontend.
7220
7221 Sat Apr 27 16:45:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
7222
7223         * class.c (set_rtti_entry): Use size_zero_node.
7224         (build_vtable): Likewise.
7225
7226 Sat Apr 27 14:48:57 1996  Jason Merrill  <jason@phydeaux.cygnus.com>
7227
7228         * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
7229         (prepare_fresh_vtable): Likewise.
7230
7231 Fri Apr 26 13:14:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
7232
7233         * method.c (emit_thunk): Call mark_used on the target function.
7234
7235         * call.c (build_method_call): Don't warn about pending templates.
7236
7237 Thu Apr 25 14:55:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
7238
7239         * decl2.c (finish_file): Fix list walking logic.
7240
7241         * typeck2.c (check_for_new_type): Only warn if -pedantic.
7242
7243 Wed Apr 24 15:41:15 1996  Bob Manson  <manson@charmed.cygnus.com>
7244
7245         * class.c (finish_struct_1): Remove old code for
7246         dont_allow_type_definitions.
7247         * cp-tree.h: Likewise.
7248         * spew.c: Make sure cp-tree.h is included before parse.h, so the
7249         definition of flagged_type_tree is found before it is used.
7250         * lex.c: Likewise.
7251         * parse.y: Added the ftype member to the type union, and changed a
7252         number of rules to use it instead of ttype. Added calls to
7253         check_for_new_type() as appropriate.
7254         * typeck2.c (check_for_new_type): New function for checking
7255         if a newly defined type appears in the specified tree.
7256         * cp-tree.h: Add new type flagged_type_tree. Add a prototype
7257         for check_for_new_type().
7258
7259 Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
7260
7261         * decl2.c (finish_file): Only use a sentry if the decl is public.
7262
7263         * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
7264         don't pass LOOKUP_ONLYCONVERTING.
7265
7266 Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
7267
7268         * typeck.c (common_type): Fix the ARRAY_TYPE case so it
7269         properly keeps track of const and volatile type modifiers.
7270
7271 Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
7272
7273         * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
7274         * pt.c (comp_template_args): Use it.
7275
7276         * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
7277         assemble_external for artificial function decls.
7278
7279         * decl.c (cp_finish_decl): Oops.
7280
7281 Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
7282
7283         * decl2.c (import_export_decl): Put static data member templates
7284         into common storage, or make them weak, depending on whether they
7285         are dynamically or statically initialized.
7286         (get_sentry): New function.
7287         (finish_file): Do import_export_decl for static data members before
7288         building the init/fini functions.  Don't init/fini a variable that's
7289         EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
7290         push/pop_temp_slots.
7291         * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
7292         expand_static_init thang.
7293         * method.c (get_id_2): New function.
7294
7295 Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
7296
7297         * parse.y (empty_parms): Make sure we use C++-style prototypes
7298         when we're declaring member functions.
7299
7300 Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
7301
7302         * Makefile.in (CONFLICTS): 16 s/r conflicts.
7303         * parse.y (self_template_type): New nonterminal.
7304
7305 Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
7306
7307         * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
7308         name.
7309         * parse.y (base_class.1): Allow 'typename foo::bar'.
7310
7311         * lex.c (check_newline): Remove #pragma code that plays with the
7312         input stream, since we now deal with tokens.  Clear nextchar when
7313         we're done.
7314         (handle_cp_pragma): Use real_yylex.
7315         (handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
7316         in one place.
7317
7318         * lex.c (check_for_missing_semicolon): Handle SELFNAME.
7319
7320         * lex.c (handle_cp_pragma): Fix "#pragma implementation".
7321
7322 Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
7323
7324         * parse.y: New token SELFNAME for potential constructor.
7325         * spew.c (yylex): Handle it.
7326         * lex.c (identifier_type): Produce it.
7327
7328         * parse.y (complete_type_name): In :: case, don't push class binding.
7329         (complex_type_name): Likewise.
7330
7331 Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
7332
7333         * typeck.c (build_reinterpret_cast): Handle pointer to member
7334         functions.
7335
7336 Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7337
7338         * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
7339         pragmas.
7340         (check_newline): Put the vtable/unit/implementation/interface pragma
7341         code into handle_cp_pragma, replacing it with a call.
7342         (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
7343         args.  Get the next token after handling the pragma token.
7344
7345 Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
7346
7347         * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
7348         (convert_to_pointer_force): Likewise.
7349
7350         * init.c (build_new): Fix array new without -fcheck-new.
7351
7352 Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
7353
7354         * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
7355         tree.c: Lose TYPE_NESTED_NAME.
7356
7357         * parse.y (nested_name_specifier_1): Don't treat non-identifiers
7358         as identifiers.
7359
7360         * tree.def: Add VEC_INIT_EXPR.
7361         * expr.c (cplus_expand_expr): Handle it.
7362         * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
7363         the extra file-scope symbol nastiness.
7364
7365 Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
7366
7367         * method.c (make_thunk): Thunks are static.
7368         (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
7369
7370         * decl2.c (mark_vtable_entries): Emit thunks as needed.
7371         (finish_file): Don't emit them here.
7372
7373 Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
7374
7375         * rtti.c (build_dynamic_cast): Handle null pointers.
7376         (ifnonnull): New function.
7377
7378 Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
7379
7380         * call.c (build_method_call): Remember the original basetype we
7381         were called with. Give an error message instead of trying
7382         (incorrectly) to call a non-static member function through a
7383         non-inherited class.
7384
7385         * search.c (expand_upcast_fixups): Mark the new fixup as
7386         DECL_ARTIFICIAL.
7387
7388 Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
7389
7390         * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
7391
7392         * class.c (set_rtti_entry): Fix for thunks.
7393
7394         * decl2.c (import_export_decl): Still emit typeinfo fns for
7395         cv-variants of builtin types.
7396
7397         * rtti.c (expand_class_desc): Set up base_info_type_node here.
7398         (init_rtti_processing): Instead of here.
7399
7400 Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
7401
7402         * rtti.c (init_rtti_processing): Do init regardless of -frtti.
7403         (build_typeid): Only complain about taking dynamic typeid without
7404         -frtti.
7405
7406         * decl2.c: flag_rtti defaults to 1.
7407
7408         * rtti.c (get_tinfo_var): The general class case is now smaller.
7409         (init_rtti_processing): Pack the latter three fields of base_info
7410         into 32 bits.
7411
7412 Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
7413
7414         * init.c (expand_member_init): Don't dump if name is NULL_TREE.
7415
7416 Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
7417
7418         * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
7419         (push_memoized_context): Split out code to undefer pop_type_level to
7420         (clear_memoized_cache): here.
7421         (pop_memoized_context): We can only handle one layer of deferral of
7422         pop_type_level so clear the cache, if there was a previous level.
7423
7424 Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
7425
7426         * rtti.c (init_rtti_processing): Build up base_info_type_node.
7427         (expand_class_desc): Use one pointer to an array of base_info
7428         structs, passed using a CONSTRUCTOR.
7429
7430 Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
7431
7432         * class.c (build_vbase_path): Remove block extern for
7433         flag_assume_nonnull_objects here.
7434         (build_vfn_ref): Split out functionality into build_vtbl_ref.
7435         (build_vtbl_ref): New routine.
7436         (build_vtable): Set up rtti info here.
7437         (add_virtual_function): Note in CLASSTYPE_RTTI the best
7438         place where we can get the rtti pointers from to avoid having to
7439         search around for a place.
7440         (finish_base_struct): Likewise.
7441         (finish_struct_1): Likewise.  Never create totally new vtables
7442         with totally new vtable pointers for rtti.  Disable code to layout
7443         vtable pointers better until we want to break binary
7444         compatibility.
7445         * rtti.c (build_headof_sub): New routine to convert down to a
7446         sub-object that has an rtti pointer in the vtable.
7447         (build_headof): Use it.  Also, use build_vtbl_ref now to be more
7448         maintainable.
7449         (build_dynamic_cast): Make sure we have saved it, if we need to.
7450         * search.c (dfs_init_vbase_pointers): Disable code that deals with
7451         a more efficient vtable layout, enable later.
7452         * call.c (flag_assume_nonnull_objects): Moved declaration to
7453         * cp-tree.h: here.  Declare build_vtbl_ref.
7454         * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
7455         function calls that want a tree.
7456
7457 Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
7458
7459         * rtti.c (build_dynamic_cast): Handle downcasting to X* given
7460         other X subobjects in the most derived type.  Ack.
7461
7462         * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
7463         get_typeid will do it for us.
7464         (get_typeid_1): Break out call-building for expand_*_desc to use.
7465         (get_typeid): Call it.
7466         (expand_*_desc): Likewise.
7467         * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
7468         and void *.
7469         (init_decl_processing): Lose builtin_type_tdescs lossage.
7470         * decl2.c (finish_vtable_vardecl): Remove obsolete code.
7471
7472 Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
7473
7474         * pt.c (tsubst): When calling set_nested_typename, use
7475         TYPE_NESTED_NAME (current_class_type) instead of
7476         current_class_name.
7477
7478         * decl.c (pushdecl): Likewise.
7479         (pushdecl_class_level): Likewise.
7480         (grokdeclarator): Use NULL_TREE instead of 0 in the call to
7481         set_nested_typename.
7482
7483 Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
7484
7485         * rtti.c (synthesize_tinfo_fn): Handle arrays.
7486
7487         * cp-tree.h (DECL_REALLY_EXTERN): New macro.
7488
7489 Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
7490
7491         * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
7492         (init_rtti_processing): Lose bad_cast_type.
7493         (build_dynamic_cast): Use throw_bad_cast.
7494
7495         * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
7496
7497         * decl2.c (finish_file): Don't synthesize artificial functions
7498         that are external and not inline.
7499
7500         * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
7501
7502         * decl2.c (finish_file): Handle having new inlines added to
7503         saved_inlines by synthesis.
7504
7505         * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
7506
7507 Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
7508
7509         RTTI rewrite to initialize nodes as needed, not require that
7510         users #include <typeinfo>, complete functionality and reduce wasted 
7511         space.
7512         * rtti.c (init_rtti_processing): New fn.
7513         (build_typeid): The vtable entry is now a function.
7514         (get_tinfo_var): New fn.
7515         (get_tinfo_fn): Likewise.
7516         (get_typeid): Use it.
7517         (build_dynamic_cast): Declare and use entry point __dynamic_cast.
7518         (build_*_desc): Rename to expand_*_desc and rewrite to use entry
7519         points __rtti_*.
7520         (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
7521         (synthesize_tinfo_fn): New fn.
7522         * method.c (build_t_desc_overload): Lose.
7523         (build_overload_with_type): More generic.
7524         * decl.c (init_decl_processing): Call init_rtti_processing.
7525         * class.c (set_rtti_entry): Use get_tinfo_fn.
7526         * decl2.c (mark_vtable_entries): Mark the rtti function.
7527         (finish_prevtable_vardecl): Don't build_t_desc.
7528         (import_export_decl): Handle tinfo functions.
7529         (finish_file): Likewise.
7530         * typeck.c (inline_conversion): New fn.
7531         (build_function_call_real): Use it.
7532         * cp-tree.h: Add decls.
7533
7534         * method.c (hack_identifier): Also convert component_refs from
7535         references.
7536
7537         * lex.c (cons_up_default_function): Use the type, not the name, in
7538         declspecs.
7539
7540         * decl2.c (import_export_vtable): Fix weak vtables.
7541
7542 Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
7543
7544         * search.c (get_base_distance_recursive): Fix access checks for
7545         protected bases.
7546
7547 Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7548
7549         * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
7550         cp-tree.h.
7551         (convert_harshness): Add prototypes wrapped by PROTO.
7552         * decl2.c (grok_function_init): Likewise.
7553         (do_toplevel_using_decl): Change to void return type.
7554         * class.c (build_vtable_entry): Remove decl of make_thunk.
7555         (merge_overrides): Fix order of arg definitions.
7556         (finish_vtbls): Likewise.
7557         (fixup_vtable_deltas): Likewise.
7558         (modify_all_direct_vtables): Likewise.
7559         (modify_all_indirect_vtables): Likewise.
7560         * search.c (get_base_distance_recursive): Likewise.
7561         (get_abstract_virtuals_1): Likewise.
7562         (fixup_virtual_upcast_offsets): Likewise.
7563         (lookup_fnfields_1): Add prototypes wrapped by PROTO.
7564         * init.c (perform_member_init): Fix order of arg definitions.
7565         (expand_aggr_init_1): Add prototypes wrapped by PROTO.
7566         * cp-tree.h (make_thunk): Add decl.
7567         (overload_template_name, push_template_decl): Add decls.
7568         (do_toplevel_using_decl): Change to void return type.
7569         (vec_binfo_member): Add decl.
7570
7571 Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7572
7573         * typeck.c (mark_addressable, convert_for_assignment,
7574         convert_for_initialization, pointer_int_sum, pointer_diff,
7575         unary_complex_lvalue): Add prototypes wrapped by PROTO.
7576         (convert_sequence): #if 0 fn decl, since definition also is.
7577
7578 Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
7579
7580         * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
7581         cast to pointer types for type searching.
7582
7583 Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7584
7585         * typeck.c (get_delta_difference): Use cp_error, not error, in the
7586         case where BINFO == 0.
7587
7588 Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
7589
7590         * call.c (build_method_call): Fix wording of error messages so
7591         constructors come out right.
7592
7593 Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
7594
7595         * decl.c (push_overloaded_decl): Don't warn about hidden
7596         constructors when both the type and the function are declared
7597         in a system header file.
7598
7599 Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
7600
7601         * class.c (finish_struct_1): Propagate the TYPE_PACKED
7602         flag for the type to the type's fields.
7603
7604 Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7605
7606         * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
7607
7608 Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
7609
7610         * class.c (base_info, finish_base_struct): Replace 
7611         needs_virtual_dtor with base_has_virtual.
7612
7613         (finish_struct_1): Remove the old code that tried to make default
7614         destructors virtual. Use base_has_virtual when checking if we need
7615         to add a vtable entry for the rtti code.
7616
7617 Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
7618
7619         * pt.c (push_template_decl): Complain about template decl with
7620         inappropriate declaration.
7621
7622 Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
7623
7624         * typeck.c (build_x_unary_op): Remove bogus check for taking
7625         the address of a member function.
7626
7627 Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
7628
7629         * parse.y (constructor_declarator): Only push the class if
7630         we are not already in the class.
7631
7632 Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
7633
7634         * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
7635         Add additional argument to INIT_CUMULATIVE_ARGS.
7636
7637 Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
7638
7639         * decl.c (shadow_tag): Fix error about anon union with methods.
7640
7641         * parse.y (self_reference): Only generate a self-reference if this
7642         is a non-template class.
7643         (opt.component_decl_list): Only use it if it was generated.
7644
7645         * parse.y (component_decl_1): Use constructor_declarator.
7646         (fn.def2): Likewise.
7647         (notype_component_declarator0): Likewise.
7648
7649 Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
7650
7651         * typeck.c (build_x_unary_op): Add checks for taking the address
7652         of a TARGET_EXPR or of a member function, and give appropriate
7653         warnings.
7654
7655 Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
7656
7657         * pt.c (process_template_parm): Allow template type parms to be
7658         used as types for template const parms.
7659
7660 Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
7661
7662         * init.c (expand_vec_init): Ensure the eh cleanups are on the
7663         function_obstack.
7664
7665 Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
7666
7667         * decl.c (lookup_name_real): Be even more picky about the
7668         ambiguous lookup warning.
7669         (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
7670         * parse.y (constructor_declarator): Rather than here.
7671
7672         * parse.y (constructor_declarator): New nonterminal.
7673         (fn.def1): Use it.
7674         (explicit_instantiation): Likewise.
7675
7676 Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
7677
7678         Add implicit declaration of class name at class scope.
7679         * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
7680         * parse.y (self_reference): New nonterminal.
7681         (opt.component_decl_list): Use it.
7682         (fn.def1): Add nested_name_specifier type_name cases.
7683         * class.c (build_self_reference): New function.
7684         (finish_struct): Handle access_default later, move self-reference
7685         decl to the end.
7686         * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
7687         * cp-tree.h: Adjust.
7688
7689         * pt.c (do_function_instantiation): Separate handling of member
7690         functions and non-member functions properly.
7691
7692 Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
7693
7694         * pt.c (process_template_parm): Improve error for 'volatile class K'.
7695
7696         * class.c (finish_struct_1): Check the right slot for destructors.
7697
7698         * decl.c (start_enum): Complain about enum templates.
7699
7700 Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
7701
7702         * init.c (resolve_offset_ref): Offset pointers to member data by one.
7703         * typeck.c (unary_complex_lvalue): Likewise.
7704
7705 Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
7706
7707         * typeck.c (c_expand_return): Check for a returned local
7708         array name, similar to the check for an ADDR_EXPR.
7709
7710 Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
7711
7712         * decl.c (cp_finish_decl): Don't build cleanups for static
7713         variables here.
7714
7715 Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
7716
7717         * typeck.c (build_modify_expr): Fix error messages to be more
7718         accurate.
7719         * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
7720         assignment operators.
7721         * error.c (assop_as_string): Likewise.  Add support for `%Q' for
7722         assignment operators.
7723
7724 Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
7725
7726         * decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
7727         give an error if initialized.  Pedwarn about nested type with the
7728         same name as its enclosing class.
7729
7730         * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
7731
7732         * typeck.c (require_complete_type): Be sure to instantiate the
7733         MAIN_VARIANT of the type.
7734
7735         * decl2.c (finish_file): Instantiate pending templates before
7736         processing static constructors and destructors.
7737
7738         * pt.c (instantiate_decl): Don't instantiate functions at toplevel
7739         unless at_eof.
7740
7741 Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
7742
7743         * decl2.c (delete_sanity): If error_mark_node is passed
7744         in as an expression, quit while we're ahead.
7745
7746         * decl.c (grokdeclarator): Give an error message if `friend'
7747         is combined with any storage class specifiers.
7748
7749 Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
7750
7751         * parse.y (named_complex_class_head_sans_basetype): Don't crash on
7752         definition of nonexistent nested type.
7753
7754         * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
7755         not to say 'typedef'.
7756
7757 Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7758
7759         * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
7760         * search.c (dfs_walk, dfs_init_vbase_pointers,
7761         expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
7762         (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
7763
7764 Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
7765
7766         * except.c (build_throw): Support minimal parse.
7767         * pt.c (tsubst_copy): Support THROW_EXPR.
7768         * decl2.c (build_expr_from_tree): Likewise.
7769
7770         * pt.c (mangle_class_name_for_template): Always allocate
7771         scratch_firstobj.
7772
7773 Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
7774
7775         * cvt.c (cp_convert_to_pointer): Give an appropriate error
7776         when trying to cast from an incomplete type.
7777
7778 Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
7779
7780         * pt.c (instantiate_class_template): Don't bother setting up
7781         CLASSTYPE_TAGS explicitly, as the nested types will add
7782         themselves.
7783
7784 Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
7785
7786         * decl.c (shadow_tag): Remove old error check for usage of
7787         an enum without a previous declaration.
7788         (xref_tag): Add error message about usage of enums without a
7789         previous declaration.
7790
7791 Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
7792
7793         * lex.c (do_identifier): Only do name consistency check if we're
7794         parsing.
7795
7796         * pt.c (push_template_decl): Don't crash if we get a member defn
7797         that doesn't match.
7798
7799         * decl.c (xref_tag_from_type): New function to do an xref without
7800         always having to figure out code_type_node.
7801         * cp-tree.h: Declare it.
7802         * pt.c (instantiate_class_template): Use it for friend classes.
7803         (lookup_template_class): Use it.
7804
7805         * typeck2.c (build_functional_cast): Pull out a single parm before
7806         passing it to build_c_cast.
7807
7808 Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
7809
7810         * expr.c (do_case): Give an error message if a pointer is
7811         given as a case value.
7812
7813 Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
7814
7815         * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
7816         an overload list.
7817
7818         * lex.c (cons_up_default_function): Really, now, interface hackery
7819         does not apply to synthesized methods.
7820
7821 Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
7822
7823         * call.c (build_method_call): Ctors and dtors now have special names
7824         with respect to lookups.
7825         * class.c (add_method): Likewise.
7826         (grow_method): Likewise.
7827         (finish_struct_methods): Likewise.
7828         (warn_hidden): Likewise.
7829         (finish_struct_1): Likewise.
7830         * cvt.c (convert_to_reference): Likewise.
7831         (convert_to_aggr): Likewise.
7832         (cp_convert): Likewise.
7833         * decl2.c (check_classfn): Likewise.
7834         * init.c (expand_member_init): Likewise.
7835         (expand_default_init): Likewise.
7836         (expand_aggr_init_1): Likewise.
7837         (build_offset_ref): Likewise.
7838         (build_new): Likewise.
7839         (build_delete): Likewise.
7840         * lex.c (do_inline_function_hair): Likewise.
7841         * search.c (lookup_field_1): Likewise.
7842         (lookup_fnfields_here): Likewise.
7843         (lookup_field): Likewise.
7844         (lookup_fnfields): Likewise.
7845         (get_virtual_destructor): Likewise.
7846         (dfs_debug_mark): Likewise.
7847         (dfs_pushdecls): Likewise.
7848         (dfs_compress_decls): Likewise.
7849         * tree.c (layout_basetypes): Likewise.
7850         * typeck.c (build_component_ref): Likewise.
7851         (build_x_function_call): Likewise.
7852         (build_modify_expr): Likewise.
7853         (convert_for_initialization): Likewise.
7854         (build_functional_cast): Likewise.
7855         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
7856         (CTOR_NAME): New.
7857         (DTOR_NAME): New.
7858         * decl.c (ctor_identifier): New.
7859         (dtor_identifier): New.
7860         (init_decl_processing): Set them.
7861
7862 Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
7863
7864         * typeck.c (build_component_ref): Don't get confused by fields whose
7865         context has no type name, like pointer to member functions.
7866
7867 Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
7868
7869         * decl.c (grokdeclarator): Handle typedef without declarator.
7870
7871         * pt.c (tsubst): Handle SCOPE_REF in declarator.
7872
7873         * parse.y (bad_parm): Catch another case of missing `typename'.
7874
7875         * lex.c (yyprint): Handle TYPE_DECLs.
7876
7877         * decl.c (start_function): Don't try to be clever.
7878
7879         * lex.c: Lose compiler_error_with_decl.
7880         * typeck2.c: Lose error_with_aggr_type.
7881         (incomplete_type_error): Use cp_* instead of old functions.
7882         (readonly_error): Likewise.
7883         * typeck.c (convert_arguments): Likewise.
7884         * search.c (lookup_nested_field): Likewise.
7885         * method.c (make_thunk): Likewise.
7886         * decl.c (grokparms): Likewise.
7887         * cp-tree.h: Update.
7888
7889         * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
7890         and value.
7891
7892 Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
7893
7894         * method.c (build_opfncall): When deleting a pointer to an
7895         array, build a new pointer to the tree past any ARRAY_TYPE
7896         nodes.
7897
7898 Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7899
7900         * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
7901
7902 Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
7903
7904         * pt.c (instantiate_decl): Only call import_export_decl if at_eof
7905         and ! DECL_INLINE.
7906
7907         * decl.c (finish_function): Don't set nested based on
7908         hack_decl_function_context.
7909         * parse.y (function_try_block): Check for nested function.
7910         (pending_inlines): Likewise.
7911
7912         * decl2.c (build_expr_from_tree): If a unary op already has a
7913         type, just return it.
7914
7915         * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
7916
7917         * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
7918         (finish_file): Check the return value of walk_vtables.
7919         (finish_prevtable_vardecl): Return int.
7920         (finish_vtable_vardecl): Likewise.
7921         (prune_vtable_vardecl): Likewise.
7922         * lex.c (set_vardecl_interface_info): Likewise.
7923         * cp-tree.h: Adjust return types.
7924
7925         * class.c (delete_duplicate_fields_1): Don't complain about
7926         duplicate nested types if they're the same type.
7927         (finish_struct): Remove check for duplicate.
7928         * decl2.c (grokfield): Don't check for typedef of anonymous type.
7929
7930 Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
7931
7932         * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
7933
7934         * decl.c (grokdeclarator): Lose special handling of class-level
7935         typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
7936         SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
7937
7938         * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
7939
7940         * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
7941
7942         * search.c (compute_access): Fix handling of anonymous union
7943         members.
7944         * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
7945         from anonymous unions to their members.
7946
7947         * typeck.c (build_x_function_call): For static member functions,
7948         hand off to build_member_call.
7949
7950 Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
7951
7952         * typeck.c (build_component_ref): Handle OFFSET_REFs.
7953
7954         * init.c (expand_vec_init): Fix init == 0 case.
7955
7956 Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
7957
7958         * init.c (build_new): Pedwarn about init and array new.
7959         (expand_vec_init): Handle lists, use convert_for_initialization.
7960
7961         * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
7962         when converting to an aggregate type.
7963         * cvt.c (cp_convert): Pass it through.
7964
7965         * typeck.c (build_conditional_expr): Handle user-defined
7966         conversions to slightly different types.
7967
7968         * decl.c (grokdeclarator): Force an array type in a parm to be
7969         permanent.
7970
7971         * decl2.c (do_using_directive): Sorry.
7972         (do_namespace_alias): Likewise.
7973         * lex.c (real_yylex): Warn about using the `namespace' keyword.
7974
7975 Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
7976
7977         * parse.y (datadef): Move call to note_list_got_semicolon up.
7978
7979 Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
7980
7981         * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
7982
7983 Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
7984
7985         * decl.c (cp_finish_decl): The exception regions have to be
7986         nested, not overlapping.  We start the exception region for a
7987         decl, after it has been fully built, and all temporaries for it
7988         have been cleaned up.
7989
7990 Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
7991
7992         * tree.c (vec_binfo_member): Don't core dump if we have no bases.
7993
7994 Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
7995
7996         * tree.def: Add RETURN_INIT.
7997         * pt.c (instantiate_decl): Handle RETURN_INIT.
7998         * decl.c (store_return_init): Handle minimal_parse_mode.
7999
8000         * tree.c (cp_build_type_variant): Just return an error_mark_node.
8001         * decl.c (make_typename_type): Don't try to get the file and line
8002         of an identifier.
8003         * typeck.c (comptypes): Handle TYPENAME_TYPE.
8004
8005 Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
8006
8007         * decl.c (poplevel): Make sure we clear out and restore old local
8008         non-VAR_DECL values by default when they go out of scope.
8009
8010 Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
8011
8012         * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
8013         referring to addresses of variables and functions.
8014
8015         * error.c (dump_expr): Support SIZEOF_EXPR.
8016
8017         * init.c (do_friend): Use the return value of check_classfn.
8018
8019         * typeck.c (convert_arguments): Call complete_type.
8020
8021         * method.c (hack_identifier): After giving an error, set value to
8022         error_mark_node.
8023
8024 Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
8025
8026         * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
8027         lossage for local classes.
8028         * cp-tree.h: Declare it.
8029         * decl.c (lookup_name_real): Evil, painful hack for local classes.
8030         (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
8031         Use hack_decl_function_context.
8032         (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
8033         (start_function): Use hack_decl_function_context.
8034         (finish_function): Likewise.
8035         * method.c (synthesize_method): Likewise.
8036         * lex.c (process_next_inline): Likewise.
8037         (do_pending_inlines): Likewise.
8038         * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
8039         done with it.
8040
8041 Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
8042
8043         * sig.c (build_signature_pointer_or_reference_type): Align
8044         signature pointers/references on 8-byte boundaries so they can be
8045         grabbed 2 words at a time on a Sparc.
8046
8047 Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
8048
8049         * method.c (hack_identifier): Requiring a static chain is now a
8050         hard error.
8051         * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
8052         functions.
8053
8054 Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
8055
8056         * init.c (build_offset_ref): Call complete_type.
8057
8058         * decl.c (pop_from_top_level): Always pop previous_class_type.
8059
8060         * parse.y: Handle multiple decls in a for-init-statement.
8061         * pt.c (tsubst_expr): Likewise.
8062
8063         * pt.c (tsubst): Use tsubst_expr for the second operand of an
8064         ARRAY_REF.
8065
8066         * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
8067         (poplevel_class): Set it here.
8068         (pop_from_top_level): Pop it here if we're returning to class scope.
8069         * class.c (pushclass): Don't set it here.
8070
8071         * decl.c (maybe_push_to_top_level): Save current_template_parms,
8072         and clear it if !pseudo.
8073         (pop_from_top_level): Restore it.
8074
8075         * decl2.c (finish_file): Push the dummy each time we walk the list
8076         of vtables.
8077
8078         * error.c (dump_expr): Support LOOKUP_EXPR and actually do
8079         something for CAST_EXPR.
8080         
8081 Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
8082
8083         * cvt.c (cp_convert): Warn about implicit conversion of the
8084         address of a function to bool, as it is always true.
8085
8086 Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
8087
8088         * typeck.c (c_expand_return): Fix warning for local externs returned.
8089
8090 Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
8091
8092         * tree.c (mapcar): Propagate const and volatile properly.
8093
8094         * typeck.c (complete_type): Be sure to instantiate the
8095         MAIN_VARIANT of the type.
8096
8097         * method.c (synthesize_method): Class interface hackery does not
8098         apply to synthesized methods.
8099
8100 Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
8101
8102         * pt.c (comp_template_args): Use comptypes rather than just
8103         checking for TEMPLATE_TYPE_PARM equivalence.
8104
8105         * typeck.c (build_x_function_call): Call complete_type before
8106         checking TYPE_OVERLOADS_CALL_EXPR.
8107
8108 Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
8109
8110         * g++.c (main): Check also for new define ALT_LIBM.
8111
8112 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
8113
8114         * pt.c (instantiate_class_template): If we don't have a pattern
8115         yet, that's OK.
8116         (coerce_template_parms): If we see a local class, bail.
8117
8118         * decl.c (grok_reference_init): Make sure there's a type before
8119         checking its code.
8120
8121         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
8122         (push_template_decl): Likewise.
8123
8124         * parse.y (named_class_head): Set
8125         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
8126
8127         * decl.c (xref_tag): Diagnose redeclaration of template
8128         type-parameter name.
8129
8130         * error.c (dump_type): Handle anonymous template type parms.
8131
8132         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
8133         TYPE_STUB_DECL.
8134         (coerce_template_parms): Likewise.
8135
8136 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
8137
8138         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
8139         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
8140
8141 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
8142
8143         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
8144         before trying to get its STUB_DECL.
8145         (coerce_template_parms): Likewise.
8146
8147         * parse.y (template_type_parm): If they didn't use 'class',
8148         pretend they did after giving an error.
8149
8150         * pt.c (coerce_template_parms): Diagnose use of local class.
8151
8152         * decl.c (grok_reference_init): Use instantiate_type.
8153
8154         * error.c (dump_expr): Handle TEMPLATE_DECLs.
8155
8156         * parse.y (named_class_head): Diagnose mismatching types and tags.
8157
8158         * decl.c (pushdecl): Type decls and class templates clash with
8159         artificial type decls, not hide them.
8160
8161         * decl.c (redeclaration_error_message): Diagnose redefinition of
8162         templates properly.
8163         (duplicate_decls): Diagnose disallowed overloads for template
8164         functions, too.
8165
8166         * decl.c (start_decl): Call complete_type before checking for a
8167         destructor.
8168
8169         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
8170
8171         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
8172
8173 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8174
8175         * decl.c (grok_op_properties): Don't check for operator++(int) in
8176         a template.
8177
8178         * tree.c (perm_manip): Return a copy of variable and function
8179         decls with external linkage.
8180
8181         * tree.def: Change some of the min tree codes to type "1".
8182         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
8183         * method.c (build_overload_int): Emit something arbitrary for
8184         anything but an INTEGER_CST if we're in a template.
8185
8186         * decl.c (cp_finish_decl): Call complete_type before deciding
8187         whether or not to lay out the decl.
8188
8189         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
8190
8191 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
8192
8193         * typeck2.c (build_x_arrow): Call complete_type.
8194
8195         * pt.c (add_pending_template): Broken out.
8196         (lookup_template_class): If -fexternal-templates, call it for all
8197         the methods of implemented types.
8198         (instantiate_class_template): Instead of instantiating them here.
8199         (instantiate_decl): Handle -fexternal-templates earlier.
8200
8201 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8202
8203         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
8204         memoized lookup stuff inside GATHER_STATISTICS.
8205
8206 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
8207
8208         * decl.c (start_decl): Complain about array of incomplete type
8209         here.
8210         (grokdeclarator): Not here.
8211
8212         * parse.y (template_parm): Expand full_parm inline so we can set
8213         the rule's precedence.
8214
8215         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
8216         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
8217         * decl2.c (grokbitfield): Don't check for integer constant here.
8218         * class.c (finish_struct_1): Check here.
8219
8220         * decl.c (define_label): Make the min decl go on permanent_obstack.
8221
8222         * pt.c (unify): Don't handle CONST_DECLs.
8223         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
8224         (tsubst_copy): Likewise.
8225
8226         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
8227         CONST_DECL for a template parm.
8228
8229 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
8230
8231         * decl.c (grokdeclarator): Complain about array of incomplete type
8232         here.
8233         (start_decl_1): Not here.
8234
8235         * pt.c (tsubst): Handle pointer-to-function declarators.
8236
8237         * method.c (hack_identifier): If pedantic, diagnose local class
8238         methods that require a static chain.
8239
8240         * decl.c (grok_op_properties): No longer static.
8241         * cp-tree.h: Declare it.
8242         * pt.c (tsubst): Call it for operators.
8243         Use tsubst_copy for TREE_VECs.
8244
8245         * parse.y (template_arg): The expr has precedence like '>'.
8246
8247 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
8248
8249         * pt.c (coerce_template_parms): Don't coerce an expression using
8250         template parms.
8251         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
8252         (tsubst): Don't use build_index_2_type if the max_value uses template
8253         parms.
8254         * method.c (build_overload_int): Emit something arbitrary for an
8255         expression using template parms.
8256
8257         * parse.y (template_close_bracket): New non-terminal to catch use
8258         of '>>' instead of '> >' in template class names.
8259         (template_type): Use it.
8260         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
8261
8262         * tree.def: Add CAST_EXPR.
8263         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
8264         CONVERT_EXPR for minimal_parse_mode.
8265         * typeck.c (build_c_cast): Likewise.
8266         * pt.c (tsubst_copy): Likewise.
8267         * decl2.c (build_expr_from_tree): Likewise.
8268         * error.c (dump_expr): Likewise.
8269
8270 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8271
8272         * except.c (SetTerminate, SetUnexpected): Put back global vars.
8273         (init_exception_processing): Put back decl/init of
8274         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
8275         fns from libstdc++.
8276
8277         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
8278         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
8279         Delete unused fns.
8280         * cp-tree.h (declare_uninstantiated_type_level,
8281         uninstantiated_type_level_p): Delete prototypes.
8282
8283 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
8284
8285         * pt.c (tsubst_expr): Add default return.
8286
8287 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8288
8289         * error.c (fndecl_as_string): Delete unused arg CNAME.
8290         * sig.c (build_signature_table_constructor,
8291         build_signature_method_call): Fix calls.
8292
8293         * class.c (the_null_vtable_entry): Delete var definition.
8294         (init_class_processing): Delete tree the_null_vtable_entry init.
8295         * decl.c (no_print_{functions, builtins}): Declare as static.
8296         (__tp_desc_type_node): #if 0 var definition.
8297         (init_type_desc): #if 0 init of __tp_desc_type_node.
8298         (vb_off_identifier): Move var decl into init_decl_processing.
8299         (current_function_assigns_this): Declare as static.
8300         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
8301         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
8302         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
8303         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
8304         * init.c (BI_header_type, BI_header_size): Declare as static.
8305         * pt.c (template_classes): Delete unused var.
8306         (add_pending_template): Delete decl for non-existent fn.
8307         (lookup_template_class): Delete vars CODE and TAG_CODE.
8308         (instantiate_template): Delete unused var TARGS.
8309         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
8310         Delete decls.
8311         (__tp_desc_type_node): #if 0 var decl.
8312         (fndecl_as_string): Fix prototype.
8313
8314 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
8315
8316         * tree.def: Add GOTO_STMT.
8317         * pt.c (tsubst_expr): Support goto and labels.
8318         * decl.c (define_label): Support minimal parsing.
8319         * parse.y (simple_stmt): Likewise.
8320
8321 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8322
8323         * xref.c (GNU_xref_member): Only define/set var I if
8324         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
8325         used.
8326         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
8327         (GNU_xref_end): Fix call.
8328         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
8329         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
8330
8331         * tree.c (build_exception_variant): Delete unused vars I, A, T,
8332         T2, and CNAME.
8333         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
8334         (mapcar): Delete unused var CODE.
8335         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
8336         (break_out_cleanups): Fix call.
8337         (bot_manip): Likewise.
8338         * call.c (build_method_call): Likewise.
8339         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
8340         Likewise.
8341         * typeck.c (unary_complex_lvalue, build_modify_expr,
8342         convert_for_initialization): Likewise.
8343         * typeck2.c (build_functional_cast): Likewise.
8344         * cp-tree.h (build_cplus_new): Fix prototype.
8345
8346         * repo.c (open_repo_file): Delete unused var Q.
8347         (repo_compile_flags, repo_template_declared,
8348         repo_template_defined, repo_class_defined, repo_inline_used,
8349         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
8350         (repo_get_id, repo_vtable_used): Declare as static. 
8351         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
8352         prototypes.
8353
8354 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
8355
8356         * parse.y (pending_inlines): Add function_try_block case.
8357
8358         * pt.c (unify): Fix for template const parms.
8359
8360 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8361
8362         * lex.c (extract_interface_info): Delete forward decl.
8363         (default_copy_constructor_body, default_assign_ref_body): Delete
8364         decls for non-existent functions.
8365         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
8366         (init_lex): Delete setting them.
8367         (cons_up_default_function): Delete unused vars FUNC_BUF,
8368         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
8369         #if 0'd synth code.
8370         (toplevel, expression_obstack): Delete unused extern decls.
8371         (tree_node_kind): Delete unused enum.
8372         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
8373         GATHER_STATISTICS.
8374         (tree_node_kind_names): Delete unused extern decl.
8375         (synth_obstack): Delete unused var.
8376         (init_lex): Don't set it.
8377         (init_parse): Add decl before use.
8378         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
8379         (current_unit_{name, language}): Delete unused vars. 
8380         (check_newline): Don't bother setting them, just accept the #pragma.
8381         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
8382         (current_unit_{name, language}): Delete decls.
8383
8384         * search.c: Wrap all of the memoized functions, macros, and
8385         variables inside #ifdef GATHER_STATISTICS.
8386         (lookup_field, lookup_fnfields): Likewise.
8387         (init_search_processing): Likewise.
8388         (reinit_search_statistics): Wrap whole function.
8389         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
8390
8391         * decl.c (finish_function): Only call pop_memoized_context if
8392         GATHER_STATISTICS is defined.
8393         (start_function): Likewise for push_memoized_context.
8394         * class.c (pushclass, popclass): Likewise.
8395
8396         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
8397         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
8398
8399         * cvt.c (cp_convert): Delete unused local var FORM.
8400         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
8401         prototypes.
8402
8403 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8404
8405         * pt.c (do_poplevel): Oops; really return what we get from
8406         poplevel this time.
8407
8408 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8409
8410         * cp-tree.h (is_aggr_type): Add prototype.
8411
8412         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
8413         * method.c ({push,pop}_cp_function_context): Delete decls.
8414         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
8415         (SetUnexpected, SetTerminate): Delete unused vars.
8416         (init_exception_processing): Don't set SetUnexpected or
8417         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
8418         (output_exception_table_entry): Delete unused array LABEL.
8419         (expand_internal_throw): Delete unused var PARAMS.
8420         (expand_start_catch_block): Delete unused var CLEANUP.
8421         (emit_exception_table): Delete unused var EH_NODE_DECL.
8422         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
8423         GOTO_UNWIND_AND_THROW.  Don't set them.
8424         (end_eh_unwinder): Add top decl.
8425         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
8426         (exception_section, push_rtl_perm, do_function_call,
8427         lang_interim_eh, push_eh_cleanup, eh_outer_context,
8428         expand_end_eh_spec, end_eh_unwinder): Declare as static.
8429         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
8430         throw_used): Likewise.
8431         * cp-tree.h (expand_end_eh_spec): Delete prototype.
8432
8433         * search.c (dfs_mark, dfs_mark_vtable_path,
8434         dfs_unmark_vtable_path, dfs_mark_new_vtable,
8435         dfs_unmark_new_vtable, dfs_clear_search_slot,
8436         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
8437         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
8438         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
8439         functions.
8440         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
8441         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
8442         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
8443         Only define #ifdef GATHER_STATISTICS.
8444         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
8445         is defined.
8446         (vbase_decl): Delete var definition.
8447         (init_search): Delete old decl.
8448         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
8449         never actually used.
8450         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
8451         (get_base_distance_recursive): Delete unused fourth arg
8452         BASETYPE_PATH.  Fix call .
8453         (get_base_distance): Fix call.
8454         (push_class_decls): Delete unused var ID.
8455         (make_memoized_table_entry): Declare as static.
8456         (breadth_first_search): Declare as static.
8457         (tree_has_any_destructor_p): Declare as static.
8458         (pop_class_decls): Delete unused arg pop_class_decls.
8459         * class.c (popclass): Fix call to pop_class_decls.
8460         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
8461         tree_has_any_destructor_p): Delete prototypes.
8462
8463         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
8464         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
8465         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
8466         (build_user_desc): Delete unused var T.
8467         (build_class_desc): Delete unused vars T and OFF.
8468         (build_t_desc): Delete unused var NAME_STRING.
8469         (build_headof): Make static.
8470         (get_bad_cast_node): Likewise.
8471         (get_def_to_follow): Likewise.
8472         * cp-tree.h (init_type_desc): Add prototype.
8473         (build_headof): Remove prototype.
8474
8475 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
8476
8477         * pt.c (tsubst): Only look for matching decls at file scope for
8478         non-member functions.
8479
8480         * call.c (build_scoped_method_call): Handle scoped destructor
8481         calls in templates.
8482
8483         * decl.c (*_top_level): Also save previous_class_values.
8484
8485         * pt.c (tsubst_expr): Support do {} while loops.
8486         * parse.y (simple_stmt): Likewise.
8487         * tree.def: Likewise.
8488
8489         * method.c (build_overload_identifier): For a class nested in a
8490         template class, don't mangle in the template parms from our
8491         context.
8492
8493         * lex.c, cp-tree.h: Remove support for template instantiations in
8494         the pending_inlines code.
8495         * pt.c: Remove dead functions and unused arguments.
8496         (uses_template_parms): TYPENAME_TYPEs always use template parms.
8497         * parse.y: Stop passing anything to end_template_decl.
8498         * tree.c (print_lang_statistics): Only print tinst info #ifdef
8499         GATHER_STATISTICS.
8500
8501 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8502
8503         * init.c (expand_recursive_init{,_1}): Delete decls. 
8504         (sort_member_init): Delete unused var INIT.
8505         (emit_base_init): Delete unused var X.
8506         (build_offset_ref): Delete unused var CNAME.
8507         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
8508         (emit_base_init): Delete unused local var BASE.  Delete extern
8509         decl of IN_CHARGE_IDENTIFIER.
8510         (build_delete): Delete unused local var VIRTUAL_SIZE.
8511
8512         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
8513         (build_delete): Fix call.
8514         * decl2.c (delete_sanity): Likewise.
8515         * cp-tree.h (build_vec_delete): Update prototype.
8516
8517         * typeck.c (common_base_type): Delete unused var TMP.
8518         (build_binary_op): Delete local var ARGS_SAVE.
8519         (build_array_ref): Delete unused var ITYPE.
8520         (c_expand_return): Delete unused var USE_TEMP.
8521
8522         * typeck.c (compexcepttypes): Delete unused arg STRICT.
8523         (comptypes): Fix calls.
8524         * decl.c (duplicate_decls): Likewise.
8525         * cp-tree.h (compexcepttypes): Delete extra arg.
8526
8527         * decl2.c (check_classfn): Delete unused second arg CNAME.
8528         * decl.c (start_decl, grokfndecl): Fix calls.
8529         * init.c (do_friend): Likewise.
8530         * cp-tree.h (check_classfn): Update prototype.
8531
8532         * cp-tree.h (signature_error, import_export_vtable,
8533         append_signature_fields, id_in_current_class, mark_used,
8534         copy_assignment_arg_p): Add decls.
8535         * decl2.c (mark_used): Delete decl.
8536
8537         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
8538
8539         * class.c (get_vtable_entry): Diable unused function.
8540         (doing_hard_virtuals): Delete unused static global var.
8541         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
8542         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
8543         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
8544         (modify_one_vtable): Delete unused var OLD_RTTI.
8545         (finish_struct_anon): Delete unused vars OFFSET and X.
8546         (finish_struct_bits): Delete unused var METHOD_VEC.
8547         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
8548         for-scope local variable METHODS.
8549
8550         * call.c (user_harshness): Delete unused/unneeded arg PARM.
8551         (ideal_candidate): Delete unused args BASETYPE and PARMS.
8552         (build_method_call): Delete unused args passed into ideal_candidate.
8553         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
8554         * cp-tree.h (synthesize_method): Add decl.
8555
8556         * decl.c (note_level_for_for): Give void return type.
8557         (pushdecl_nonclass_level): Likewise.
8558         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
8559         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
8560         (suspend_binding_level): Delete unused var LEVEL.
8561         (duplicate_decls): Delete unused var CTYPE.
8562         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
8563         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
8564         PTR_ENDLINK.
8565         (grokdeclarator): Delete unused var C.
8566         (grokdeclarator): Delete unused var SIZE_VARIES.
8567         (grokparms): Delete unused var SAW_VOID.
8568         (start_function): Delete unused var OLDDECL.
8569         (cplus_expand_expr_stmt): Delete unused var
8570         REMOVE_IMPLICIT_IMMEDIATELY. 
8571
8572         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
8573
8574         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
8575
8576 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8577
8578         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
8579         (build_min_nt): Likewise.
8580         * pt.c (do_pushlevel): Emit line note.
8581         (do_poplevel): Return what we get from poplevel.
8582         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
8583         * parse.y: Use do_pushlevel and do_poplevel.
8584         * cp-tree.h: Declare do_poplevel.
8585         
8586         * cp-tree.h: Declare at_eof.
8587         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
8588         * decl2.c (import_export_decl): Renamed from import_export_inline.
8589         (finish_file): Call it to do interface handling for statics.
8590         * pt.c (tsubst_copy): Call mark_used on variables and functions
8591         used here.
8592
8593         * decl2.c (finish_file): Don't emit statics we can't generate.
8594         * pt.c (instantiate_decl): Don't set interface on instantiations
8595         we can't generate.
8596
8597         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
8598         * tree.c (print_lang_statistics): Print max template depth.
8599         * pt.c (push_tinst_level): Dump entire instantiation context.
8600         (instantiate_class_template): Use it and pop_tinst_level.
8601         (instantiate_decl): Likewise.
8602
8603         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
8604         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
8605
8606 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
8607
8608         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
8609         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
8610         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
8611         the new template implementation.
8612
8613 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8614
8615         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
8616
8617 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
8618
8619         * decl.c (cp_finish_decl): Delay emitting the debug information for
8620         a typedef that has been installed as the canonical typedef, if the
8621         type has not yet been defined.
8622
8623 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
8624
8625         * decl2.c (grokfield): Still call pop_nested_class for access decls.
8626
8627 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8628
8629         * decl.c (lookup_label): Call label_rtx.
8630
8631         * decl.c (make_binding_level): New function.
8632         (pushlevel, pushlevel_class): Call it instead of explicit
8633         duplicate calls to xmalloc.
8634
8635         * decl.c (init_decl_processing): Delete useless build_pointer_type
8636         call.
8637
8638         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
8639         (sizet_ftype_string): Delete variable.
8640         (init_decl_processing): Add built-in functions fabsf, fabsl,
8641         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
8642         variable strlen_ftype, used for strlen.
8643
8644 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
8645
8646         * decl.c (push_to_top_level): Start from current_binding_level
8647         again for now; the stl hacks depend on g++ being broken in this
8648         way, and it'll be fixed in the template rewrite.
8649
8650         * tree.def: Add USING_DECL.
8651         * decl2.c (do_class_using_decl): Implement.
8652         (grokfield): Pass access decls off to do_class_using_decl instead of
8653         grokdeclarator.
8654         * error.c (dump_decl): Handle USING_DECLs.
8655         * decl.c (grokdeclarator): Remove code for handling access decls.
8656         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
8657         as access decls for now.
8658         (finish_struct): Don't check USING_DECLs for other uses of the name.
8659
8660         * search.c (get_matching_virtual): Use cp_error_at.
8661
8662 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8663
8664         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
8665         match c-typeck.c.
8666         (self_promoting_args_p): Move the check that TYPE is non-nil
8667         before trying to look at its main variant.
8668         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
8669
8670         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
8671         Delete macros.
8672         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
8673         (do_friend): Delete call to xref_friend.
8674         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
8675
8676         * typeck.c (convert_sequence): #if 0 unused function.
8677
8678         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
8679         be in decl_in_memory_p.
8680         (decl_in_memory_p): Delete decl.
8681         * expr.c (decl_in_memory_p): Delete fn.
8682         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
8683
8684         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
8685
8686 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
8687
8688         * class.c (finish_struct_1): Check for a pure-specifier on a
8689         non-virtual function here.
8690
8691         * decl2.c (grok_function_init): Don't check whether the function
8692         is virtual here.
8693         (grokfield): Don't call check_for_override here.
8694
8695         * decl.c (push_to_top_level): Start from inner_binding_level,
8696         check class_shadowed in class levels.
8697
8698 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
8699
8700         * decl.c (resume_level): Ignore things that don't have names, instead
8701         of core dumping.
8702
8703 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8704
8705         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
8706
8707 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
8708
8709         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
8710         synthesized dtor.
8711
8712         * parse.y (complete_type_name): Bind global_scope earlier.
8713         (complex_type_name): Likewise.
8714         (qualified_type_name): Remove.
8715
8716 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
8717
8718         * decl.c (grokfndecl): Move code that looks for virtuals in base
8719         classes...
8720         * class.c (check_for_override): ... to a new function.
8721         (finish_struct_1): Call it.
8722
8723         * cp-tree.h: Declare warn_sign_compare.
8724
8725         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
8726         rather than extra_warnings to decide whether to warn about
8727         comparison of signed and unsigned.
8728
8729         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
8730         implies -Wsign-compare.  -Wall doesn't imply -W.
8731
8732 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
8733
8734         * typeck.c (build_component_ref): Fix to handle anon unions in base
8735         classes as well.
8736
8737 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8738
8739         * class.c (resolves_to_fixed_type_p): Delete code dealing with
8740         a WITH_CLEANUP_EXPR, since we don't generate them any more.
8741         * cvt.c (build_up_reference): Likewise.
8742         * decl.c (grok_reference_init): Likewise.
8743         (cp_finish_decl): Likewise.
8744         * error.c (dump_expr): Likewise.
8745         * tree.c (real_lvalue_p): Likewise.
8746         (lvalue_p): Likewise.
8747         (build_cplus_new): Likewise.
8748         (unsave_expr_now): Likewise.
8749         * typeck.c (unary_complex_lvalue, build_modify_expr,
8750         c_expand_return): Likewise.
8751
8752 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8753
8754         Make the C++ front-end pay attention to attributes for structures.
8755         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
8756         finish_struct_1.
8757         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
8758         Take out old round_up_size use and setting the DECL_ALIGN possibly
8759         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
8760         can override what the attribute set.
8761         * cp-tree.h (finish_struct): Update prototype.
8762         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
8763         attributes to finish_struct.
8764         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
8765         value down into finish_struct.
8766         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
8767
8768 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
8769
8770         * decl.c (poplevel):  Re-word dead for local handling.
8771         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
8772         (cp_finish_decl):  If is_for_scope, check for duplicates so
8773         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
8774
8775         * lex.c (do_identifier):  Use global binding in preference of
8776         dead for local variable.
8777
8778 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
8779
8780         * init.c (initializing_context): Handle anon union changes, the
8781         context where fields of anon unions can be initialized now has to be
8782         found by walking up the TYPE_CONTEXT chain.
8783
8784 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
8785
8786         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
8787         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
8788         (obscure_complex_init): If bss is supported, always set
8789         DECL_INITIAL to error_mark_node.
8790
8791 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8792
8793         * init.c (is_friend): Make sure there's a context before we see if
8794         it's an aggr type.
8795
8796 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
8797
8798         * init.c (is_friend): Classes are not friendly with nested classes.
8799
8800 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
8801
8802         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
8803         and record its result.
8804
8805 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
8806
8807         * class.c (finish_struct_anon): Switch around code to not move anon
8808         union elements around, nor mess up their contexts, nor offsets,
8809         instead we now build up the right number of COMPONENT_REFs for all
8810         the anon unions that may be present at build_component_ref time.
8811         * typeck.c (lookup_anon_field): New routine to handle field lookup
8812         on fields without names.  We find them, based upon their unique type
8813         instead.
8814         * typeck.c (build_component_ref): Allow FIELD_DECL components.
8815         Handle finding components in anonymous unions, and ensure that a
8816         COMPONENT_REF is built for each level as necessary.
8817
8818 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
8819
8820         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
8821         code that ensures that copy ctors are used if appropriate.
8822
8823 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8824
8825         * init.c (build_vec_delete): Only give an error if base isn't an
8826         error_mark_node.
8827
8828 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
8829
8830         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
8831         (yylex): If we see `new', keep slurping.
8832
8833 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
8834
8835         * class.c (finish_struct_1): Move code for handling anon unions...
8836         (finish_struct_anon): to here.  Fixup so that we do the offset
8837         calculations right, and so that the fields are physically moved to
8838         the containers's chain.
8839
8840 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8841
8842         * decl.c (grokdeclarator): Avoid trying to get an operand off an
8843         identifier node.
8844
8845 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
8846
8847         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
8848         POINTER_SIZE to agree with expr.c.
8849
8850 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
8851
8852         * search.c (lookup_field): Don't report ambiguities if protect is 0,
8853         instead return NULL_TREE.
8854
8855 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
8856
8857         * class.c (finish_struct_1): Call warn_hidden if we want warnings
8858         about overloaded virtual functions.
8859         (warn_hidden): New routine to warn of virtual functions that are
8860         hidden by other virtual functions, that are not overridden.
8861         (get_basefndecls): New routine, used by warn_hidden.
8862         (mark_overriders): New routine, used by warn_hidden.
8863         * search.c (get_matching_virtual): Remove old warning that just
8864         isn't very useful.
8865
8866 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8867
8868         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
8869
8870         * typeck.c (null_ptr_cst_p): Delete unused fn.
8871         (build_function_call_maybe): Delete unused fn.
8872
8873         * expr.c (extract_init): #if 0 the code after unconditional return 0
8874         for now.
8875
8876         Delete old cadillac code.
8877         * edsel.c: Remove file.
8878         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
8879         * Makefile.in (CXX_OBJS): Delete edsel.o.
8880         (edsel.o): Delete rule.
8881         * cp-tree.h (flag_cadillac): Delete var decl.
8882         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
8883         * decl2.c (flag_cadillac): Delete var definition.
8884         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
8885         (grokfield): Delete code depending on flag_cadillac.
8886         (finish_anon_union): Likewise.
8887         * class.c (finish_struct_1): Likewise.
8888         (pushclass): Likewise.
8889         (popclass): Likewise.
8890         (push_lang_context): Likewise.
8891         (pop_lang_context): Likewise.
8892         * decl.c (init_decl_processing): Likewise.
8893         (start_decl): Likewise.
8894         (cp_finish_decl): Likewise.
8895         (xref_tag): Likewise.
8896         (finish_enum): Likewise.
8897         (start_function): Likewise.
8898         (finish_function): Likewise.
8899         (finish_stmt): Likewise.
8900         * lex.c (lang_init): Likewise.
8901         (check_newline): Likewise.
8902
8903         * lex.c (do_pending_inlines): Delete synthesized method kludge.
8904
8905         Delete defunct, ancient garbage collection implementation.
8906         * rtti.c: New file with the RTTI stuff from gc.c.
8907         * gc.c: Removed file (moved the remaining stuff into rtti.c).
8908         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
8909         (rtti.o): New rule, replacing gc.o.
8910         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
8911         * cp-tree.h: Delete gc-related fn decls.
8912         (DECL_GC_OFFSET): Delete macro.
8913         (flag_gc): Delete extern decl.
8914         * decl.c (current_function_obstack_index): Delete var decl.
8915         (current_function_obstack_usage): Delete var decl.
8916         (start_function): Delete clearing of current_function_obstack_index
8917         and current_function_obstack_usage.
8918         (init_decl_processing): Delete code relying on -fgc.
8919         Delete call to init_gc_processing.
8920         (cp_finish_decl): Delete calls to build_static_gc_entry and
8921         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
8922         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
8923         and to expand_expr of a __gc_main call.
8924         (maybe_gc_cleanup): Delete var decl.
8925         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
8926         * decl2.c (flag_gc): Delete var decl.
8927         (lang_f_options): Delete offering of -fgc.
8928         (lang_decode_option): Delete -fgc and -fno-gc handling.
8929         (get_temp_regvar): Delete gc code.
8930         * init.c (build_new): Delete gc code.
8931         * lex.c (init_lex): Delete checking of flag_gc.
8932
8933         * typeck.c (convert_arguments): Delete gc code.
8934         (build_component_addr): Delete -fgc warning.
8935         (build_modify_expr): Delete gc code.
8936
8937         * decl2.c (build_push_scope): Delete fn.
8938         * cp-tree.h (build_push_scope): Delete decl.
8939
8940         * search.c (clear_search_slots): Delete fn.
8941         * cp-tree.h (clear_search_slots): Delete decl.
8942
8943         * search.c (tree_needs_constructor_p): Delete fn.
8944         * cp-tree.h (tree_needs_constructor_p): Delete decl.
8945
8946         * tree.c (id_cmp): Delete fn.
8947
8948         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
8949         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
8950
8951         * tree.c (decl_value_member): Delete fn.
8952         * cp-tree.h (decl_value_member): Delete decl.
8953
8954         * tree.c (list_hash_lookup_or_cons): Delete fn.
8955         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
8956
8957         * method.c (cplus_exception_name): Delete fn.
8958         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
8959
8960         * spew.c (shift_tokens): Delete fn.
8961
8962 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
8963
8964         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
8965         to cp_finish_decl.
8966         * parse.y: Likewise.
8967
8968 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8969
8970         * tree.c (build_cplus_staticfn_type): Delete function definition;
8971         never used.
8972         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
8973
8974         * tree.c (virtual_member): Delete function definition; never used.
8975         * cp-tree.h (virtual_member): Delete decl.
8976
8977 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
8978
8979         * typeck.c (build_component_ref): Handle getting vbase pointers
8980         out of complex multiple inheritance better.
8981
8982 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
8983
8984         * typeck.c (build_object_ref): Make sure we use the real type, not
8985         any reference type.
8986
8987 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
8988
8989         * tree.c (build_exception_variant): Don't create new types if we
8990         don't have to, also build new types on the right obstack.
8991
8992 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8993
8994         * decl.c (store_bindings): Split out from push_to_top_level.
8995         (push_to_top_level): Call it for b->type_shadowed on class binding
8996         levels.
8997
8998 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
8999
9000         * search.c (expand_upcast_fixups): Fix so that offsets stored in
9001         vbase_offsets are always right.  Fixes a problem where virtual base
9002         upcasting and downcasting could be wrong during conversions on this
9003         during virtual function dispatch at ctor/dtor time when dynamic
9004         vtable fixups for deltas are needed.  This only sounds easier than
9005         it is.  :-)
9006         (fixup_virtual_upcast_offsets): Change to reflect new calling
9007         convention for expand_upcast_fixups.
9008
9009 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9010
9011         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
9012         check that it's usable as the bitfield width.
9013
9014 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9015
9016         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
9017         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
9018         only ever used for functions in it.
9019
9020 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
9021
9022         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
9023         (nested_type): Likewise.
9024         (nested_name_specifier): Use lastiddecl.
9025
9026         * decl.c (grokdeclarator): Adjust accordingly.
9027         * init.c (expand_member_init): Likewise.
9028         * parse.y (base_class): Likewise.
9029         * typeck2.c (build_functional_cast): Likewise.
9030
9031         * typeck2.c (build_functional_cast): Fill in name after we've
9032         checked for non-aggr type.
9033
9034 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
9035
9036         * decl2.c (warn_pointer_arith): Default to on.
9037
9038 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
9039
9040         * lex.c (is_rid): New function.
9041         * decl.c (grokdeclarator): Diagnose reserved words used as
9042         declarator-ids.
9043
9044 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
9045
9046         * tree.c (get_decl_list): Don't lose cv-quals.
9047
9048         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
9049         typespecs used as declarator-ids.
9050
9051 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
9052
9053         * decl.c (poplevel): When poping a level, don't give a warning for
9054         any subblocks that already exist.
9055
9056 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9057
9058         * typeck.c (build_object_ref): Finish what I started.
9059
9060         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
9061
9062         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
9063
9064         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
9065         scope.
9066
9067 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
9068
9069         * decl.c (xref_tag): Handle passing a type in directly.
9070
9071         * parse.y (qualified_type_name): Pull out the type.
9072         (nested_type): Likewise.
9073         Take types directly instead of as identifiers.
9074         * call.c (build_scoped_method_call): Take types directly instead of
9075         as identifiers.
9076         * decl.c (xref_basetypes): Likewise.
9077         * init.c (expand_member_init): Likewise.
9078         (build_member_call): Likewise.
9079         (build_offset_ref): Likewise.
9080         * typeck2.c (build_scoped_ref): Likewise, remove bogus code.
9081         * method.c (do_build_assign_ref): Likewise.
9082         * decl.c (grokdeclarator): Handle a type appearing as the
9083         declarator-id for constructors.
9084         * method.c (do_build_copy_constructor): current_base_init_list now
9085         uses the types directly, not their names.
9086         * init.c (sort_base_init): Likewise.
9087         (expand_member_init): Likewise.
9088         * init.c (is_aggr_type): New function, like is_aggr_typedef.
9089
9090 Mon Jan 15 08:45:01 1996  Jeffrey A Law  <law@cygnus.com>
9091
9092         * tree.c (layout_basetypes): Call build_lang_field_decl instead
9093         of build_lang_decl if first arg is a FIELD_DECL.
9094
9095 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9096
9097         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
9098         non-empty.
9099         * except.c (expand_start_catch_block): Set TREE_USED to avoid
9100         warnings about the catch handler.
9101
9102 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
9103
9104         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
9105         expand_target_expr.
9106
9107 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9108
9109         Fix access control to use trees rather than integers.
9110         * class.c (access_{default, public, protected, private,
9111         default_virtual, public_virtual, private_virtual}_node): Add
9112         definitions.
9113         (init_class_processing): Do creation of those nodes.
9114         * cp-tree.h (access_type): Delete enum decl.
9115         (access_{default, public, protected, private, default_virtual,
9116         public_virtual, private_virtual}_node): Add decls.
9117         (compute_access): Change return type.
9118         * search.c (compute_access): Have tree return type, instead of enum.
9119         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
9120         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
9121         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
9122         * parse.y (VISSPEC): Make ttype rather than itype.
9123         (base_class_access_list): Likewise.
9124         * *.[cy]: Change all refs of `access_public' to `access_public_node',
9125         etc.
9126         * call.c (build_method_call): Make ACCESS be a tree.
9127         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
9128         * cvt.c (convert_to_aggr): Likewise.
9129         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
9130         Likewise.
9131         * method.c (hack_identifier): Likewise.
9132         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
9133
9134 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
9135
9136         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
9137         frontend, and make it more consistent with respect to
9138         warn_pointer_arith.
9139
9140 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
9141
9142         * decl.c (pushdecl): Check for duplicate parameter names.
9143
9144 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
9145
9146         * decl.c (expand_static_init): Call assemble_external for atexit.
9147
9148 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
9149
9150         * except.c (do_unwind): Remove some generated dead code.
9151         (eh_outer_context): New routine, factor out some common code from
9152         expand_builtin_throw and end_eh_unwinder.  Add code to do return
9153         address masking for the PA.
9154         (expand_builtin_throw): Use eh_outer_context instead of open coding
9155         it here.
9156         (end_eh_unwinder): Likewise.
9157
9158 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
9159
9160         * except.c (expand_throw): Call assemble_external for __empty, if we
9161         use it.
9162
9163 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
9164
9165         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
9166         NORMAL_RETURN_ADDR_OFFSET.
9167         (end_eh_unwinder): Likewise.
9168
9169 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
9170
9171         * gc.c (build_dynamic_cast): Make sure we don't cast away const
9172         when dealing with references, and make sure we handle dynamic
9173         casting to a cv qualified reference.
9174
9175 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
9176
9177         * except.c (struct eh_context): New structure top hold eh context
9178         information.
9179         (push_eh_context): New routine.
9180         (pop_eh_context): Likewise.
9181         * decl.c (push_cp_function_context): Use them.
9182         (pop_cp_function_context): Likewise.
9183
9184 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
9185
9186         * decl2.c (finish_file): Also prune uninteresting functions in the
9187         inline emission loop.
9188
9189 Wed Dec 20 02:32:07 1995  Jeffrey A Law  <law@cygnus.com>
9190
9191         * sig.c (build_signature_table_constructor): Mark functions
9192         in the signature as referenced.
9193
9194 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
9195
9196         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
9197         the inline emission stuff.
9198
9199 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
9200
9201         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
9202         weak symbols.   
9203         * lang-options.h: Add -f{no-,}weak.
9204         * decl.c (init_decl_processing): If the target does not support weak
9205         symbols, don't use them.
9206         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
9207
9208 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
9209
9210         * init.c (expand_member_init): warning for base init after members.
9211
9212 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
9213
9214         * cvt.c (build_expr_type_conversion): Don't convert to a reference
9215         type.
9216
9217 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
9218
9219         * method.c (report_type_mismatch): Improve wording for volatile
9220         mismatches.
9221
9222 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
9223
9224         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
9225         expand_assignment, as the later doesn't handle things that have
9226         copy constructors well.  The compiler would do bitwise copying,
9227         instead of ctor calling in some cases.
9228
9229 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
9230
9231         * g++.c (my_strerror): Return "cannot access" if errno is 0.
9232         (pfatal_with_name, perror_exec): Don't assume that
9233         the returned value from my_strerror contains no '%'s.
9234         (concat): Remove.
9235         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
9236
9237 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
9238
9239         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
9240         TYPE_METHODS/TREE_CHAIN mean what they used to. 
9241         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
9242         instead of TYPE_METHODS.
9243         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
9244         * tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
9245         * cp-tree.h (CLASSTYPE_METHODS): Lose.
9246         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
9247         TYPE_METHODS.
9248         (struct lang_decl): Lose next_method field.
9249         (DECL_NEXT_METHOD): Lose.
9250         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
9251         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
9252         anymore.
9253         (finish_struct_methods): Don't mess with the TREE_CHAINs in
9254         fn_fields.
9255
9256         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
9257         vector.
9258
9259         * call.c (build_method_call): Synthesize here even when not inlining.
9260         * typeck.c (build_function_call_real): Likewise.
9261
9262 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
9263
9264         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
9265         == DBX_DEBUG, call dbxout_start_new_source_file and
9266         dbxout_resume_previous_source_file when appropriate.
9267
9268 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
9269
9270         * except.c (start_anon_func): Push to the top level.
9271         (end_anon_func): Pop from the top level.
9272
9273 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
9274
9275         * cp-tree.h (build_cleanup): New routine to build cleanups.
9276         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
9277         call at ctor time and use atexit to run it later.
9278         * decl2.c (build_cleanup): New routine, taken from finish_file.
9279         (finish_file): Use build_cleanup instead, and don't put function
9280         local statics in global dtor list.
9281         
9282 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
9283
9284         * except.c (expand_throw): Ensure that we have cleanups, if we try
9285         and expand cleanups.
9286
9287 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
9288
9289         * except.c (expand_throw): Add logic to manage dynamic cleanups for
9290         the EH object.
9291         (expand_end_catch_block): Use the magic of expand_goto, instead of
9292         emit_jump so that we get the cleanup for any catch clause parameter
9293         and the cleanup for the exception object.  Update to reflect label
9294         changes.
9295         (push_eh_cleanup): New routine to register a cleanup for an
9296         exception object.
9297         (empty_fndecl): Used to default cleanup actions to
9298         nothing.
9299         (init_exception_processing): Setup empty_fndecl.  Setup
9300         saved_cleanup.
9301         (expand_start_catch_block): Update to reflect label changes.  Call
9302         push_eh_object to register the cleanup for the EH object.
9303         (start_anon_func): New routine to start building lambda expressions
9304         from trees.
9305         (end_anon_func): New routine to end them.
9306         (struct labelNode): Change so that we can use tree labels, or rtx
9307         labels.
9308         (saved_cleanup): Object to check for dynamic cleanups for the
9309         exception handling object.
9310         (push_label_entry): Change so that we can use tree labels, or rtx
9311         labels.
9312         (pop_label_entry): Likewise.
9313         (top_label_entry): Likewise.
9314         (expand_start_all_catch): Use tree label instead of rtx label, so
9315         that we can get the magic of expand_goto.
9316         (expand_end_all_catch): Update to reflect label changes.
9317
9318         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
9319         use UNSAVE_EXPRs.
9320         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
9321         building_cleanup logic, as we now use UNSAVE_EXPRs.
9322         * cp-tree.h (unsave_expr): Declare it.
9323         * decl.c (building_cleanup): Remove.
9324         (maybe_build_cleanup): Remove building_cleanup logic, and use
9325         UNSAVE_EXPR instead.
9326
9327 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
9328
9329         * gc.c (build_t_desc): Update error message to say <typeinfo>.
9330
9331 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
9332
9333         * decl.c (pushdecl): Only warn about shadowing a local variable if
9334         warn_shadow is true.
9335
9336 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
9337
9338         * typeck.c (build_binary_op_nodefault): Added warning about
9339         comparisons between different enum types with -Wall, unless
9340         -fenum-int-equiv set.
9341
9342 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
9343
9344         * class.c (finish_struct_1): Skip down to the inner type in
9345         multidimensional arrays.  Ensures ctors will be made for types that
9346         need constructing.
9347
9348 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
9349
9350         * decl.c (last_dtor_insn): New to track the last compiler generated
9351         insn in a dtor.
9352         (store_parm_decls): Set it.
9353         (finish_function): Use it to see if the dtor is empty.  Avoid doing
9354         vtable setup all the time, if we can.
9355         (struct cp_function): Add last_dtor_insn.
9356         (push_cp_function_context): Save it.
9357         (pop_cp_function_context): Restore it.
9358
9359 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
9360
9361         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
9362         warnings.
9363
9364 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
9365
9366         * typeck.c (expand_target_expr): Make sure targets get put into the
9367         current temp_slot_level, so that the free_temp_slots call will reuse
9368         them.
9369
9370 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
9371
9372         * class.c (finish_struct_1): Delay delta fixups for virtual bases
9373         until after we have done the hard virtuals, to avoid a bogus `every
9374         virtual function must have a unique final overrider' for virtual
9375         functions that are only overridden by hard virtuals.
9376
9377 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
9378
9379         * pt.c (do_function_instantiation): Don't try to find a file-scope
9380         template for a member function.
9381
9382 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
9383
9384         * g++.c (main): Add handling of -nodefaultlibs.
9385
9386 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
9387
9388         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
9389         distinguish between direct bindings of reference variables, and
9390         indirect bindings of reference variables.
9391         * cvt.c (build_up_reference): Use it.
9392         * typeck.c (convert_arguments): Use it to indicate this is an
9393         indirect binding.
9394         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
9395         as they are unused.
9396         (expand_static_init): Likewise.
9397         (cplus_expand_expr_stmt): Likewise.
9398         * decl2.c (finish_file): Likewise.
9399         * init.c (perform_member_init): Likewise.
9400         (emit_base_init): Likewise.
9401         (expand_aggr_vbase_init_1): Likewise.
9402
9403 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
9404
9405         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
9406         get a DECL_LANG_SPECIFIC node.
9407         * cp-tree.h (lang_decl_flags): Add new member `level'.
9408         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
9409         decl_flags level member.
9410
9411 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
9412
9413         * call.c (build_method_call): Make sure instance has a
9414         TYPE_LANG_SPECIFIC node before we dive into it.  
9415
9416 Sat Nov  4 20:01:52 1995  Jason Molenda  <crash@phydeaux.cygnus.com>
9417
9418         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
9419
9420 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
9421
9422         * decl.c (duplicate_decls): When smashing decls, smash staticness in
9423         the usual way.
9424
9425 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
9426
9427         * decl.c (poplevel): Handle the merging of subblocks of cleanups
9428         when finishing blocks that have already been created (usually due to
9429         the fixup goto code).  Fixes bad debugging information.
9430
9431 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
9432
9433         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
9434         that's not a list of overloaded functions.
9435
9436 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
9437
9438         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
9439         before trying to use DECL_ABSTRACT_VIRTUAL_P.
9440
9441 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
9442
9443         * decl2.c (mark_used): New function for hooking into setting of
9444         TREE_USED on decls.
9445         * call.c (build_method_call): Use it.
9446         * class.c (instantiate_type): Likewise.
9447         * init.c (build_offset_ref): Likewise.  Don't call assemble_external
9448         for all like-named functions.
9449         * method.c (hack_identifier): Likewise.
9450         (emit_thunk): Don't call assemble_external.
9451         (make_thunk): Create thunk as a FUNCTION_DECL so that it
9452         gets the right mode and ENCODE_SECTION_INFO works.
9453         
9454         * parse.y: Use mark_used.  Pass operator names to do_identifier.
9455         * lex.c (do_identifier): Handle operator names.
9456
9457         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
9458
9459 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
9460
9461         * errfn.c: Include stdio.h.
9462         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
9463
9464 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
9465
9466         * typeck2.c (digest_init): Always convert initializers to the
9467         right type.
9468
9469 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
9470
9471         * init.c (member_init_ok_or_else): Don't allow member initializers
9472         for indirect members, as it is invalid.
9473
9474 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
9475
9476         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
9477
9478 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
9479
9480         * parse.y (for.init.statement): Catch compound statements inside for
9481         initializations, if we're being pedantic.
9482
9483 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
9484
9485         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
9486         looking for.
9487
9488 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
9489
9490         * error.c (dump_expr): Don't core dump when a boolean expression is
9491         used as a default argument.
9492
9493 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
9494
9495         * class.c (finish_struct_bits): Check aggregate_value_p instead of
9496         RETURN_IN_MEMORY.
9497
9498 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
9499
9500         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
9501         BLKmode type that would otherwise be returned in registers.
9502
9503 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
9504
9505         * g++.c (WITHLIBC): New macro.
9506         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
9507         saw_libc and pass it at the end if it was set.
9508
9509 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
9510
9511         * parse.y (fn.def1): Call split_specs_attrs in
9512         declmods notype_declarator case.
9513 \f
9514 Use a consistent time stamp format in ChangeLog entries.
9515 Not everyone has Emacs 20 yet, so stick with Emacs 19 format for now.
9516
9517 Local Variables:
9518 add-log-time-format: current-time-string
9519 End: