OSDN Git Service

* parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 1998-07-24  Jason Merrill  <jason@yorick.cygnus.com>
2
3         * parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.
4
5         * pt.c (coerce_template_parms): Also complain about local enums.
6
7         * cp-tree.h: Add prototype for set_identifier_local_value.
8         * decl.c (set_identifier_local_value_with_scope): Make static,
9         prototype.
10         * search.c (covariant_return_p): Likewise.
11         * except.c (build_terminate_handler, alloc_eh_object): Likewise.
12
13         * call.c (build_method_call): Only pull out the type of a destructor
14         if it's a template type parm.
15         * decl.c (lookup_name_real): Never return the from_obj value.
16
17 1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
18
19         * except.c (process_start_catch_block_old): Call start_decl_1 for
20         catch parm.
21         * decl.c (start_decl_1): Avoid duplicate error.
22
23         * init.c (expand_default_init): Only perform the initialization if
24         it will do something.
25
26 1998-07-23  H.J. Lu  (hjl@gnu.org)
27
28         * parse.y (base_class): Check for invalid base class.
29
30 1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
31
32         * decl2.c (import_export_template): Fold in...
33         (import_export_class): ...to here.  Handle dllimport/export.
34
35         * class.c (build_vtable): Pass at_eof to import_export_vtable.
36         (prepare_fresh_vtable): Likewise.
37         * decl2.c (import_export_class): Split out...
38         (finish_prevtable_vardecl): From here.
39         * class.c (finish_struct_1): Call import_export_class if at_eof.
40
41         * decl.c (start_function): #if 0 mysterious code I wrote and have 
42         forgotten why.
43         * rtti.c (get_tinfo_fn): If this is for a class type, set
44         DECL_CONTEXT.
45
46 1998-07-22  Jason Merrill  <jason@yorick.cygnus.com>
47
48         * inc/exception: Change terminate and unexpected to ().
49
50         * parse.y (named_class_head_sans_basetype_defn): A
51         named_class_head_sans_basetype followed by '{' or ':' is a defn.
52
53 1998-07-21  Jason Merrill  <jason@yorick.cygnus.com>
54
55         * tree.c (canonical_type_variant): New fn to handle arrays.
56         * cp-tree.h (CANONICAL_TYPE_VARIANT): Remove.
57         * pt.c (unify, default case): Also fold arg.  Fix array bounds case.
58         * method.c (process_overload_item): Use build_overload_value for
59         arrays.
60
61 1998-07-20  Dave Brolley  <brolley@cygnus.com>
62
63         * lex.c (mbchar.h): #include it.
64         (GET_ENVIRONMENT): New macro.
65         (init_parse): Set character set based on LANG environment variable.
66         (real_yylex): Handle multibyte characters in character literals.
67         (real_yylex): Handle multibyte characters in string literals.
68
69 1998-07-19  Jason Merrill  <jason@yorick.cygnus.com>
70
71         * lex.c (do_identifier): Look for class value even if we don't
72         have a global value.  Do implicit declaration if parsing is 2.
73         * semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
74         lookup.
75
76 1998-07-19  Mark Mitchell  <mark@markmitchell.com>
77
78         * decl.c (pushtag): Revert previous change.
79         * pt.c (lookup_template_class): Don't put out debugging
80         information for types that use template parameters.
81
82         * decl.c (pushtag): Don't put out debugging information for
83         compiler-generated typedefs.
84         
85         * error.c (dump_type_real): Don't crash when presented with
86         intQI_type_node or the like.
87
88         * semantics.c (finish_translation_unit): Fix spelling error in
89         comment.
90
91 1998-07-17  Jason Merrill  <jason@yorick.cygnus.com>
92
93         * decl.c (lookup_name_real): Pull out single function here.
94         (select_decl): Not here.
95         (unqualified_namespace_lookup): Use CP_DECL_CONTEXT.
96
97         * decl.c (qualify_lookup): Tweak again.
98
99         * pt.c (lookup_template_class): Don't mess with the context of the
100         instantiation.
101         * decl2.c (current_decl_namespace): Remove special handling for
102         templates.
103
104         * pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
105         a member template specialization.
106
107         * tree.c (ovl_member): Use decls_match to compare functions.
108         * decl.c (decls_match): Check the context of a function.
109
110         * parse.y (primary): Use notype_unqualified_id instead of IDENTIFIER
111         in Koenig lookup support rules.
112         * semantics.c (finish_call_expr): Handle the new cases.
113
114         * typeck.c (build_x_function_call): Handle overloaded methods.
115
116         * decl.c (grokvardecl): Don't call build_static_name for extern "C".
117
118 1998-07-16  Mark Mitchell  <mark@markmitchell.com>
119
120         * semantics.c (finish_object_call_expr): Revert previous change.
121         * call.c (build_new_method_call): Likewise.  Instead, convert
122         TYPE_DECLs to IDENTIFIERs here, in the presence of templates.
123
124 1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
125
126         * decl.c (qualify_lookup): Handle templates.
127
128         * decl2.c (do_using_directive): Don't pass ancestor.
129         * decl.c (push_using_directive): Calculate ancestor.
130
131         * decl2.c (do_nonmember_using_decl): Allow for type shadowing.
132         * decl.c (pushdecl): Move type shadowing handling from here...
133         (duplicate_decls): ...to here.
134         * decl.c (set_identifier_local_value_with_scope): New fn.
135         (pushdecl): Use it.
136         (set_identifier_local_value, lookup_type_current_level): New fns.
137         * decl2.c (do_local_using_decl): Handle types and binding level
138         stuff properly.
139
140         * init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
141         * decl.c (select_decl): Extract a lone function from an OVERLOAD.
142         (lookup_namespace_name): Likewise.
143         * typeck.c (build_unary_op): Not here anymore.
144
145         * decl2.c (do_class_using_decl): Make sure we get an identifier.
146         * class.c (handle_using_decl): Ignore TYPE_DECLs.
147
148         * decl.c (qualify_lookup): New fn.
149         (lookup_name_real): Use it.
150
151 1998-07-16  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
152
153         * decl2.c (add_using_namespace): When directly using a namespace
154         that was indirect before, promote it.
155
156         * cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
157         LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
158         LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
159         * decl.c (select_decl): Replace two flag parameters by one.
160         (unqualified_namespace_lookup): Likewise, pass flag.
161         (lookup_flags): New function.
162         (lookup_name_real): Compute flags, pass them.
163         (lookup_namespace_name): Call with zero-flag.
164         * decl2.c (ambiguous_decl): Add flag parameter, complain only
165         according to flags.
166         (lookup_using_namespace, qualified_lookup_using_namespace):
167         Add flag parameter, pass them through.
168         * lex.c (do_scoped_id): Call with zero-flag.
169
170 1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
171
172         * typeck.c (convert_for_assignment): Use comptypes.
173
174 1998-07-16  Mark Mitchell  <mark@markmitchell.com>
175
176         * semantics.c (finish_object_call_expr): Move test for the
177         function called being a TYPE_DECL to ...
178         * call.c (build_new_method_call): Here.
179
180 1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
181
182         * decl2.c (arg_assoc_class): Also look at template arguments, if any.
183         (arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.
184
185         * lex.c (looking_for_typename): Don't initialize.
186
187         * decl2.c (ambiguous_decl): Clarify error message.
188
189         * decl.c (push_using_directive): Iterate over namespaces used
190         indirectly.
191
192 1998-07-15  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
193
194         * decl2.c (add_using_namespace): Iterate over namespaces used
195         indirectly.
196
197         * decl.c (lookup_name_real): Accept namespace aliases as locals.
198         (cat_namespace_levels): Ignore aliases.
199         (duplicate_decls): Ignore duplicate aliases.
200         * decl2.c (do_namespace_alias): Process block level namespace
201         aliases. Store alias with pushdecl. Remove odr errors.
202         * parse.y (namespace_alias): New non-terminal.
203         (extdef): Use it.
204
205 1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
206
207         * decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
208         Handle TEMPLATE_TYPE_PARM.
209         (arg_assoc): Rewrite.
210
211         * pt.c (complete_template_args): Don't look at the context unless
212         we have to.
213
214         * method.c (build_decl_overload_real): Fix namespace handling.
215
216         * typeck.c (build_unary_op): Extract a lone function from an
217         OVERLOAD.
218
219         * call.c (build_scoped_method_call): Handle getting a namespace
220         for basetype in a destructor call.
221         (check_dtor_name): Handle enums.
222
223         * parse.y (using_directive): New nonterminal.
224         (extdef, simple_stmt): Use it.
225
226 1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>
227
228         * decl2.c (add_function): Move error message ...
229         (arg_assoc_namespace): ... from here.
230
231 1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
232
233         * parse.y (namespace_qualifier): Fix multiple level handling.
234         * decl2.c (namespace_ancestor): Use CP_DECL_CONTEXT.
235         (arg_assoc): Don't skip the first argument of a function.
236
237 Tue Jul 14 20:09:22 1998  Jeffrey A Law  (law@cygnus.com)
238
239         * search.c (my_tree_cons): Clean up.
240
241 1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
242
243         * call.c (joust): Don't warn about "confusing" conversions to the
244         same type.
245
246 1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>
247
248         * class.c (push_nested_class): Complain about namespaces.
249         * decl.c (start_decl): Enter the object's namespace.
250         (cp_finish_decl): Leave it.
251         (grokdeclarator): Likewise.
252         * decl2.c (check_decl_namespace): New function.
253         (finish_file): Call it.
254         * parse.y (complex_direct_notype_declarator): Set complexity
255         of namespace-qualified ids to -1, enter the namespace.
256
257         * method.c (build_template_decl_overload): Expect _DECL as first
258         parameter. Put context temporarily into current_namespace.
259         * pt.c (check_explicit_specialization): Change caller.
260         (tsubst): Likewise.
261
262         * init.c (build_offset_ref): Call mark_used and
263         convert_from_reference for namespace members.
264
265 Mon Jul 13 23:25:28 1998  Martin von Löwis  <loewis@informatik.hu-berlin.de>
266
267         * search.c (my_tree_cons): The bitfield is at index 2.
268
269 Mon Jul 13 17:21:01 1998  Nick Clifton  <nickc@cygnus.com>
270
271         * lang-options.h: Format changed to work with new --help support
272         in gcc/toplev.c
273         
274 1998-07-12  Martin von Löwis  <loewis@informatik.hu-berlin.de>
275
276         * decl2.c (build_expr_from_tree): Change calls of do_identifier.
277         Do Koenig lookup in CALL_EXPR.
278         (arg_assoc): Handle error_mark.
279         * lex.c (is_global): New function.
280         (do_identifier): Expect arguments for Koenig lookup.
281         * parse.y (primary): Add rules for calls of unqualified function calls.
282         (do_id): Change call of do_identifier.
283         * pt.c (finish_stmt_expr): Likewise.
284         * semantics.c (finish_id_expr): Likewise.
285         (finish_call_expr): Add integer parameter to indicate
286         argument-dependent lookup.
287
288         * decl.c (struct binding_level): New field using_directives.
289         (push_using_decl): Not sorry anymore.
290         (push_using_directive): New function.
291         (lookup_tag): Use CP_DECL_CONTEXT to iterate.
292         (unqualified_namespace_lookup): New function, code from ...
293         (lookup_name_real): ... here.
294         * decl2.c (lookup_using_namespace): Pass using list instead of
295         initial scope.
296         (validate_nonmember_using_decl): New function.
297         (do_nonmember_using_decl): New function.
298         (do_toplevel_using_decl): Use them.
299         (do_local_using_decl): New function.
300         (do_using_directive): Support block-level directives.
301         * parse.y (simple_stmt): Support using declarations and
302         directives.
303         (namespace_qualifier, namespace_using_decl): New non-terminals.
304
305         * xref.c (classname): New function.
306         (GNU_xref_hier): Change class and base parameters to tree.
307         * decl.c (xref_baseypes): Change caller.
308         * friend.c (make_friend_class): Likewise.
309
310 1998-07-12  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
311
312         * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter 
313         comparison.
314
315         * pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a 
316         template template parameter, record its use.
317         (for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse 
318         its template arguments if exists.
319
320         * pt.c (coerce_template_template_parms): New function equivalent
321         to coerce_template_parms when IS_TMPL_PARM is true.
322         (coerce_template_parms): Use it.  Remove the IS_TMPL_PARM parameter,
323         all callers changed.
324
325         (coerce_template_parms): Access ARGLIST properly when creating a
326         new vector.  Only accept implicit TYPE_DECL as valid argument for
327         a template template parameter when it is a base class of
328         current_class_type.  Don't display error message when COMPLAIN is
329         false.
330
331 1998-07-12  Klaus Kaempf (kkaempf@progis.de)
332
333         * repo.c (get_base_filename): Use file_name_nondirectory.
334         (open_repo_file): Ditto.
335         * cp-tree.h (file_name_nondirectory): Add prototype.
336
337 1998-07-12  Jason Merrill  <jason@yorick.cygnus.com>
338
339         * friend.c (do_friend): Pull the identifier out of declarator.
340         Use cp_error and friends.
341         * decl2.c (qualified_lookup_using_namespace): Fix call to 
342         purpose_member.
343         * decl.c (lookup_name_real): Don't call complete_type on a namespace.
344         (grokvardecl): Use DECL_CLASS_SCOPE_P.
345         * cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
346         * class.c (warn_hidden): Fix for OVERLOAD.
347         From grahams@rcp.co.uk:
348         * cp-tree.h (DEFARG_NODE_CHECK): New macro.
349         (DEFARG_LENGTH, DEFARG_POINTER): Use it.
350
351 Sun Jul 12 01:20:57 1998  Jeffrey A Law  (law@cygnus.com)
352
353         * g++.1 (-traditional): Remove duplicated documentation.
354
355 1998-07-11  Mark Mitchell  <mark@markmitchell.com>
356
357         * method.c (flush_repeats): Add nrepeats parameter.
358         (issue_nrepeats): Likewise.
359         (is_back_referenceable_type): New function.  Don't back-reference
360         TEMPLATE_TYPE_PARMs as well as simple types like integers.
361         (build_mangled_name_for_type): Likewise.
362         (build_mangled_name_for_type_with_Gcode): Likewise.
363         (lasttype): Remove.
364         (nrepeats): Likewise.
365         (Nrepeats): Likewise.
366         (start_squangling): Don't clear the variables removed above.
367         (end_squangling): Likewise.
368         (flush_repeats): Tidy.  Use nrepeats parameter rather than
369         Nrepeats global.
370         (issue_nrepeats): Likewise, but with nrepeats global.  Use
371         is_backreferenceable_type.
372         (build_overload_nested_name): Tidy.  Add comment.  Use
373         build_mangled_name_for_type.
374         (build_underscore_int): Comment.
375         (build_overload_scope_ref): Use build_mangled_name_for_type.
376         (build_overload_int): Likewise.
377         (build_template_template_parm_names): Tidy.
378         (build_template_parm_names): Use build_mangled_name_for_type.
379         (build_overload_identifier): Add comments.
380         (build_mangled_name_for_type_with_Gcode): Split out from
381         build_mangled_name.
382         (build_mangled_name_for_type): Use it.
383         (build_mangled_name): Rework to use build_mangled_name_for_type
384         and to not use global nrepeats/Nrepeats.  Tidy.
385         (process_modifiers): Tidy.
386         (check_btype): Use is_backreferenceable_type.  Add comment.
387         Rename `node' to `type'.
388         (process_overload_item): Set numeric_output_need_bar here.
389         Use build_mangled_name_for_type.  Tidy.
390         (build_decl_overload_real): Tidy.  Don't use Nrepeats.  Use
391         build_mangled_name_for_type.
392
393         * pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
394         for TYPE_DECLs.
395
396 1998-07-08  Vladimir N. Makarov  <vmakarov@cygnus.com>
397
398         * cp-tree.h (warn_long_long): Define.
399         * decl.c (grokdeclarator): Add flag `warn_long_long' as guard for
400         warning "ANSI C++ does not support `long long'".
401         * decl2.c (warn_long_long): Define.
402         (lang_decode_option): Parse -Wlong-long, -Wno-long-long options.
403
404 1998-07-07  Jason Merrill  <jason@yorick.cygnus.com>
405
406         * decl.c (xref_tag): Handle attributes between 'class' and name.
407         * parse.y (aggr): Likewise.
408         * semantics.c (finish_class_definition): Likewise.
409         * Makefile.in (EXPECTED): Adjust.
410
411         * cp-tree.h: Declare flag_optional_diags and warn_multichar.
412         * decl2.c: Define them.
413         (lang_decode_option): Handle them.
414         * lang-options.h: Add -foptional-diags.
415         * class.c (finish_struct): Don't complain about multiple meanings of 
416         name if -fno-optional-diags.
417         * decl.c (pushdecl_class_level): Likewise.
418         * lex.c (real_yylex): Check warn_multichar.
419
420 1998-07-06  Jason Merrill  <jason@yorick.cygnus.com>
421
422         * decl.c (lookup_tag): Use CP_DECL_CONTEXT.
423
424         * tree.c (make_binfo): Fix length.
425
426 1998-06-30  Benjamin Kosnik  <bkoz@bliss.nabi.net>
427
428         * decl2.c (lang_decode_option): Remove warn_template_debugging.
429         * lang-options.h: Ditto.
430
431 Mon Jun 29 20:17:40 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
432
433         * except.c (build_eh_type_type_ref): Remove unused variable `susp'.
434         (process_start_catch_block): Likewise for variables
435         `false_label_rtx', `call_rtx' and `return_value_rtx'.
436
437 1998-06-29  Brendan Kehoe  <brendan@cygnus.com>
438
439         * tree.c (build_srcloc): Make sure we allocate this node on the
440         permanent obstack.
441
442 Sat Jun 27 23:34:18 1998  Fred Fish  <fnf@ninemoons.com>
443
444         * g++spec.c (NEED_MATH_LIBRARY): Define to 1 if not already defined.
445         (lang_specific_driver): Initialize need_math with NEED_MATH_LIBRARY.
446         (lang_specific_driver): Only add -lm automatically if need_math is
447         nonzero.
448
449 Sat Jun 27 12:22:56 1998  Jeffrey A Law  (law@cygnus.com)
450
451         * Make-lang.in (g++): Depend on mkstemp.o.  Link in mkstemp.o
452
453 Sat Jun 27 07:36:09 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
454
455         * Makefile.in (EXPR_H): New dependency variable.
456         (decl2.o): Depend on $(EXPR_H).
457         (typeck.o): Likewise.
458         (init.o): Likewise.
459         (expr.o): Likewise.
460
461 1998-06-25  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
462
463         * decl.c (start_enum): Put local enums on permanent_obstack.
464
465 1998-06-25  Mark Mitchell  <mark@markmitchell.com>
466
467         * cp-tree.h (c_get_alias_set): Declare.
468         * decl.c (init_decl_processing): Set lang_get_alias_set.
469
470 1998-06-25  Andrew MacLeod  <amacleod@cygnus.com>
471
472         * cp-tree.h (mark_all_runtime_matches): Add function prototype.
473         * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED
474         flag for all function decls which are in the exception table. 
475         * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match.
476         * decl2.c (finish_file): Call mark_all_runtime_matches to make sure
477         code is emitted for any referenced rtti function.
478
479 1998-06-25  Dave Brolley  <brolley@cygnus.com>
480
481         * lang-specs.h: Use new | syntax to eliminate
482         string concatenation.
483
484 1998-06-25  Jason Merrill  <jason@yorick.cygnus.com>
485
486         * cp-tree.h (CP_DECL_CONTEXT): New macro.
487         * decl2.c (is_namespace_ancestor, lookup_using_namespace): Use it.
488         * method.c (build_overload_nested_name): Likewise.
489         * sig.c (build_signature_pointer_or_reference_type): Don't set
490         DECL_CONTEXT.
491
492 1998-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
493
494         Set DECL_CONTEXT for globals to NULL_TREE instead of global_namespace.
495         * cp-tree.h (FROB_CONTEXT): New macro.
496         (DECL_MAIN_P): ::main should have a DECL_CONTEXT of NULL_TREE.
497         * decl.c (namespace_binding): Replace NULL_TREE with
498         global_namespace.
499         (set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
500         * decl2.c (is_namespace_ancestor, lookup_using_namespace):
501         Likewise.
502         * decl.c (pushtag): Use FROB_CONTEXT.
503         (pushdecl, make_typename_type, define_function, grokdeclarator):
504         Likewise.
505         * decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
506         * pt.c (push_template_decl_real, lookup_template_class, tsubst):
507         Likewise.
508         * decl2.c (decl_namespace): Return global_namespace if no context.
509         * method.c (build_overload_nested_name): Expect null as context.
510         * pt.c (mangle_class_name_for_template): Do nothing for null
511         contexts.
512         (lookup_template_class): Allow for null id_context.
513
514 1998-06-25  Richard Henderson  <rth@cygnus.com>
515
516         * method.c (emit_thunk): Set current_function_is_thunk for the
517         ASM_OUTPUT_MI_THUNK case as well.
518
519 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
520
521         * exception.cc (__cplus_type_matcher): Get a match_info pointer
522         instead of an exception table entry as a parameter.
523
524 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
525
526         * parse.y (function_try_block): Don't call start_catch_handler.
527         * except.c (call_eh_info): Remove coerced field from declaration.
528         (build_eh_type_type_ref): New function to create an address of a
529         rtti function for the new style exception tables.
530         (expand_start_catch_block): Split function, this contains the
531         common part.
532         (process_start_catch_block_old): New function to perform the rest
533         of expand_start_catch_block under old style exceptions.
534         (process_start_catch_block_old): New function to perform the rest
535         of expand_start_catch_block under new style exceptions.
536         (expand_end_catch_block): Only pop the false label off the stack under
537         the old style of exceptions.
538         * semantics.c (finish_try_block): Don't call start_catch_handler.
539         * exception.cc (struct cp_eh_info): Add original_value field.
540         (__cplus_type_matcher): Perform type matching on the original exception
541         value, and if we have a match, set the current value.
542         (__cp_push_exception): Set the original expcetion value.
543
544 1998-06-23  Jason Merrill  <jason@yorick.cygnus.com>
545
546         * call.c (joust): Fix confusing conversion warning.
547
548         * call.c (build_op_delete_call): Add placement parm.  Check
549         LOOKUP_SPECULATIVELY.
550         * cp-tree.h, decl2.c, init.c: Adjust.
551         * decl.c (finish_function): Use it.
552
553         * pt.c (tsubst): Diagnose creating void fields or variables.
554
555 Mon Jun 22 08:50:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
556
557         * call.c (build_scoped_method_call): Remove unused variable `tmp'.
558
559         * cp-tree.h (check_dtor_name): Add prototype.
560
561         * init.c (expand_member_init): Remove unused variables
562         `ptr_type_node', `parm' and `rval'.
563
564         * ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
565         in call to fprintf.
566         (lang_print_xnode): Likewise.
567
568         * typeck2.c (enum_name_string): Cast argument to sprintf to long
569         and use %ld specifier.
570
571         * xref.c (GNU_xref_end_scope): Use HOST_WIDE_INT_PRINT_DEC
572         specifier in call to fprintf.
573         (GNU_xref_member): Cast argument to sprintf to int.
574
575 Fri Jun 19 23:22:42 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
576
577         * typeck2.c (pop_init_level): Warn about implicit zero initialization
578         of struct members.
579
580 Thu Jun 18 09:32:32 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
581
582         * cp-tree.h: Prototype function `check_java_method'.
583
584 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
585
586         * class.c (finish_struct): Make conflicting use of id a pedwarn.
587         * decl.c (pushdecl_class_level): Likewise.
588
589 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
590
591         * pt.c (convert_nontype_argument): Issue an error when presented
592         with an integer (real) constant that cannot be simplified to an
593         INT_CST (REAL_CST).
594
595         * cp-tree.h (c_get_alias_set): Remove declaration added in
596         1998-06-13 change that should never have been checked in.
597
598 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
599
600         * typeck.c (build_binary_op_nodefault): Change % in format strings
601         to %%.
602
603         * decl.c (grokvardecl): Don't build_static_name for decls that
604         aren't at namespace scope.
605
606         * init.c (perform_member_init): Catch default-initialization of
607         references.
608
609 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
610
611         * errfn.c (cp_thing): Handle the `%%' formatting sequence.
612
613 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
614
615         * method.c (hack_identifier): Complain about getting a namespace
616         or class template.
617         * typeck.c (decay_conversion): Remove check for namespaces.
618         * typeck2.c (incomplete_type_error): Likewise.
619         * parse.y (template_arg): Add PTYPENAME expansion.
620
621 1998-06-16  Andrew MacLeod  <amacleod@cygnus.com>
622
623         * decl.c (grokvardecl): Don't build external assembler names for 
624         TYPENAMEs in other namespaces as there is no declarator.
625         * error.c (cp_file_of, cp_line_of): Don't extract file or line number
626         info from DECL_CONTEXT if it is NULL.
627
628 1998-06-16  Jason Merrill  <jason@yorick.cygnus.com>
629
630         * call.c (check_dtor_name): Split out.
631         (build_scoped_method_call): Use it.
632         (build_method_call): Use it.
633         * init.c (build_offset_ref): Use it.
634
635         * typeck.c (build_static_cast): Fix handling of pointers to members.
636
637         * decl.c (finish_function): Just return nothing from a constructor.
638         * typeck.c (c_expand_return): Complain about returning a void
639         expression from a destructor.
640
641 1998-06-13  Mark Mitchell  <mark@markmitchell.com>
642
643         * class.c (alter_access): Accept a BINFO explaining how to get
644         from the entity whose accessed is being altered to the type doing
645         the altering.
646         (handle_using_decl): New function containing code split out from ...
647         (finish_struct_1): Here.
648
649         * cp-tree.h (complete_type_or_else): Declare.
650         * init.c (build_new_1, build_delete): Use it.
651         * typeck.c (require_complete_type): Use complete_type, rather than
652         expanding it inline.
653         (complete_type_or_else): New function.
654         (build_component_ref): Use it.
655         (pointer_int_sum): Make sure the type pointed to is complete.
656         (pointer_diff): Likewise.
657
658         * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
659         types. 
660
661         * search.c (get_matching_virtual): Note that member templates
662         cannot override virtual functions.
663
664 1998-06-12  Brendan Kehoe  <brendan@cygnus.com>
665
666         * pt.c (check_explicit_specialization): If DECLARATOR turned into
667         an error_mark_node from lookup_template_function, return the same.
668         (determine_specialization): Also make sure TEMPLATE_ID isn't an
669         error_mark_node, before we try to read its operands.
670         * decl.c (grokdeclarator): If we got an error_mark_node from
671         check_explicit_specialization, just return it right back.
672
673 1998-06-12  Mark Mitchell  <mark@markmitchell.com>
674
675         * class.c (instantiate_type): Don't treat template-ids that don't
676         specify any template arguments as equivalent to ordinary
677         identifiers.  Use OFFSET_REF instead of SCOPE_REF to refer to
678         pointer-to-members for member templates.  Tidy slightly.
679         * cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
680         * init.c (build_offset_ref): Handle template-ids like ordinary
681         identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
682         offset part of the OFFSET_REF.
683         * typeck.c (build_unary_op): Change check for unknown types to
684         look for OFFSET_REFs, not SCOPE_REFs.
685
686 1998-06-11  Mark Mitchell  <mark@markmitchell.com>
687
688         * pt.c (is_member_template_class): New function.
689         (push_template_decl_real): Use it.
690
691 1998-06-11  Benjamin Kosnik  <bkoz@elmo.cygnus.com>
692
693         * friend.c (do_friend): Add support for nested classes using
694         member functions of the enclosing class as friends.
695
696 1998-06-10  Mark Mitchell  <mark@markmitchell.com>
697
698         * call.c (convert_default_arg): Make global, not static.
699         (convert_arg_for_ellipsis): Split out from ...
700         (build_over_call): Here.
701         * cp-tree.h (convert_default_arg); Declare.
702         (convert_arg_to_ellipsis): Likewise.
703         (do_member_init): Remove.
704         * init.c (do_member_init): Remove; this code is dead.
705         (expand_member_init): Remove much of this code; it is dead.
706         * typeck.c (convert_arguments): Use convert_default_arg and
707         convert_arg_for_ellipsis, rather than duplicating here.
708         
709         * call.c (convert_like): Don't fail silently if 
710         build_user_type_conversion fails.  Always return error_mark_node 
711         for failure.
712
713 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
714
715         * search.c (covariant_return_p): Complain about ambiguous base.
716
717         * typeck.c (build_component_ref): Diagnose ref to nested type.
718
719 1998-06-10  Brendan Kehoe  <brendan@cygnus.com>
720
721         * decl.c (grokparms): Check that INIT isn't an error_mark_node
722         before giving error about invalid type for default arg.
723
724 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
725
726         * call.c (build_method_call): Fix thinko.
727
728 1998-06-10  Dave Brolley  <brolley@cygnus.com>
729
730         * decl2.c (lang_decode_option): New argc/argv interface.
731         * cp-tree.h (lang_decode_option): New argc/argv interface.
732         * lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
733         specified for cpplib-enabled compilers.
734         * lex.c (lang_init): Don't check_newline for cpplib.
735         (init_parse): Don't initialize cpplib here.
736
737 1998-06-10  Brendan Kehoe  <brendan@cygnus.com>
738
739         * typeck.c (build_component_ref): Make sure FIELD has a lang_specific
740         piece before checking DECL_MUTABLE_P.
741
742 1998-06-10  John Carr  <jfc@mit.edu>
743
744         * tree.c (debug_binfo): Make printf format match arguments.
745
746         * error.c (OB_PUTI): Make printf format match arguments.
747
748 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
749
750         * init.c (perform_member_init): Handle default-initialization.
751
752         * except.c (build_throw): Handle throwing NULL.
753
754         * typeck.c (build_x_function_call): Use resolve_offset_ref.
755
756         * search.c (compute_access): Only strip an anonymous union
757         for a FIELD_DECL.
758
759         * call.c (add_builtin_candidates): Tweak.
760
761         * cvt.c (build_expr_type_conversion): Restore code for conversion
762         from class types.
763         * decl2.c (delete_sanity): Use it.  Clean up.
764
765         * typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.
766
767 1998-06-10  Branko Cibej  <branko.cibej@hermes.si>
768
769         * typeck.c (c_expand_return): Don't warn about void expressions on
770         return statements in functions returning void.
771
772 1998-06-09  Mark Mitchell  <mark@markmitchell.com>
773
774         * pt.c (fn_type_unification): Revise documentation.  Tidy.
775         (type_unification): Likewise.
776
777 1998-06-09  Andrew MacLeod  <amacleod@cygnus.com>
778
779         * semantics.c (finish_try_block): Rename expand_start_catch, and delete
780         expand_end_catch.
781         * parse.y (function_try_block): Rename expand_start_catch, and delete
782         expand_end_catch.
783         * except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
784         expand_end_catch.
785
786 1998-06-09  Jason Merrill  <jason@yorick.cygnus.com>
787
788         * search.c (lookup_member): New fn.
789         * class.c (finish_struct_1): Use it.
790         * decl.c (lookup_name_real): Use it.
791
792 Mon Jun  8 20:45:52 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
793
794         * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
795
796         * cp-tree.h: Add prototype for `maybe_print_template_context' and
797         `maybe_make_one_only'.
798
799         * decl.c (auto_function): Remove unused variable `decl'.
800
801         * decl2.c: Include dwarf2out.h and dwarfout.h.
802
803         * lex.c: Remove redundant declarations of `set_float_handler' and
804         `asm_out_file'.
805
806 1998-06-08  Andrew MacLeod  <amacleod@cygnus.com>
807
808         * except.c (init_exception_processing): Remove NEW_EH_MODEL compile 
809         time flag.  Call __cp_eh_info instead of __cp_exception_info.
810         * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
811         (__cp_exception_info): Return offset into cp_eh_info structure to 
812         match what use to be the start of this structure.
813         (__cp_eh_info): New function to return a pointer to cp_eh_info struct.
814         (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
815         compile time flag.
816         (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call 
817         __cp_eh_info instead of __cp_exception_info.
818
819 1998-06-08  Jason Merrill  <jason@yorick.cygnus.com>
820
821         * decl.c (cp_finish_decl): Disable inlining of extern inlines
822         with static variables.
823
824 1998-06-08  Mark Mitchell  <mark@markmitchell.com>
825
826         * init.c (build_offset_ref): Correct previous change to use build,
827         not build_min.
828
829 1998-06-07  Mark Mitchell  <mark@markmitchell.com>
830
831         * class.c (instantiate_type): Handle pointer-to-members where the
832         member is a template.
833         * init.c (build_offset_ref): Likewise.
834         * typeck.c (build_unary_op): Likewise.
835
836 1998-06-07  Richard Henderson  <rth@cygnus.com>
837
838         * lex.c (lang_init_options): New function.
839         (lang_init): Remove flag_exceptions == 2 hack.
840         
841 1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
842
843         * search.c (envelope_add_decl): Tweak for implicit typename.
844
845         * call.c (joust): Also warn about confusing conversion op/constructor
846         overload resolution.
847
848         * spew.c (yylex): Also return the TYPE_DECL if got_object.
849         Don't clear got_object after '~'.
850         * call.c (build_scoped_method_call): Tweak destructor handling.
851         (build_method_call): Likewise.
852         * pt.c (tsubst_copy, case METHOD_CALL_EXPR): Don't mess with
853         TYPE_MAIN_VARIANT for destructors.
854         * semantics.c (finish_object_call_expr): Complain about calling a
855         TYPE_DECL.
856
857 1998-06-05  Per Bothner  <bothner@cygnus.com>
858
859         * g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
860         Define - update needed by gcc.c change.
861
862 1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
863
864         * error.c (cp_printers): Use 'o' instead of '_' for the null entry.
865
866 1998-06-05  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
867
868         * cp-tree.h (DECL_NAMESPACE_ALIAS, ORIGINAL_NAMESPACE): Declare.
869         * decl.c (lookup_name_real): Add namespaces_only parameter.
870         If set, return only NAMESPACE_DECLs.
871         (select_decl): Likewise.
872         (identifier_type_value): Give additional parameter.
873         (lookup_name_nonclass): Likewise.
874         (lookup_name): Likewise.
875         (find_binding): Skip namespace aliases.
876         (binding_for_name): Likewise.
877         (push_namespace): Check for namespace aliases.
878         (lookup_name_namespace_only): New function.
879         (begin_only_namespace_names, end_only_namespace_names): New functions.
880         * decl2.c (set_decl_namespace): Skip namespace aliases.
881         (do_using_directive): Likewise.
882         (do_namespace_alias): Produce namespace aliases, fix alias 
883         redeclaration.
884         * error.c (dump_decl): Support SCOPE_REF.
885         * parse.y (extdef): Wrap lookup with namespace_only for namespace
886         aliases and using declarations.
887
888 1998-06-04  Jason Merrill  <jason@yorick.cygnus.com>
889
890         * tree.c (really_overloaded_fn): Only see through one TREE_LIST.
891
892         * error.c (dump_expr): Clean up NEW_EXPR case.
893
894 1998-06-04  Martin von Löwis  <loewis@informatik.hu-berlin.de>
895
896         Suggested by Brendan Kehoe
897         * decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
898         treat it as using ::decl.
899
900         * decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.
901
902         * tree.c (mapcar): Support NEW_EXPR.
903
904         * error.c (dump_expr): Support NEW_EXPR.
905
906 1998-06-03  Jason Merrill  <jason@yorick.cygnus.com>
907
908         * method.c (make_thunk): Use overload machinery to make name.
909         * search.c (covariant_return_p): New fn.
910         (get_matching_virtual): Use it.
911
912         * init.c (build_new_1): Fix check for void.
913
914 1998-06-01  Per Bothner  <bothner@cygnus.com>
915
916         * cp-tree.h (TYPE_FOR_JAVA):  New macro.
917         * decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
918         java_int_type_node, java_long_type_node, java_float_type_node,
919         java_double_type_node, java_char_type_node, java_boolean_type_node):
920         New "primitive" types, with predefined names __java_byte etc.
921         (record_builtin_java_type):  New function.
922         (init_decl_processing):  Make Java types with record_builtin_java_type.
923         (pushtag, grokdeclarator):  Set TYPE_FOR_JAVA if in extern "JAVA".
924         (xref_baseypes):  If base class was TYPE_FOR_JAVA, so is this class.
925         (grokfndecl):  Call check_java_method for Java classes.
926         * method.c (is_java_type):  Removed.  Replaced with TYPE_FOR_JAVA.
927         (process_overload_item):  Match types against specific
928         java_XX_type_node types, rather than using is_java_type.
929         * class.c (finish_struct_1):  Don't add default copy constructor
930         or operator= if TYPE_FOR_JAVA.
931         (pop_lang_conext):  Restore strict_prototyp proper if Java.
932         * decl2.c (acceptable_java_type, check_java_method):  New functions.
933         * pt.c (instantiate_class_template):  Copy TYPE_FOR_JAVA from pattern.
934         (tsubst):  Move common statement after if statement.
935         * typeck.c (comptypes):  If strict, TYPE_FOR_JAVA must match.
936
937 1998-06-01  Jason Merrill  <jason@yorick.cygnus.com>
938
939         * pt.c (for_each_template_parm): Use first_rtl_op.
940
941         * tree.c (build_cplus_array_type_1): Also check index_type for
942         template parms.
943
944 1998-05-31  Jason Merrill  <jason@yorick.cygnus.com>
945
946         * pt.c (tsubst): Always copy BINFO_BASETYPES.
947
948 1998-05-29  scott snyder  <snyder@d0sgif.fnal.gov>
949
950         * tree.c (layout_basetypes): If we change TYPE_SIZE, change
951         TYPE_SIZE_UNIT too.
952
953 1998-05-29  Mark Mitchell  <mark@markmitchell.com>
954
955         * decl.c (grokdeclarator): Don't complain about in-class
956         initialization of static consts if we don't really know the type
957         of the variable.
958
959 1998-05-29  Jason Merrill  <jason@yorick.cygnus.com>
960
961         * cp-tree.h (DECL_DESTRUCTOR_P): New macro.
962         * method.c (build_destructor_name): New fn.
963         * decl2.c (maybe_retrofit_in_chrg): Split out...
964         (grokclassfn): From here.  Reorganize.
965         * decl.c (grok_ctor_properties): Make sure ctors for types with 
966         vbases have the in_chrg parm.
967         * pt.c (instantiate_class_template): Update 
968         TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases.  Don't call
969         grok_*_properties.
970         (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.
971
972 1998-05-28  Mark Mitchell  <mark@markmitchell.com>
973
974         * pt.c (instantiate_decl): Make test for whether or not static
975         variables should be instantiated early match its comment.
976
977 1998-05-28  Jason Merrill  <jason@yorick.cygnus.com>
978
979         * decl.c (start_decl): Always pedwarn about vacuously redeclaring 
980         a member.
981         (start_function): Call check_default_args.
982         * decl2.c (grokfield): Don't call check_default_args.
983         (check_default_args): Use cp_error_at.
984         * lex.c (do_pending_defargs): Call check_default_args.
985
986 1998-05-27  Brendan Kehoe  <brendan@cygnus.com>
987
988         * call.c (build_method_call): Make sure get_type_value returns
989         something before we try to use its TYPE_MAIN_VARIANT.
990         (build_scoped_method_call): Likewise.
991
992 1998-05-27  Jason Merrill  <jason@yorick.cygnus.com>
993
994         * typeck2.c (digest_init): Complain about getting a TREE_LIST to
995         initialize an array.
996
997         * search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
998         DECL_VIRTUAL_P.
999
1000         * friend.c (do_friend): Clarify template warning.
1001
1002 1998-05-27  Mark Mitchell  <mark@markmitchell.com>
1003
1004         * decl.c (shadow_label): Don't treat decls as identifiers.
1005         (maybe_push_to_top_level): Clear shadowed_labels.
1006
1007         * pt.c (instantiate_decl): Reset lineno and filename after calling
1008         regenerate_decl_from_template. 
1009
1010         * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
1011         error_mark_node.
1012
1013 1998-05-27  Kevin Buhr  <buhr@stat.wisc.edu>
1014
1015         * parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.
1016
1017 1998-05-26  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1018
1019         * pt.c (process_template_parm): Accept TYPENAME_TYPE nodes.
1020         (convert_nontype_argument): Handle cases when nontype template
1021         parameters become classes after substitution.
1022
1023 1998-05-26  Mark Mitchell  <mark@markmitchell.com>
1024
1025         * friend.c (is_friend): Use comptypes, rather than == to compare
1026         types.  Modify for new representation of template friends.
1027         (make_friend_class): Likewise.
1028         * pt.c (tsubst_friend_class): Undo 1998-05-21 change.  Tweak.
1029         (instantiate_class_template): Deal with template friends.
1030
1031         * decl.c (store_parm_decls): Remove redundant call to
1032         expand_main_function.
1033
1034 1998-05-26  Benjamin Kosnik  <bkoz@loony.cygnus.com>
1035
1036         * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
1037         DECL_USE_TEMPLATE.
1038
1039 1998-05-26  Per Bothner  <bothner@cygnus.com>
1040
1041         * language_as_string:  Handle lang_java.
1042
1043 1998-05-26  Jason Merrill  <jason@yorick.cygnus.com>
1044
1045         * decl.c (pushdecl): Don't copy the type_decl.
1046
1047 1998-05-26  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
1048
1049         * class.c (pushclass): Always store TYPE_MAIN_VARIANT in
1050         current_class_type.
1051         * decl.c (grokdeclarator): Put typedefs on the type's obstack.
1052
1053         * parse.y (complex_direct_notype_declarator): Use $1 to access
1054         scope of notype_qualified_id.
1055
1056 1998-05-26  Dave Brolley  <brolley@cygnus.com>
1057
1058         * lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
1059         (init_parse): Initialize cpplib interface.
1060
1061         * Makefile.in (CXX_OBJS): Make sure dependencies never end with an
1062         empty continuation.
1063
1064 1998-05-26  Mark Mitchell  <mark@markmitchell.com>
1065
1066         * decl.c (pushtag): Avoid crashing on erroneous input.
1067
1068 1998-05-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
1069
1070         * decl.c (push_namespace): Only produce one unique name for
1071         anonymous namespaces.
1072         (get_unique_name): Remove.
1073
1074 1998-05-25  Mark Mitchell  <mark@markmitchell.com>
1075
1076         * call.c (tourney): Don't do any extra comparisons.
1077
1078         * decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.
1079
1080         * cp-tree.h (processing_template_parmlist): Declare.
1081         * decl.c (pushtag): Don't call push_template_decl when we
1082         shouldn't. 
1083         * pt.c (processing_template_parmlist): New variable.
1084         (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro.
1085         (complete_template_args): Use it.
1086         (add_to_template_args): Likewise.
1087         (innermost_args): Likewise.
1088         (tsubst): Likewise.
1089         (begin_template_parm_list): Use processing_template_parmlist.
1090         (end_template_parm_list): Likewise.
1091
1092         * cp-tree.h (ANON_UNION_TYPE_P): New macro.
1093         * decl.c (grokdeclarator): Use it.
1094         * decl2.c (grok_x_components): Likewise.
1095         * init.c (initializing_context): Likewise.
1096         * method.c (do_build_copy_constructor): Likewise.
1097         (do_build_assign_ref): Likewise.
1098         * search.c (compute_access): Likewise.
1099         * typeck.c (build_component_ref): Likewise.
1100
1101         * decl.c (grokdeclarator): Don't give a cv-qualified version of an
1102         unnamed type a typedef name "for linkage purposes".
1103
1104         * pt.c (lookup_template_class): Don't look at
1105         IDENTIFIER_CLASS_VALUE when there's no current_class_type.
1106
1107         * method.c (build_overload_int): Handle error cases gracefully.
1108
1109         * pt.c (instantiate_decl): Handle static member variables
1110         correctly.
1111
1112         * pt.c (tsubst): Use the tsubst'd type when producing new
1113         TEMPLATE_PARM_INDEX nodes.
1114
1115 1998-05-24  Mark Mitchell  <mark@markmitchell.com>
1116
1117         * tree.c (cp_tree_equal): Handle pointers to member functions.
1118
1119         * call.c (maybe_handle_implicit_object): Handle QUAL_CONVs.  Make
1120         sure the type of the REF_BIND is a reference type.
1121         (maybe_handle_ref_bind, compare_ics): Rename reference_type to
1122         target_type for clarity.
1123
1124         * parse.y (xcond): Move call to condition_conversion ...
1125         * semantics.c (finish_for_cond): Here.
1126         * parse.c: Regenerated.
1127         
1128 1998-05-24  Jason Merrill  <jason@yorick.cygnus.com>
1129
1130         * decl.c (push_namespace): Namespaces have type void.
1131         * typeck2.c (incomplete_type_error): Complain about namespace
1132         used as expression.
1133         * typeck.c (decay_conversion): Likewise.
1134
1135 1998-05-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1136
1137         * error.c (dump_expr): Support namespaces.
1138
1139 1998-05-23  Jason Merrill  <jason@yorick.cygnus.com>
1140
1141         * cp-tree.def: Add SRCLOC.
1142         * cp-tree.h: Add struct tree_srcloc and accessor macros.
1143         * tree.c (build_srcloc, build_srcloc_here): New fns.
1144         * pt.c (add_pending_template): Use build_srcloc_here.
1145         (push_tinst_level): Update last_template_error_tick before erroring.
1146         (instantiate_decl): Restore lineno and input_filename before 
1147         calling add_pending_template.
1148         * decl2.c (finish_file): Set up lineno and input_filename for
1149         pending templates.
1150
1151 1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
1152
1153         * decl.c (lang_print_error_function): New fn.  
1154         (init_decl_processing): Set print_error_function to use it.
1155         * errfn.c (cp_thing): Don't call maybe_print_template_context here.
1156
1157         * call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
1158         ICS_BAD_FLAG.
1159
1160         * cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
1161         copy-initialization.
1162
1163         * class.c (build_vtable_entry): Use int_fits_type_p.
1164         (build_vtable): Pass a signed offset to build_vtable_entry.
1165         (prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
1166         set_rtti_entry): Likewise.
1167
1168 1998-05-22  Per Bothner  <bothner@cygnus.com>
1169
1170         * cp-tree.h:  Add comments documenting which LANG_FLAGS are used.
1171         (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE):  Removed, not used.
1172
1173 1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
1174
1175         * pt.c (print_template_context): Use fprintf instead of cp_error.
1176
1177         * pt.c (determine_specialization): Just return an error_mark_node.
1178         Also print the decl we want in error messages.  If we complain,
1179         return error_mark_node.
1180         (tsubst_friend_function): Set lineno and input_filename so 
1181         error messages will be useful.
1182         (instantiate_template): Just return an error_mark_node.
1183         (check_explicit_specialization): Don't mess with a returned
1184         error_mark_node.
1185
1186         * pt.c (print_template_context): Add new argument.
1187         (maybe_print_template_context): New fn.
1188         (push_tinst_level): Increment tinst_level_tick.
1189         (pop_tinst_level): Likewise.
1190         * errfn.c (cp_thing): Call maybe_print_template_context.  Use
1191         xrealloc instead of xmalloc.
1192
1193         * typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.
1194
1195 1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
1196
1197         * pt.c (tsubst_friend_class): Don't call redeclare_class_template
1198         if the template we looked up is the same as the one we already
1199         have.
1200
1201 Thu May 21 11:54:44 1998  Dave Brolley  <brolley@cygnus.com>
1202
1203         * lex.c: (handle_sysv_pragma): FILE* parameter not used.
1204         (cpp_reader,parse_in): Add for cpplib.
1205         (check_newline): Call handle_sysv_pragma with new interface.
1206         (check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.
1207
1208         * input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
1209         (sub_getch): Call GETC for cpplib.
1210
1211         * cp-tree.h: (get_directive_line): Different prototype for cpplib.
1212         (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
1213
1214         * Makefile.in (CXX_OBJS): add @extra_cxx_objs@ for cpplib.
1215
1216 1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
1217
1218         * decl2.c (maybe_make_one_only): New fn.
1219         (import_export_vtable): Use it.
1220         (import_export_decl): Likewise.
1221         * pt.c (mark_decl_instantiated): Likewise.
1222
1223 1998-05-21  Mark Mitchell  <mmitchell@usa.net>
1224
1225         * decl2.c (find_representative_member): Rename to ...
1226         (build_anon_union_vars): New function.
1227         (finish_anon_union): Fix stupidity of previous change.
1228
1229 1998-05-20  Jason Merrill  <jason@yorick.cygnus.com>
1230
1231         * decl.c (grokfndecl): Handle definition of specialization in
1232         friend declaration.
1233
1234         * error.c (dump_decl): Fix LOOKUP_EXPR handling.
1235
1236 1998-05-20  Mark Mitchell  <mmitchell@usa.net>
1237
1238         * class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
1239         to look for type declarations.
1240         (finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
1241         * cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
1242         (finish_member_class_template): Declare.
1243         * decl.c (pushtag): Put member class templates on the
1244         CLASSTYPE_TAGS list, just as for ordinary member classes.
1245         (pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
1246         (lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
1247         IDENTIFIER_NAMESPACE_VALUEs. 
1248         * parse.y (component_decl): Move code to ...
1249         * semantics.c (finish_member_class_template): New function.  
1250         Don't put member class templates on the list of components for a
1251         class. 
1252         * parse.c: Regenerated.
1253         * pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
1254         In fact, don't use DECL_CONTEXT at all here.
1255
1256 1998-05-20  Martin von Loewis  <loewis@informatik.hu-berlin.de>
1257
1258         * decl.c (record_unknown_type): New function.
1259         (init_decl_processing): Call it for the unknown and global type
1260         nodes.
1261
1262 1998-05-20  Mark Mitchell  <mmitchell@usa.net>
1263
1264         * decl2.c (find_representative_member): New function.
1265         (finish_anon_union): Use it.
1266
1267         * cp-tree.h (MAIN_NAME_P): New macro.
1268         (DECL_MAIN_P): Likwise.
1269         * decl.c (pushdecl): Avoid crashing on redefinitions of `main'.
1270         (grokfndecl): Use the new macros.
1271         (grokdeclarator): Likewise.
1272         (start_function): Likewise.
1273         (store_parm_decls): Likewise.
1274         (finsh_function): Likewise.
1275         * friend.c (do_friend): Likewise.
1276         * typeck.c (build_function_call_real): Likewise.
1277         (build_unary_op): Likewise.
1278
1279 Wed May 20 02:16:01 1998  Jason Merrill  <jason@yorick.cygnus.com>
1280
1281         * decl2.c (start_objects, finish_objects, do_dtors,
1282         do_ctors): Split out from...
1283         (finish_file): ...here.
1284
1285 Tue May 19 20:36:23 1998  Jason Merrill  <jason@yorick.cygnus.com>
1286
1287         * tree.c (is_overloaded_fn): Don't abort on placeholders from
1288         push_class_decls.
1289
1290 Tue May 19 15:16:22 1998  Brendan Kehoe  <brendan@cygnus.com>
1291
1292         * class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
1293
1294         * error.c (dump_expr): Handle an ARROW_EXPR.
1295
1296 Tue May 19 15:13:39 1998  Mark Mitchell  <mmitchell@usa.net>
1297
1298         * decl.c (saveable_obstack): Declare.
1299         (pushdecl): Copy TYPE_DECLs to the same obstack as the type they
1300         declare, if necessary.
1301
1302 Tue May 19 14:50:27 1998  Mark Mitchell  <mmitchell@usa.net>
1303
1304         * call.c (compare_qual): Remove.
1305         (is_subseq): Tweak.
1306         (is_properly_derived_from): New function.
1307         (maybe_handle_ref_bind): Likewise.
1308         (maybe_handle_implicit_object): Likewise.
1309         (compare_ics): Modify substantially to bring into conformance with
1310         the standard.
1311         * cp-tree.h (TYPE_PTRMEMFUNC_OBJECT_TYPE): New macro.
1312         (comp_cv_qualification): Declare.
1313         (comp_cv_qual_signature): Likewise.
1314         * typeck.c (comp_cv_qualification): Likewise.
1315         (comp_cv_qual_signature): Likewise.
1316
1317 Tue May 19 10:05:02 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1318
1319         * Makefile.in (parse.o): Depend on toplev.h.
1320
1321         * class.c (typecode_p): Remove prototype and definition.
1322
1323         * cp-tree.h (currently_open_class, is_empty_class, member_p):
1324         Add prototype.
1325
1326         * decl.c (push_overloaded_decl_top_level): Remove prototype and
1327         definition.
1328
1329         * errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
1330         in call to `cp_thing'.
1331         (cp_warning): Likewise for function pointer `warning'.
1332
1333         * except.c (do_function_call): Remove prototype and definition.
1334         (call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
1335
1336         * method.c (is_java_type): Add prototype and make it static.
1337
1338         * parse.y: Include toplev.h.
1339
1340         * pt.c (type_unification): Remove unused variable `arg'.
1341         (instantiate_decl): likewise for `save_ti'.
1342
1343         * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.
1344         
1345 Tue May 19 02:43:25 1998  Jason Merrill  <jason@yorick.cygnus.com>
1346
1347         * init.c (build_member_call): Handle template_ids.
1348         * parse.y (primary): Add global_scope template_id.
1349
1350 Mon May 18 23:22:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
1351
1352         * decl2.c (get_sentry): Use end_temporary_allocation.
1353         Don't declare permanent_obstack.
1354
1355 Mon May 18 12:28:44 1998  Mark Mitchell  <mmitchell@usa.net>
1356
1357         * parse.y (.finish_new_placement): New non-terminal.
1358         (unary_expr, new_type_id): Use it.  
1359         * parse.c: Regenerated.
1360         
1361 Mon May 18 12:20:27 1998  Brendan Kehoe  <brendan@cygnus.com>
1362
1363         * pt.c (redeclare_class_template): Say where the original definition
1364         of the template-parameter's default argument appeared.
1365
1366 Mon May 18 03:00:57 1998  Jason Merrill  <jason@yorick.cygnus.com>
1367
1368         * call.c (build_over_call): Tweak empty class handling.
1369
1370         * decl.c (make_typename_type): Use currently_open_class.
1371
1372         * class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
1373
1374 Mon May 18 01:43:01 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
1375
1376         * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE 
1377         for a type unless it is one.
1378
1379         * class.c (finish_struct_1): Use OVL_CURRENT in error message.
1380
1381 Mon May 18 01:24:08 1998  Jeffrey A Law  (law@cygnus.com)
1382
1383         * Makefile.in (program_transform_name, objdir): Define.
1384
1385         * Makefile.in (BISON): Use bison from the build tree if it exists.
1386         (FLEX): Similarly.
1387
1388 Sun May 17 14:52:08 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
1389
1390         * typeck.c (type_unknown_p): Return true for TREE_LIST also.
1391
1392         * call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
1393
1394 Sun May 17 14:51:41 1998  Jason Merrill  <jason@yorick.cygnus.com>
1395
1396         * call.c (build_scoped_method_call): Likewise.
1397
1398 Sun May 17 13:53:48 1998  Mark Mitchell  <mmitchell@usa.net>
1399
1400         * init.c (build_new_1): Call suspend_momentary around the creation
1401         of values that must be saved for exception handling.
1402         * parse.y (.build_new_placement): New non-terminal.
1403         (unary_expr, new_placement): Use it.
1404         * parse.c: Regenerated.
1405         
1406 Sun May 17 12:32:08 1998  Jason Merrill  <jason@yorick.cygnus.com>
1407
1408         * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
1409         old and new types.
1410
1411         * pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
1412         canonical type.
1413
1414         * call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
1415
1416 Fri May 15 20:28:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
1417
1418         * decl.c (start_decl): Revert problem change.
1419
1420         * Makefile.in (CONFLICTS): Fix.
1421
1422 Fri May 15 15:34:02 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
1423
1424         * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
1425
1426 Fri May 15 00:46:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
1427
1428         * class.c (finish_struct_1): Use BINFO_SIZE.
1429
1430         * decl.c (start_decl): Use 'tem'.
1431
1432 Thu May 14 16:30:47 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
1433
1434         * exception.cc: Include eh-common.h.
1435         (struct cp_eh_info): add eh_info struct with NEW_EH_MODEL.
1436         (__cplus_type_matcher): First stab at new C++ runtime type matcher.
1437         (__cp_push_exception): Initialize eh_info struct as well.
1438         * except.c: Remove local structs and include eh-common.h.
1439         (init_exception_processing): Set language and version codes.
1440         (call_eh_info): add presence of eh_info to runtime description of 
1441         struct cp_eh_info.
1442         (expand_end_eh_spec): call start_catch_block() and end_catch_block().
1443         * semantics.c (finish_try_block): call start_catch_block() and 
1444         end_catch_block().
1445         * parse.y (function_try_block): call start_catch_block() and 
1446         end_catch_block().
1447
1448 Thu May 14 12:27:34 1998  Brendan Kehoe  <brendan@cygnus.com>
1449
1450         * typeck.c (original_type): New function.
1451         (common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
1452         to see if they're actually the same.
1453         * cp-tree.h (original_type): Declare.
1454
1455 Wed May 13 12:54:30 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1456
1457         * Makefile.in (lex.o): Depend on output.h.
1458         
1459         * call.c (add_function_candidate): Remove unused variable `cand'.
1460         (add_conv_candidate): Likewise.
1461         (build_builtin_candidate): Likewise.
1462         
1463         * cp-tree.h: Add prototype for `types_overlap_p'.
1464
1465         * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
1466
1467         * decl2.c (merge_functions): Remove unused variables `tmp' and
1468         `tempn'.
1469
1470         * error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
1471         (code_as_string): Likewise.
1472         (language_as_string): Likewise.
1473         (parm_as_string): Likewise.
1474         (op_as_string): Likewise.
1475         (assop_as_string): Likewise.
1476         (cv_as_string): Likewise.
1477
1478         * lex.c: Include output.h.
1479
1480         * pt.c (type_unification): Cast first argument of `bzero' to a char*.
1481
1482         * search.c (dfs_no_overlap_yet): Mark parameter `t' with
1483         ATTRIBUTE_UNUSED.
1484
1485         * tinfo.cc (__class_type_info::dcast): Change the type of variable
1486         `i' from int to size_t.
1487
1488         * typeck.c (language_lvalue_valid): Mark parameter `exp' with
1489         ATTRIBUTE_UNUSED.
1490
1491 Tue May 12 21:37:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
1492
1493         * error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
1494         DECL_NAMESPACE_SCOPE_P.
1495         (lang_decl_name): Likewise.
1496         * pt.c (tsubst_friend_function, tsubst): Likewise.
1497         * decl.c (pushdecl, redeclaration_error_message, start_decl, 
1498         cp_finish_decl, start_function): Likewise.
1499         * class.c (finish_struct_1): Likewise.
1500         * call.c (build_over_call): Likewise.
1501         (compare_ics): Use DERIVED_FROM_P.
1502
1503 Tue May 12 07:24:18 1998  Mark Mitchell  <mmitchell@usa.net>
1504
1505         * cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
1506         * method.c (build_mangled_name): Use it.
1507         (build_decl_overload_real): Likewise.
1508
1509         * error.c (dump_simple_decl): New function, broken out from ...
1510         (dump_decl): Use it.
1511
1512 Mon May 11 11:38:07 1998  Mark Mitchell  <mmitchell@usa.net>
1513
1514         * ptree.c (lang_print_xnode): Add missing `break'.
1515
1516         * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
1517
1518         * call.c (add_template_candidate): Adjust for changes to
1519         fn_type_unification. 
1520         (add_template_candidate_real): Likewise.
1521         (add_template_conv_candidate): Likewise.
1522         (build_user_type_conversion_1): Likewise.
1523         (build_new_function_call): Likewise.
1524         (build_object_call): Likewise.
1525         (build_new_op): Likewise.
1526         (build_new_method_call): Likewise.
1527         * class.c (instantiate_type): Likewise.
1528         * cp-tree.h (unification_kind_t): New type.
1529         (fn_type_unification): Adjust prototype.
1530         (type_unificaiton): Likewise.
1531         * pt.c (UNIFY_ALLOW_NONE): New macro.
1532         (UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
1533         (UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
1534         (UNIFY_ALLOW_DERIVED): Likewise.
1535         (unify): Change prototype.
1536         (maybe_adjust_types_for_deduction): New function.
1537         (check_cv_quals_for_unify): Likewise.
1538         (determine_specialization): Adjust.
1539         (fn_type_unification): Likewise.
1540         (type_unification): Likewise.
1541         (type_unification_real): Likewise.  Use
1542         maybe_adjust_types_for_deduction.  Fix mishandling of
1543         back-unification of template functions passed as arguments.  Pass
1544         appropriate combination of UNIFY_ALLOW_* to unify.
1545         (unify): Remove unused NTPARMS parameter.  Use
1546         check_cv_quals_for_unify.  Remove bogus code that allowed
1547         too-generous unification in order to adhere more closely to standard.
1548         (get_bindings_real): Adjust.
1549         (get_class_bindings): Likewise.
1550
1551         * method.c (build_overload_identifier): Only use the innermost
1552         template arguments when mangling.
1553         * pt.c (tsubst_template_argument_vector): New function.
1554         (complete_template_args): Deal with the situation where the
1555         extra_args contain more than one level of arguments.
1556         (lookup_template_class): Deal with member template classes, which
1557         may have more than one level of arguments.
1558         (tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
1559         Improve handling of member template classes.  Use
1560         DECL_PRIMARY_TEMPLATE instead of inline expansion.  Use
1561         tsubst_template_argument_vector where appropriate.
1562         (regenerate_decl_from_template): Break out from ...
1563         (instantiate_decl): Here.
1564         
1565         * lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
1566         * parse.h: Regenerated.
1567         * parse.c: Really regenerated.
1568         
1569         * cp-tree.h (finish_unary_op_expr): New function.
1570         (finish_id_expr): Likewise.
1571         (begin_new_placement): Likewise.
1572         (finish_new_placement): Likewise.
1573         (finish_declarator): Likewise.
1574         (finish_translation_unit): Likewise.
1575         (finish_parmlist): Likewise.
1576         (begin_class_definition): Likewise.
1577         (finish_class_definition): Likewise.
1578         (finish_default_args): Likewise.
1579         (finish_inline_definitions): Likewise.
1580         * parse.y (GCC_ASM_KEYWORD): Remove.
1581         (TYPENAME_ELLIPSIS): Likewise.
1582         * parse.c: Regenerated.
1583         Use new functions in semantics.c in the actions for many rules.
1584         * gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
1585         * hash.h: Regenerated.
1586         * semantics.c (finish_expr_stmt): Allow NULL expr.
1587         (finish_unary_op_expr): New function, containing
1588         code previously in parse.y.
1589         (finish_id_expr): Likewise.
1590         (begin_new_placement): Likewise.
1591         (finish_new_placement): Likewise.
1592         (finish_declarator): Likewise.
1593         (finish_translation_unit): Likewise.
1594         (finish_parmlist): Likewise.
1595         (begin_class_definition): Likewise.
1596         (finish_class_definition): Likewise.
1597         (finish_default_args): Likewise.
1598         (finish_inline_definitions): Likewise.
1599
1600 Sun May 10 23:43:13 1998  Mark Mitchell  <mmitchell@usa.net>
1601
1602         * typeck.c (build_c_cast): Don't decay arrays and functions to
1603         pointer type when converting to a class type.
1604
1605 Sun May 10 22:53:56 1998  Jason Merrill  <jason@yorick.cygnus.com>
1606
1607         * cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
1608         (DECL_CLASS_SCOPE_P): Likewise.
1609
1610 Sun May 10 22:48:22 1998  H.J. Lu  (hjl@gnu.org)
1611
1612         * class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
1613         * decl2.c (constructor_name_full): Likewise.
1614
1615 Sun May 10 22:48:12 1998  Mike Stump  <mrs@wrs.com>
1616
1617         * tree.c (mapcar): Add OVERLOAD support.
1618
1619         * init.c (resolve_offset_ref): We must use basetype_path before we
1620         destroy it with a call to convert_pointer_to.
1621
1622 Sat May  9 14:44:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
1623
1624         * class.c (currently_open_class): New fn.
1625         * decl.c (lookup_name_real): Use it.
1626         * search.c (lookup_field): Likewise.
1627
1628 Fri May  8 23:32:42 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
1629
1630         * cp-tree.def (OVERLOAD): New node.  
1631         * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
1632         SET_IDENTIFIER_NAMESPACE_VALUE): Define.
1633         (NAMESPACE_BINDING): Remove.
1634         (IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
1635         namespace_binding.
1636         (OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
1637         Define.
1638         (tree_overload): New struct.
1639         (IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
1640         (REAL_IDENTIFIER_TYPE_VALUE): Define.
1641         (IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
1642         (lang_decl_flags): Remove in_namespace.
1643         (lang_decl): Remove chain.
1644         (DECL_CHAIN, DECL_NAMESPACE): Remove.
1645         (flag_honor_std): Declare extern.
1646         (identifier_type_value, pushdecl_namespace_level, push_using_decl,
1647         namespace_binding, set_namespace_binding,
1648         lookup_function_nonclass, cat_namespace_levels,
1649         set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
1650         scratch_ovl_cons, ovl_member, build_overload): Declare.
1651         (decl_list_length, get_namespace_id, current_namespace_id,
1652         overloaded_globals_p): Remove.
1653         (lookup_using_namespace, qualified_lookup_using_namespace): Change
1654         return type.
1655         (push_scratch_obstack): New macro.
1656         * call.c (add_function_candidate): Special-case type of OVERLOAD node.
1657         (build_user_conversions_1): Iterate using OVL_NEXT for ctors,
1658         convs, fns.
1659         (build_new_function_call): Iterate using OVL_CHAIN.  
1660         Print DECL_NAME in when reporting ambiguities.
1661         (build_object_call): Iterate using OVL_NEXT for fns, convs.
1662         (build_new_op): Call lookup_function_nonclass.  
1663         Iterate using OVL_NEXT.
1664         (build_op_delete_call): Change detection of members.
1665         Do not wrap TREE_LIST around fields and single global functions.
1666         (build_over_call): Don't push a class level if the context is a
1667         namespace.
1668         (build_new_method_call): Iterate using OVL_NEXT.
1669         * class.c (add_method): Chain overloaded members using
1670         build_overload.  Remove copying of method.
1671         (grow_method): When iterating through the obstack, expect OVERLOAD
1672         nodes.  Chain overload members.
1673         (finish_struct_methods): Chain overload members.  Unpack OVERLOAD
1674         nodes in call to get_baselinks.
1675         (duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
1676         (finish_struct_1): Iterate over ctor using OVL_NEXT.  Handle
1677         fdecls that are OVERLOAD nodes.
1678         (validate_lhs): New function.
1679         (instantiate_type): Do not copy OVERLOAD nodes.  Remove dead
1680         code. Use DECL_NAME in error messages. Split code between global
1681         and member function processing.
1682         * decl.c (global_type_node): New static variable.
1683         (in_std): New global.
1684         (struct binding_level): New field usings.
1685         (resume_binding_level): Assert that we are not in a class.
1686         (toplevel_bindings_p): Just check for namespace_p or
1687         pseudo_global.
1688         (resume_level): Remove.
1689         (find_binding): New function.
1690         (binding_for_name): Call it.
1691         (namespace_binding, set_namespace_binding): New functions.
1692         (push_namespace): Associate binding level with new namespace,
1693         resume_binding_level for existing namespace.  Remove old code.
1694         Fake std by counting.
1695         (store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
1696         (maybe_push_to_top_level): Save current namespace.
1697         (pop_from_top_level): Restore saved namespace.
1698         (pop_namespace): Call suspend_binding_level.  Remove old code.
1699         (cat_namespace_levels): New function.
1700         (set_identifier_type_value_with_scope): For namespace bindings,
1701         set BINDING_TYPE, and use global_type_node.
1702         Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
1703         (identifier_type_value): New function.
1704         (pushtag): If no context, use current_namespace.
1705         (duplicate_decls): Don't process DECL_CHAIN.
1706         (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
1707         already set. Never reset it to NULL_TREE.  Lookup global variables
1708         in their namespace.  Push overloaded templates if they are on
1709         namespace level.
1710         (pushdecl_namespace_level): New function.
1711         (pushdecl_top_level): Implement using pushdecl_namespace_level.
1712         (pushdecl_using_decl): New function.
1713         (overloaded_globals_p): Remove.
1714         (push_overloaded_decl): Create OVERLOAD nodes, and iterate through
1715         them. Use namespace_binding and set_namespace_value.
1716         (redeclaration_error_message): Complain if the declarations come
1717         from different namespaces.
1718         (lookup_tag): On namespace level, look in the BINDING_TYPE.
1719         (lookup_namespace_name): Pass tree_bindings from stack.  Remove
1720         old code.
1721         (select_decl): New function.
1722         (lookup_name_real): Call it for qualified and unqualified lookup.
1723         Pass tree_bindings from the stack.
1724         If prefer_type is 1, also accept namespaces.
1725         (lookup_function_nonclass): New function.
1726         (init_decl_processing): Set the binding level of the global
1727         namespace to global_binding_level.
1728         Build a proper type list for __builtin_apply.
1729         Initialize std_node to "fake std" if flag_honor_std is set.
1730         Initialize global_type_node.
1731         Allocated bad_alloc in namespace std if flag_honor_std.
1732         (define_function): Set the DECL_CONTEXT to the current_namespace.
1733         (start_decl): A namespace is not considered as a context here.  If
1734         the DECL_CONTEXT is a namespace, push the decl.
1735         (cp_finish_decl): Check for namespaces used as initializers.
1736         (grokfndecl): Add namespace parameter.  Remove processing of
1737         DECL_CHAIN.
1738         (grokvardecl): Add namespace parameter.
1739         (grokdeclarator): Process SCOPEs that are namespaces.  For
1740         mangling, temporarily set the DECL_CONTEXT on anonymous structs.
1741         (start_function): Check for contexts that are namespaces.  
1742         Set context for declarations that have not been pushed.
1743         (store_parm_decls): Check for ::main only.
1744         (finish_function): Likewise.
1745         (start_method): Check for contexts that are namespaces.
1746         (start_method): Remove DECL_CHAIN processing.
1747         * decl2.c (flag_honor_std): Declare.
1748         (lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
1749         (decl_namespace_list): New static global.
1750         (grok_x_components): Ignore namespaces as type contexts.
1751         (check_classfn): Expect OVERLOAD nodes.
1752         (grokfield): Remove DECL_CHAIN processing.
1753         (finish_file): Call cat_namespace_levels.
1754         (merge_functions): New function.
1755         (ambiguous_decl): Rewrite.
1756         (lookup_using_namespace): Produce tree_bindings.
1757         (qualified_lookup_using_namespace): Likewise.
1758         (set_decl_namespace, decl_namespace, current_decl_namespace,
1759         push_decl_namespace, pop_decl_namespace): New functions.
1760         (arg_lookup): New struct.
1761         (add_function, arg_assoc_namespace, arg_assoc_class,
1762         arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
1763         New functions.
1764         (get_namespace_id, current_namespace_id): Remove.
1765         (do_toplevel_using_decl): Rewrite.
1766         (do_class_using_decl): Complain about namespace qualifiers.
1767         (do_using_directive): Sorry if not on namespace level.  Complain
1768         about unknown namespaces.
1769         * error.c (dump_aggr_type): Check for namespace contexts.
1770         * except.c (init_exception_processing): Push terminate into std.
1771         * friend.c (is_friend): A namespace is not a context, here.
1772         * init.c (expand_member_init): Remove DECL_CHAIN processing.
1773         (build_offset_ref): Process OVERLOAD nodes.
1774         * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
1775         * lex.c (identifier_type): Loop using OVL_CHAIN.
1776         (see_typename): Set looking_for_typename to 2.
1777         (real_yylex): Likewise. 
1778         (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
1779         (do_scoped_id): Expect OVERLOAD nodes.
1780         Change calling convention for qualified_lookup_using_namespace.
1781         (build_lang_decl): Don't set in_namespace anymore.
1782         * method.c (typevec_size): New global.
1783         (build_overload_nested_name): Return if global_namespace.
1784         Otherwise, always expect a declaration context.
1785         (build_qualified_name): Likewise.
1786         Make sure we don't write beyond typevec_size.
1787         (build_decl_overload_real): Likewise.
1788         Allocate one extra slot for the namespace.
1789         (hack_identifier): Mark code dead.
1790         Process OVERLOAD and NAMESPACE_DECL nodes.
1791         * parse.y (program): Pop namespaces until in global namespace.
1792         (extdef): In a using-declaration, don't discard the identifier if
1793         there is no declaration.
1794         (left_curly): Ignore type contexts which are namespaces.
1795         (typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
1796         used as scope.
1797         * pt.c (template_class_depth): Expect types to be namespaces.
1798         (determine_specialization): Simplify by expecting OVERLOAD nodes.
1799         (push_template_decl): Push into namespace level.
1800         Reset ctx if it is a namespace.
1801         Set DECL_CONTEXT to current_namespace if not set already.
1802         Ignore real contexts that are namespaces.
1803         (mangle_class_name_for_template): Skip global_namespace.
1804         Mangle other namepaces as declarations.
1805         (lookup_template_function): Set type of OVERLOAD nodes to unknown.
1806         (lookup_template_class): Push into namespace of context.
1807         If the context is a namespace, set it to global_namespace.
1808         Use id_context for mangling.
1809         (for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
1810         (tsubst_friend_function): Ignore namespace contexts.
1811         Push into namespace level.
1812         (tsubst): Handle NAMESPACE_DECL nodes.
1813         Remove DECL_CHAIN processing.
1814         (type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
1815         * ptree.c (print_lang_identifier): Print bindings.
1816         (lang_print_xnode): Print OVERLOAD nodes.
1817         * rtti.c (init_rtti_processing): Push type_info into std.
1818         * search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
1819         (lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
1820         dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
1821         lookup_fnfields_here): Likewise.
1822         Process all nodes, instead of going through TREE_CHAIN.
1823         * sig.c (build_signature_pointer_or_reference_type): Set context
1824         to global_namespace.
1825         (build_signature_table_constructor): Expect OVERLOAD nodes.
1826         * spew.c (yylex): Save old setting of looking_for_typename.
1827         * tree.c (decl_list_length): Remove.
1828         (binding_init): New function.
1829         (count_functions): Rewrite.
1830         (is_overloaded_fn): Expect OVERLOAD nodes.
1831         (really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
1832         (ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
1833         ovl_member): New functions.
1834         * typeck.c (require_complete_type): Expect OVERLOAD nodes.
1835         (type_unknown_p): Likewise.
1836         (require_instantiated_type): Likewise.
1837         (build_component_ref): Declare code dead.
1838         (build_x_function_call): Create and expect OVERLOAD nodes.
1839         (build_function_call_real): Check for ::main only.
1840         (build_unary_op): Likewise.  Expect OVERLOAD nodes.
1841         (convert_for_assignment): Check for TREE_LIST before accessing
1842         TREE_VALUE.
1843         * decl.c (duplicate_decls): Check for namespace bindings instead
1844         of global bindings.
1845         (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
1846         lookup_name_current_level, start_decl, xref_tag, 
1847         finish_enum): Likewise.
1848         * init.c (build_offset_ref): Likewise.
1849         * search.c (lookup_field): Likewise.
1850         (lookup_fnfields): Likewise.
1851         (dfs_debug_mark): Likewise.
1852         * decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
1853         (poplevel_class, pop_from_top_level): Likewise.
1854         * decl2.c (finish_method): Likewise.
1855         * class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
1856         * decl.c (record_builtin_type): Likewise.
1857         (init_decl_processing, grokfndecl): Likewise.
1858         * lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
1859         (make_lang_type): Likewise.
1860         * parse.y (make_thunk): Likewise.
1861         * pt.c (tsubst): Likewise.
1862         * tree.c (debug_binfo): Likewise.
1863         * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h, 
1864         tinfo2.cc, inc/new.h: Add std qualifications.
1865         * inc/new: Wrap with namespace std if __HONOR_STD.
1866         * inc/typeinfo: Likewise.
1867
1868 Fri May  8 00:43:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
1869
1870         * call.c (build_user_type_conversion_1): Handle second_conv 
1871         properly for templates.
1872
1873 Thu May  7 17:09:25 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
1874
1875         * method.c (build_decl_overload_real): Set TREE_USED flag to
1876         zero for build_type_variants nodes as well.
1877
1878 Wed May  6 19:27:09 1998  Jason Merrill  <jason@yorick.cygnus.com>
1879
1880         * pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
1881
1882 Wed May  6 16:49:48 1998  Jim Wilson  <wilson@cygnus.com>
1883
1884         * Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
1885         except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
1886         rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o, 
1887         xref.o): Add toplev.h dependencies.
1888
1889 Wed May  6 16:44:58 1998  Jeffrey A Law  (law@cygnus.com)
1890
1891         * errfn.c (cp_error, cp_warning): Remove declarations for
1892         error and warning respectively.
1893
1894 Wed May  6 14:28:18 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1895
1896         * error.c: Convert to using ctype macros defined in system.h.
1897         * method.c: Likewise.
1898         * xref.c: Likewise.
1899         * lex.c: Likewise.  Also remove redundant system header stuff.
1900
1901 Wed May  6 06:36:41 1998  Robert Lipe  <robertl@dgii.com>
1902
1903         * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c, 
1904         expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c, 
1905         search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c, 
1906         xref.c: Add include of toplev.h.
1907
1908 Wed May  6 02:33:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
1909
1910         * tree.c (perm_manip): Also regenerate the RTL of an extern.
1911         (copy_to_permanent): Use end_temporary_allocation.
1912
1913 Tue May  5 23:54:04 1998  Jason Merrill  <jason@yorick.cygnus.com>
1914
1915         * init.c (expand_vec_init): The initialization of each array
1916         element is a full-expression.
1917
1918 Tue May  5 18:24:13 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
1919
1920         * method.c (build_mangled_name): Add a call to build_type_variant 
1921         to get the right type.
1922
1923 Tue May  5 01:25:03 1998  Jason Merrill  <jason@yorick.cygnus.com>
1924
1925         * Makefile.in: Add .SUFFIXES.
1926
1927         * cp-tree.def: Remove NAMESPACE_DECL.
1928
1929 Sun May  3 01:32:14 1998  Jason Merrill  <jason@yorick.cygnus.com>
1930
1931         * call.c (build_over_call): Do evaluate arg even if it has empty 
1932         class type.
1933         * decl.c (start_function): Don't push a member function.
1934
1935 Thu Apr 30 18:59:23 1998  Jim Wilson  <wilson@cygnus.com>
1936
1937         * Makefile.in (g++FAQ.info): Put -o option before input file.
1938
1939 Thu Apr 30 13:05:33 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
1940
1941         * gxxint.texi: Add info for squangling codes K and B.
1942
1943 Tue Apr 28 13:22:01 1998  Mark Mitchell  <mmitchell@usa.net>
1944
1945         * semantics.c (begin_stmt_expr): Avoid duplicating the effect of
1946         the expression in templates.
1947         (finish_stmt_expr): Likewise.
1948
1949 1998-04-28  Brendan Kehoe  <brendan@cygnus.com>
1950
1951         * decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
1952
1953 Mon Apr 27 13:58:10 1998  Mark Mitchell  <mmitchell@usa.net>
1954
1955         * decl.c (maybe_push_to_top_level): Always clear
1956         current_template_parms and processing_template_decl.
1957         (pushtag): Remove check of current_class_type and some comments,
1958         since maybe_push_to_top_level no longer creates confusion.
1959
1960 Sun Apr 26 12:10:18 1998  Mark Mitchell  <mmitchell@usa.net>
1961
1962         * cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
1963         (DECL_CLASS_TEMPLATE_P): Likewise.
1964         (DECL_PRIMARY_TEMPLATE): Likewise.
1965         (PRIMARY_TEMPLATE_P): Use it.
1966         (push_template_decl_real): New function.
1967         (redeclare_class_template): Take new template parameters as
1968         input. 
1969         (is_specialization_of): New function.
1970         (comp_template_args): Declare.
1971         * decl.c (pushtag): Handle friend template classes.
1972         (xref_tag): Likewise.  Use new calling convention for
1973         redeclare_class_template.
1974         * decl2.c (grok_x_components): Handle friend templates.
1975         * friend.c (is_friend): Use is_specialization_of where
1976         appropriate.  Deal with friend class templates.
1977         (make_friend_class): Let a class template be friends with itself.
1978         * pt.c (comp_template_args): Remove declaration.
1979         (tsubst_friend_class): New function.
1980         (push_template_decl_real): New function.
1981         (push_template_decl): Use it.
1982         (redeclare_class_template): Adjust for new calling convention.
1983         (comp_template_args): Give it external linkage.
1984         (instantiate_class_type): Use tsubst_friend_class to deal
1985         with friend templates.
1986         * typeck.c (comptypes): Use comp_template_args, rather than
1987         expanding it inline.
1988         * parse.y (component_decl): Handle a nested template type 
1989         like other component type declarations.
1990
1991         * pt.c (check_explicit_specialization): Handle overloaded
1992         constructors correctly.
1993
1994         * pt.c (mabybe_get_template_decl_from_type_decl): New function.
1995         (lookup_template_class): Use it.
1996
1997 Thu Apr 23 21:19:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
1998
1999         * cp-tree.def: Add WRAPPER.  USER_CONV now only has two ops.
2000         * cp-tree.h: Add WRAPPER support.
2001         * call.c (add_candidate): Split out from add_*_candidate fns.
2002         (build_over_call): Take the candidate instead of function and args.
2003         Enforce access control here.  Emit overload warnings here.
2004         (add_warning): New fn.
2005         (joust): Add WARN parm.  If not set, call add_warning instead of
2006         printing a warning.  Reenable some warnings.
2007         (tourney): Pass it.
2008         (convert_like): Adjust.
2009         (build_new_op): Adjust.
2010         (build_new_function_call): Adjust.
2011         (build_user_type_conversion_1): Adjust.
2012         (USER_CONV_FN): Adjust.
2013         * tree.c (build_expr_wrapper, build_expr_ptr_wrapper, 
2014         build_int_wrapper): New fns.
2015
2016 Thu Apr 23 18:27:53 1998  Mark P. Mitchell  <mmitchell@usa.net>
2017
2018         * pt.c (unify): Fix typo in previous change.
2019
2020 Thu Apr 23 09:32:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
2021
2022         * error.c (dump_type_real): Declare canonical_name.
2023
2024         * typeck.c (comp_target_types): Fix PMFs.
2025
2026 Wed Apr 22 13:24:48 1998  Mark Mitchell  <mmitchell@usa.net>
2027
2028         * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
2029         the DECL_RESULTs of a member TEMPLATE_DECL, not just the
2030         TEMPLATE_DECL.
2031
2032          * pt.c (tsubst): Decrease the template-level of
2033          TEMPLATE_TEMPLATE_PARMS.  Likewise for the DECL_INITIAL of a
2034          TEMPLATE_PARM_INDEX.
2035          (template_decl_level): New function.
2036          (unify): Make sure to record unifications for template
2037          parameters, even when the parameters exactly match the arguments.
2038          Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
2039          TEMPLATE_TYPE_PARMS.  Don't try to unify template parameters that
2040          aren't from the level we're currently working on.
2041
2042 Tue Apr 21 22:00:04 1998  Mark Mitchell  <mmitchell@usa.net>
2043
2044         * errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
2045
2046         * decl2.c (check_member_template): Set DECL_IGNORED for member
2047         class templates, too.
2048
2049         * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
2050
2051 Tue Apr 21 18:59:11 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2052
2053         * decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
2054
2055 Tue Apr 21 14:22:00 1998  Jeffrey A Law  (law@cygnus.com)
2056
2057         * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
2058         * decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
2059         (init_decl_processing): Handle TI types.
2060         * typeck.c (unsigned_type, signed_type): Handle TI types.
2061
2062 Sat Apr 18 15:25:21 1998  Jim Wilson  <wilson@cygnus.com>
2063
2064         * g++spec.c (lang_specific_driver): New argument in_added_libraries.
2065         New local added_libraries.  Increment count when add library to
2066         arglist.
2067
2068 Fri Apr 17 21:25:00 1998  Mark Mitchell  <mmitchell@usa.net>
2069
2070         * cp-tree.h (type_as_string_real): New function.
2071         * pt.c (mangle_class_name_for_template): Use it.
2072         * error.c (dump_aggr_type): Change prototype.
2073         (dump_type_prefix): Likewise.
2074         (dump_type_suffix): Likewise.
2075         (dump_type_real): Convert from dump_type.  If desired, the
2076         "canonica" name of a typedef, i.e., the name of the underlying
2077         type, can be printed.
2078         (dump_type): Call dump_type_real.
2079
2080 Fri Apr 17 14:30:45 1998  Jason Merrill  <jason@yorick.cygnus.com>
2081
2082         * decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
2083
2084         * typeck.c (comp_target_types): Tweak pedantic case.
2085         (comp_target_parms): Tweak pedantic case.  Clean up somewhat.
2086         Return -1 or 1 instead of 1 or 2.
2087         (compparms): Remove STRICT handling.
2088         (convert_for_assignment): Fix handling of pmfs.
2089
2090 Fri Apr 17 14:04:16 1998  Mark Mitchell  <mmitchell@usa.net>
2091
2092         * typeck.c (comp_target_types): Handle references like pointers.
2093         (comp_target_parms): Note that return code from comp_target_types
2094         can be negative to indicate failure.
2095
2096 Fri Apr 17 09:10:52 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2097
2098         * Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
2099         which requires a working target compiler to build.
2100
2101 Fri Apr 17 08:57:35 1998  Jeffrey A Law  (law@cygnus.com)
2102
2103         * tree.c (avoid_overlap): Add prototype.
2104
2105         * spew.c (num_tokens): Add prototype.
2106         (nth_noken, add_token, consume_token, debug_yychar): Likewise.
2107
2108         * search.c (dfs_check_overlap): Add prototype.
2109         (dfs_no_overlap_yet): Likewise.
2110
2111         * pt.c (original_template): Add prototype.
2112         (inline_needs_template_parms): Likewise.
2113         (push_inline_template_parms_recursive): Likewise.
2114         (retrieve_specialization, register_specialization): Likewise.
2115         (print_candidates, reduce_template_parm_level): Likewise.
2116         (build_template_decl, mark_template_parm): Likewise.
2117         (tsubst_friend_function, get_bindings_real): Likewise.
2118
2119         * method.c (start_squangling): Add prototype.
2120         (end_squangling, check_ktype, issue_ktype): Likewise.
2121         (build_overloaded_scope_ref, check_btype): Likewise.
2122         (build_mangled_template_parm_index): Likewise.
2123
2124         * lex.c (init_cpp_parse): Add prototype.
2125         (handle_cp_pragma, handle_sysv_pragma): Likewise.
2126         (reduce_cmp, token_cmp): Likewise.
2127
2128         * except.c (call_eh_info): Add prototype.
2129         (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
2130         (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
2131
2132         * decl2.c (is_namespace_ancestor): Add prototype.
2133         (namespace_ancestor, add_using_namespace): Likewise.
2134         (ambiguous_decl): Likewise.
2135
2136         * decl.c (indent): Add prototype.
2137
2138         * call.c (add_template_candidate_real): Add prototype.
2139
2140 Fri Apr 17 01:57:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
2141
2142         * decl2.c (build_expr_from_tree): Just return a PMF.
2143
2144 Fri Apr 17 00:45:12 1998  Mark Mitchell  <mmitchell@usa.net>
2145
2146         * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
2147         when doing initializations.
2148
2149         * pt.c (unify): Use comptypes to compare type args.
2150
2151 Fri Apr 17 00:24:22 1998  Jason Merrill  <jason@yorick.cygnus.com>
2152
2153         * decl.c (duplicate_decls): Fix check for when it's safe to free
2154         the new decl.
2155
2156         * pt.c (mangle_class_name_for_template): Don't pass a typedef type
2157         to type_as_string.
2158
2159 Thu Apr 16 17:47:30 1998  Jeffrey A Law  (law@cygnus.com)
2160
2161         * pt.c (build_template_parm_index): Add prototype.
2162
2163         * search.c (my_tree_cons): Don't clear words outside the
2164         newly allocated node.
2165
2166 Wed Apr 15 15:34:44 1998  Dave Brolley  <brolley@cygnus.com>
2167
2168         * lex.c (init_parse): Now returns char* containing the filename.
2169
2170 Wed Apr 15 13:20:06 1998  John Carr  <jfc@mit.edu>
2171                           Jeff Law   <law@cygnus.com>
2172
2173         * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
2174         than a pointer.
2175
2176 Sun Apr 12 22:31:19 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2177
2178         * cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
2179
2180 Fri Apr 10 12:16:49 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
2181
2182         * decl.c (duplicate_decls): Don't warn for redundant decls if
2183         friend: let add_friend take care of it.
2184
2185 Thu Apr  9 02:40:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
2186
2187         * sig.c (build_signature_pointer_constructor): Don't set
2188         TREE_HAS_CONSTRUCTOR for a signature pointer.
2189         * cvt.c (ocp_convert): Don't force a temporary for internal structs.
2190         * init.c (resolve_offset_ref): Warn about implicit & on pmfs 
2191         here, too.
2192         * typeck.c (build_unary_op): Only allow taking the address of a 
2193         real constructor.
2194         * typeck2.c (digest_init): Simplify.
2195         (store_init_value): Don't pedwarn about using { } for pmfs.
2196
2197 Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>
2198
2199         * cp-tree.h (start_decl):  Update prototype.
2200         * decl.c (start_decl):  Like the C version, new parameters
2201         for the attributes.  Call cplus_decl_attributes here,
2202         (pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
2203         (grokdeclarator):  Pass NULL for new start_decl arguments.
2204         * pt.c (tsubst_expr):  Likewise.
2205         * parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
2206         * typeck.c (common_type): Check TYPE_MAIN_VARIANT.
2207         * lex.c (build_lang_decl): Add lang_name_java.
2208         * class.c (push_lang_context): Add lang_name_java.
2209         * method.c (build_mangled_name): Check for is_java_type.
2210
2211 Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
2212
2213         * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
2214         * call.c (build_scoped_method_call): Check for TREE_CODE for
2215         VOID_TYPE instead of type ==  void_type_node.
2216         (build_method_call): Ditto.
2217         * decl.c (lookup_name_real): Ditto.
2218         (grokdeclarator): Ditto.
2219         (start_decl): Ditto.
2220         (grokparms): Ditto.
2221         (start_function): Ditto.
2222         (finish_function): Ditto.
2223         (start_method): Ditto.
2224
2225 Thu Apr  9 00:18:44 1998  Dave Brolley  (brolley@cygnus.com)
2226
2227         * lex.c (finput): New variable.
2228         (init_cpp_parse):  Renamed from init_parse.
2229         (init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
2230         (finish_parse): New function.
2231         * cp-tree.h (init_lex, init_parse): Remove declarations.
2232
2233 Mon Apr  6 02:25:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
2234
2235         * call.c (build_call): Still evaluate the actual argument.
2236         * class.c (is_empty_class): Update for -fnew-abi.
2237
2238         * decl2.c: -fnew-abi implies -fsquangle.
2239
2240         * method.c (do_build_assign_ref): Don't do anything to copy
2241         an empty class.
2242         (do_build_copy_constructor): Likewise.
2243         * call.c (build_over_call): Likewise.
2244
2245 Sat Apr  4 18:43:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
2246
2247         * tree.c (avoid_overlap): Return a value.
2248
2249 Sat Apr  4 12:52:35 1998  Jeffrey A Law  (law@cygnus.com)
2250
2251         * method.c (check_btype): Add missing argument to xrealloc.
2252         (check_ktype): Likewise.
2253
2254 Fri Apr  3 02:22:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
2255
2256         Implement empty base optimization.
2257         * class.c (finish_struct_1): Add vbase fields earlier.  Set 
2258         CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
2259         * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
2260         (types_overlap_p): New fn.
2261         * tree.c (avoid_overlap): New fn.
2262         (build_base_fields): Use it to avoid overlapping empty bases.
2263         * cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
2264
2265         * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
2266
2267         Re-implement allocation of base class subobjects.
2268         * tree.c (unshare_base_binfos): New fn.
2269         (layout_basetypes): Use it.  Now handles offsets of both virtual and
2270         non-virtual bases, after layout_type.
2271         (layout_vbasetypes): Remove.
2272         (build_base_fields): Generate FIELD_DECLs for each non-virtual base.
2273         (build_vbase_pointer_fields): Split out from old layout_basetypes.
2274         * class.c (finish_base_struct): Lose offset handling code.
2275         Move nonvdtor warning here.  Don't mess with t_binfo anymore.
2276         (finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
2277         * cp-tree.h: Adjust.
2278
2279 Thu Apr  2 14:25:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
2280
2281         * cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
2282         * decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
2283         * class.c (duplicate_tag_error): Likewise.
2284         (finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
2285         * tree.c (layout_vbasetypes): Update from layout_record, remove
2286         var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
2287         (layout_basetypes): Likewise.
2288
2289 Wed Apr  1 18:22:25 1998  Jeffrey A Law  (law@cygnus.com)
2290
2291         * class.c, Make sure system.h is included just after config.h.
2292         Delete lingering stdio and errno references too.
2293         * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
2294         
2295 Wed Apr  1 15:38:36 1998  Jason Merrill  <jason@yorick.cygnus.com>
2296
2297         * friend.c (is_friend): Fix access control for local classes.
2298
2299         * class.c (is_empty_class): New fn.
2300         * call.c (build_call): Don't pass empty class objects to a function.
2301
2302 Wed Apr  1 14:58:35 1998  Mark Mitchell  <mmitchell@usa.net>
2303
2304         * call.c (build_over_call): Do name resolution for default
2305         arguments of function templates in the scope of the templates.
2306
2307 Tue Mar 31 13:43:57 1998  Jeffrey A Law  (law@cygnus.com)
2308
2309         * call.c: Include system.h.  Remove includes, declarations and
2310         defines provided by system.h.
2311         * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
2312         * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
2313         * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
2314         * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
2315         * typeck2.c, xref.c: Likewise.
2316         * Makefile.in: Dependencies updated as appropriate.
2317         * Make-lang.in: Likewise.
2318
2319 Mon Mar 30 12:15:00 1998  Mark Mitchell  <mmitchell@usa.net>
2320
2321         * pt.c (fn_type_unification): Allow incomplete unification without 
2322         an immediate error message.
2323
2324 Mon Mar 30 08:55:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
2325
2326         * tree.c (member_p): New fn.
2327         * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
2328         initializing class members.
2329
2330         * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
2331         * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
2332
2333         * call.c (build_method_call): Handle non-scoped destructors, too.
2334         * pt.c (tsubst_copy): Likewise.
2335
2336         * pt.c (print_template_context): Split out...
2337         (push_tinst_level): ...from here.
2338
2339         * friend.c (is_friend): Don't pass a type to decl_function_context.
2340
2341         * typeck.c (convert_for_initialization): Always hand off
2342         conversions to class type.
2343
2344 Sun Mar 29 20:01:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
2345
2346         * friend.c (is_friend): Local classes have the same access as the
2347         enclosing function.
2348
2349 Sun Mar 29 00:47:32 1998  Jeffrey A Law  (law@cygnus.com)
2350
2351         * typeck.c (expand_target_expr): Delete dead function.
2352
2353         * search.c: Put various prototypes inside #ifdef MI_MATRIX.
2354
2355         * repo.c (save_string): Delete dead function.
2356
2357         * method.c (thunk_printable_name): Delete dead function.
2358
2359         * lex.c (yynextch): Delete dead function.
2360
2361         * expr.c (tree_extract_aggr_init): #if 0 out.
2362
2363         * except.c (do_unwind): Delete dead function.
2364         (easy_expand_asm): Likewise.
2365
2366         * cvt.c (build_conversion_type_1): Delete dead function.
2367
2368         * cp-tree.h (push_expression_obstack): Declare.
2369
2370         * call.c (source_type): #if 0 out.
2371
2372         * class.c (alter_access): Remove unused label.  Add braces
2373         around empty else clause.
2374
2375         * lex.c (yyprint): Fix argument to printf.
2376
2377 Sat Mar 28 17:43:52 1998  Mark Mitchell  <mmitchell@usa.net>
2378
2379         * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
2380
2381         * pt.c (instantiate_class_template): Make sure template
2382         arguments are permanent.
2383         * init.c (resolve_offset_ref): Don't go looking around in
2384         template types.
2385
2386         * semantics.c: Add routines to handle expressions, and some
2387         declaration processing.
2388         * parse.y: Use them.
2389         (current_class_depth): Move declaration to cp-tree.h.
2390         * parse.c: Regenerated.
2391         * cp-tree.h: Use them.
2392         (current_class_depth): Declare.
2393         * pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
2394
2395 Fri Mar 27 20:23:18 1998  Mark Mitchell  <mmitchell@usa.net>
2396
2397         * error.c (dump_decl): Be a bit more explicit with template
2398         type arguments, when verbose.
2399         
2400 Fri Mar 27 18:16:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
2401
2402         * inc/exception: Reorder closing braces.
2403
2404 Fri Mar 27 13:22:18 1998  Mark Mitchell  <mmitchell@usa.net>
2405
2406         * pt.c (redeclare_class_template): New function.
2407         * cp_tree.h (redeclare_class_template): Declare it.
2408         * decl.c (xref_tag): Use it.
2409
2410 Thu Mar 26 11:16:30 1998  Jason Merrill  <jason@yorick.cygnus.com>
2411
2412         * call.c (build_over_call): Check IS_AGGR_TYPE, not 
2413         TYPE_LANG_SPECIFIC.
2414         * typeck.c (convert_arguments): Likewise.
2415
2416         * decl.c (grokdeclarator): Remove const and volatile from type after
2417         setting constp and volatilep.
2418
2419         * class.c (finish_struct_1): Don't warn about bool bitfield larger
2420         than one bit.
2421
2422 Thu Mar 26 10:25:52 1998  Mark Mitchell  <mmitchell@usa.net>
2423
2424         * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
2425
2426 Thu Mar 26 10:24:05 1998  Mark Mitchell  <mmitchell@usa.net>
2427
2428         * call.c (build_object_call): Complain about ambiguous operator(),
2429         rather that crashing.
2430         (build_new_op): Likewise.
2431         (build_op_delete_call): Likewise.
2432
2433 Thu Mar 26 10:23:24 1998  Mark Mitchell  <mmitchell@usa.net>
2434
2435         * cvt.c (perform_qualification_conversions): Use comp_target_types
2436         instead of comp_ptr_ttypes.
2437
2438 Wed Mar 25 16:10:50 1998  Mark Mitchell  <mmitchell@usa.net>
2439
2440         * cp-tree.h (enforce_access): Declare.
2441         * call.c (enforce_access): Make it extern, not static.
2442         * class.c (alter_access): Use enforce_access; modify code for ISO
2443         compliance, rather than ARM rules.
2444
2445 Wed Mar 25 12:10:45 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2446
2447         * cp-tree.h: Fix typo.
2448
2449 Wed Mar 25 02:01:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
2450
2451         * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
2452         if (aggregate_value_p (type)).
2453
2454         * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
2455
2456 Tue Mar 24 16:12:01 1998  Mark Mitchell  <mmitchell@usa.net>
2457
2458         * tree.c (mapcar): When dealing with a DECL, use it's constant
2459         value, if any.
2460         * pt.c (lookup_template_class): Don't mangle the names of template
2461         classes whose arguments are unknown.
2462
2463         * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
2464
2465 Tue Mar 24 12:21:55 1998  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
2466
2467         * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
2468
2469 Tue Mar 24 12:21:48 1998  Jim Wilson  <wilson@cygnus.com>
2470
2471         * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
2472         boolean_type_node to 1.
2473
2474 Tue Mar 24 10:23:47 1998  Mark Mitchell  <mmitchell@usa.net>
2475
2476         * error.c (dump_expr): Remove unused variable `l'.
2477
2478         * pt.c (for_each_template_parm): New function, created by
2479         converting uses_template_parms.
2480         (tree_fn_t): New typedef.
2481         (uses_template_parms): Use it.
2482         (mark_template_parm): New function.
2483         (push_template_decl): Check that the argument list of a partial
2484         specialization uses all the template parameters.
2485
2486         * Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
2487         with it; we might want it for debugging.
2488         * cp-tree.h (type_unification): Change interface.
2489         * class.c (finish_struct_1): Skip nested template types, just like
2490         ordinary nested types.
2491         (instantiate_type): Use new interface to type_unification.
2492         * lex.c (init_lex): Add __sz as opname for sizeof.
2493         * method.c (build_overload_scope_ref): New function.
2494         (build_overload_int): Handle complex expressions.  Set
2495         numeric_output_need_bar if necessary.
2496         (build_overload_value): Handle non-PARM_DECL nodes; this
2497         routine is now used by build_overload_int.  Remove some
2498         assignments to numeric_output_need_bar.  Use
2499         build_overload_scope_ref.
2500         (build_qualified_name): Note that some template mangled names end
2501         with digits, and set numeric_output_need_bar appropriately.  Use
2502         build_underscore_int.
2503         * pt.c (unify): Change interface.
2504         (type_unification_real): Likewise.
2505         (determine_specialization): Use new interfaces.
2506         (tsubst): Deal gracefully with situations in which the argument
2507         vector is not fully filled.
2508         (fn_type_unification): Use new interfaces.
2509         (type_unification): Likewise.  Remove NOP_EXPR hack.
2510         (type_unification_real): Likewise.
2511         (unify): Likewise.  Deal with unification of complex expresions.
2512
2513 Mon Mar 23 12:24:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
2514
2515         * pt.c (complete_template_args): Initialize skip properly.
2516
2517         * decl.c (make_typename_type): Revert.
2518         (make_implicit_typename): Remove.
2519         (lookup_name_real): Don't call it.  Call lookup_field if we see a
2520         TYPE_DECL from a template base.
2521         * search.c (lookup_field): Do implicit typename stuff.
2522
2523 Sun Mar 22 00:50:42 1998  Nick Clifton  <nickc@cygnus.com>
2524                           Geoff Noer    <noer@cygnus.com>
2525
2526         * Makefile.in: Various fixes for building cygwin32 native toolchains.
2527         * Make-lang.in: Likewise.
2528
2529 Fri Mar 20 18:07:39 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2530
2531         * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
2532
2533 Fri Mar 20 10:42:07 1998  Jason Merrill  <jason@yorick.cygnus.com>
2534
2535         * decl.c (make_implicit_typename): Rewrite removed code.
2536         (make_typename_type): Call it if the type we look up comes from
2537         a base that uses template parms.
2538
2539         * pt.c (complete_template_args): Rewrite.
2540         (tsubst, FUNCTION_DECL): Use it.
2541
2542 Fri Mar 20 08:12:43 1998  H.J. Lu  (hjl@gnu.org)
2543
2544         * semantics.c (finish_asm_stmt): Fix combine strings. Call
2545         c_expand_asm_operands () if output_operands, input_operands or
2546         clobbers is not NULL_TREE.
2547
2548 Fri Mar 20 00:10:19 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2549
2550         * pt.c (complete_template_args): New function.
2551         (get_bindings): Deal with specializations of function templates
2552         with return type containing parameters from outer class 
2553         templates.
2554         (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
2555         substitute arguments and compose a new type.
2556
2557 Thu Mar 19 19:01:48 1998  Mark Mitchell  <mmitchell@usa.net>
2558
2559         * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
2560         FUNCTION_DECLs.
2561
2562 Thu Mar 19 11:51:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
2563
2564         * decl.c (make_implicit_typename): Lose useless code.
2565
2566         * call.c (standard_conversion): Handle A* -> const A* properly.
2567
2568         * pt.c (get_bindings_real): Rename from get_bindings.  Add 
2569         check_rettype parm.
2570         (get_bindings): Pass 1.
2571         (get_bindings_overload): Pass 0.
2572
2573 Wed Mar 19 09:08:12 1998  Mark Mitchell  <mmitchell@usa.net>
2574
2575         * pt.c (check_explicit_specialization): When reverting a static
2576         member function, also remove the `this' parameter from
2577         last_function_parms.
2578
2579 Thu Mar 19 02:27:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
2580
2581         * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
2582         a function context.
2583
2584         * decl.c (store_bindings): Use free_binding_vecs.
2585         (pop_from_top_level): Likewise.
2586
2587 Wed Mar 18 12:41:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
2588
2589         * decl.c (make_implicit_typename): Only change the type of a 
2590         TYPENAME_TYPE.
2591
2592 Wed Mar 18 10:09:51 1998  Mark Mitchell  <mmitchell@usa.net>
2593
2594         * semantics.c: New file, containing routines to perform the
2595         semantic phase of parsing.
2596         * parse.y: Use it.
2597         * pt.c (tsubst_expr): Likewise.
2598         * cp-tree.h: Declare the various functions in semantics.c.
2599         Provide macros to access _STMT tree nodes.
2600         * cp-tree.def: Add ASM_STMT tree node.
2601         * Makefile.in, Make-lang.in: Add dependencies on and for
2602         semantics.c.
2603         
2604 Wed Mar 18 00:24:10 1998  Jason Merrill  <jason@yorick.cygnus.com>
2605
2606         * pt.c (push_template_decl): Only check primary templates.
2607
2608         * pt.c (check_explicit_specialization): Complain about default args
2609         in explicit specialization.
2610
2611         * parse.y (nomods_initdcl0): Also call cp_finish_decl for a 
2612         constructor_declarator.
2613
2614 Tue Mar 17 14:44:54 1998  Mark Mitchell  <mmitchell@usa.net>
2615
2616         * typeck2.c (build_x_arrow): Don't crash when an aggregate type
2617         has no overloaded operator ->.
2618
2619         * call.c (build_field_call): Don't crash when presented with a
2620         field that is actually a nested type.
2621
2622         * decl.c (pushtag): Deal with friend class injection in local
2623         classes.
2624
2625         * call.c (build_object_call): Don't crash if OBJ is a
2626         pointer-to-member-function.
2627
2628 Tue Mar 17 11:40:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
2629
2630         * pt.c (push_template_decl): Complain about template with C linkage,
2631         anonymous template class.
2632
2633 Mon Mar 16 12:10:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
2634
2635         * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
2636         * search.c: Likewise.
2637
2638         * lex.c (do_pending_defargs): Only call 
2639         maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
2640
2641         * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
2642
2643 Mon Mar 16 10:47:22 1998  Mark Mitchell  <mmitchell@usa.net>
2644
2645         * parse.y: Deal with CONSTRUCTORS in new_initializers.
2646
2647 Mon Mar 16 10:54:21 1998  Mark Mitchell  <mmitchell@usa.net>
2648
2649         * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
2650         closely mimics the behavior in parse.y.
2651         (tsubst_expr): Return the resuting BLOCK when making a tsubst'ing
2652         into a compound statement.
2653         
2654 Sun Mar 15 02:07:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
2655
2656         * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
2657         * pt.c (inline_needs_template_parms): New fn.
2658         (original_template): New fn.
2659         (push_inline_template_parms_recursive): New fn.
2660         (maybe_begin_member_template_processing): Use them.
2661         (maybe_end_member_template_processing): Likewise.
2662         (is_member_or_friend_template): Rename to is_member_template.
2663         Member functions of local classes are never member templates.
2664
2665 Sun Mar 15 01:14:22 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2666
2667         * lex.c (do_identifier): Handle TEMPLATE_DECL that was
2668         added in the class scope to catch redefinition error.
2669
2670         * pt.c (reduce_template_parm_level): Also copy 
2671         the DECL_TEMPLATE_PARMS field.
2672
2673 Sun Mar 15 10:54:08 1998  Mark Mitchell  <mmitchell@usa.net>
2674
2675         * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
2676         reduced-level template type parameter.
2677
2678 Sun Mar 15 12:26:02 1998  Manfred Hollstein  <manfred@s-direktnet.de>
2679
2680         * cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
2681         (DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
2682         * class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
2683         * decl.c (duplicate_decls): Propagate it.
2684         * typeck2.c (abstract_virtuals_error): Use two loops to emit
2685         abstract virtual functions and virtual functions which need a
2686         final overrider separately.
2687         
2688 Thu Mar 12 09:39:40 1998  Manfred Hollstein  <manfred@s-direktnet.de>
2689
2690         * lang-specs.h: Properly put brackets around array elements in 
2691         initializer.
2692
2693         * typeck.c (build_binary_op_nodefault): Correctly place parens around
2694         && and || in expression.
2695
2696 Thu Mar 12 09:26:04 1998  Manfred Hollstein  <manfred@s-direktnet.de>
2697
2698         * call.c (default_parm_conversions): Remove prototype definition.
2699         (build_method_call): Remove unused variable result.
2700
2701         * cvt.c (ocp_convert): Remove unused variable conversion.
2702
2703         * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
2704
2705         * except.c (do_unwind): #if 0 definition of unused variables fcall
2706         and next_pc.
2707
2708         * expr.c (extract_scalar_init): #if 0 prototype and function 
2709         definition.
2710
2711         * init.c (expand_aggr_init_1): Remove unused variable init_type.
2712         (build_new_1): Remove unused variable t.
2713
2714         * pt.c (instantiate_class_template): Remove unused variable newtag;
2715         cast called function return value to void.
2716         (do_decl_instantiation): Remove unused variables name and fn.
2717
2718         * tree.c (get_type_decl): Add default return to shut up compiler from
2719         complaining control reaches end of non-void function.
2720
2721         * typeck.c (build_x_conditional_expr): Remove unused variable rval.
2722
2723 Thu Mar 12 09:12:15 1998  Manfred Hollstein  <manfred@s-direktnet.de>
2724
2725         * call.c (default_parm_conversions): Remove prototype definition.
2726         (build_method_call): Remove unused variable result.
2727         (build_over_call): Add default case in enumeration switch.
2728
2729 Thu Mar 12 08:39:13 1998  Manfred Hollstein  <manfred@s-direktnet.de>
2730
2731         * decl2.c (lang_decode_option): Change j's type to size_t.
2732
2733         * tree.c (layout_vbasetypes): record_align and desired_align are of
2734         type unsigned int; const_size and nonvirtual_const_size likewise.
2735
2736 Wed Mar 11 07:25:20 1998  Mark Mitchell  <mmitchell@usa.net>
2737
2738         * parse.y (new_initializer): Make sure all initializers are
2739         lists.
2740
2741 Tue Mar 10 07:32:36 1998  Mark Mitchell  <mmitchell@usa.net>
2742
2743         * decl2.c (import_export_decl): Mark tinfo functions for
2744         cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
2745
2746 Fri Mar  6 23:27:35 1998  Jeffrey A Law  (law@cygnus.com)
2747
2748         * method.c: Fix typo.
2749
2750 Fri Mar  6 10:06:59 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2751
2752         * method.c: Include "system.h" to get stdlib.h, stdio.h,
2753         ctype.h, string.h, etc.
2754         (issue_nrepeats): Add default case in enumeration switch.
2755         (check_btype): Likewise.
2756         (process_overload_item): Likewise.
2757          
2758         * Makefile.in (method.o): Depend on system.h.
2759
2760 Wed Mar  4 22:26:53 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2761
2762         * lex.c (do_scoped_id): Fix parenthesizing.
2763
2764 Wed Mar  4 12:11:53 1998  Michael Tiemann  <tiemann@axon.cygnus.com>
2765
2766         * rtti.c (get_tinfo_fn_dynamic): If this function is called an
2767         FLAG_RTTI is unset, initialize type info machinery and continue
2768         with FLAG_RTTI enabled.
2769         (get_typeid): Ditto.
2770
2771 Wed Mar  4 11:47:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
2772
2773         * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
2774         from B.
2775
2776 Wed Mar  4 11:28:08 1998  Mark Mitchell  <mmitchell@usa.net>
2777
2778         * pt.c (finish_member_template_decl): Deal more gracefully with
2779         invalid declarations.
2780
2781 Tue Mar  3 01:38:17 1998  Jason Merrill  <jason@yorick.cygnus.com>
2782
2783         * cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
2784         cp-tree.h: Clean up more old overloading code, old RTTI code, and
2785         some formatting quirks.
2786
2787         * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
2788         method.c, pt.c, ptree.c, typeck.c: Remove support for 
2789         -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
2790         * class.h: Remove.
2791         * Makefile.in: Adjust.
2792
2793         * pt.c (unify): Don't allow reduced cv-quals when strict.
2794
2795         * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
2796         *type_unification* and unify.
2797
2798 Mon Mar  2 12:11:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
2799
2800         * parse.y (explicit_template_type): Remove TEMPLATE keyword.
2801         (nested_name_specifier): And add it before this use.
2802         (typename_sub0): And this use.  Also add use without the keyword.
2803         (typename_sub1): Likewise.
2804         * pt.c (instantiate_class_template): Don't actually instantiate 
2805         anything if our type uses template parms.
2806
2807 Mon Mar  2 11:04:59 1998  Jim Wilson  <wilson@cygnus.com>
2808
2809         * decl.c (start_function): Don't call temporary_allocation for a
2810         nested function.
2811
2812 Sun Mar  1 21:06:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
2813
2814         * pt.c (instantiate_class_template): Don't mess with friends if
2815         our type uses template parms.
2816
2817 Sat Feb 28 12:06:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
2818
2819         * parse.y (nested_name_specifier): Use explicit_template_type.
2820         (typename_sub): Allow a template_type, an explicit_template_type,
2821         or an implicit template type at the end.
2822         * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
2823         * decl.c (make_typename_type): Handle template-id where the name
2824         is a TEMPLATE_DECL.
2825         * call.c (build_scoped_method_call): Handle member template 
2826         destructor call.
2827         * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member 
2828         destructor is represented by the type.
2829
2830         * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
2831         * parse.y (nested_name_specifier): Add 'template' case.
2832         (explicit_template_type): New rule.
2833         (typename_sub): Use it.
2834         * decl.c (make_typename_type): Handle getting a template-id for NAME.
2835         * pt.c (tsubst): Likewise.
2836
2837 Fri Feb 27 11:17:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
2838
2839         * pt.c (add_to_template_args): Fix thinko.
2840         (instantiate_class_template): Call it later.
2841
2842         * pt.c (get_class_bindings): Add outer_args parm.
2843         (most_specialized_class): Likewise.
2844         (instantiate_class_template): Pass it.
2845         (more_specialized_class): Likewise.
2846         (lookup_template_class): Get context from template if none
2847         was specified.
2848         (finish_member_template_decl): Don't do anything with a
2849         partial specialization.
2850         * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
2851         AGGREGATE_TYPE_P.
2852         * class.c (finish_struct): Member class templates have already been
2853         checked for name clashes.
2854         * decl.c (pushdecl_with_scope): Handle pushing at class level.
2855
2856 Fri Feb 27 02:25:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
2857
2858         * pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
2859         (tsubst, *_PARM): Support multiple levels of template classes.
2860         (instantiate_class_template): Look up the pattern from the
2861         original template.
2862         (lookup_template_class): Handle getting a template for d1.
2863         (push_template_decl): Correct setting of 'primary'.
2864         (reduce_template_parm_level): Add 'levels' parm.
2865         (finish_member_template_decl): Support member class templates.
2866         (template_class_depth): Handle multiple levels.
2867         * parse.y (component_decl_1, fn.def2): Remove member template case.
2868         (component_decl): Add member template cases.
2869         * decl2.c (check_member_template): We now handle member template
2870         classes.
2871         * decl.c (pushtag): Handle member templates.
2872         * method.c (do_inline_function_hair): Don't touch
2873         IDENTIFIER_GLOBAL_VALUE.
2874         * init.c (build_offset_ref): If name isn't an identifier, just 
2875         return it.
2876         * spew.c (yylex): Handle PTYPENAME like TYPENAME.
2877
2878         * typeck.c (get_delta_difference): Do adjust for conversions to
2879         and from virtual base.
2880
2881 Wed Feb 25 09:51:29 1998  Jason Merrill  <jason@yorick.cygnus.com>
2882
2883         * typeck.c (get_delta_difference): Give hard error for conversion
2884         from virtual base.
2885
2886         * cp-tree.h: Tweak formatting.
2887
2888 Wed Feb 25 00:35:33 1998  Jason Merrill  <jason@yorick.cygnus.com>
2889
2890         * decl.c (push_namespace): Handle redeclaration error.
2891
2892         * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
2893         (IDENTIFIER_NAMESPACE_BINDINGS): New macro.
2894         (NAMESPACE_BINDING): New macro.
2895         (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
2896         * *.c: Use them.
2897
2898         * pt.c (push_template_decl): Use innermost_args.
2899
2900         * decl.c (get_unique_name): Tweak from earlier in the name.
2901
2902 Tue Feb 24 22:15:04 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
2903
2904         * cp-tree.def: Add CPLUS_BINDING node.
2905         * cp-tree.h (tree_binding): new struct
2906         (BINDING_SCOPE, BINDING_VALUE): new macros
2907         (current_namespace, global_namespace): declare extern
2908         (struct lang_decl_flags): new field in_namespace
2909         (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros
2910         (DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros
2911         (TREE_INDIRECT_USING): new macro
2912         * decl2.c (current_namespace, global_namespace): Declare.  The
2913         value is a NAMESPACE_DECL now, not a TREE_LIST.
2914         (is_namespace_ancestor, namespace_ancestor):new static functions.
2915         (add_using_namespace, ambiguous_decl): likewise.
2916         (lookup_using_namespace): new support function for lookup_name.
2917         (qualified_lookup_using_namespace): new support function for
2918         do_scoped_id and lookup_namespace_name
2919         (get_namespace_id): mark as obsolete.
2920         (current_namespace_id): Likewise.
2921         (do_namespace_alias): Implement.
2922         (do_using_directive): Implement as call to add_using_namespace.
2923         * decl.c (binding_for_name): new function.
2924         (push_namespace, pop_namespace): implement.
2925         (push_decl): don't install a FUNCTION_DECL in the global branch.
2926         (lookup_namespace_name): implement using qualified lookup.
2927         (lookup_name_real): For global scoping, lookup in
2928         global_namespace. For namespace scoping, lookup in given
2929         namespace. For unscoped lookup, iterate over namespace,
2930         considering using directives.
2931         (init_decl_processing): initialize global_namespace.
2932         (grokvardecl): Build assembler name as static name for globals.
2933         (grokdeclarator): Remove old namespace mangling.
2934         (xref_tag): When installing a global binding for the
2935         tag, make sure we have an identifier.
2936         * method.c (build_overload_nested_name): mangle namespaces.
2937         (build_qualified_name): Likewise.
2938         (build_decl_overload_real): Likewise.
2939         * lex.c (build_lang_decl): set namespace for new declaration to
2940         current_namespace.
2941         (do_scoped_id): find global names in global or current
2942         namespace, or using qualified namespace lookup, depending on
2943         context.
2944         * init.c (build_member_call): When scope is namespace, use
2945         build_x_function_call instead.
2946         (build_offset_ref): When scope is namespace, collapse processing
2947         to lookup_namespace_name instead.
2948         * error.c (dump_decl): Support NAMESPACE_DECL.
2949         * decl.c (pushdecl): Bind globals to current namespace.
2950         (push_overloaded_decl): Likewise.
2951         (lookup_tag): Likewise.
2952         (lookup_name_current_level): Likewise.
2953         (xref_tag): Likewise.
2954         (start_function): Likewise.
2955         * lex.c (do_identifier): Likewise.
2956         (identifier_typedecl_value): Likewise.
2957         (real_yylex): Likewise.
2958         * method.c (do_inline_function_hair): Likewise.
2959         * parse.y (unscoped): Likewise.
2960         * pt.c (check_explicit_specialization): Likewise.
2961         (lookup_template_class): Likewise.
2962         * rtti.c (call_void_fn): Likewise.
2963         * sig.c (build_sigtable): Likewise.
2964         * ptree.c (lang_print_xnode): New function.
2965
2966 Tue Feb 24 01:40:24 1998  Jason Merrill  <jason@yorick.cygnus.com>
2967
2968         * pt.c (instantiate_class_template): Don't instantiate if pedantic
2969         and the args use template parms.
2970
2971         * pt.c (push_tinst_level): If the instantiaton uses template parms,
2972         fail silently.
2973         * decl.c (xref_basetypes): Do call complete_type for basetypes
2974         that involve template parameters.
2975
2976 Tue Feb 24 00:36:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
2977
2978         * typeck2.c (process_init_constructor): Fix labeled init check.
2979
2980 Mon Feb 23 05:08:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
2981
2982         * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
2983         argument to tsubst and friends.
2984
2985         * pt.c (tsubst, FUNCTION_DECL): Tidy.
2986
2987         * typeck.c (build_x_function_call): Handle static member function
2988         templates like non-templates.  Handle friend templates like normal
2989         function templates.
2990         * pt.c (tsubst, *_PARM): Don't use orig_level.
2991         (get_bindings): Don't call add_to_template_args.
2992         (instantiate_template): Likewise.
2993         (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
2994         * ptree.c (print_lang_type): Print index/level for template parms.
2995
2996 Mon Feb 23 02:52:29 1998  Mark Mitchell  <mmitchell@usa.net>
2997
2998         * Make-lang.in (cc1plus): Note that cc1plus depends on
2999         cp/cp-tree.h and cp/cp-tree.def.
3000         
3001         * cp-tree.def (TEMPLATE_CONST_PARM): Remove.
3002         (TEMPLATE_PARM_INDEX): New tree code, used to indicate a
3003         position in a template parameter list.
3004         * cp-tree.h (template_parm_index): New structure, used as the tree
3005         structure for a TEMPLATE_PARM_INDEX.
3006         (TEMPLATE_PARM_IDX): New macro.
3007         (TEMPLATE_PARM_LEVEL): Likewise.
3008         (TEMPLATE_PARM_DESCENDANTS): Likewise.
3009         (TEMPLATE_PARM_ORIG_LEVEL): Likewise.
3010         (TEMPLATE_PARM_DECL): Likewise.
3011         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
3012         (TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
3013         (TEMPLATE_TYPE_DECL): Likewise.
3014         (TEMPLATE_CONST_IDX): Remove.
3015         (TEMPLATE_CONST_LEVEL): Likewise.
3016         (TEMPLATE_CONST_SET_INFO): Likewise.
3017         (TEMPLATE_TYPE_SET_INFO): Likewise.
3018         (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
3019         node.
3020         (TEMPLATE_TYPE_LEVEL): Likewise.
3021         * decl.c (decls_match): Call comp_template_parms, rather than
3022         expanding it inline.
3023         (duplicate_decls): If two template declarations are being merged,
3024         then their TEMPLATE_INFOs should be merged as well.
3025         (grokfndecl): Save template-id information when declaring a friend
3026         with explicit template arguments.  Pass arguments to
3027         check_explicit_specialization via correct convention; at some
3028         point check_explicit_specialization changed, but these call-sites
3029         did not.
3030         (grokdeclarator): Tidy up slightly.
3031         * decl2.c (check_classfn): Tidy up slightly.  Don't assume that
3032         two template functions with the same DECL_ASSEMBLER_NAME the same,
3033         since the names are not yet mangled.
3034         * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
3035         TEMPLATE_CONST_PARM. 
3036         (dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
3037         decl for a non-type parameter, rather than printing `<tparm ...>'.
3038         * friend.c (is_friend): Handle TEMPLATE_DECL friends.
3039         (do_friend): Deal with template friends.
3040         * lex.c (do_pending_inlines): Call
3041         maybe_begin_member_template_processing, rather than
3042         conditionally calling begin_member_template_processing.
3043         (process_next_inline): Likewise.  Call
3044         maybe_end_member_template_processing, rather than
3045         conditionally calling end_member_template_processing.
3046         (do_pending_defargs): Likewise.
3047         (do_identifier): Use TEMPLATE_PARM_INDEX instead of
3048         TEMPLATE_CONST_PARM.  
3049         * method.c (build_mangled_template_parm_index): New function.
3050         (build_overload_value): Use it.
3051         (build_overload_name): Likewise.
3052         * pt.c (finish_member_template_decl): Allow friend declarations.
3053         (template_class_depth): New function.
3054         (is_member_template): Rename, and modify, to become...
3055         (is_member_or_friend_template): New function.
3056         (end_member_template_processing): Rename, and modify, to become...
3057         (maybe_end_member_template_processing).
3058         (build_template_parm_index): New function.
3059         (reduce_template_parm_level): New function.
3060         (process_template_parm): Modify to use build_template_parm_index.
3061         (push_template_decl): Deal with friend templates.
3062         (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
3063         TEMPLATE_CONST_PARM.
3064         (tsubst_friend_function): New function.
3065         (instantiate_class_template): Generate the DECL_FRIENDLIST
3066         for a new instantiation by using tsubst_friend_function rather
3067         than just tsubst.
3068         (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
3069         Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
3070         appropriate new macros.  Use reduce_template_parm_level to
3071         generate lower-level template parameters.  Handle tsubst'ing into
3072         TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
3073         to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
3074         templates.  Similarly for the template parameters for a new
3075         template.
3076         (tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
3077         of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
3078         (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.  
3079         (get_bindings): Call add_to_template_args if necessary.
3080         (instantiate_decl): Handle instantiations of friend templates.
3081         * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
3082         TEMPLATE_TYPE_PARM as a list of fields; it's not!
3083         * spew.c (yylex): Do a little manual constant propogation to
3084         clarify the code.
3085         
3086 Sun Feb 22 19:53:29 1998  Jeffrey A Law  (law@cygnus.com)
3087
3088         * error.c: Include sys/types.h.
3089
3090 Thu Feb 19 14:49:09 1998  Jeffrey A Law  (law@cygnus.com)
3091
3092         * method.c (build_mangled_name): Start CPP directives in column zero.
3093
3094 Thu Feb 19 10:36:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
3095
3096         * typeck2.c (process_init_constructor): Sorry about non-trivial
3097         labeled initializers.
3098         * parse.y (initlist): Reenable labeled initializers.
3099
3100 Thu Feb 19 10:15:55 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
3101
3102         * pt.c (coerce_template_parms) Add a new parameter, is_tmpl_parm,
3103         all callers changed.  Rely on the new parameter instead of arg 
3104         being a TREE_LIST when determine whether we are working inside
3105         template template parameter.  Clean up is_type test.
3106         
3107 Thu Feb 19 10:04:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
3108
3109         * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
3110         * typeck2.c (initializer_constant_valid_p): Allow conversions
3111         between pointers and refrerences.
3112
3113 1998-02-19  Brendan Kehoe  <brendan@cygnus.com>
3114
3115         * typeck.c (build_unary_op): Only warn about incr/decr a pointer
3116         if pedantic || warn_pointer_arith.
3117
3118 Thu Feb 19 09:37:21 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
3119
3120         * pt.c (unify): Handle TEMPLATE_DECL.
3121
3122 1998-02-18  Brendan Kehoe  <brendan@cygnus.com>
3123
3124         * cp-tree.h (strip_attrs): Remove decl.
3125
3126 1998-02-18  Doug Evans  <devans@cygnus.com>
3127
3128         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
3129         Update olddecl's attributes too.
3130         (strip_attrs): Remove function.
3131         * typeck.c (common_type): Call merge_machine_type_attributes.
3132
3133 Tue Feb 17 14:07:52 1998  Mark Mitchell  <mmitchell@usa.net>
3134
3135         * parse.y (initdcl0_innards): New grammar symbol.
3136         (nomods_initdecls, nomods_initdcl0): Change type from itype to
3137         none, since the resulting value is never used.
3138         (parse_decl): New function.
3139         (datadef): Remove redundant actions.
3140         (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
3141         * parse.c: Regenerated.
3142         
3143 Tue Feb 17 11:54:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
3144
3145         * parse.y (simple_stmt): Use getdecls() to check for decl.
3146
3147 Sat Feb 14 11:50:51 1998  Manfred Hollstein  <manfred@s-direktnet.de>
3148
3149         * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New 
3150         macros.
3151         (c++.install-common): Install c++filt properly as native or as cross
3152         variant.
3153         (c++.uninstall): Add c++filt.
3154
3155 Fri Feb 13 14:55:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
3156
3157         * call.c (standard_conversion): Fix multi-level ptr conversions.
3158
3159 Fri Feb 13 14:06:22 1998  Mike Stump  <mrs@wrs.com>
3160
3161         * init.c (build_new): Propagate error_mark_node up.
3162
3163 Fri Feb 13 13:24:32 1998  Jason Merrill  <jason@yorick.cygnus.com>
3164
3165         * parse.y (simple_stmt): If the condition isn't a declaration, 
3166         start the controlled block after the test.
3167
3168 Fri Feb 13 02:26:10 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
3169
3170         * call.c (build_over_call): Convert builtin abs, labs and fabs to
3171         tree-codes.
3172         * decl.c (init_decl_processing): Reenable abs, labs and fabs as
3173         builtins.
3174
3175 Fri Feb 13 01:36:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
3176
3177         * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
3178
3179 Fri Feb 13 00:21:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
3180
3181         * cp-tree.h: Add access_protected_virtual_node.
3182         * class.c (init_class_processing): Initialize it.
3183         * decl.c (xref_basetypes): Use it.
3184         * parse.y (base_class_access_list): Likewise.
3185
3186         * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
3187         (c++.install-common): Install c++filt.
3188
3189 Thu Feb 12 12:46:51 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3190
3191         * decl.c (shadow_tag): Give error for typedef-ing built-in types.
3192
3193 Wed Feb 11 23:28:05 1998  Mark Mitchell  <mmitchell@usa.net>
3194
3195         * call.c (reference_binding): Use comptypes when comparing
3196         TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
3197
3198 Wed Feb 11 16:42:04 1998  Mark Mitchell  <mmitchell@usa.net>
3199
3200         * tree.c (is_overloaded_fn): Use really_overloaded_fn.
3201         (really_overloaded_fn): Move check here from is_overloaded_fn. 
3202         (get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
3203
3204 Wed Feb 11 15:54:18 1998  Mark Mitchell  <mmitchell@usa.net>
3205
3206         * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
3207         conversions.
3208
3209 Mon Feb  9 22:23:31 1998  Mark Mitchell  <mmitchell@usa.net>
3210
3211         * cp-tree.h (push_template_decl): Return the decl passed in, or an
3212         equivalent duplicate.
3213         * decl.c (pushtag): Use the return value from push_template_decl.
3214         (duplicate_decls): When duplicating a template declaration, merge
3215         the DECL_TEMPLATE_RESULTs as well.
3216         (make_implicit_typename): Don't try to dive into typename types to
3217         find a context for making a new implicit typename.
3218         (start_decl): Use the return value from push_template_decl.
3219         (grokdeclarator): Complain about declarations list `const operator
3220         int'.  Since we don't correctly handle in-class initializations of
3221         non-static data members, complain about this (now illegal)
3222         practice.  Issue an error for initializations of non-const statics
3223         since that is illegal as well, and since we don't handle that case
3224         correctly either.
3225         (start_function): Use the return value from push_template_decl.
3226         (start_method): Likewise.
3227         * decl2.c (grokfield): Likewise.  Since the change to
3228         grokdeclarator ensures that all initialized fields are in fact
3229         static, remove a redundant test for TREE_PUBLIC.
3230         * parse.y (initlist): Disable labeled initializers since they do
3231         not work as per the documentation, and since they do not use the
3232         same syntax as the C front end.
3233         * pt.c (push_template_decl): Return the decl passed in, or an
3234         equivalent duplicate.
3235         (lookup_template_class): When searching in a nested context,
3236         use the right arguments.
3237         (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
3238         * typeck.c (build_component_ref): Assign the correct type to the
3239         result of build_vfn_ref.
3240         
3241 Tue Feb 10 23:56:46 1998  Jason Merrill  <jason@yorick.cygnus.com>
3242
3243         * pt.c (convert_nontype_argument): Fix typo.
3244         (check_explicit_specialization): Allow old-style specialization
3245         of class template members.
3246
3247 Tue Feb 10 20:36:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
3248                           Manfred Hollstein  <manfred@s-direktnet.de>
3249
3250         * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
3251         when deciding to override DECL_ASSEMBLER_NAME.
3252
3253 Tue Feb 10 15:30:55 EST 1998 Andrew MacLeod <amacleod@torpedo.to.cygnus.com>
3254
3255         * decl2.c (lang_f_options): Add -fsquangle to option processing list.
3256         * cp-tree.h (flag_do_squangling): Add declaration.
3257         * lang-options.h: Add -fsquangle and -fno-squangle.
3258         * method.c: Add macros and static variables for squangling.
3259         (build_overload_name): Rename to build_mangled_name, add logic for B 
3260         compression, and split into process_modifiers and 
3261         process_overload_item.
3262         (process_modifiers): New function, to handle constant, reference, 
3263         and pointer types. 
3264         (process_overload_item): New function, handles issue of type codes.
3265         (build_overload_name): New function, start squangling and call 
3266         build_mangled_name.
3267         (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
3268         (start_squangling): New function to initialize squangling structs.
3269         (end_squangling): New function to destroy squangling structs.
3270         (nrepeats): Rename variable to Nrepeats.
3271         (issue_nrepeats): New function for issuing 'n' type repeats.
3272         (check_ktype): New function to check for type K name compression.
3273         (build_overload_nested_name): Add a check for K name compression.
3274         (build_qualified_name): Add a check for K name compression and don't
3275         use DECL_ASSEMBLER_NAME when squangling is on.
3276         (check_btype): New function, checks for B type compression.
3277         (build_static_name, build_decl_overload_real): Initiate squangling.
3278         (build_typename_overload, build_overload_with_type): Initiate 
3279         squangling
3280
3281 Sun Feb  8 23:47:38 1998  scott snyder  <sss@d0linux01.fnal.gov>
3282
3283         * method.c (make_thunk): Avoid name buffer overflow.
3284
3285 Sat Feb  7 16:48:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
3286
3287         * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
3288         don't define them yet.
3289
3290         * parse.y (nomods_initdcl0): Add constructor_declarator case.
3291
3292 Fri Feb  6 21:32:25 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3293
3294         * config-lang.in (diff_excludes): Use basename only.
3295
3296 Thu Feb  5 19:10:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
3297
3298         * tinfo2.cc: Add tinfo for signed char.
3299
3300 Thu Feb  5 14:38:23 1998  Mike Stump  <mrs@wrs.com>
3301
3302         * search.c (compute_access): Handle protected constructors in derived
3303         classes as accessible.
3304
3305 Wed Feb  4 01:26:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
3306
3307         * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
3308         Call convert_from_reference sooner.
3309
3310 Tue Feb  3 23:50:52 1998  Mark Mitchell  <mmitchell@usa.net>
3311
3312         * cvt.c (ocp_convert): Obtain the constant values from constant
3313         decls even if the destination type is the same as the type of the
3314         decl. 
3315
3316         * decl2.c (finish_file): Make sure that static inlines with
3317         definitions are not marked DECL_EXTERNAL before returning.
3318
3319 Tue Feb  3 22:43:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
3320
3321         * decl.c: Lose arg_looking_for_template.
3322         (lookup_name_real): Likewise.
3323         * parse.y: Lose processing_template_arg, template_arg1
3324         (primary): Likewise.
3325         * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
3326
3327 Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
3328
3329         * error.c (dump_decl): Fix type of default arguments for template
3330         template parameters and nontype template parameters.
3331         * parse.y (template_parm): Handle invalid default template 
3332         template arguments here.
3333
3334         * parse.y (template_parm): Use template_arg instead of PTYPENAME 
3335         for default template template argument.
3336         * pt.c (coerce_template_parms): Merge default template argument 
3337         codes.  Can treat RECORD_TYPE as template name if it is implicitly
3338         created.  Fix argument index in error message.
3339         * typeck.c (comptypes): Merge template argument comparison codes in 
3340         TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
3341
3342 Tue Jan  6 01:42:44 1998  Mumit Khan <khan@xraylith.wisc.edu>
3343
3344         * lex.c (file_name_nondirectory): Also check for '/'.
3345
3346 Mon Feb  2 11:24:22 1998  Mark Mitchell  <mmitchell@usa.net>
3347
3348         * parse.y (primary): Deal with statement-expressions in
3349         templates. 
3350         * pt.c (tsubst_copy): Handle BIND_EXPR.
3351         * tree.c (mapcar): Likewise.
3352
3353         * call.c (add_template_candidate_real): Pass extra parameter to
3354         fn_type_unification. 
3355         * cp-tree.h (fn_type_unification): Add parameter.
3356         * pt.c (fn_type_unification): Add additional parameter to deal with
3357         static member functions.
3358         (get_bindings): Deal with static member functions.
3359
3360         * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.      
3361         (revert_static_member_fn): Declare.
3362         * decl.c (revert_static_member_fn): Remove declaration.  Change
3363         linkage from internal to external.
3364         (cp_finish_decl): Deal with virtual functions in classes local to
3365         template functions.
3366         * decl2.c (finish_file): Don't forget to emit increment/decrement
3367         expressions in initializers for file-scope variables.
3368         * parse.y (typename_sub2): If the typename doesn't names a
3369         template, rather than a type, issue an error message.
3370         * pt.c (check_explicit_specialization): Handle specializations of
3371         static member functions.
3372         (coerce_template_parms): Handle offset references to lists of
3373         member functions.
3374         * search.c (note_debug_info_needed): Don't crash when handed a
3375         type which is being defined.
3376         * typeck.c (complete_type): Don't crash when handed NULL_TREE;
3377         that can happen with some illegal code.
3378
3379 Mon Feb  2 00:57:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3380
3381         * call.c (user_harshness): Initialize `code' to 0.
3382         (build_method_call): Initialize `candidates', `cp' and `len' to 0.
3383         (null_ptr_cst_p): Add parentheses around && within ||.
3384         (standard_conversion): Likewise.
3385         (z_candidate): Likewise.
3386         (build_user_type_conversion_1): Initialize `args' to NULL_TREE.
3387         (build_object_call): Likewise for `mem_args'.
3388         (build_new_op): Likewise for `mem_arglist'.  Add `return' from
3389         default case in enumeration switch.
3390
3391         * class.c (build_vtable_entry): Add explicit braces to avoid
3392         ambiguous `else'.
3393         (build_class_init_list): Likewise.
3394         (finish_struct_1): Initialize `width' to 0.
3395         (instantiate_type): Initialize `name' to NULL_TREE.  Add
3396         explicit braces to avoid ambiguous `else'.
3397
3398         * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
3399         `else'.
3400
3401         * decl.c (grok_reference_init): Eliminate unused parameter, all
3402         callers changed.
3403         (record_builtin_type): Initialize `tdecl' to NULL_TREE.
3404         (init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
3405         (cp_finish_decl): Initialize `ttype' to NULL_TREE.
3406         (grokdeclarator): Add parentheses around && within ||.  Add
3407         explicit braces to avoid ambiguous `else'.
3408         (grokparms): Initialize `type' to NULL_TREE.
3409         (xref_tag): Remove unused label `just_return'.
3410         (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
3411         (finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
3412         (hack_incomplete_structures): Add parentheses around assignment
3413         used as truth value.
3414
3415         * decl2.c (coerce_delete_type): Hide definition of `e3'.
3416
3417         * error.c: Include <stdlib.h>.
3418         (dump_expr): Change the type of `i' to size_t.  Remove unused
3419         label `error'. 
3420
3421         * except.c (init_exception_processing): Remove unused variable `d'.
3422         (expand_throw): Likewise for `label'.
3423
3424         * friend.c (add_friends): Add explicit braces to avoid ambiguous
3425         `else'.
3426
3427         * init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
3428         (sort_base_init): Likewise for `binfo'.
3429         (expand_member_init): Likewise for `rval'.
3430         (build_member_call): Add parentheses around assignment used as
3431         truth value.
3432         (build_offset_ref): Add explicit braces to avoid ambiguous `else'.
3433         (build_new): Initialize `nelts' to NULL_TREE.  Initialize
3434         `old_immediate_size_expand' to 0.
3435         (build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
3436         (build_vec_delete_1): Remove unused variable `block'.
3437         (expand_vec_init): Initialize `itype' to NULL_TREE.
3438
3439         * lex.c: Include <strings.h> if we don't have <string.h>.  Protect
3440         declaration of `index' and `rindex' with autoconf macros.
3441         (reinit_parse_for_expr): Remove unused variables
3442         `look_for_semicolon' and `look_for_lbrac'.
3443         (cons_up_default_function): Initialize `args' to NULL_TREE.
3444         (readescape): Initialize `firstdig' to 0.
3445         (real_yylex): Add parentheses around assignment used as truth value. 
3446
3447         * method.c: Include <strings.h> if we don't have <string.h>.
3448         Protect declaration of `index' with autoconf macro.
3449
3450         * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
3451         Initialize `type' to NULL_TREE.
3452         (structsp): Remove unused variable `id'.
3453
3454         * pt.c (coerce_template_parms): Add explicit braces to avoid
3455         ambiguous `else'.
3456         (lookup_template_class): Initialize `template' to NULL_TREE.
3457         (instantiate_class_template): Remove unused variable `name' and `e'.
3458         (tsubst): Likewise for `i'.  Initialize `last' to NULL_TREE.
3459         (do_poplevel): Initialize `saved_warn_unused' to 0.
3460         (type_unification): Remove unused varable `parm'.
3461         (unify): Likewise for `j'.
3462
3463         * repo.c (init_repo): Add parentheses around assignment used as
3464         truth value.
3465         (finish_repo): Remove unused varable `p'.
3466         
3467         * search.c (get_binfo): Initiize `type' to NULL_TREE.
3468         (get_base_distance): Likewise.
3469         (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
3470         and `new_v' to NULL_TREE.
3471         (lookup_fnfields): Likewise for `rval_binfo_h'.
3472         (breadth_first_search): Add parentheses around assignment used as
3473         truth value.
3474         (get_template_base): Initialize `type' to NULL_TREE.
3475
3476         * sig.c (append_signature_fields): Initialize `last_mfptr' to
3477         NULL_TREE.
3478         (build_signature_table_constructor): Likewise for
3479         `last_rhs_field', `pfn' and `vt_off'.
3480         (build_sigtable): Likewise for `init'.
3481
3482         * tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
3483         (propagate_binfo_offsets): Likewise for `delta'.
3484         (hash_tree_cons): Initialize hashcode to 0.
3485         (can_free): Likewise for `size'.
3486         (cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
3487         
3488         * typeck.c (convert_sequence): Hide prototype.
3489         (common_type): Add explicit braces to avoid ambiguous `else'.
3490         (comp_target_types): Likewise.
3491         (build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
3492         (build_function_call_real): Add explicit braces to avoid ambiguous
3493         `else'.
3494         (convert_arguments): Initialize `called_thing' to 0.
3495         (convert_for_initialization): Initialize `savew' and `savee' to 0.
3496
3497         * typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
3498         (digest_init): Initialize `old_tail_contents' to NULL_TREE.
3499         (build_x_arrow): Likewise for `last_rval'.
3500
3501         * xref.c (GNU_xref_decl): Initialize `cls' to 0.
3502
3503 Sun Feb  1 12:45:34 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
3504
3505         * decl.c (init_decl_processing): Use set_sizetype.
3506         * decl2.c (sizetype): Don't declare.
3507         * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
3508         (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
3509         (build_component_addr, unary_complex_lvalue): Likewise.
3510         * rtti.c (expand_class_desc): Likewise.
3511         * class.c (get_vfield_offset): Likewise.
3512
3513 Thu Jan 29 10:39:30 1998  Mark Mitchell  <mmitchell@usa.net>
3514
3515         * pt.c (convert_nontype_argument): Move check for is_overloaded_fn
3516         early to avoid bogus error.  Handle overloaded function
3517         names provided as template arguments correctly.
3518         (coerce_template_parms): Don't mishandle overloaded functions when
3519         dealing with template template parameters.
3520         (lookup_template_class): Issue an error message, rather than
3521         crashing, when the TYPE_DECL provided is not a template type.
3522
3523 Wed Jan 28 23:14:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
3524
3525         * class.c (instantiate_type): Don't just return a known type if
3526         it's wrong.
3527
3528 Wed Jan 28 11:04:07 1998  Mark Mitchell  <mmitchell@usa.net>
3529
3530         * class.c (instantiate_type): Remove handling of FUNCTION_DECL
3531         since that code could never be reached.
3532         
3533         * error.c (dump_decl): Avoid aborting in the midst of printing an
3534         error message about an illegal template declaration.
3535
3536         * parse.y (structsp): Print an error message, rather than crashing,
3537         when a class-head does not name a class.
3538
3539         * pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
3540         template arguments as a g++ extension.
3541         
3542         * cp-tree.def (ALIGNOF_EXPR): New tree code.
3543         * decl2.c (grok_alignof): If processing_template_decl, just store
3544         the expression.
3545         * typeck.c (c_alignof): Likewise.
3546         * decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
3547         * error.c (dump_expr): Likewise.
3548         * pt.c (tsubst_copy): Likewise.
3549         * tree.c (cp_tree_equal): Likewise.
3550         * pt.c (uses_template_parms): Correctly determine whether or not a
3551         SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
3552         folding can be done.
3553         
3554         * cp-tree.h (grok_enum_decls): Remove type parameter.
3555         * decl.c (grok_enum_decls): Likewise.
3556         * decl2.c (grok_x_components): Call grok_enum_decls
3557         unconditionally, since it will do nothing if there is no
3558         current_local_enum.  Use the new calling sequence.
3559         * pt.c (tsubst_enum): Use the new calling sequence for
3560         grok_enum_decls.
3561
3562         * decl.c (start_function): Make member functions of local classes
3563         in extern inline functions have comdat linkage here...
3564         (grokdeclarator): Rather than here.
3565         
3566 Wed Jan 28 10:55:47 1998  Jason Merrill  <jason@yorick.cygnus.com>
3567
3568         * pt.c (convert_nontype_argument): Use decl_constant_value.
3569
3570 Tue Jan 27 16:42:21 1998  Mark Mitchell  <mmitchell@usa.net>
3571
3572         * call.c (add_template_candidate_real): New function.
3573         (add_template_candidate): Use it.
3574         (add_template_conv_candidate): Likewise.
3575         (joust): Pass extra argument to more_specialized.
3576         * class.c (instantiate_type): Handle a single FUNCTION_DECL.
3577         (is_local_class): Remove.
3578         (finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
3579         * cp-tree.h (is_local_class): Remove.
3580         (perform_array_to_pointer_conversion): Likewise.
3581         (finish_member_template_decl): Add.
3582         (check_explicit_specialization): Return a tree, not an int.
3583         (more_specialized): Take additional argument.
3584         (get_bindings): Likewise.
3585         (TI_PENDING_SPECIALIZATION_FLAG): New macro.
3586         * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
3587         (perform_array_to_pointer_conversion): Remove.
3588         * decl.c (saved_scope): Add processing_specialization,
3589         processing_explicit_instantiation fields.
3590         (maybe_push_to_top_level): Save them.
3591         (pop_from_top_level): Restore them.
3592         (grokfndecl): Use new return value from
3593         check_explicit_specialization. 
3594         (start_decl): Don't check flag_guiding_decls before pushing
3595         decls. 
3596         (cp_finish_decl): Remove previous (bogus) change.
3597         (grok_declarator): Use decl_function_context rather than
3598         is_local_class. 
3599         * decl2.c (finish_file): Pass extra argument to get_bindings.
3600         (build_expr_from_tree): Let build_x_component_ref check 
3601         validity of arguments rather than doing it here.
3602         * lex.c (cons_up_default_function): Remove code fooling with
3603         processing_specialization, processing_explicit_instantiation
3604         flags, as that is now done in {maybe_push_top,pop_from}_top_level. 
3605         * method.c (build_overload_identifier): Mangle local classes in
3606         template functions correctly.
3607         * parse.y (finish_member_template_decl): Move to pt.c.
3608         * pt.c (finish_member_template_decl): Moved here from parse.y.
3609         (print_candidates): New function.
3610         (determine_specialization): Change interface.  Properly look for
3611         most specialized versions of template candidates.
3612         (check_explicit_specialization): Fully process explicit
3613         instantiations. 
3614         (push_template_decl): Avoid looking at CLASSTYPE fields in
3615         FUNCTION_DECLS. 
3616         (determine_overloaded_function): Remove.
3617         (convert_nontype_argument): Change name from
3618         convert_nontype_parameter.  Use determine_overloaded_function
3619         instead of instantiate_type.
3620         (mangle_class_name_for_template): Handle type contexts as well as
3621         function contexts.
3622         (classtype_mangled_name): Likewise.
3623         (lookup_template_class): Likewise.
3624         (tsubst): Likewise.
3625         (more_specialized): Take explict template arguments as a
3626         parameter. 
3627         (most_specialized): Likewise.
3628         (get_bindings): Likewise.  Check that return types match before
3629         proclaiming a function a match.
3630         (do_decl_instantiation): Remove code searching for function to
3631         instantiate; that is now done in check_explicit_specialization.
3632         (add_maybe_template): Pass extra argument to get_bindings.
3633         * tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
3634         implementation.
3635         * typeck.c (build_component_ref): Check for invalid arguments.
3636
3637 Tue Jan 27 01:44:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
3638
3639         * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that 
3640         return_target and call_target are equivalent.
3641
3642         * pt.c (type_unification_real): Just accept function parms that
3643         don't use any template parms.
3644
3645 Sun Jan 25 03:30:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
3646
3647         * decl.c (cp_finish_decl): When bailing on a comdat variable, also
3648         unset DECL_NOT_REALLY_EXTERN.
3649
3650         * parse.y (typename_sub*): Fix std::.
3651
3652 Sat Jan 24 12:13:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
3653
3654         * error.c (dump_decl): Fix type default template args.
3655         (dump_type): Hand TEMPLATE_DECL off to dump_decl.
3656
3657 Fri Jan 23 18:34:37 1998  Mumit Khan <khan@xraylith.wisc.edu>
3658
3659         * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
3660         (file_name_nondirectory): Use.
3661
3662 Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
3663
3664         * pt.c (coerce_template_parms): Don't access elements of ARGLIST
3665         that are not really present.  Substitute default arguments in 
3666         template template arguments.  Correctly convert TEMPLATE_DECL to 
3667         TEMPLATE_TEMPLATE_PARM.
3668         (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM 
3669         are no longer treated specially here.
3670         * parse.y (template_template_parm): Fix copy error.
3671         * decl.c (grokdeclarator): Warn about missing `typename' for nested
3672         type created from template template parameters.
3673         * parse.y (bad_parm): Likewise
3674
3675         * class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
3676         (push_nested_class): Likewise.
3677         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
3678         * cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
3679         (copy_template_template_parm): Declare.
3680         * decl.c (arg_looking_for_template): New variable.
3681         (lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
3682         Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
3683         node if arg_looking_for_template is nonzero.
3684         (pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
3685         (grok_op_properties, xref_tag, xref_basetypes): Likewise.
3686         (grokdeclarator): Handle TEMPLATE_DECL.
3687         * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
3688         * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
3689         (dump_type_prefix, dump_type_suffix) Handle TEMPLATE_TEMPLATE_PARM.
3690         (dump_decl): Handle unnamed template type parameters.
3691         Handle template template parameters.
3692         (dump_function_name): Handle template template parameters.
3693         * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef): 
3694         Handle TEMPLATE_TEMPLATE_PARM.
3695         * method.c (build_template_template_parm_names): New function.
3696         (build_template_parm_names): Handle TEMPLATE_DECL.
3697         (build_overload_nested_name, build_overload_name): 
3698         Handle TEMPLATE_TEMPLATE_PARM.
3699         * parse.y (maybe_identifier): New nonterminal.
3700         (template_type_parm): Use it.
3701         (template_template_parm, template_arg1): New nonterminal.
3702         (template_parm): Add template_template_parm rules.
3703         (template_arg): Set processing_template_arg.
3704         (template_arg1): Rules moved from template_arg.
3705         (primary, nonnested_type): Set arg_looking_for_template if we are
3706         processing template arguments.
3707         * pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
3708         (process_template_parm): Handle template template parameters.
3709         (coerce_template_parms, comp_template_args): Likewise.
3710         (mangle_class_name_for_template, lookup_template_class): Likewise.
3711         (uses_template_parms): Handle TEMPLATE_DECL and 
3712         TEMPLATE_TEMPLATE_PARM.
3713         (current_template_args): Handle TEMPLATE_DECL.
3714         (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
3715         * search.c (dfs_walk, dfs_record_inheritance): 
3716         Handle TEMPLATE_TEMPLATE_PARM.
3717         * tree.c (copy_template_template_parm): New function.
3718         (mapcar): Handle TEMPLATE_TEMPLATE_PARM.
3719         * typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
3720
3721 Mon Jan 19 22:40:03 1998  Mark Mitchell  <mmitchell@usa.net>
3722
3723         * decl.c (start_decl): Don't allow duplicate definitions of static
3724         data members.
3725
3726         * call.c (build_user_type_conversion_1): Handle user-defined
3727         template conversion operators correctly.
3728
3729         * decl2.c (build_expr_from_tree): Issue an error message if the
3730         object in a COMPONENT_REF is a TEMPLATE_DECL.
3731         
3732         * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
3733         
3734         * class.c (is_local_class): New function.
3735         * cp-tree.h (is_local_class): Declare it.
3736         (last_tree): Likewise.
3737         (begin_tree): Likewise.
3738         (end_tree): Likewise.
3739         (lookup_template_class): Change prototype.
3740         * decl.c (cp_finish_decl): Check for NULL where necesary.
3741         Consider FUNCTION_DECLS to declare objects with top-level binding,
3742         when calling make_decl_rtl.
3743         (grokdeclarator): Give members of local classes internal linkage.
3744         (start_function): Remove declaration of last_tree.
3745         (finish_function): Set flag_keep_inline_functions around call to
3746         rest_of_compilation if we are processing a member function in a
3747         local class.
3748         (start_method): Call push_template_decl for member functions of
3749         local classes in template functions.
3750         * decl2.c (import_export_decl): Don't give external linkage to
3751         instantiations of templates with internal linkage.
3752         * parse.y (last_tree): Remove declaration.
3753         (template_type): Pass extra parameter to lookup_template_class.
3754         (self_template_type): Likewise.
3755         (structsp): Move call to reset_specialization into left_curly.
3756         (left_curly): Call reset_specialization, and begin_tree.
3757         * pt.c (saved_trees): New variable.
3758         (mangle_class_name_for_template): Change prototype.  Use
3759         additional function context to name local classes in templates
3760         correctly. 
3761         (classtype_mangled_name): Pass the context.
3762         (push_template_decl): Handle local classes and templates, and
3763         member functions for such classes.
3764         (convert_nontype_parameter): Fix handling of pointer-to-member
3765         constants. 
3766         (lookup_template_class): Handle local classes in templates.
3767         (tsubst): Likewise.  Don't assume that template instantiations
3768         have external linkage; pay attention to the template declaration. 
3769         (mark_decl_instantiated): Likewise.
3770         (begin_tree): New function.
3771         (end_tree): Likewise.
3772         
3773         * decl.c (xref_basetypes): Don't call complete_type for basetypes
3774         that involve template parameters; that can lead to infinite
3775         recursion unnecessarily.
3776
3777         * pt.c (register_specialization): Do not register specializations
3778         that aren't ready to be registered yet.
3779         (check_explicit_specialization): Handle explicit specialization of
3780         constructors and destructors.
3781         (build_template_decl): New function.
3782         (push_template_delc): Handle out-of-class specializations of
3783         member templates.
3784         
3785         * pt.c (check_explicit_specialization): Set up the template
3786         information before registering the specialization.
3787         (coerce_template_parms): Fix thinko.
3788         (tsubst): Handle specializations of member templates correctly.
3789
3790         * class.c (finish_struct_methods): Remove calls to
3791         check_explicit_specialization from here.
3792         (finish_struct): And insert them here.
3793         * cp-tree.h (perform_qualification_conversions): New function.
3794         (perform_array_to_pointer_conversion): Likewise.
3795         (begin_explicit_instantiation): Likewise.
3796         (end_explicit_instantiation): Likewise.
3797         (determine_specialization): Renamed from
3798         determine_explicit_specialization. 
3799         (comp_template_parms): New function.
3800         (processing_explicit_instantiation): New variable.
3801         * cvt.c (perform_qualification_conversions): New function.
3802         (perform_array_to_pointer_conversion): Likewise.
3803         * decl.c (duplicate_decls): Don't consider template functions
3804         alike unless they have the same parameters.  Refine handling of
3805         instantiation/specialization mismatches.
3806         (start_decl): Don't call pushdecl for template specializations,
3807         since they don't affect overloading.
3808         (start_function): Likewise
3809         (grokfndecl): Call check_explicit_specialization a little later.
3810         Don't call duplicate_decls for memberm template specializations.
3811         (grokdeclarator): Don't update template_count for classes that are
3812         themselves specializations.  Remove use of `2' as parameter to
3813         grokfndecl since that value isn't used.
3814         * lex.c (cons_up_default_function): Save and restore
3815         processing_explicit_instantiation around calls to grokfield.
3816         * parse.y (finish_member_template_decl): New function.
3817         (component_decl_1): Use it.
3818         (fn.def2): Likewise.
3819         (template_arg_list_opt): New nonterminal.       
3820         (template_type): Use it.
3821         (self_template_type): Likewise.
3822         (template_id): Likewise.
3823         (object_template_id): Likewise.
3824         (notype_template_declarator): Likwise.
3825         (begin_explicit_instantiation): Likewise.
3826         (end_explicit_instantiation): Likewise.
3827         (explicit_instantiation): Use them.
3828         * pt.c (coerce_template_parms): Add parameters.
3829         (processing_explicit_instantiation): New variable.
3830         (convert_nontype_parameter): New function.
3831         (determine_overloaded_function): Likewise.
3832         (begin_explicit_instantiation): Likewise.
3833         (end_explicit_instantiation): Likewise.
3834         (retrieve_specialization): Likewise.
3835         (register_specialization): Likewise.
3836         (processing_explicit_specialization): Removed.
3837         (determine_specialization): Handle specializations of member
3838         functions of template class instantiations.
3839         (check_explicit_specialization): Refine to conform to standard.
3840         (comp_template_parms): New function.
3841         (coerce_template_parms): Call convert_nontype_parameter.
3842         (tsubst): Refine handling of member templates.  Use
3843         register_specialization. 
3844         (instantiate_template): Use retrieve_specialization.
3845         (do_decl_instantiation): Likewise.
3846         (instantiate_decl): Likewise.
3847         (type_unification): Improve handling of explict template
3848         arguments. 
3849         * tree.c (mapcar): Return error_mark_node, rather than aborting,
3850         on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
3851         * typeck.c (build_unary_op): Call determine_specialization, rather
3852         than determine_explicit_specialization.
3853
3854 Mon Jan 19 13:18:51 1998  Jason Merrill  <jason@yorick.cygnus.com>
3855
3856         * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
3857
3858 Fri Jan 16 11:40:50 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
3859
3860         * error.c (dump_decl): For enum tags, output the tag, not its value.
3861
3862 1998-01-13  Brendan Kehoe  <brendan@cygnus.com>
3863
3864         * decl.c (init_decl_processing): Only call init_rtti_processing
3865         FLAG_RTTI is set.
3866
3867 Mon Jan 12 01:35:18 1998  Jason Merrill  <jason@yorick.cygnus.com>
3868
3869         * init.c (build_new_1): Split out from build_new.
3870         (build_new): Just return a NEW_EXPR.
3871         * expr.c (cplus_expand_expr): Handle NEW_EXPR.
3872
3873         * decl2.c (get_temp_regvar): Tweak.
3874
3875         * cp-tree.h (TREE_CALLS_NEW): Comment out.
3876         * class.c (resolves_to_fixed_type_p): Remove use.
3877         * method.c (build_opfncall): Likewise.
3878         * call.c (build_new_op): Likewise.
3879
3880 Wed Jan  7 23:47:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
3881
3882         * exception.cc (__eh_alloc, __eh_free): New fns.
3883         (__cp_push_exception, __cp_pop_exception): Use them.
3884         (__uncatch_exception): Call terminate here if no exception.
3885         * except.c (build_terminate_handler): New fn.
3886         (expand_start_catch_block): Use it.
3887         (expand_exception_blocks): Likewise.
3888         (alloc_eh_object): New fn.
3889         (expand_throw): Use it.  Protect exception init with terminate.
3890         * typeck.c (build_modify_expr): Remove code that ignores trivial 
3891         methods.
3892
3893 Mon Dec 22 11:36:27 1997  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3894  
3895         * call.c (add_builtin_candidate): Add default case in enumeration
3896         switch.
3897         (build_new_op): Likewise.
3898         (convert_like): Likewise.
3899         * cvt.c (build_expr_type_conversion): Likewise.
3900         * tree.c (real_lvalue_p): Likewise.
3901         (lvalue_p): Likewise.
3902         (cp_tree_equal): Likewise.
3903         * typeck.c (comptypes): Likewise.
3904         (build_component_ref): Likewise.
3905         (build_function_call_real): Likewise.
3906         (build_binary_op_nodefault): Likewise.
3907         (build_unary_op): Likewise.
3908         (build_modify_expr): Likewise.
3909         * typeck2.c (initializer_constant_valid_p): Likewise.
3910
3911 Sun Dec 21 15:59:00 1997  Nick Clifton  <nickc@cygnus.com>
3912
3913         * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
3914
3915 Thu Dec 18 14:51:50 1997  Mark Mitchell  <mmitchell@usa.net>
3916
3917         * pt.c (coerce_template_parms): Make sure to digest_init if
3918         possible.
3919
3920         * decl.c (duplicate_decls): Make the newdecl virtual if the
3921         olddecl was, just as is done with other attributes of olddecl.
3922
3923 Thu Dec 18 14:43:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
3924
3925         * typeck.c (unary_complex_lvalue): Ignore op0 when taking the 
3926         address of an OFFSET_REF.
3927
3928         * cp-tree.def: Add AGGR_INIT_EXPR.
3929         * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
3930         AGGR_INIT_EXPR where appropriate.
3931         * expr.c (cplus_expand_expr): Likewise.  Simplify.
3932
3933         * decl2.c (finish_file): Remove call to register_exception_table.
3934
3935 Wed Dec 17 17:08:52 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3936
3937         * pt.c (instantiate_class_template): Don't do injection when
3938         processing_template_decl is true, as pollutes current_binding_level 
3939         for base classes.
3940
3941 Wed Dec 17 21:17:39 1997  Peter Schmid <schmid@ltoi.iap.physik.tu-darmstadt.de>
3942
3943         * pt.c (maybe_fold_nontype_arg): Add prototype.
3944
3945 Tue Dec 16 10:31:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
3946
3947         * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
3948         * error.c (dump_expr): Likewise.
3949
3950 Mon Dec 15 12:22:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
3951
3952         * typeck.c (build_function_call_real): Remove "inline called before
3953         definition" pedwarn.
3954
3955         * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
3956
3957 Sun Dec 14 22:34:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
3958
3959         * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
3960
3961         * pt.c (type_unification_real): Change __null to type void* with 
3962         a warning.
3963
3964 Sun Dec 14 20:38:35 1997  Mark Mitchell  <mmitchell@usa.net>
3965
3966         * call.c (implicit_conversion): Don't call
3967         build_user_type_conversion_1 with a NULL expr, since it will
3968         crash. 
3969
3970         * pt.c (unify): Don't try to unify array bounds if either array is
3971         unbounded.
3972
3973 Fri Dec 12 16:09:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
3974
3975         * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at): 
3976         Replace extern decls with casts.
3977
3978         * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
3979         Update last_parm_cleanup_insn.
3980         (store_after_parms): Remove.
3981         * cp-tree.h: Adjust.
3982
3983 Thu Dec 11 22:18:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
3984
3985         * decl2.c (comdat_linkage): Also set DECL_COMDAT.
3986         (finish_file): Check DECL_COMDAT instead of weak|one_only.
3987         (import_export_vtable): Use make_decl_one_only instead of
3988         comdat_linkage for win32 tweak.
3989         (import_export_decl): Likewise.
3990         * pt.c (mark_decl_instantiated): Likewise.
3991
3992         * decl2.c (finish_file): Lose handling of templates in pending_statics.
3993
3994 Thu Dec 11 21:12:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
3995
3996         * decl2.c (finish_file): Lose call to expand_builtin_throw.
3997         * except.c (expand_builtin_throw): Remove.
3998         * cp-tree.h: Remove ptr_ptr_type_node.
3999         * decl.c: Likewise.
4000
4001 Thu Dec 11 20:43:33 1997  Teemu Torma  <tot@trema.com>
4002         
4003         * decl.c (ptr_ptr_type_node): Define.
4004         (init_decl_processing): Initialize it.
4005         * cp-tree.h: Declare it.
4006         * exception.cc (__cp_exception_info): Use __get_eh_info.
4007         (__cp_push_exception): Ditto.
4008         (__cp_pop_exception): Ditto.
4009
4010         From Scott Snyder <snyder@d0sgif.fnal.gov>:
4011         * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
4012         saved_pc.
4013         (init_exception_processing): Removed saved_pc initialization.
4014
4015 Wed Dec 10 11:04:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
4016
4017         * pt.c (instantiate_decl): Defer all templates but inline functions.
4018
4019 Mon Dec  8 23:17:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
4020
4021         * init.c (expand_vec_init): Don't fold a list of parameters.
4022
4023         * decl.c (copy_args_p): Handle copy elision for types with virtual
4024         bases.
4025         * call.c (build_over_call): Likewise.
4026
4027 Sun Dec  7 22:38:12 1997  Mark Mitchell  <mmitchell@usa.net>
4028
4029         * pt.c (lookup_template_function): Copy the template arguments,
4030         not just the list containing them, to the permanent obstack.
4031
4032 Sun Dec  7 15:53:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
4033
4034         * except.c (expand_start_catch_block): suspend_momentary for the
4035         terminate handler.
4036
4037         * error.c (dump_decl): Handle LOOKUP_EXPR.
4038
4039 Sun Dec  7 15:45:07 1997  Mark Mitchell  <mmitchell@usa.net>
4040
4041         * rtti.c (build_dynamic_cast): Copy the cast-to type to the
4042         permanent obstack if we are processing a template decl.
4043         * typeck.c (build_static_cast): Likewise.
4044         (build_const_cast): Likewise.
4045         (build_reinterpret_cast): Likewise.
4046
4047         * pt.c (coerce_template_parms): Coerce some expressions, even
4048         when processing_template_decl.
4049
4050 Sun Dec  7 01:46:33 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4051
4052         * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
4053         handling of pointer difference expressions.
4054
4055         * typeck.c (comp_target_types): Comparison of function/method types
4056         is independent of nptrs.
4057
4058 Sun Dec  7 01:40:27 1997  Mark Mitchell  <mmitchell@usa.net>
4059
4060         * pt.c (tsubst): Avoid creating pointer to reference and
4061         reference to reference types.
4062
4063 Sat Dec  6 01:29:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
4064
4065         * parse.y (do_id): New nonterminal.
4066         (template_id): Use it.
4067
4068 Fri Dec  5 01:17:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
4069
4070         * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
4071         * spew.c (yylex): Don't do_identifier here.
4072         * decl2.c (build_expr_from_tree): Revert last change.
4073
4074         * decl2.c (build_expr_from_tree): Expand the name for a method call.
4075         * parse.y (object_template_id): Don't try to take the DECL_NAME.
4076
4077 Wed Dec  3 20:02:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
4078
4079         * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
4080         alloc_expr.
4081         * call.c (build_op_delete_call): Adjust.
4082
4083         * except.c (expand_end_catch_block): Lose rethrow region.
4084         (expand_start_catch_block): Likewise.
4085         (expand_end_catch_block): Don't expand_leftover_cleanups.
4086
4087 Wed Dec  3 13:24:04 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4088
4089         * pt.c (tsubst): Remove tree_cons call (places redundant info into
4090         DECL_TEMPLATE_INSTANTIATION).   
4091
4092 Wed Dec  3 11:44:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
4093
4094         * tree.c (is_overloaded_fn): Handle getting a fn template.
4095         (really_overloaded_fn): Likewise.
4096         * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
4097         * pt.c (check_explicit_specialization): Tweak.
4098         (determine_explicit_specialization): Tweak.
4099
4100         * tree.c, cp-tree.h (get_target_expr): New fn.
4101
4102 Wed Dec  3 08:47:27 1997  Paul Eggert  <eggert@twinsun.com>
4103
4104         * pt.c (check_explicit_specialization): Fix misspelling in
4105         diagnostic: `preceeded'.
4106         * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
4107         `conversiona'.
4108
4109 1997-12-02  Mark Mitchell  <mmitchell@usa.net>
4110
4111         * pt.c (determine_explicit_specialization): Avoid an internal
4112         error for bad specializations.
4113
4114         * method.c (build_overload_value): Handle SCOPE_REF.
4115
4116 Tue Dec  2 19:18:50 1997  Mike Stump  <mrs@wrs.com>
4117
4118         * class.c (prepare_fresh_vtable): Enable even more complex MI
4119         vtable names.
4120
4121 Tue Dec  2 01:37:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
4122
4123         * exception.cc (__check_eh_spec): Optimize a bit.
4124
4125         * exception.cc (__cp_pop_exception): Lose handler arg.
4126         * except.c (do_pop_exception): Likewise.
4127         (push_eh_cleanup): Let the cleanup mechanism supply the handler.
4128         (expand_end_catch_block): Likewise.
4129
4130 Fri Nov 28 01:58:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
4131
4132         * pt.c (check_explicit_specialization): Complain about using a 
4133         template-id for a non-specialization.
4134
4135 Fri Nov 28 12:35:19 1997  Scott Christley  <scottc@net-community.com>
4136
4137         * repo.c: Prototype rindex only if needed.
4138         * xref.c: Likewise.
4139
4140 Fri Nov 28 01:56:35 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4141
4142         * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
4143
4144 Thu Nov 27 00:59:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
4145
4146         * typeck.c (build_const_cast): Handle references here instead of
4147         handing off to convert_to_reference.
4148
4149         * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
4150         TerminateFunctionCall.
4151         (init_exception_processing): Likewise.  Terminate et al are now
4152         the fns, not ADDR_EXPRs.
4153         (various): Lose redundant assemble_external calls.
4154         (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
4155
4156         * cp-tree.h (struct lang_decl_flags): Add comdat.
4157         (DECL_COMDAT): New macro.
4158         * decl.c (duplicate_decls): Propagate it.
4159         (cp_finish_decl): Handle it.
4160         * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
4161
4162         * class.c: Remove static pending_hard_virtuals.
4163         (add_virtual_function): Take pointers to pending_virtuals
4164         and pending_hard_virtuals.
4165         (finish_struct_1): Pass them.  Declare pending_hard_virtuals.
4166
4167 Wed Nov 26 20:28:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
4168
4169         * decl2.c (import_export_vtable): If we support one_only but not
4170         weak symbols, mark instantiated template vtables one_only.
4171         (import_export_decl): Likewise for tinfo functions.
4172         (finish_vtable_vardecl): Also write out vtables from explicitly 
4173         instantiated template classes.
4174         * pt.c (mark_class_instantiated): Revert last change.
4175
4176         * except.c (expand_throw): Call mark_used on the destructor.
4177
4178 Wed Nov 26 15:13:48 1997  Jeffrey A Law  (law@cygnus.com)
4179
4180         * lex.c (lang_init): Enable flag_exceptions by default if no
4181         command line switch was specified.
4182
4183 1997-11-26  Mark Mitchell  <mmitchell@usa.net>
4184
4185         * pt.c (unify): Handle `void' template parameters in
4186         specializations.
4187
4188 Wed Nov 26 01:11:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
4189
4190         * rtti.c (build_dynamic_cast): Handle template case here.
4191         (build_dynamic_cast_1): Not here.
4192
4193         * typeck2.c (digest_init): Make copies where appropriate.
4194
4195         * decl2.c (delete_sanity): resolve_offset_ref.
4196
4197         * except.c: Call terminate without caching so many bits.
4198
4199         * except.c (expand_start_catch_block): Fix catching a reference
4200         to pointer.
4201
4202 Tue Nov 25 11:28:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
4203
4204         * init.c (build_new): Copy size to the saveable obstack.
4205
4206         * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
4207         TRY_CATCH_EXPR for now.
4208
4209 Mon Nov 24 12:15:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
4210
4211         * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
4212         has DECL_LANG_SPECIFIC.
4213
4214         * exception.cc (struct cp_eh_info): Add handlers field.
4215         (__cp_push_exception): Initialize it.
4216         (__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
4217         (__throw_bad_exception): Remove.
4218         * except.c (call_eh_info): Add handlers field.
4219         (get_eh_handlers): New fn.
4220         (push_eh_cleanup): Increment handlers.
4221
4222 Fri Nov 21 12:22:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
4223
4224         * except.c (expand_start_eh_spec): Use the try/catch code.
4225         (expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
4226         doing everything inline.
4227         (init_exception_processing): throw_type_match now takes
4228         const void pointers.
4229         * exception.cc (__check_eh_spec): New fn.
4230         * inc/exception: Neither terminate nor unexpected return.
4231         * decl.c: Make const_ptr_type_node public.
4232         * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
4233
4234         * except.c (expand_start_catch_block): We only need the rethrow
4235         region for non-sjlj exceptions.
4236         (expand_end_catch_block): Likewise.  Use outer_context_label_stack.
4237
4238 Thu Nov 20 14:40:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
4239
4240         * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
4241         (various.o): Likewise.
4242         * inc/new: Add placement deletes.  Add throw specs for default new.
4243         * new.cc (set_new_handler): Move here from libgcc2.
4244         * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
4245         (new): Move from libgcc2.  Throw bad_alloc.
4246         * new2.cc: Move the rest of the op news and op deletes from libgcc2.
4247         * decl.c (init_decl_processing): Update exception specs on new and
4248         delete.
4249
4250         * method.c (build_decl_overload_real): Don't mess with global 
4251         placement delete.
4252
4253         * init.c (build_new): Check for null throw spec, not nothrow_t.
4254
4255         * decl.c (duplicate_decls): Don't complain about different exceptions
4256         from an internal declaration.
4257
4258         * call.c (build_op_delete_call): Fix check for member fns again.
4259
4260         * decl2.c (import_export_decl): Interface hackery affects
4261         virtual synthesized methods.
4262
4263 Wed Nov 19 18:24:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
4264
4265         * decl.c (start_decl): Don't just complain about a mismatched 
4266         scope, fix it.
4267
4268         * decl.c (make_implicit_typename): Handle case where t is not
4269         actually from context.
4270         * tree.c (get_type_decl): Lose identifier case.
4271         * spew.c (yylex): Lose useless call to identifer_typedecl_value.
4272         * parse.y (nonnested_type): Just use lookup_name.
4273         (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
4274
4275 Wed Nov 19 11:45:07 1997  Michael Tiemann  <tiemann@axon.cygnus.com>
4276
4277         * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
4278         T was built in C language context (for example, by
4279         output_func_start_profiler).
4280
4281 Wed Nov 19 10:39:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
4282
4283         * decl.c (make_implicit_typename): New fn.
4284         (lookup_name_real): Use it.  Use current_class_type as the context.
4285
4286 Mon Nov 17 23:42:03 1997  Bruno Haible <haible@ilog.fr>
4287
4288         * pt.c (do_poplevel): Don't prohibit jumps into this contour.
4289
4290 Mon Nov 17 02:01:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
4291
4292         * friend.c (do_friend): Warn about non-template friends in templates.
4293
4294         * call.c (build_op_delete_call): Fix handling of inherited delete.
4295
4296         * search.c (dfs_record_inheritance): Ignore template type parms.
4297
4298 Sat Nov 15 00:30:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
4299
4300         * call.c (build_new_op): Fix copy error.
4301         (build_op_new_call): New fn.
4302         (build_op_delete_call): New fn.
4303         * cp-tree.h: Declare them.
4304         * init.c (build_new): Use them.  Support placement delete.
4305         (build_x_delete): Use build_op_delete_call.
4306         (build_delete): Likewise.
4307         * decl2.c (delete_sanity): Likewise.
4308         (coerce_delete_type): Don't complain about placement delete.
4309
4310 Thu Nov 13 01:52:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
4311
4312         * call.c (build_new_function_call): Remove unused 'obj' parm.
4313         * cp-tree.h, typeck.c: Adjust.
4314
4315         * init.c (build_new): Make the cleanup last longer.
4316         (expand_vec_init): Call do_pending_stack_adjust.
4317
4318 Wed Nov 12 11:04:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
4319
4320         * pt.c (do_type_instantiation): Fix typo.
4321         (mark_class_instantiated): If we support one_only but not weak 
4322         symbols, don't mark this as known.
4323
4324         * init.c (build_new): Handle vec delete in EH cleanup.
4325
4326 Wed Nov 12 08:11:55 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4327
4328         * call.c (build_method_call): Call complete_type before checking
4329         for destructor.
4330
4331 Sun Nov  9 01:29:55 1997  Jim Wilson  (wilson@cygnus.com)
4332
4333         * decl.c (add_block_current_level): Delete.
4334         * init.c (build_vec_delete_1): Delete build_block and
4335         add_block_current_level calls.
4336
4337 Wed Nov 12 00:48:16 1997  Jason Merrill  <jason@yorick.cygnus.com>
4338
4339         * init.c (build_new): Handle freeing allocated memory when the
4340         constructor throws.
4341
4342         * call.c (build_new_method_call): Fix flags arg.
4343
4344         * pt.c (do_type_instantiation): Don't try to instantiate
4345         member templates.
4346         (mark_decl_instantiated): If we support one_only but not
4347         weak symbols, mark this one_only.
4348         * decl2.c (import_export_vtable): Don't defer handling of vtables
4349         if MULTIPLE_SYMBOL_SPACES.
4350
4351 Tue Nov 11 12:02:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
4352
4353         * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
4354
4355 Tue Nov 11 02:53:44 1997  Jason Merrill  <jason@lasher.cygnus.com>
4356
4357         * except.c (do_pop_exception): Return a value.
4358
4359 Mon Nov 10 20:25:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
4360
4361         * call.c (build_new_method_call): Handle getting a
4362         TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
4363         if we got template parms.
4364         * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
4365         not just the args.
4366         * decl2.c (build_expr_from_tree): Tweak last change.
4367         * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
4368         (maybe_fold_nontype_arg): Split out from tsubst_copy.
4369         * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
4370
4371 Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
4372
4373         * pt.c (tsubst_copy): Handle explicit template arguments in 
4374         function calls.
4375         * typeck.c (build_x_function_call): Likewise.
4376         * decl2.c (build_expr_from_tree): Lookup function name if it 
4377         hasn't been done.
4378
4379         * pt.c (tsubst): Instantiate template functions properly when 
4380         template parameter does not appear in function arguments and return 
4381         type.
4382         (comp_template_args): Handle member templates required by tsubst.
4383
4384 Mon Nov 10 20:08:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
4385
4386         * decl.c (grokdeclarator): Tweak conditions for pedwarn in
4387         previous change.
4388
4389 Mon Nov 10 20:08:29 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4390
4391         * pt.c (coerce_template_parms): Tweak error message.
4392
4393         * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
4394         return type defaults to `int', even if there are storage-class
4395         specifiers.
4396
4397 Mon Nov 10 03:04:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
4398
4399         Complete nested exception support.
4400         * except.c (do_pop_exception): Split out...
4401         (push_eh_cleanup): From here.  Handle the EH region by hand.
4402         (expand_start_catch_block): Add a new level for the catch parm.
4403         Move the rethrow region outside the two cleanup regions.
4404         Protect the initializer for the catch parm with terminate.
4405         (expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
4406         * exception.cc (__cp_pop_exception): Now takes two parms.  Handle
4407         popping off the middle of the stack.
4408         * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR, 
4409         WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
4410         (build_cplus_new): Only wrap CALL_EXPRs.
4411         * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around 
4412         the constructor call.
4413
4414 Sun Nov  9 18:00:26 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4415
4416         * Make-lang.in (c++.distdir): Make inc subdirectory.
4417
4418 Fri Nov  7 11:57:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
4419
4420         * decl2.c (finish_file): Put back some code.
4421
4422 Thu Nov  6 11:28:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
4423
4424         * decl2.c (finish_file): Remove redundant code.
4425         * method.c (emit_thunk): Don't let the backend defer generic thunks.
4426
4427 Wed Nov  5 23:52:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
4428
4429         * except.c (call_eh_info): Split out...
4430         (push_eh_info): From here.
4431         (expand_builtin_throw): Use it.
4432         (expand_start_catch_block): Move region start back.
4433
4434 Tue Nov  4 13:45:10 1997  Doug Evans  <devans@canuck.cygnus.com>
4435
4436         * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
4437         (real_yylex): Record wide strings using target endianness, not host.
4438
4439 1997-11-03  Brendan Kehoe  <brendan@lisa.cygnus.com>
4440
4441         * repo.c (rindex): Add decl unconditionally.
4442         (get_base_filename, open_repo_file): Don't cast rindex.
4443         * xref.c (rindex): Add decl unconditionally.
4444         (index): Remove unused decl.
4445         (open_xref_file): Don't cast rindex.
4446
4447 Sun Nov  2 15:04:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
4448
4449         * class.c (build_vbase_path): Propagate the result type properly.
4450
4451 1997-11-01  Brendan Kehoe  <brendan@lisa.cygnus.com>
4452
4453         * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
4454         remaining use of saved_throw_type with a call to get_eh_type.
4455
4456 1997-10-31  Brendan Kehoe  <brendan@lisa.cygnus.com>
4457
4458         * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
4459         (file_name_nondirectory): New function, doing the same as the macro.
4460         (set_typedecl_interface_info): Use it instead of the macro.
4461         (check_newline): Likewise.
4462         (handle_cp_pragma): Likewise.
4463
4464         * repo.c (get_base_filename): Cast result of rindex to char*.
4465         (open_repo_file): Likewise.
4466         * xref.c (open_xref_file): Likewise.
4467         * error.c (dump_char): Make its arg int, not char.
4468
4469         * except.c (push_eh_info): Pass the number of fields - 1 down, not
4470         the exact number of fields.
4471
4472 Fri Oct 31 01:47:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
4473
4474         Support for nested exceptions.
4475         * tinfo2.cc (__is_pointer): New fn.
4476         * exception.cc (struct cp_eh_info): Define.
4477         (__cp_exception_info, __uncatch_exception): New fns.
4478         (__cp_push_exception, __cp_pop_exception): New fns.
4479         * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
4480         Lose empty_fndecl.
4481         (init_exception_processing): Likewise.  __eh_pc is now external.
4482         (push_eh_info): New fn.
4483         (get_eh_{info,value,type,caught}): New fns.
4484         (push_eh_cleanup): Just call __cp_pop_exception.
4485         (expand_start_catch_block): Use push_eh_info.  Start the eh region
4486         sooner.
4487         (expand_end_eh_spec): Use push_eh_info.
4488         (expand_throw): Call __cp_push_exception to set up the exception info.
4489         Just pass the destructor or 0 as the cleanup.  Call __uncatch_exception
4490         when we rethrow.
4491         (expand_builtin_throw): Don't refer to empty_fndecl.
4492
4493 Thu Oct 23 02:01:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
4494
4495         * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
4496
4497 1997-10-22  Brendan Kehoe  <brendan@cygnus.com>
4498
4499         * method.c (build_template_parm_names, build_decl_overload_real):
4500         Add static to definitions.
4501         * pt.c (add_to_template_args, note_template_header,
4502         processing_explicit_specialization, type_unification_real): Likewise.
4503         ({determine,check}_explicit_specialization): Use a single string for
4504         error messages.
4505
4506 Mon Oct 20 12:06:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
4507
4508         * except.c (expand_exception_blocks): Call do_pending_stack_adust.
4509         (expand_end_catch_block): Likewise.
4510         (expand_end_eh_spec): Likewise.
4511
4512 Mon Oct 20 11:44:20 1997  Mark Mitchell  <mmitchell@usa.net>
4513
4514         * decl.c (duplicate_decls): Handle template specializations
4515         correctly. 
4516         * error.c (dump_function_name): Fix printing of specializations of
4517         member functions that are not member templates.
4518         * cp-tree.h (processing_specialization): Make global.
4519         * pt.c (processing_specialization): Likewise.
4520         * lex.c (cons_up_default_function): Save and restore
4521         processing_specialization to avoid confusion.
4522         
4523 Mon Oct 20 10:52:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
4524
4525         * decl.c (init_decl_processing): Give null_node unknown* type.
4526         * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
4527         (common_type): Likewise.
4528         * error.c (args_as_string): Recognize null_node.
4529
4530 Sun Oct 19 09:13:01 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4531
4532         * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
4533         (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
4534
4535         * decl.c (init_decl_processing): Call using_eh_for_cleanups.
4536
4537         * Make-lang.in (g++): Include prefix.o.
4538
4539 Thu Oct 16 15:31:09 1997  Judy Goldberg <judygold@sanwafp.com>
4540
4541         * pt.c (determine_explicit_specialization): Initialize "dummy"
4542         to keep Purify quiet.
4543
4544 Thu Oct 16 00:14:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
4545
4546         * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
4547         (build_overload_int): Not here.
4548
4549 Wed Oct 15 00:35:28 1997  Mike Stump  <mrs@wrs.com>
4550
4551         * class.c (build_type_pathname): Remove.
4552         (prepare_fresh_vtable): Fix problem with complex MI vtable names.
4553
4554 1997-10-14  Brendan Kehoe  <brendan@lisa.cygnus.com>
4555
4556         * parse.y (unary_expr): Give a pedwarn if someone tries to use the
4557         &&label GNU extension.
4558
4559 Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>
4560
4561         * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
4562         so as to avoid incorrect manglings.
4563         * method.c (build_decl_overload_real): Don't mangle return types
4564         for constructors.
4565         
4566 Tue Oct 14 11:46:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
4567
4568         * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
4569         scratch_tree_cons): Define as macros for now.
4570         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c, 
4571         lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
4572         typeck2.c: Use them and the expression_obstack variants.
4573
4574 Mon Oct 13 17:41:26 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4575
4576         * decl.c (store_return_init): Allow classes with explicit ctors to
4577         be used with the named return values extension.
4578
4579 Fri Oct 10 12:21:11 1997  Jason Merrill  <jason@yorick.cygnus.com>
4580
4581         * pt.c (instantiate_decl): Fix previous change.
4582
4583 Thu Oct  9 12:08:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
4584
4585         * pt.c (tsubst): Fix thinko.
4586         (instantiate_decl): Really use the original template.
4587
4588         * call.c (build_new_method_call): Use simple constructor_name for
4589         error messages.
4590
4591 Wed Oct  8 22:44:42 1997  Jeffrey A Law  (law@cygnus.com)
4592
4593         * method.c (build_underscore_int): Don't use ANSI specific
4594         features.
4595
4596 Wed Oct  8 00:18:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
4597
4598         * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
4599         for our key method; it might have been inlined by -O3.
4600
4601 Tue Oct  7 23:00:12 1997  Mark Mitchell  <mmitchell@usa.net>
4602
4603         * decl.c (make_typename_type): Do not try to call lookup_field for
4604         non-aggregate types.
4605
4606 Tue Oct  7 22:52:10 1997  Jason Merrill  <jason@yorick.cygnus.com>
4607
4608         * typeck.c (build_reinterpret_cast): Tweak.
4609
4610 Tue Oct  7 22:45:31 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
4611
4612         * typeck.c (build_reinterpret_cast): converting a void pointer
4613         to function pointer with a reinterpret_cast produces a warning
4614         if -pedantic is issued
4615
4616 Tue Oct  7 22:43:43 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4617
4618         * typeck.c (c_expand_return): Don't warn about returning a
4619         reference-type variable as a reference.
4620
4621 Tue Oct  7 21:11:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
4622
4623         * method.c (build_static_name): Fix typo.
4624
4625 1997-10-07  Brendan Kehoe  <brendan@lisa.cygnus.com>
4626
4627         * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
4628         OLDDECL before we try to do DECL_USE_TEMPLATE.
4629
4630 Tue Oct  7 00:48:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
4631
4632         * decl.c (duplicate_decls): Don't warn about template instances.
4633
4634         * typeck.c (mark_addressable): Lose ancient code that unsets
4635         DECL_EXTERNAL.
4636
4637         * pt.c (do_decl_instantiation): Lose support for instantiating
4638         non-templates.
4639
4640         * call.c (build_new_function_call): Fix handling of null explicit
4641         template args.
4642         (build_new_method_call): Likewise.
4643
4644 Mon Oct  6 23:44:34 1997  Mark Mitchell  <mmitchell@usa.net>
4645
4646         * method.c (build_underscore_int): Fix typo.
4647
4648 1997-10-06  Brendan Kehoe  <brendan@lisa.cygnus.com>
4649
4650         * tree.c (print_lang_statistics): #if 0 call to
4651         print_inline_obstack_statistics until its definition is checked in.
4652
4653 Mon Oct  6 09:27:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
4654
4655         * decl2.c (finish_file): Move dump_tree_statistics to end.
4656
4657         * pt.c (instantiate_decl): Look for the original template.
4658         (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
4659         of member templates.
4660
4661 Wed Oct  1 08:41:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
4662
4663         * Makefile.in (g++FAQ.*): New rules.
4664         (CONFLICTS): Update.
4665         * g++FAQ.texi: Moved from libg++.
4666
4667         * parse.y (PFUNCNAME): Only specify the type once.
4668
4669 1997-10-01  Brendan Kehoe  <brendan@lasher.cygnus.com>
4670
4671         * lex.c (real_yylex): Clean up the code to fully behave the way
4672         the c-lex.c parser does for complex and real numbers.
4673
4674 Tue Sep 30 08:51:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
4675
4676         * method.c (build_decl_overload_real): Reformat.
4677
4678 Tue Sep 30 00:18:26 1997  Jason Merrill  <jason@yorick.cygnus.com>
4679
4680         * method.c (synthesize_method): If at_eof, determine our linkage.
4681
4682 1997-09-29  Paul Eggert  <eggert@twinsun.com>
4683
4684         * lex.c (real_yylex): Treat `$' just like `_', except issue a
4685         diagnostic if !dollars_in_ident or if pedantic.
4686
4687         * lang-specs.h (@c++): -ansi no longer implies -$.
4688
4689         * decl2.c (lang_decode_option):
4690         -traditional and -ansi now do not mess with
4691         dollars_in_ident.
4692
4693 Mon Sep 29 19:57:51 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
4694
4695         * Makefile.in (parse.o, decl.o): Also depend on
4696         $(srcdir)/../except.h $(srcdir)/../output.h.
4697         (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
4698         $(srcdir)/../except.h $(srcdir)/../output.h.
4699         (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
4700         ../insn-codes.h.
4701
4702         * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
4703
4704         * expr.c (cplus_expand_expr): Make it static. 
4705
4706         * decl2.c, init.c, typeck.c: Include "expr.h".
4707         (expand_expr): Use proper values when calling the function.
4708
4709 Mon Sep 29 11:05:54 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
4710
4711         * lang-options.h: new -Wold-style-cast flag.
4712         * cp-tree.h (warn_old_style_cast): new variable.
4713         * decl2.c (warn_old_style_cast): ditto.
4714         (lang_decode_option): support -Wold-style-cast.
4715         (reparse_absdcl_as_casts): produce old-style-cast warning.
4716
4717 Mon Sep 29 09:20:53 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4718
4719         * decl.c (cp_finish_decl): Allow expand_aggr_init to set
4720         TREE_USED, reset value based on already_used.
4721
4722         * init.c (expand_member_init): Revert change.
4723         
4724 Mon Sep 29 08:57:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
4725
4726         * cp-tree.h, decl.c, decl2.c, pt.c:
4727         Lose DECL_C_STATIC and DECL_PUBLIC.  Don't pretend statics are public.
4728
4729         * decl2.c (lang_decode_option): Add missing ;.
4730
4731 Sat Sep 27 16:22:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
4732
4733         * friend.c (do_friend): Disable injection for all template-derived
4734         decls.
4735         * decl2.c (lang_decode_option): Handle -fguiding-decls.
4736         * parse.y (notype_template_declarator): New nonterminal.
4737         (direct_notype_declarator): Use it.
4738         (complex_direct_notype_declarator): Likewise.
4739         (object_template_id): Accept any kind of identifier after TEMPLATE.
4740         (notype_qualified_id): Don't add template declarators here.
4741
4742 Sat Sep 27 16:21:58 1997  Mark Mitchell  <mmitchell@usa.net>
4743
4744         * call.c (add_template_candidate): Add explicit_targs parameter.
4745         (build_scoped_method_call): Use it.
4746         (build_overload_call_real): Likewise.
4747         (build_user_type_conversion_1): Likewise.
4748         (build_new_function_call): Likewise.
4749         (build_object_call): Likewise.
4750         (build_new_op): Likewise.
4751         (build_new_method_call): Likewise.
4752         (build_new_function_call): Handle TEMPLATE_ID_EXPR.
4753         (build_new_method_call): Likewise.
4754
4755         * class.c (finish_struct_methods): Add specialization pass to
4756         determine which methods were specializing which other methods.
4757         (instantiate_type): Handle TEMPLATE_ID_EXPR.
4758
4759         * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
4760
4761         * cp-tree.h (name_mangling_version): New variable.
4762         (flag_guiding_decls): Likewise.
4763         (build_template_decl_overload): New function.
4764         (begin_specialization): Likewise.
4765         (reset_specialization): Likewise.
4766         (end_specialization): Likewise.
4767         (determine_explicit_specialization): Likewise.
4768         (check_explicit_specialization): Likewise.
4769         (lookup_template_function): Likewise.
4770         (fn_type_unification): Add explicit_targs parameter.
4771         (type_unification): Likewise.
4772
4773         * decl.c (duplicate_decls): Add smarts for explicit
4774         specializations.
4775         (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
4776         specializations.
4777         (grokfndecl): Call check_explicit_specialization.
4778
4779         * decl2.c (lang_decode_option): Handle -fname-mangling-version.
4780         (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
4781         (check_classfn): Handle specializations.
4782
4783         * error.c (dump_function_name): Print specialization arguments.
4784
4785         * friend.c (do_friend): Don't call pushdecl for template 
4786         instantiations. 
4787
4788         * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
4789
4790         * lang-options.h: Add -fname-mangling-version, -fguiding-decls, 
4791         and -fno-guiding-decls.
4792
4793         * lex.c (identifier_type): Return PFUNCNAME for template function
4794         names.
4795
4796         * method.c (build_decl_overload_real): New function.
4797         (build_template_parm_names): New function.
4798         (build_overload_identifier): Use it.
4799         (build_underscore_int): New function.
4800         (build_overload_int): Use it.  Add levels for template
4801         parameters.
4802         (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
4803         (build_overload_nested_names): Handle template type parameters.
4804         (build_template_decl_overload): New function.
4805
4806         * parse.y (YYSTYPE): New ntype member.
4807         (nested_name_specifier): Use it.
4808         (nested_name_specifier_1): Likewise.
4809         (PFUNCNAME): New token.
4810         (template_id, object_template_id): New non-terminals.
4811         (template_parm_list): Note specializations.
4812         (template_def): Likewise.
4813         (structsp): Likewise.
4814         (fn.def2): Handle member template specializations.
4815         (component_decl_1): Likewise.
4816         (direct_notype_declarator): Handle template-ids.
4817         (component_decl_1): Likewise.
4818         (direct_notype_declarator): Handle template-ids.
4819         (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
4820
4821         * pt.c (processing_specializations): New variable.
4822         (template_header_count): Likewise.
4823         (type_unification_real): New function.
4824         (processing_explicit_specialization): Likewise.
4825         (note_template_header): Likewise.
4826         (is_member_template): Handle specializations.
4827         (end_template_decl): Call reset_specialization.
4828         (push_template_decl): Handle member template specializations.
4829         (tsubst): Likewise.
4830         (tsubst_copy): Handle TEMPLATE_ID_EXPR.
4831         (instantiate_template): Handle specializations.
4832         (instantiate_decl): Likewise.
4833         (fn_type_unification): Handle explicit_targs.
4834         (type_unification): Likewise.  Allow incomplete unification
4835         without an error message, if allow_incomplete.
4836         (get_bindings): Use new calling sequence for fn_type_unification.
4837
4838         * spew.c (yylex): Handle PFUNCNAME.
4839
4840         * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
4841         (really_overloaded_fn): Likewise.
4842         (get_first_fn): Handle function templates.
4843
4844         * typeck.c (build_x_function_call): Use really_overloaded_fn.
4845         Handle TEMPLATE_ID_EXPR.
4846         (build_x_unary_op): Likewise.
4847         (build_unary_op): Likewise.
4848         (mark_addressable): Templates whose address is taken are marked  
4849         as used. 
4850
4851 1997-09-25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
4852
4853         * decl.c (init_decl_processing): Declare __builtin_constant_p as
4854         accepting any kind of type, not only int.
4855
4856 Fri Sep 26 00:22:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
4857
4858         * search.c (get_matching_virtual): Notice virtual bases when sorrying
4859         about covariant returns.
4860
4861         * parse.y (member_init): Also imply typename here.  Remove ancient
4862         extension for initializing base members.
4863
4864 Thu Sep 25 11:11:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
4865
4866         Handle multi-level typenames and implicit typename in base list.
4867         * parse.y (typename_sub{,[0-2]}): New rules.
4868         (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
4869         (nonnested_type): New rule.
4870         (complete_type_name): Use it.
4871         (base_class.1): Use typename_sub and nonnested_type.
4872         (nested_name_specifier): Don't elide std:: here.
4873         * decl.c (make_typename_type): Handle getting a type for NAME.
4874         (lookup_name_real): Turn std:: into :: here.
4875
4876         Rvalue conversions were removed in London.
4877         * call.c (is_subseq): Don't consider lvalue transformations.
4878         (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
4879         (joust): Reenable ?: kludge.
4880
4881 1997-09-22  Brendan Kehoe  <brendan@lisa.cygnus.com>
4882
4883         * decl.c (start_function): Up warning of no return type to be a
4884         pedwarn.
4885
4886 Mon Sep 22 14:15:34 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4887
4888         * init.c (expand_member_init): Don't set TREE_USED.
4889         * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
4890         set,don't clear TREE_USED wholesale.
4891
4892 Sat Sep 20 15:31:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
4893
4894         * call.c (build_over_call): Do require_complete_type before
4895         build_cplus_new.
4896
4897 Thu Sep 18 16:47:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
4898
4899         * search.c (lookup_field): Call complete_type in all cases.
4900
4901         * decl.c (finish_function): Just warn about flowing off the end.
4902
4903 Wed Sep 17 10:31:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
4904
4905         * decl.c (grokparms): Don't bash a permanent list node if we're
4906         in a function.
4907
4908 1997-09-17  Brendan Kehoe  <brendan@lisa.cygnus.com>
4909
4910         * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
4911
4912 Tue Sep 16 14:06:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
4913
4914         * call.c (build_new_op): Give better error for syntactically
4915         correct, but semantically invalid, use of undeclared template.
4916
4917         * call.c (compare_qual): Handle pmfs.
4918
4919         * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
4920         after the exception spec.
4921
4922 Mon Sep 15 11:52:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
4923
4924         * call.c (null_ptr_cst_p): Integer type, not integral type.
4925
4926         * call.c (joust): Disable warnings until they can be moved to the
4927         right place.
4928
4929 Fri Sep 12 16:11:13 1997  Per Bothner  <bothner@cygnus.com>
4930
4931         * Makefile.in, config-lang.in:  Convert to autoconf.
4932
4933 Thu Sep 11 17:14:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
4934
4935         * decl.c (lookup_name_real): Add implicit 'typename' to types from
4936         base classes.
4937
4938         * pt.c (most_specialized_class): Fix typo.
4939         (tsubst): Move constant folding to TREE_VEC case.
4940
4941 Thu Sep 11 10:08:45 1997  Mark Mitchell  <mmitchell@usa.net>
4942
4943         * pt.c (do_poplevel): Don't warn about unused local variables
4944         while processing_template_decl since we don't always know whether
4945         or not they will need constructing/destructing.
4946
4947         * pt.c (uses_template_parms): Check the values of an enumeration
4948         type to make sure they don't depend on template parms.
4949
4950         * decl.c (make_typename_type): Don't lookup the field if the
4951         context uses template parms, even if we're not
4952         processing_template_decl at the moment.
4953
4954         * pt.c (coerce_template_parms): Avoid looking at the
4955         TYPE_LANG_DECL portion of a typename type, since there won't be
4956         one. 
4957         (tsubst): Do constant folding as necessary to make sure that
4958         arguments passed to lookup_template_class really are constants. 
4959
4960 Wed Sep 10 11:21:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
4961
4962         * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
4963         * decl2.c (finish_file): Only register exception tables if we
4964         need to.
4965
4966         * decl.c (init_decl_processing): Add __builtin_[fs]p.
4967
4968 Tue Sep  9 19:49:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
4969
4970         * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
4971
4972 Tue Sep  9 17:57:25 1997  Mark Mitchell  <mmitchell@usa.net>
4973
4974         * error.c (dump_decl): Avoid crashing when presented with a
4975         uninitialized constant, as can occur with a template parameter.
4976         (dump_expr): Make sure that there are enough levels of
4977         current_template_parms before we start diving through them.
4978
4979 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
4980
4981         * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
4982         c-typeck.c.
4983
4984 Tue Sep  9 09:36:39 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4985
4986         * except.c (expand_throw): Call build_delete for all 
4987         exception types, not just objects with destructors.
4988
4989 Mon Sep  8 02:33:20 1997  Jody Goldberg  <jodyg@idt.net>
4990
4991         * decl.c (current_local_enum): Remove static.
4992         * pt.c (tsubst_enum): Save and restore value of current_local_enum
4993         in case template is expanded in enum decl.
4994         (instantiate_class_template) : Use new tsubst_enum signature.
4995         (tsubst_expr): Likewise.
4996
4997 Mon Sep  8 01:21:43 1997  Mark Mitchell  <mmitchell@usa.net>
4998
4999         * pt.c (begin_member_template_processing): Take a function as
5000         argument, not a set of template arguments.  Use the template
5001         parameters, rather than the arguments.  Handle non-type parameters
5002         correctly.  Push a binding level for the parameters so that multiple
5003         member templates using the same parameter names can be declared.
5004         (end_member_template_processing): Pop the binding level.
5005         (push_template_decl): Mark member templates as static when
5006         appropriate. 
5007
5008         * lex.c (do_pending_inlines): Pass the function, not its template
5009         arguments, to begin_member_template_processing.
5010         (process_next_inline): Likewise.
5011         (do_pending_defargs): Likewise.
5012
5013         * error.c (dump_expr): Obtain the correct declaration for a
5014         TEMPLATE_CONST_PARM. 
5015
5016         * call.c (add_template_conv_candidate): New function.
5017         (build_object_call): Handle member templates, as done in the other
5018         build_ functions.
5019         
5020 Sat Sep  6 10:20:27 1997  Mark Mitchell  <mmitchell@usa.net>
5021
5022         * decl.c (replace_defag): Undo previous change.
5023         * lex.c (do_pending_defargs): Deal with member templates.
5024         
5025         * pt.c (is_member_template): Avoid crashing when passed a
5026         non-function argument.
5027
5028 Fri Sep  5 17:27:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
5029
5030         * class.c (grow_method): Remove check for redeclaration.
5031
5032 Fri Sep  5 01:37:17 1997  Mark Mitchell  <mmitchell@usa.net>
5033
5034         * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
5035         (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
5036         (PRIMARY_TEMPLATE_P): Use it.
5037         * call.c (build_overload_call_real): Use it.
5038         * class.c (instantiate_type): Likewise.
5039         * decl.c (decls_match): Likewise.
5040         * method.c (build_overload_identifier): Likewise.
5041         * pt.c (push_template_decl): Likewise.
5042         (classtype_mangled_name): Likewise.
5043         (lookup_template_class): Likewise.
5044         
5045         * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
5046         DECL_NTPARMS to conform to usage elsewhere.
5047         * call.c (add_template_candidate): Likewise.
5048         * class.c (instantiate_type): Likewise.
5049         * pt.c (instantiate_template): Likewise.
5050         (get_bindings): Likewise.
5051         
5052         * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
5053         is_member_template.
5054
5055         * pt.c (unify): Undo changes to allow multiple levels of template
5056         parameters. 
5057         (type_unification): Likewise.
5058         (fn_type_unification): Likewise.
5059         (get_class_bindings): Likewise.
5060         * cp-tree.h (Likewise).
5061         
5062         * decl.c (replace_defarg): Check that the type of the default
5063         parameter does not invlove a template type before complaining
5064         about the initialization.
5065
5066         * error.c (dump_expr): Deal with template constant parameters in
5067         member templates correctly.
5068
5069         * pt.c (is_member_template): Deal with class specializations
5070         correctly. 
5071         (tsubst): Handle "partial instantiation" of member templates
5072         correctly. 
5073
5074 Wed Sep  3 12:30:24 1997  Mark Mitchell  <mmitchell@usa.net>
5075
5076         * pt.c (type_unification): Change calling squence to allow for
5077         multiple levels of template parameters.
5078         (tsubst_expr): Likewise.
5079         (tsubst): Likewise.
5080         (tsubst_copy): Likewise.
5081         (instantiate_template): Likewise.
5082         (unify): Likewise.
5083         * call.c (build_overload_call_real): Use it.
5084         (add_builtin_candidate): Use it.
5085         (build_new_method_call): Use it.
5086         * class.c (instantiate_type): Use it.
5087         * decl.c (grokdeclarator): Use it.
5088         * decl2.c (finish_file): Use it.
5089         * method.c (build_overload_identifier): Use it.
5090         
5091         * call.c (add_template_candidate):  Add additional parameter for
5092         the function return type.  Call fn_type_unification istead of
5093         type_unification.
5094         (build_user_type_conversion_1): Handle member templates.
5095         (build_new_function_call): Likewise.
5096         (build_new_op): Likewise.
5097         (build_new_method_call): Likewise.
5098         
5099         * class.c (grow_method): Don't give an error message indicating
5100         that two member templates with the same name are ambiguous.
5101         (finish_struct): Treat member template functions just like member
5102         functions.
5103         
5104         * cp-tree.h (check_member_template): Add declaration.
5105         (begin_member_template_processing): Likewise.
5106         (end_member_template_processing): Likewise.
5107         (fn_type_unification): Likewise.
5108         (is_member_template): Likewise.
5109         (tsubst): Change prototype.
5110         (tsubst_expr): Likewise.
5111         (tsubst_copy): Likewise.
5112         (instantiate_template): Likewise.
5113         (get_bindings): Likewise.
5114
5115         * decl.c (decls_match): Handle multiple levels of template
5116         parameters. 
5117         (pushdecl): Handle template type params just like other type
5118         declarations. 
5119         (push_class_level_binding): Return immediately if the
5120         class_binding_level is NULL.
5121         (grokfndecl): If check_classfn() returns a member_template, use
5122         the result of the template, not the template itself.
5123         
5124         * decl2.c (check_member_template): New function.  Check to see
5125         that the entity declared to be a member template can be one.
5126         (check_classfn): Allow redeclaration of member template functions
5127         with different types; the new functions can be specializations or
5128         explicit instantiations.
5129         
5130         * error.c (dump_decl): Handle multiple levels of template
5131         parameters. 
5132         (dump_function_decl): Update to handle function templates.
5133
5134         * lex.c (do_pending_inlines): Set up template parameter context
5135         for member templates.
5136         (process_next_inline): Likewise.
5137
5138         * method. (build_overload_identifier): Adjust for multiple levels
5139         of template parameters.
5140         
5141         * parse.y (fn.def2): Add member templates.
5142         (component_decl_1): Likewise.
5143
5144         * pt.c (begin_member_template_processing): New function.
5145         (end_member_template_processing): Likewise.
5146         (is_member_template): Likewise.
5147         (fn_type_unification): Likewise.
5148         (current_template_parms): Return a vector of all the template
5149         parms, not just the innermost level of parms.
5150         (push_template_decl): Deal with the possibility of member
5151         templates. 
5152         (lookup_template_class): Likewise.
5153         (uses_template_parms): Likewise.
5154         (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
5155         TEMPLATE_CONST_PARM to deal with multiple levels of template
5156         arguments.   Add processing of TEMPLATE_DECL to produce new
5157         TEMPLATE_DECLs from old ones.
5158         (do_decl_instantiation): Handle member templates.
5159
5160         * search.c (lookup_fnfields_1): Handle member template conversion
5161         operators. 
5162
5163         * tree.c (cp_tree_equal): Check the levels, as well as the
5164         indices, of TEMPLATE_CONST_PARMs.
5165
5166         * typeck.c (comptypes): Check the levels, as well as the indices,
5167         fo TEMPLATE_TYPE_PARMs.
5168         (build_x_function_call): Treat member templates like member
5169         functions. 
5170         
5171 Wed Sep  3 11:09:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
5172
5173         * typeck.c (c_expand_return): Always convert_for_initialization
5174         before checking for returning a pointer to local.
5175
5176         * pt.c (type_unification): If strict and the function parm doesn't
5177         use template parms, just compare types.
5178
5179 Wed Sep  3 10:35:49 1997  Klaus Espenlaub  <kespenla@student.informatik.uni-ulm.de>
5180
5181         * method.c (build_overloaded_value): Replace direct call
5182         to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
5183
5184 Wed Sep  3 00:02:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
5185
5186         * typeck.c (convert_arguments): Don't arbitrarily choose the first
5187         of a set of overloaded functions.
5188
5189 Tue Sep  2 12:09:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
5190
5191         * lex.c (real_yylex): Don't elide __FUNCTION__.
5192
5193         * method.c (build_overload_value): Add in_template parm.
5194         (build_overload_int): Likewise.
5195         (build_overload_identifier): Pass it.
5196
5197         * decl.c (duplicate_decls): Don't bash a previous template
5198         definition with a redeclaration.
5199
5200         * pt.c (unify): float doesn't match double.
5201
5202         * pt.c (do_type_instantiation): Handle getting a _TYPE or a
5203         TYPE_DECL.  Handle getting non-template types.
5204         * parse.y (explicit_instantiation): Use typespec instead of
5205         aggr template_type.
5206
5207 Tue Sep  2 10:27:08 1997  Richard Henderson  <rth@cygnus.com>
5208
5209         * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
5210
5211 Mon Sep  1 13:19:04 1997  Eugene Mamchits <eugin@ips.ras.ru>
5212
5213         * call.c (add_builtin_candidate): Add missing TREE_TYPE.
5214         (compare_ics): Likewise.
5215
5216 Mon Sep  1 13:19:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
5217
5218         * call.c (joust): Warn about choosing one conversion op over
5219         another because of 'this' argument when the other return type is
5220         better.
5221         (source_type): New fn.
5222
5223         * call.c (build_new_op): Strip leading REF_BIND from first operand
5224         to builtin operator.
5225
5226         * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
5227         use its RTL.
5228
5229 Thu Aug 28 09:45:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
5230
5231         * call.c (null_ptr_cst_p): Remove support for (void*)0.
5232
5233 Wed Aug 27 02:03:34 1997  Jeffrey A Law  (law@cygnus.com)
5234
5235         * typeck.c (expand_target_expr): Make definition match declaration.
5236
5237         * class.c (get_basefndecls): Make definition match declaration.
5238
5239 Mon Aug 25 14:30:02 1997  Jason Merrill  <jason@yorick.cygnus.com>
5240
5241         * input.c (sub_getch): Eventually give up and release the input file.
5242
5243         * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
5244         right place.
5245
5246         * call.c (joust): Tweak message.
5247
5248 Sat Aug 23 18:02:59 1997  Mark Mitchell  <mmitchell@usa.net>
5249
5250         * error.c (type_as_string): Put const/volatile on template type
5251         parameters where appropriate.
5252
5253 Sat Aug 23 17:47:22 1997  Jeffrey A Law  (law@cygnus.com)
5254
5255         * call.c (strictly_better): Make arguments unsigned ints.
5256
5257 Thu Aug 21 18:48:44 1997  Jason Merrill  <jason@yorick.cygnus.com>
5258
5259         * lex.c (real_yylex): Refer to __complex instead of complex.
5260
5261 Thu Aug 21 22:25:46 1997  J"orn Rennecke <amylaar@cygnus.co.uk>
5262
5263         * lex.c (real_yylex): Don't use getc directly.
5264
5265 Wed Aug 20 17:25:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
5266
5267         * call.c (is_subseq): Don't try to be clever.
5268
5269 Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
5270
5271         * parse.y, pt.c: Include "except.h".
5272         * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
5273         error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
5274         lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
5275         sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
5276         prototyping.
5277
5278 Wed Aug 20 01:34:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
5279
5280         * decl2.c (mark_vtable_entries): Instead of replacing pure
5281         virtuals with a reference to __pure_virtual, copy the decl and
5282         change the RTL.
5283
5284 Tue Aug 19 02:26:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
5285
5286         * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
5287
5288         * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
5289
5290         * pt.c (instantiate_class_template): Call repo_template_used
5291         before finish_prevtable_vardecl.
5292
5293         * call.c (is_subseq): New fn.
5294         (compare_ics): Use it.
5295
5296         * repo.c (finish_repo): Don't crash on no args.
5297
5298         * parse.y (named_complex_class_head_sans_basetype): Handle
5299         explicit global scope.
5300         * decl2.c (handle_class_head): New fn.
5301
5302         * pt.c (unify): Add CONST_DECL case.
5303
5304 Thu Aug 14 10:05:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5305
5306         * rtti.c (permanent_obstack): Fix decl to not be a pointer.
5307
5308         * cp-tree.h (report_type_mismatch): Add prototype.
5309         * call.c (build_overload_call_real): Remove erroneous fourth
5310         argument to report_type_mismatch.
5311         (build_user_type_conversion_1): Remove erroneous second arg to
5312         tourney.
5313         (build_new_function_call): Likewise.
5314         (build_object_call): Likewise.
5315         (build_new_op): Likewise.
5316         (build_new_method_call): Likewise.
5317
5318 Wed Aug 13 19:19:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
5319
5320         * error.c (dump_decl): Don't bother processing a function with no
5321         DECL_LANG_SPECIFIC.
5322
5323         * method.c (emit_thunk): Call init_function_start in the macro case.
5324
5325 Wed Aug 13 10:46:19 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
5326
5327         * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
5328         defined and used to set flag_vtable_thunks.
5329
5330 Tue Aug 12 20:13:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
5331
5332         * parse.y: Don't clear the inlines from their obstack until they've 
5333         all been processed.
5334
5335         * decl.c (duplicate_decls): Don't complain about exception
5336         specification mismatch if flag_exceptions is off.
5337
5338 Mon Aug 11 15:01:56  1997  Marc Lehmann <pcg@goof.com>
5339
5340         * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
5341
5342 Sun Aug 10 12:06:09 1997  Paul Eggert  <eggert@twinsun.com>
5343
5344         * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
5345         * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
5346         Include <stdio.h> before include files that formerly used STDIO_PROTO. 
5347
5348         * decl.c, g++spec.c, lex.c, method.c, repo.c:
5349         Include "config.h" first, as per autoconf manual.
5350
5351 Fri Aug  8 11:47:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
5352
5353         * decl.c (duplicate_decls): Tweak wording.
5354         * lex.c (do_pending_defargs): Don't die if we see a default arg
5355         that isn't a DEFAULT_ARG.
5356         * error.c (dump_expr): Handle DEFAULT_ARG.
5357
5358         * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
5359         * lang-options.h: Add -fhandle-exceptions.
5360
5361         * class.c (build_vtable): vtables are artificial.
5362         (prepare_fresh_vtable): Likewise.
5363
5364 Wed Aug  6 11:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
5365
5366         * cvt.c (ocp_convert): After converting to the target type, set
5367         LOOKUP_NO_CONVERSION.
5368
5369         * call.c (joust): Warn about potentially confusing promotion rules
5370         with -Wsign-promo.
5371         * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
5372
5373 Tue Aug  5 15:15:07 1997  Michael Meissner  <meissner@cygnus.com>
5374
5375         * exception.cc: Declare __terminate_func with noreturn attribute.
5376
5377 Fri Aug  1 03:18:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
5378
5379         * parse.y: Break out eat_saved_input, handle errors.
5380         (function_try_block): Use compstmt instead of compstmt_or_error.
5381
5382 Thu Jul 31 17:14:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
5383
5384         * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
5385
5386 Fri Jul  4 01:45:16 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
5387
5388         * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
5389         existence of cc1plus check whether $(LANGUAGES) contains C++.
5390
5391 Wed Jul 30 13:04:21 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
5392
5393         * method.c (do_build_copy_constructor): When copying an anonymous
5394         union member loop around to handle nested anonymous unions.  Use
5395         the offset of the member relative to the outer structure, not the
5396         union.
5397
5398 Tue Jul 29 21:17:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
5399
5400         * call.c (resolve_args): New fn.
5401         (build_new_function_call): Use it.
5402         (build_object_call): Likewise.
5403         (build_new_method_call): Likewise.
5404
5405 Mon Jul 28 16:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
5406
5407         * call.c (build_over_call): tsubst all default parms from templates.
5408
5409 Wed Jul 23 13:36:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
5410
5411         * decl.c (struct cp_function): Add static_labelno.
5412         (push_cp_function_context): Save it.
5413         (pop_cp_function_context): Restore it.
5414
5415 Tue Jul 22 14:43:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
5416
5417         * typeck.c (build_component_ref_1): Convert from reference.
5418
5419 Tue Jul 22 11:06:23 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5420
5421         * parse.y (current_declspecs, prefix_attributes): Initialize to
5422         NULL_TREE.
5423
5424         * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
5425         before we try to force it to be a TREE_LIST.
5426         (decl): Make sure $1.t is non-nil.
5427
5428 Sun Jul 20 11:53:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
5429
5430         * pt.c (uses_template_parms): Handle template first-parse codes.
5431
5432         * decl.c (cp_finish_decl): Only warn about user-defined statics.
5433
5434 Fri Jul 18 17:56:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
5435
5436         * pt.c (unify): Handle BOOLEAN_TYPE.
5437
5438         * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
5439         * pt.c (tsubst): Don't set it.
5440         * call.c (build_over_call): Use uses_template_parms.
5441
5442 Thu Jul 17 18:06:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
5443
5444         * method.c (build_overload_nested_name): Use static_labelno
5445         instead of var_labelno.
5446         (build_qualified_name): New fn.
5447         (build_overload_name): Split out from here.
5448         (build_static_name): Use build_qualified_name.
5449         * decl.c (cp_finish_decl): Statics in extern inline functions 
5450         have comdat linkage.
5451         (start_function): Initialize static_labelno.
5452
5453 Thu Jul 17 11:20:17 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
5454
5455         * class.c (finish_struct_methods): add check of warn_ctor_dtor_privacy
5456         before "all member functions in class [] are private"
5457
5458 Wed Jul 16 23:47:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
5459
5460         * lex.c (do_scoped_id): convert_from_reference.
5461         * init.c (build_offset_ref): Likewise.
5462
5463 Wed Jul 16 12:34:29 1997  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
5464
5465         * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
5466
5467 Mon Jul 14 03:23:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
5468
5469         * typeck.c (get_member_function_from_ptrfunc): Promote index
5470         before saving it.
5471
5472 Sun Jul 13 00:11:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
5473
5474         * tree.c (layout_basetypes): Move non-virtual destructor warning.
5475         * decl.c (xref_basetypes): Remove non-virtual destructor warning.
5476
5477 Sat Jul 12 12:47:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
5478
5479         * decl.c (grokdeclarator): Call add_defarg_fn for the function
5480         type, too.
5481         * lex.c (add_defarg_fn): Adjust.
5482         (do_pending_defargs): Adjust.  Don't skip the first parm.
5483
5484 Fri Jul 11 01:39:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
5485
5486         * decl.c (build_enumerator): Global enumerators are also readonly.
5487
5488         * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
5489         (build_dynamic_cast): Call it and convert_from_reference.
5490
5491         * lex.c (add_defarg_fn): New fn.
5492         (snarf_defarg): Don't add to defarg_types.
5493         (do_pending_defargs): Lose defarg_types.  All fns we process now
5494         have defargs.
5495         * decl.c (grokfndecl): Call add_defarg_fn.
5496
5497         * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
5498         * cp-tree.def: Add DEFAULT_ARG.
5499         * spew.c (yylex): Call snarf_defarg as appropriate.
5500         * parse.y: New tokens DEFARG and DEFARG_MARKER.
5501         (defarg_again, pending_defargs, defarg, defarg1): New rules.
5502         (structsp): Use pending_defargs.
5503         (parms, full_parm): Use defarg.
5504         * lex.c (init_lex): Initialize inline_text_firstobj.
5505         (do_pending_inlines): Never pass the obstack to feed_input.
5506         (process_next_inline): Call end_input instead of restore_pending_input.
5507         (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
5508         finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
5509         * input.c (end_input): New fn.
5510         (sub_getch): At the end of some fed input, just keep returning EOF
5511         until someone calls end_input.
5512         Remove 'obstack' field from struct input_source.
5513         * decl.c (grokparms): Handle DEFAULT_ARG.
5514         (replace_defarg): New fn.
5515         * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
5516
5517 Wed Jul  9 13:44:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
5518
5519         * call.c (implicit_conversion): If nothing else works, try binding
5520         an rvalue to a reference.
5521
5522 Wed Jul  9 13:04:38 1997  Geoffrey Noer  <noer@cygnus.com>
5523
5524         * decl.c (init_decl_processing): fix Jun 30 patch -- move
5525         ifndef for Cygwin32 to include SIGSEGV.
5526
5527 Thu Jul  3 01:44:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
5528
5529         * class.c (finish_struct_1): Only complain about pointers without
5530         copy stuff if there are any constructors.
5531
5532         * rtti.c (build_dynamic_cast): Call complete_type on the types.
5533
5534         * decl.c (grokfndecl): If the function we chose doesn't actually
5535         match, die.
5536
5537         * decl2.c (grokclassfn): Don't specify 'const int' for the
5538         artificial destructor parm.
5539
5540         * pt.c (type_unification): If we are called recursively, nothing 
5541         decays.
5542
5543 Mon Jun 30 17:53:21 1997  Geoffrey Noer  <noer@cygnus.com>
5544
5545         * decl.c (init_decl_processing): Stop trying to catch signals
5546         other than SIGABRT since the Cygwin32 library doesn't support
5547         them correctly yet.  This fixes a situation in which g++ causes
5548         a hang on SIGSEGVs and other such signals in our Win32-hosted
5549         tools.
5550
5551 Mon Jun 30 14:50:01 1997  Jason Merrill  <jason@yorick.cygnus.com>
5552
5553         * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
5554
5555 Fri Jun 27 15:18:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
5556
5557         * typeck2.c (store_init_value): Always return the value if our 
5558         type needs constructing.
5559
5560         * method.c (hack_identifier): Convert class statics from
5561         reference, too.
5562
5563 Thu Jun 26 11:44:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
5564
5565         * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
5566
5567 Thu Jun 19 16:49:28 1997  Mike Stump  <mrs@cygnus.com>
5568
5569         * typeck.c (c_expand_return): Make sure we clean up temporaries at
5570         the end of return x;
5571
5572 Thu Jun 19 12:28:43 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5573
5574         * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
5575
5576 Tue Jun 17 18:35:57 1997  Mike Stump  <mrs@cygnus.com>
5577
5578         * except.c (expand_builtin_throw): Add support
5579         -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
5580
5581 Mon Jun 16 01:24:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
5582
5583         * repo.c (extract_string): Null-terminate.
5584
5585         * cp-tree.h (TI_SPEC_INFO): New macro.
5586         (CLASSTYPE_TI_SPEC_INFO): New macro.
5587         * pt.c (push_template_decl): Correctly determine # of template parms 
5588         for partial specs.
5589
5590         * call.c (compare_ics): Really fix 'this' conversions.
5591
5592         * pt.c (do_decl_instantiation): Don't crash on explicit inst of
5593         non-template fn.
5594
5595         * pt.c (push_template_decl): Complain about mismatch in # of
5596         template parms between a class template and a member template.
5597
5598 Sun Jun 15 02:38:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
5599
5600         * method.c (synthesize_method): You can't call
5601         function_cannot_inline_p after finish_function.
5602         * decl.c (finish_function): Turn on flag_inline_functions and turn
5603         off DECL_INLINE before handing a synthesized method to the
5604         backend.
5605
5606 Thu Jun 12 17:35:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
5607
5608         * method.c (synthesize_method): Remove July 30 change to never set
5609         DECL_INLINE if at_eof.
5610
5611 Thu Jun 12 15:25:08 1997  Mike Stump  <mrs@cygnus.com>
5612
5613         * xref.c (GNU_xref_member): Ensure that the node has a
5614         decl_lang_specific part before checking DECL_FRIEND_P.
5615
5616 Thu Jun 12 12:36:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
5617
5618         * pt.c (instantiate_class_template): Diagnose non-class types used
5619         as bases.
5620
5621 Wed Jun 11 17:33:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
5622
5623         * typeck.c (build_conditional_expr): Use convert_for_initialization
5624         instead of convert_and_check.
5625
5626 Wed Jun 11 12:31:33 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5627
5628         * parse.y (typespec): Don't pedwarn for typeof.
5629
5630 Tue Jun 10 00:22:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
5631
5632         * repo.c (finish_repo): Only check changes if we would write a
5633         repo file.
5634
5635         * call.c (compare_ics): Fix handling of 'this' conversions.
5636
5637         * pt.c (do_decl_instantiation): Support static data too.  Rename
5638         from do_function_instantiation.
5639         * cp-tree.h: Adjust.
5640         * parse.y: Adjust.
5641
5642         * repo.c (extract_string): New fn.
5643         (get_base_filename): Use it.
5644         (init_repo): Compare old args with current args.
5645
5646 Mon Jun  9 14:25:30 1997  Mike Stump  <mrs@cygnus.com>
5647
5648         * Makefile.in, Make-lang.in: Protect C-ls with a comment
5649         character, idea from Paul Eggert <eggert@twinsun.com>.
5650
5651 Mon Jun  9 01:52:03 1997  Jason Merrill  <jason@yorick.cygnus.com>
5652
5653         * typeck.c (c_expand_return): Be more persistent in looking for
5654         returned temps.
5655
5656         * cvt.c (build_up_reference): Use NOP_EXPR for switching from
5657         pointer to reference.
5658
5659         * class.c (build_vbase_path): Don't do anything if PATH has no steps.
5660
5661 Sun Jun  8 03:07:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
5662
5663         * init.c (build_member_call, build_offset_ref):
5664         Use do_scoped_id instead of do_identifier.
5665
5666         * cvt.c (convert): Remove bogosity.
5667
5668 Sat Jun  7 20:50:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5669
5670         * cvt.c (build_up_reference): Do checks of ARGTYPE and
5671         TARGET_TYPE before trying to use get_binfo.
5672
5673 Fri Jun  6 17:36:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
5674
5675         * cvt.c (build_up_reference): Call get_binfo to get access control.
5676
5677         * decl2.c (import_export_decl): If we don't support weaks, leave
5678         statics undefined.
5679
5680 Fri Jun  6 15:55:49 1997  Mike Stump  <mrs@cygnus.com>
5681
5682         * except.c (expand_builtin_throw): Add support for machines that
5683         cannot access globals after throw's epilogue when
5684         -fno-sjlj-exceptions is used.
5685
5686 Thu Jun  5 16:28:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
5687
5688         * parse.y: 'std::' becomes '::'.
5689         * lex.c (real_yylex): Remove 'namespace' warning.
5690         * init.c (build_member_call): Ignore 'std::'.
5691         (build_offset_ref): Likewise.
5692         * decl2.c (do_using_directive): Ignore 'using namespace std;'.
5693         (do_toplevel_using_decl): Ignore 'using std::whatever'.
5694         * decl.c (push_namespace): Just sorry.
5695         (pop_namespace): Nop.
5696         (init_decl_processing): Declare std namespace.
5697
5698 Tue Jun  3 18:08:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
5699
5700         * search.c (push_class_decls): A name which ambiguously refers to
5701         several instantiations of the same template just refers to the
5702         template.
5703
5704 Tue Jun  3 12:30:40 1997  Benjamin Kosnik  <bkoz@cirdan.cygnus.com>
5705
5706         * decl.c (build_enumerator): fix problem with unsigned long
5707         enumerated values being smashed to ints, causing overflow
5708         when computing next enumerated value. (for enum values around
5709         MAX_VAL).
5710
5711 Mon Jun  2 17:40:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
5712
5713         * typeck.c (build_component_ref): Only call mark_used on a decl.
5714
5715 Thu May 29 15:54:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5716
5717         * typeck.c (build_c_cast): Make the check for a ptr to function
5718         more specific before possible default_conversion call.
5719
5720 Thu May 29 13:02:06 1997  Mike Stump  <mrs@cygnus.com>
5721
5722         * except.c (expand_exception_blocks): Simplify and fix and make
5723         sure we don't end a region in a sequence, as expand_end_bindings
5724         doesn't like it.
5725
5726 Wed May 28 17:08:03 1997  Mike Stump  <mrs@cygnus.com>
5727
5728         * except.c (init_exception_processing): Mark terminate as not
5729         returning so that the optimizer can optimize better.
5730
5731 Tue May 27 19:49:19 1997  Mike Stump  <mrs@cygnus.com>
5732
5733         * cvt.c (convert): Don't do any extra work, if we can avoid it
5734         easily.
5735
5736 Tue May 27 18:21:47 1997  Mike Stump  <mrs@cygnus.com>
5737
5738         * *.[chy]: Change cp_convert to ocp_convert, change convert to
5739         cp_convert.  convert is now reserved for the backend, and doesn't
5740         have the semantics a frontend person should ever want.
5741
5742 Fri May 23 10:58:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
5743
5744         * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
5745         Lose -traditional support.
5746
5747 Thu May 22 15:41:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
5748
5749         * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
5750
5751         * parse.y (self_reference): Do it for templates, too.
5752         * class.c (pushclass): Don't overload_template_name; the alias
5753         generated by build_self_reference serves the same purpose.
5754
5755         * tree.c (list_hash): Make static, take more args.
5756         (list_hash_lookup): Likewise.
5757         (list_hash_add): Make static.
5758         (list_hash_canon): Lose.
5759         (hash_tree_cons): Only build a new node if one isn't already in the
5760         hashtable.
5761         (hash_tree_chain): Use hash_tree_cons.
5762         * cp-tree.h: Adjust.
5763         * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
5764         of calling lookup_name.
5765
5766 Wed May 21 18:24:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
5767
5768         * pt.c (instantiate_class_template): TYPE_VALUES for an enum
5769         doesn't refer to the CONST_DECLs.
5770
5771 Tue May 20 21:09:32 1997  Bob Manson  <manson@charmed.cygnus.com>
5772
5773         * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
5774         is bigger.
5775         (expand_class_desc): Convert the last argument to a sizetype.
5776
5777 Tue May 20 13:55:57 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5778
5779         * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
5780         __real__): Add reswords.
5781         * hash.h: Regenerate.
5782         * lex.h (rid): Add RID_COMPLEX.
5783         (RID_LAST_MODIFIER): Set to RID_COMPLEX.
5784         * lex.c (init_lex): Add building of RID_COMPLEX.
5785         (real_yylex): General cleanup in line with what c-lex.c also has,
5786         sans the cruft for traditional; add handling of SPEC_IMAG, complex
5787         types, and imaginary numeric constants.
5788         * parse.y (REALPART, IMAGPART): Add tokens.
5789         (unary_expr): Add REALPART and IMAGPART rules.
5790         * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
5791         * decl.c (complex_{integer,float,double,long}_type_node): Define
5792         types.
5793         (init_decl_processing): Set up the types.
5794         (grokdeclarator): Add handling of RID_COMPLEX.  Set and use
5795         DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
5796         * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
5797         * cvt.c (cp_convert): Handle COMPLEX_TYPE.
5798         * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
5799         COMPLEX_TYPE case.
5800         * method.c (build_overload_name): Add handling of the different
5801         COMPLEX_TYPEs, prefixing them with `J'.
5802         * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
5803         as a template parm.
5804         (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
5805         * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
5806         (mapcar): Handle COMPLEX_CST.
5807         * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
5808         (common_type): Add code for complex types.
5809         (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
5810         (convert_for_assignment): Likewise.
5811         (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
5812
5813 Mon May 19 12:26:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
5814
5815         * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
5816         tsubst_expr, as it might try to do overload resolution.
5817
5818 Sat May 17 10:48:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
5819
5820         * pt.c (instantiate_class_template): Oops.
5821
5822 Fri May 16 14:23:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
5823
5824         * cp-tree.def: Add TAG_DEFN.
5825         * pt.c (tsubst_enum): New fn.
5826         (instantiate_class_template): Use it.
5827         (tsubst_expr): Support TAG_DEFN.
5828         (tsubst): Support local enums.
5829         (tsubst_copy): Likewise.
5830         * decl.c (finish_enum): Likewise.
5831         (start_enum): If this is a local enum, switch to permanent_obstack.
5832
5833 Wed May 14 19:08:28 1997  Mike Stump  <mrs@cygnus.com>
5834
5835         * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
5836         (finish_function): Put the base init code for constructors just
5837         after the parm cleanup insns.
5838         (struct cp_function): Add last_parm_cleanup_insn.
5839         (push_cp_function_context): Likewise.
5840         (pop_cp_function_context): Likewise.
5841         
5842 Tue May 13 15:51:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
5843
5844         * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
5845
5846 Wed May  7 11:17:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5847
5848         * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
5849         for THUNK_FNDECL before we switch to temporary allocation.
5850
5851 Mon May  5 14:46:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
5852
5853         * call.c (build_new_op): Handle null arg2 for ?:.
5854
5855 Thu May  1 18:26:37 1997  Mike Stump  <mrs@cygnus.com>
5856
5857         * except.c (expand_exception_blocks): Ensure that we flow through
5858         the end of the exception region for the exception specification.
5859         Move exception region for the exception specification in, so that
5860         it doesn't protect the parm cleanup.  Remove some obsolete code.
5861         * decl.c (store_parm_decls): Likewise.
5862         (finish_function): Likewise.
5863
5864 Tue Apr 29 15:38:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
5865
5866         * init.c (build_new): Fix nothrow handling.
5867
5868 Tue Apr 29 14:29:50 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5869
5870         * init.c (emit_base_init): Don't warn about the initialization
5871         list for an artificial member.
5872
5873 Fri Apr 25 17:47:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5874
5875         * expr.c (do_case): Handle !START case for the error msg.
5876
5877 Fri Apr 25 11:55:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
5878
5879         * decl2.c, lang-options.h: New option -Weffc++.
5880         * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
5881         to -Weffc++.
5882
5883         * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
5884         to MULTIPLE_SYMBOL_SPACES.
5885
5886 Wed Apr 23 18:06:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
5887
5888         * method.c (emit_thunk, generic case): Set current_function_is_thunk.
5889
5890         * method.c (emit_thunk, macro case): Set up DECL_RESULT.
5891
5892         * typeck.c (c_expand_return): Don't complain about returning void
5893         to void in an artificial function.
5894         * method.c (make_thunk): Change settings of READONLY/VOLATILE, 
5895         don't set DECL_RESULT, set DECL_ARTIFICIAL.
5896         (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC. 
5897
5898 Wed Apr 23 14:43:06 1997  Mike Stump  <mrs@cygnus.com>
5899
5900         * init.c (init_decl_processing): Add supoprt for setjmp/longjmp based
5901         exception handling.
5902         * except.c (init_exception_processing): Likewise.
5903         (expand_end_catch_block): Likewise.
5904         (expand_exception_blocks): Likewise.
5905         (expand_throw): Likewise.
5906         * exception.cc (__default_terminate): Likewise.
5907
5908         * init.c (perform_member_init): Use new method of expr level
5909         cleanups, instead of cleanups_this_call and friends.
5910         (emit_base_init): Likewise.
5911         (expand_aggr_vbase_init_1): Likewise.
5912         (expand_vec_init): Likewise.
5913         * decl.c (cp_finish_decl): Likewise.
5914         (expand_static_init): Likewise.
5915         (store_parm_decls): Likewise.
5916         (cplus_expand_expr_stmt): Likewise.
5917         * decl2.c (finish_file): Likewise.
5918         
5919         * Make-lang.in (exception.o): Ok to compile with -O now.
5920
5921         * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
5922         we know it will be done later by the backend.
5923
5924         * decl2.c (lang_f_options): Remove support for short temps.
5925         * lang-options.h: Likewise.
5926         
5927 Wed Apr 23 04:12:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
5928
5929         * tree.c (varargs_function_p): New fn.
5930         * method.c (emit_thunk): Replace broken generic code with code to
5931         generate a heavyweight thunk function.
5932
5933 Tue Apr 22 02:45:18 1997  Jason Merrill  <jason@yorick.cygnus.com>
5934
5935         * pt.c (process_template_parm): pedwarn about floating-point parms.
5936
5937         * decl.c (grokdeclarator): inline no longer implies static.
5938
5939         * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
5940
5941 Mon Apr 21 15:42:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
5942
5943         * class.c (check_for_override): The signature of an overriding
5944         function is not changed.
5945
5946         * call.c (build_over_call): Move setting of conv into the loop.
5947         Note: this change, along with the related changes of the 18th thru
5948         the 20th of April, fix an infinite loop problem in conversions.
5949
5950 Sun Apr 20 16:24:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
5951
5952         * call.c (build_user_type_conversion_1): Really ignore rvalue
5953         conversions when looking for a REFERENCE_TYPE.
5954
5955         * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
5956         * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
5957         * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
5958         (build_unary_op): Likewise.
5959         * call.c (build_over_call): See through a CONVERT_EXPR around the
5960         ADDR_EXPR for on a temporary.
5961         * typeck.c (c_expand_return): See through a CONVERT_EXPR around
5962         the ADDR_EXPR for a local variable.
5963
5964 Fri Apr 18 12:11:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
5965
5966         * call.c (build_user_type_conversion_1): If we're trying to
5967         convert to a REFERENCE_TYPE, only consider lvalue conversions.
5968         (build_new_function_call): Print candidates.
5969         (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
5970         (reference_binding): Binding a temporary of a reference-related type
5971         is BAD.
5972
5973 Thu Apr 17 14:37:22 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5974
5975         * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
5976         * tinfo2.cc (type_info::before): Likewise.
5977
5978 Mon Apr 14 12:38:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
5979
5980         * call.c (implicit_conversion): Oops.
5981
5982 Fri Apr 11 02:18:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
5983
5984         * call.c (implicit_conversion): Try to find a reference conversion
5985         before binding a const reference to a temporary.
5986
5987 Wed Apr  2 12:51:36 1997  Mike Stump  <mrs@cygnus.com>
5988
5989         * exception.cc (__default_unexpected): Call terminate by default,
5990         so that if the user overrides terminate, the correct function will
5991         be called.
5992         
5993 Wed Mar 19 14:14:45 1997  Mike Stump  <mrs@cygnus.com>
5994
5995         * parse.y (left_curly): Avoid trying to use any fields of
5996         error_mark_node, as there aren't any.
5997
5998 Thu Mar 13 16:33:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
5999
6000         * lex.c (do_identifier): Avoid breaking on overloaded methods
6001         as default arguments.
6002
6003 Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  <Hans-Peter.Nilsson@axis.se>
6004
6005         * call.c (add_template_candidate): Initialize the variable "dummy".
6006
6007 Mon Mar 10 15:13:14 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>
6008
6009         * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
6010         before we try to use TYPE_SIZE and TREE_CONSTANT on it.
6011
6012 Fri Mar  7 13:19:36 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6013
6014         * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
6015         (debug_binfo): Delete decl, not needed.
6016
6017         * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
6018         promotes_to_aggr_type): Delete fns.
6019         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
6020         SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
6021         PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
6022
6023         * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
6024
6025         * friend.c (is_friend_type): Delete fn.
6026         * cp-tree.h (is_friend_type): Delete decl.
6027
6028         * decl.c (original_result_rtx, double_ftype_double,
6029         double_ftype_double_double, int_ftype_int, long_ftype_long,
6030         float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
6031         * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
6032
6033         * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
6034         fwd decls.
6035         * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
6036
6037         * decl.c (pushdecl_nonclass_level): #if 0, unused.
6038         * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
6039
6040         * lex.c (reinit_lang_specific): #if 0, unused.
6041         * cp-tree.h (reinit_lang_specific): #if 0 decl.
6042
6043         * decl.c (revert_static_member_fn): Make static, adding fwd decl.
6044         * cp-tree.h (revert_static_member_fn): Delete decl.
6045
6046         * class.c (root_lang_context_p): Delete fn.
6047         * cp-tree.h (root_lang_context_p): Delete decl.
6048
6049         * decl.c (set_current_level_tags_transparency): #if 0, unused.
6050         * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
6051
6052         * lex.c (set_vardecl_interface_info): Make static.
6053         * cp-tree.h (set_vardecl_interface_info): Delete decl.
6054
6055         * call.c (find_scoped_type): Make static.
6056         * cp-tree.h (find_scoped_type): Delete decl.
6057
6058         * search.c (convert_pointer_to_vbase): Make static.
6059         * cp-tree.h (convert_pointer_to_vbase): Delete decl.
6060
6061         * decl.c (const_ptr_type_node): Likewise.
6062         * cp-tree.h (const_ptr_type_node): Delete decl.
6063
6064         * typeck.c (common_base_type): Make static.
6065         * cp-tree.h (common_base_types): Delete erroneous decl.
6066
6067         * pt.c (classtype_mangled_name): Make static.
6068         * cp-tree.h (classtype_mangled_name): Delete decl.
6069
6070         * lex.c (check_newline): Make static.
6071         * cp-tree.h (check_newline): Delete decl.
6072
6073         * typeck.c (build_x_array_ref): Delete fn, same idea as
6074         grok_array_decl.
6075         * cp-tree.h (build_x_array_ref): Delete decl.
6076
6077         * lex.c (copy_decl_lang_specific): Delete fn, same idea as
6078         copy_lang_decl.
6079         * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
6080
6081         * class.c (build_vtable_entry): Make static.
6082         * cp-tree.h (build_vtable_entry): Delete decl.
6083
6084         * class.c (build_vbase_pointer): Make static.
6085         * cp-tree.h (build_vbase_pointer): Delete decl.
6086
6087         * sig.c (build_sptr_ref): Add forward decl and make static.
6088         * cp-tree.h (build_sptr_ref): Delete decl.
6089
6090         * call.c (build_new_method_call): Add forward decl and make static.
6091         * cp-tree.h (build_new_method_call): Delete decl.
6092
6093         * call.c (build_object_call): Make static.
6094         * class.c (check_for_override, complete_type_p, mark_overriders):
6095         Likewise.
6096         * decl.c (cp_function_chain): Likewise.
6097         * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
6098         Likewise.
6099         * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
6100         Likewise.
6101         * tree.c (build_cplus_array_type_1): Likewise.
6102         * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
6103         (comp_target_parms): Likewise.
6104
6105         * init.c (build_builtin_call): Make static.
6106         * cp-tree.h (build_builtin_call): Delete decl.
6107
6108         * typeck.c (binary_op_error): Delete decl.
6109         * cp-tree.h (binary_op_error): Likewise.
6110
6111 Thu Mar  6 16:13:52 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6112
6113         * call.c (build_method_call): Compare against error_mark_node
6114         directly, rather than the ERROR_MARK tree code.
6115         * cvt.c (cp_convert): Likewise.
6116         * decl.c (print_binding_level): Likewise.
6117         (duplicate_decls): Likewise.
6118         (grokdeclarator): Likewise.
6119         (grokdeclarator): Likewise.
6120         * init.c (expand_aggr_init_1): Likewise.
6121         (decl_constant_value): Likewise.
6122         * method.c (build_opfncall): Likewise.
6123         (hack_identifier): Likewise.
6124         * typeck.c (build_modify_expr): Likewise.
6125
6126         * typeck.c (build_c_cast): Don't decl TYPE as register tree.
6127
6128 Sun Mar  2 02:54:36 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
6129
6130         * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
6131
6132         * pt.c (coerce_template_parms): Add new error message.
6133
6134         * method.c (build_overload_value): Implement name mangling for
6135         floating-point template arguments.
6136
6137         * method.c (build_overload_int, icat, dicat): Fix mangling of template
6138         arguments whose absolute value doesn't fit in a signed word.
6139
6140 Mon Mar  3 12:14:54 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6141
6142         * friend.c: New file; put all of the friend stuff in here.
6143         * init.c: Instead of here.
6144         * Makefile.in (CXX_OBJS): Add friend.o.
6145         (friend.o): Add dependencies.
6146         * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
6147
6148 Sun Mar  2 11:04:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
6149
6150         * call.c (build_scoped_method_call): Complain if the scope isn't a
6151         base.
6152
6153 Wed Feb 26 11:31:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
6154
6155         * parse.y (left_curly): Don't crash on erroneous type.
6156
6157         * init.c (build_delete): Fix type of ref.
6158
6159 Tue Feb 25 12:41:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
6160
6161         * search.c (get_vbase_1): Renamed from get_vbase.
6162         (get_vbase): Wrapper, now non-static.
6163         (convert_pointer_to_vbase): Now static.
6164
6165         * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
6166         * init.c (build_delete): Pass one.
6167         (build_partial_cleanup_for): Use build_scoped_method_call.
6168         * decl.c (finish_function): Pass a binfo.
6169
6170 Mon Feb 24 15:00:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
6171
6172         * call.c (build_over_call): Only synthesize non-trivial copy ctors.
6173
6174         * typeck.c (build_c_cast): Lose other reference to flag.
6175
6176         * call.c (build_field_call): Don't look for [cd]tor_identifier.
6177         * decl2.c (delete_sanity): Remove meaningless use of
6178         LOOKUP_HAS_IN_CHARGE.
6179         * decl.c (finish_function): Use build_scoped_method_call instead
6180         of build_delete for running vbase dtors.
6181         * init.c (build_delete): Call overload resolution code instead of
6182         duplicating it badly.
6183
6184 Thu Feb 20 15:12:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
6185
6186         * call.c (build_over_call): Call mark_used before trying to elide
6187         the call.
6188
6189         * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
6190
6191 Wed Feb 19 11:18:53 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6192
6193         * typeck.c (build_modify_expr): Always pedwarn for a cast to
6194         non-reference used as an lvalue.
6195
6196 Wed Feb 19 10:35:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
6197
6198         * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
6199
6200 Tue Feb 18 15:40:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
6201
6202         * parse.y (handler): Fix template typo.
6203
6204 Sun Feb 16 02:12:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
6205
6206         * error.c (lang_decl_name): New fn.
6207         * tree.c (lang_printable_name): Use it.
6208
6209 Fri Feb 14 16:57:05 1997  Mike Stump  <mrs@cygnus.com>
6210
6211         * g++spec.c: Include config.h so that we can catch bzero #defines
6212         from the config file.
6213
6214 Tue Feb 11 13:50:48 1997  Mike Stump  <mrs@cygnus.com>
6215
6216         * new1.cc: Include a declaration for malloc, to avoid warning, and
6217         avoid lossing on systems that require one (ones that define malloc
6218         in xm.h).
6219
6220 Mon Feb 10 22:51:13 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
6221
6222         * decl2.c (max_tinst_depth): New variable.
6223         (lang_decode_option): Parse "-ftemplate-depth-NN" command line
6224         option.
6225         * pt.c (max_tinst_depth): Variable moved.
6226         * lang-options.h: Declare "-ftemplate-depth-NN" command line option
6227         as legal.
6228
6229 Fri Feb  7 15:43:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
6230
6231         * decl.c (xref_basetypes): Allow a base class that depends on
6232         template parms to be incomplete.
6233
6234         * decl2.c (build_expr_from_tree): Support typeid(type).
6235         * rtti.c (get_typeid): Support templates.
6236         (expand_si_desc, expand_class_desc): Fix string length.
6237         (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
6238
6239 Tue Feb  4 11:28:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
6240
6241         * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
6242
6243         * pt.c (tsubst): Put it back for -fno-ansi-overloading.
6244
6245 Mon Feb  3 18:41:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
6246
6247         * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
6248         smashes together template and non-template decls of the same
6249         signature.
6250
6251 Thu Jan 30 19:18:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
6252
6253         * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
6254
6255 Wed Jan 29 11:40:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6256
6257         * decl.c (duplicate_decls): Next route, pedwarn about different
6258         exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
6259
6260 Tue Jan 28 20:43:29 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6261
6262         * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
6263         (struct lang_type): Delete has_default_implementation member.
6264         Increase dummy to 21.
6265         * decl.c (start_method): Delete usage.
6266
6267         * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
6268         store_after_parms, start_decl_1, auto_function): Add decls.
6269         (get_arglist_len_in_bytes, declare_implicit_exception,
6270         have_exceptions_p, make_type_decl, typedecl_for_tag,
6271         store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
6272         build_component_type_expr, cplus_exception_name,
6273         {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
6274         * call.c (build_this): Make static.
6275         (is_complete): Likewise.
6276         (implicit_conversion): Likewise.
6277         (reference_binding): Likewise.
6278         (standard_conversion): Likewise.
6279         (strip_top_quals): Likewise.
6280         (non_reference): Likewise.
6281         (build_conv): Likewise.
6282         (user_harshness): Likewise.
6283         (rank_for_ideal): Likewise.
6284         * decl.c (start_decl_1): Delete forward decl.
6285         (push_decl_level): Make static.
6286         (resume_binding_level): Make static.
6287         (namespace_bindings_p): Make static.
6288         (declare_namespace_level): Make static.
6289         (lookup_name_real): Make static.
6290         (duplicate_decls): Make static.  Take register off NEWDECL and
6291         OLDDECL parm decls.
6292         * decl2.c (get_sentry): Make static.
6293         (temp_name_p): Delete fn.
6294         * except.c (auto_function): Delete decl.
6295         * lex.c (handle_{cp,sysv}_pragma): Make static.
6296         (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
6297         * method.c (do_build_{copy_constructor,assign_ref}): Make static.
6298         * pt.c (tsubst_expr_values): Make static.
6299         * rtti.c (combine_strings): Delete decl.
6300
6301 Tue Jan 28 16:40:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
6302
6303         * pt.c (push_template_decl): Handle getting a typedef.
6304
6305         * call.c (build_new_function_call): Complain about void arg.
6306
6307 Tue Jan 28 15:25:09 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6308
6309         * decl.c (duplicate_decls): Give pedwarn of different exceptions
6310         if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
6311
6312 Mon Jan 27 19:21:29 1997  Mike Stump  <mrs@cygnus.com>
6313
6314         * except.c (expand_throw): Don't expand the cleanup tree here,
6315         since we are not going to write the rtl out.  Fixes problem with
6316         -g -O on SPARC.
6317
6318 Mon Jan 27 16:24:35 1997  Sean McNeil  <sean@mcneil.com>
6319
6320         * Make-lang.in: Add $(exeext) as necessary.
6321
6322 Mon Jan 27 13:20:39 1997  Mike Stump  <mrs@cygnus.com>
6323
6324         * parse.y (handler_seq): Must have at least one catch clause.
6325
6326 Sat Jan 25 12:00:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
6327
6328         * call.c (add_builtin_candidate): Restore ?: hack.
6329
6330         * decl.c (grok_op_properties): More warnings.
6331
6332 Sat Jan 25 08:50:03 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6333
6334         * decl.c (duplicate_decls): On second thought, do it as a pedwarn
6335         still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
6336
6337         * decl.c (duplicate_decls): Scale back to a warning, and only do
6338         'em if -pedantic.
6339
6340 Fri Jan 24 17:52:54 1997  Mike Stump  <mrs@cygnus.com>
6341
6342         * decl.c (duplicate_decls): pedwarn mismatched exception
6343         specifications.
6344
6345 Thu Jan 23 18:18:54 1997  Mike Stump  <mrs@cygnus.com>
6346
6347         * call.c (build_new_method_call): Don't display the invisible
6348         argument for controlling virtual bases.
6349
6350 Thu Jan 23 16:48:10 1997  Mike Stump  <mrs@cygnus.com>
6351
6352         * new: Add nothrow new and delete, bad_alloc and throw specifications
6353         for delete.
6354         * decl.c (init_decl_processing): Add throw specification for delete.
6355         * new.cc (nothrow): Define.
6356         * lex.c (real_yylex): Removing warning that throw and friends are
6357         keywords.
6358         * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
6359         * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
6360         * Make-lang.in: Add new{1,2}.{cc,o}.
6361
6362 Thu Jan 23 16:39:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
6363
6364         * lex.c (cons_up_default_function): Fix return type of synth op=.
6365
6366         * init.c (emit_base_init): Add warnings for uninitialized members
6367         and bases.
6368
6369         * decl.c (xref_basetypes): Add warning for non-polymorphic type
6370         with destructor used as base type.
6371
6372         * decl.c (grok_op_properties): Add warning for op= returning void.
6373         * typeck.c (c_expand_return): Add warning for op= returning anything
6374         other than *this.
6375
6376         * class.c (finish_struct_1): Add warning for class with pointers
6377         but not copy ctor or copy op=.
6378
6379         * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
6380         * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
6381         (instantiate_template): If -fexternal-templates, add this
6382         instantiation to pending_templates.
6383
6384         * decl2.c (copy_assignment_arg_p): Disable old hack to support
6385         Booch components.
6386
6387 Tue Jan 21 18:32:04 1997  Mike Stump  <mrs@cygnus.com>
6388
6389         * cvt.c (cp_convert): Pedwarn enum to pointer conversions.
6390
6391 Mon Jan 20 17:59:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
6392
6393         * call.c (standard_conversion): Handle getting references.  Tack
6394         on RVALUE_CONV here.  Do it for non-class types, too.
6395         (reference_binding): Pass references to standard_conversion.
6396         (implicit_conversion): Likewise.
6397         (add_builtin_candidate): Disable one ?: kludge.
6398         (convert_like): Handle RVALUE_CONVs for non-class types.
6399         (joust): Disable the other ?: kludge.
6400
6401 Mon Jan 20 14:53:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6402
6403         * decl.c (init_decl_processing): Add code to build up common
6404         function types beforehand, to avoid creation then removal of
6405         things already in the hash table.
6406
6407 Mon Jan 20 14:43:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
6408
6409         * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
6410         the arguments.
6411
6412         * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
6413         current_template_parms.
6414
6415 Fri Jan 17 10:25:42 1997  Jason Merrill  <jason@yorick.cygnus.com>
6416
6417         * search.c (lookup_field): Don't return a function, check want_type.
6418
6419 Thu Jan 16 18:14:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6420
6421         * init.c (build_new): Make sure PLACEMENT has a type.
6422
6423 Thu Jan 16 17:40:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
6424
6425         * init.c (build_new): Support new (nothrow).
6426
6427 Wed Jan 15 12:38:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
6428
6429         * pt.c (instantiate_decl): Also do push_to_top_level before setting
6430         up DECL_INITIAL.
6431
6432         * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
6433         * pt.c (tsubst): Defer instantiation of default args.
6434         * call.c (build_over_call): Until here.
6435
6436 Wed Jan 15 10:08:10 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6437
6438         * search.c (lookup_field): Make sure we have an
6439         IDENTIFIER_CLASS_VALUE before we try to return it.
6440
6441 Thu Jan  9 07:19:01 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6442
6443         * call.c (build_method_call): Delete unused var PARM.
6444         (build_overload_call_real): Likewise.
6445         (build_object_call): Delete unused var P.
6446         (build_new_op): Likewise.
6447         * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
6448         var definitions, which are never used.
6449         (shadow_tag): Delete unused var FN.
6450         * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
6451         * init.c (build_new): Delete unused var ALLOC_TEMP.
6452         * method.c (hack_identifier): Delete unused var CONTEXT.
6453         (do_build_copy_constructor): Delete unused var NAME.
6454         (synthesize_method): Delete unused var BASE.
6455         * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
6456         * rtti.c (build_headof): Delete unused var VPTR.
6457         (get_typeid): Delete unused var T.
6458         * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
6459         and ORIG_OP2.
6460         (build_ptrmemfunc): Delete unused vars U and NINDEX.
6461         * typeck2.c (build_functional_cast): Delete unused var BINFO.
6462
6463 Wed Jan  8 13:09:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
6464
6465         * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
6466         things in a type being defined.
6467         * decl.c (finish_enum): Reverse the values so that they are in
6468         the correct order.
6469
6470         * pt.c (instantiate_class_template): Don't initialize
6471         BINFO_BASETYPES until the vector is filled out.
6472         (unify): Don't abort on conflicting bindings, just fail.
6473         (instantiate_decl): Do push_tinst_level before any tsubsting.
6474
6475         * method.c (build_overload_value): Handle getting a
6476         TEMPLATE_CONST_PARM for a pointer.
6477
6478 Tue Jan  7 14:00:58 1997  Jason Merrill  <jason@yorick.cygnus.com>
6479
6480         * init.c (expand_member_init): Don't give 'not a base' error for
6481         templates.
6482
6483         * pt.c (instantiate_decl): Call import_export_decl later.
6484
6485         * pt.c (instantiate_class_template): Return a value.
6486
6487         * parse.y (extension): New rule for __extension__.
6488         (extdef, unary_expr, decl, component_decl): Use it.
6489
6490 Tue Jan  7 09:20:28 1997  Mike Stump  <mrs@cygnus.com>
6491
6492         * class.c (base_binfo): Remove unused base_has_virtual member.
6493         (finish_base_struct): Likewise.
6494         (finish_struct_1): Likewise.
6495
6496 Tue Dec 31 20:25:50 1996  Mike Stump  <mrs@cygnus.com>
6497
6498         * search.c (expand_upcast_fixups): Fix bogus code generation
6499         problem where the generated code uses the wrong index into the
6500         runtime built vtable on the stack.  Old code could clobber random
6501         stack values.
6502
6503 Tue Dec 31 15:16:56 1996  Mike Stump  <mrs@cygnus.com>
6504
6505         * init.c (perform_member_init): Make sure the partial EH cleanups
6506         live on the function_obstack.
6507
6508 Fri Dec 27 10:31:40 1996  Paul Eggert  <eggert@twinsun.com>
6509
6510         * Make-lang.in (g++spec.o): Don't use $< with an explicit target;
6511         this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
6512
6513 Tue Dec 24 10:24:03 1996  Jeffrey A Law  (law@cygnus.com)
6514
6515         * decl.c (grokvardecl): Avoid ANSI style initialization.
6516
6517 Sun Dec 22 04:22:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
6518
6519         * pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
6520
6521 Fri Dec 20 17:09:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
6522
6523         * pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
6524
6525 Fri Dec 20 12:17:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6526
6527         * g++spec.c (lang_specific_driver): Put missing hyphen in front of
6528         arguments we compare against.  Start the count of I at 1, not 0,
6529         since argv[0] is still the command.
6530
6531 Thu Dec 19 11:53:57 1996  Stan Shebs  <shebs@andros.cygnus.com>
6532
6533         * lang-specs.h: Accept .cp as an C++ extension.
6534
6535 Mon Dec 16 22:43:31 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6536
6537         * cp-tree.h (ptr_reasonably_similar): Add decl.
6538
6539 Thu Dec 12 15:00:35 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6540
6541         * decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
6542         pointer.  New local SPECBITS with the parm's value.
6543         (grokdeclarator): Pass &specbits down.
6544
6545         * parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
6546         before we try to do C_SET_EXP_ORIGINAL_CODE on it.
6547
6548         * search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
6549         CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
6550
6551         * decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
6552         not an error_mark_node.
6553
6554 Sat Dec  7 17:20:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
6555
6556         * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
6557         * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
6558         
6559 Fri Dec  6 14:40:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
6560
6561         * decl.c (grokdeclarator): When giving an anonymous struct a name,
6562         replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
6563         not affected).
6564
6565         * typeck2.c (build_m_component_ref): If component is a pointer
6566         to data member, resolve the OFFSET_REF now.
6567
6568         * call.c (convert_like): Don't go into infinite recursion.
6569
6570         * pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
6571
6572         * class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
6573         * tree.c (layout_basetypes): And on the vbase ptr.
6574
6575 Thu Dec  5 02:11:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
6576
6577         * decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
6578         CHAR_TYPE_SIZE so bool is always the same size as another type.
6579
6580         * decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
6581
6582 Tue Dec  3 23:18:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
6583
6584         * decl2.c (grok_x_components): Remove synthesized methods from
6585         TYPE_METHODS of an anonymous union, complain about member
6586         functions.
6587         * decl.c (shadow_tag): Wipe out memory of synthesized methods in
6588         anonymous unions.
6589         (finish_function): Just clear the DECL_RTL of our arguments.
6590
6591 Fri Nov 29 21:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6592
6593         * decl2.c (finish_file): Emit DWARF debugging info for static data
6594         members.
6595
6596         * pt.c (tsubst): If t is a stub decl, return the stub decl for type.
6597
6598 Wed Nov 27 14:47:15 1996  Bob Manson  <manson@charmed.cygnus.com>
6599
6600         * typeck.c (build_component_ref): Don't die if COMPONENT isn't a
6601         IDENTIFIER_NODE.
6602
6603 Wed Nov 27 16:05:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
6604
6605         * Make-lang.in (g++-cross$(exeext)): Fix typo.
6606
6607 Wed Nov 27 08:14:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6608
6609         Make the g++ driver now be a standalone program, rather than one
6610         that tries to run the gcc driver after munging up the options.
6611         * Make-lang.in (g++.c, g++spec.o): New rules.
6612         (g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
6613         added.
6614         (g++$(exeext)): New rule, based on xgcc rule.
6615         (g++-cross$(exeext)): Now just copies g++$(exeext) over.
6616         * g++spec.c: New file.
6617         * g++.c: Removed file.
6618
6619 Tue Nov 26 19:01:09 1996  Mike Stump  <mrs@cygnus.com>
6620
6621         * cvt.c (build_up_reference): Arrange for any temporary values
6622         that have been keep in registers until now to be put into memory.
6623
6624 Mon Nov 25 15:16:41 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6625
6626         * Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
6627         that make -j3 bootstrap works better.
6628
6629 Sun Nov 24 02:09:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
6630
6631         * decl.c (pushtag): Do pushdecl for anon tags.
6632
6633 Thu Nov 21 16:30:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
6634
6635         * typeck.c (c_expand_return): Fix logic.
6636         (unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
6637
6638 Wed Nov 20 18:47:31 1996  Bob Manson  <manson@charmed.cygnus.com>
6639
6640         * g++.c (main): Make sure arglist has a final NULL entry.  Add
6641         PEXECUTE_LAST to the flags passed to pexecute, as otherwise
6642         stdin/stdout of the invoked program are redirected to
6643         nowheresville.
6644
6645 Tue Nov 19 16:12:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
6646
6647         * decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
6648
6649 Tue Nov 19 15:48:19 1996  Mike Stump  <mrs@cygnus.com>
6650
6651         * init.c (resolve_offset_ref): Handle obj.vfn better.
6652         * typeck.c (build_component_ref): Set TREE_TYPE on result from
6653         build_vfn_ref.
6654
6655 Tue Nov 19 13:14:33 1996  Mike Stump  <mrs@cygnus.com>
6656
6657         * typeck.c (convert_for_assignment): Also handle anachronistic
6658         implicit conversions from (::*)() to cv void*.
6659         * cvt.c (cp_convert_to_pointer): Likewise.
6660
6661 Mon Nov 18 17:05:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
6662
6663         * lex.c (handle_cp_pragma): Fix bogus warning.
6664
6665 Mon Nov 18 16:10:43 1996  Mike Stump  <mrs@cygnus.com>
6666
6667         * cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
6668         (METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
6669
6670 Thu Nov 14 23:18:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6671
6672         * class.c (finish_struct_1): Support DWARF2_DEBUG.
6673         * search.c (dfs_debug_mark): Likewise.
6674         * decl2.c (finish_vtable_vardecl): Likewise.
6675         * decl.c (pushtag, finish_enum): Likewise.
6676         * lex.c (check_newline): Use debug_* instead of calling *out
6677         functions directly.
6678
6679 Thu Nov 14 15:21:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6680
6681         * Make-lang.in (cplib2.ready): Add else clause to avoid problems
6682         on some picky hosts.
6683
6684 Wed Nov 13 12:32:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
6685
6686         * class.c (finish_struct_1): A class has a non-trivial copy
6687         constructor if it has virtual functions.
6688
6689         * cvt.c (cp_convert): Always call a constructor.
6690
6691         * call.c (reference_binding): Still tack on a REF_BIND
6692         for bad conversions.
6693         (build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
6694
6695         * typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
6696         (c_expand_return): Likewise.
6697         * typeck2.c (digest_init): Likewise for { }.
6698         * init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
6699         * cvt.c (cp_convert): Handle failure better.
6700
6701 Wed Nov 13 11:51:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6702
6703         * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
6704         of GCC be path-relative. 
6705
6706 Wed Nov 13 11:27:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
6707
6708         * Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
6709         it does need choose-temp.o and pexecute.o.
6710
6711 Wed Nov 13 07:53:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6712
6713         * g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
6714         that we still use it.
6715         (P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
6716
6717 Wed Nov 13 02:00:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
6718
6719         * init.c (expand_default_init): Avoid calling constructors to 
6720         initialize reference temps.
6721
6722         * cvt.c (convert_to_reference): Fix.
6723
6724 Tue Nov 12 19:10:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
6725
6726         * cvt.c (cp_convert): Simplify for flag_ansi_overloading.
6727         (convert_to_reference): Likewise.
6728         * typeck.c (convert_for_initialization): Likewise.
6729         * init.c (expand_default_init): Likewise.
6730         (expand_aggr_init_1): Likewise.
6731         * cp-tree.h (CONV_NONCONVERTING): Lose.
6732         * typeck.c (build_c_cast): Lose allow_nonconverting parm.
6733         * *.c: Adjust.
6734         * call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
6735
6736 Tue Nov 12 16:29:04 1996  Brendan Kehoe  <brendan@canuck.cygnus.com>
6737
6738         * pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
6739
6740 Tue Nov 12 15:26:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6741
6742         * init.c (expand_aggr_init_1): Don't crash on non-constructor
6743         TARGET_EXPR.
6744
6745 Tue Nov 12 14:00:50 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6746
6747         * g++.c: Include gansidecl.h.
6748         (VPROTO, PVPROTO, VA_START): Delete.
6749         (choose_temp_base_try, choose_temp_base, perror_exec,
6750         run_dos) [__MSDOS__]: Delete fns.
6751         (pfatal_with_name): Delete fn.
6752         (temp_filename): Declare like in gcc.c.
6753         (pexecute, pwait, choose_temp_base): Declare from gcc.c.
6754         (error_count, signal_count): Define.
6755         (error): Delete both definitions.
6756         (PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
6757         (pfatal_pexecute): Add fn from gcc.c.
6758         (main): Rename local VERBOSE var to VERBOSE_FLAG.  Rewrite the
6759         code to use the pexecute stuff also used by gcc.c.
6760         (MIN_FATAL_STATUS): Define.
6761         * Make-lang.in (g++): Add dependency on and linking with
6762         choose-temp.o and pexecute.o.
6763
6764         * cp-tree.h: Include gansidecl.h.
6765         (STDIO_PROTO): Delete #undef/#define.
6766         * cvt.c (NULL): Delete #undef/#define.
6767         * expr.c (NULL): Likewise.
6768         * init.c (NULL): Likewise.
6769         * rtti.c (NULL): Likewise.
6770         * xref.c (NULL): Likewise.
6771
6772         * cp-tree.h (build_user_type_conversion): Add prototype.
6773         * call.c (build_user_type_conversion): Delete prototype.  Correct
6774         decl of FLAGS arg to be an int.
6775         * cvt.c (build_user_type_conversion): Likewise.
6776
6777 Tue Nov 12 12:16:20 1996  Jason Merrill  <jason@yorick.cygnus.com>
6778
6779         * cp-tree.def: Add TRY_BLOCK and HANDLER.
6780         * except.c (expand_start_catch_block): Support templates.
6781         * parse.y (try_block, handler_seq): Likewise.
6782         * pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
6783
6784 Mon Nov 11 13:57:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
6785
6786         * pt.c (current_template_args): New fn.
6787         (push_template_decl): Use it.
6788         * decl.c (grokdeclarator): Use it.
6789
6790         * decl2.c (build_expr_from_tree): Dereference ref vars.
6791
6792         * decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
6793         the decl-specifier-seq.
6794
6795         * decl.c (grok_op_properties): Don't force the type of a conversion
6796         op to be complete.  Don't warn about converting to the same type
6797         for template instantiations.
6798
6799         * decl2.c (finish_file): Don't call instantiate_decl on synthesized
6800         methods.
6801
6802 Mon Nov 11 13:20:34 1996  Bob Manson  <manson@charmed.cygnus.com>
6803
6804         * typeck.c (get_delta_difference): Remove previous bogusness.
6805         Don't give errors if force is set.
6806
6807 Fri Nov  8 17:38:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
6808
6809         * decl2.c (finish_file): Don't emit debug info.
6810         * decl.c (pushdecl): Lose obsolete code.
6811         (grokdeclarator): Still do the long long thing after complaining.
6812         * search.c (note_debug_info_needed): Don't do anything if we're in a 
6813         template.
6814         * method.c (synthesize_method): For non-local classes,
6815         push_to_top_level first.
6816
6817 Fri Nov  8 11:52:28 1996  Bob Manson  <manson@charmed.cygnus.com>
6818
6819         * typeck.c (get_delta_difference): Add no_error parameter.
6820         (build_ptrmemfunc): Call get_delta_difference with no_error set;
6821         we don't want error messages when converting unrelated
6822         pointer-to-member functions.
6823
6824 Thu Nov  7 11:16:24 1996  Mike Stump  <mrs@cygnus.com>
6825
6826         * error.c (dump_expr): Improve the wording on error messages that
6827         involve pointer to member functions.
6828
6829 Tue Nov  5 17:12:05 1996  Mike Stump  <mrs@cygnus.com>
6830
6831         * cvt.c (cp_convert_to_pointer): Move code for conversions from
6832         (::*)() to void* or (*)() up a bit, so that we can convert from
6833         METHOD_TYPEs as well.
6834
6835 Tue Nov  5 14:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6836
6837         * rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
6838         There are no 'member' types.
6839         (get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
6840         (build_x_typeid): Handle errors.
6841
6842 Mon Nov  4 17:43:12 1996  Mike Stump  <mrs@cygnus.com>
6843
6844         * typeck.c (convert_for_assignment): Handle anachronistic implicit
6845         conversions from (::*)() to void* or (*)().
6846         * cvt.c (cp_convert_to_pointer): Likewise.
6847         (cp_convert_to_pointer_force): Remove cp_convert_to_pointer
6848         conversions from here.
6849         * decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
6850         * lang-options.h: Likewise.
6851         * decl2.c (warn_pmf2ptr): Define.
6852         * cp-tree.h: Declare it.
6853         * typeck2.c (digest_init): Allow pmfs down into
6854         convert_for_initialization.
6855
6856 Sun Nov  3 09:43:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
6857
6858         * typeck.c (c_expand_return): Fix for returning overloaded fn.
6859
6860 Fri Nov  1 08:53:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6861
6862         * cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
6863         * decl.c (grok_reference_init): Pass DIRECT_BIND.
6864         * cvt.c (build_up_reference): Don't mark 'this' addressable.  Use
6865         DIRECT_BIND.
6866         * call.c (convert_like): Don't pass INDIRECT_BIND.
6867         * typeck.c (convert_arguments): Likewise.
6868         * typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
6869
6870 Thu Oct 31 17:08:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
6871
6872         * typeck.c (mark_addressable): Support TARGET_EXPR, unify with
6873         similar code in build_up_ref.
6874         * cvt.c (build_up_reference): Drastically simplify.
6875
6876 Mon Oct 28 12:45:05 1996  Jeffrey A Law  (law@cygnus.com)
6877
6878         * typeck.c (signed_or_unsigned_type): If the given type already
6879         as the correct signedness, then just return it.
6880
6881         * typeck.c ({un,}signed_type): If can't do anything, call
6882         signed_or_unsigned_type.
6883
6884 Thu Oct 24 14:21:59 1996  Bob Manson  <manson@charmed.cygnus.com>
6885
6886         * decl2.c (copy_assignment_arg_p): Don't buy the farm if
6887         current_class_type is NULL.
6888
6889 Wed Oct 23 00:43:10 1996  Jason Merrill  <jason@gerbil.cygnus.com>
6890
6891         * class.c (finish_struct_1): Avoid empty structs by adding a field
6892         so layout_type gets the mode right.
6893
6894         * typeck.c (c_expand_return): Drastically simplify.
6895
6896 Mon Oct 21 22:34:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
6897
6898         * typeck.c (decay_conversion): Handle overloaded methods.
6899
6900 Fri Oct 18 16:03:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
6901
6902         * call.c (build_over_call): A TARGET_EXPR has side-effects.
6903
6904 Thu Oct 17 11:31:59 1996  Mike Stump  <mrs@cygnus.com>
6905
6906         * cvt.c (convert_to_pointer_force): Add code to support pointer to
6907         member function to pointer to function conversions.
6908         * init.c (resolve_offset_ref): Add code to allow faked up objects,
6909         ignoring them if they are not used, and giving an error, if they
6910         are needed.
6911         * typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
6912         code, and so that we can give an error, if we needed an object,
6913         and one was not provided.
6914         (build_c_cast): Don't call default_conversion when we want to
6915         convert to pointer to function from a METHOD_TYPE.
6916
6917 Mon Oct 14 00:28:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
6918
6919         * Make-lang.in (cplib2.ready): Fix logic.
6920
6921         * decl.c (shadow_tag): Only complain about non-artificial function
6922         members.
6923
6924         * class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
6925
6926 Fri Oct 11 16:12:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
6927
6928         * expr.c (cplus_expand_expr): Pre-tweak call_target like
6929         expand_inline_function would.
6930
6931         * pt.c (mark_decl_instantiated): If extern_p, call
6932         mark_inline_for_output.
6933
6934 Thu Oct 10 15:58:08 1996  Mike Stump  <mrs@cygnus.com>
6935
6936         * typeck.c (unary_complex_lvalue): Add code to handle intermediate
6937         pmd conversions.
6938
6939         * typeck.c (get_delta_difference): Fix wording, as we can be used
6940         for pointer to data members.
6941
6942 Tue Oct  8 12:43:51 1996  Bob Manson  <manson@charmed.cygnus.com>
6943
6944         * pt.c (tsubst): If the function decl isn't a member of this
6945         template, return a copy of the decl (including copying the
6946         lang-specific part) so we don't hose ourselves later.
6947
6948 Thu Oct  3 16:24:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
6949
6950         * class.c (finish_struct): Remove DWARF-specific tag handling.
6951         * decl.c (pushtag): Likewise.
6952         (finish_function): Always clear DECL_ARGUMENTS on function decls with
6953         no saved RTX.
6954         * decl2.c (finish_file): Emit DWARF debugging info for static data
6955         members.
6956
6957 Wed Oct  2 21:58:01 1996  Bob Manson  <manson@charmed.cygnus.com>
6958
6959         * decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
6960         isn't the same as the new one before we whack it.
6961
6962 Mon Sep 30 13:38:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
6963
6964         * class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
6965         lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
6966         warn_traditional and warn_strict_prototypes; remove ancient
6967         'overload' code; remove references to flag_traditional.
6968
6969 Mon Sep 30 12:58:40 1996  Mike Stump  <mrs@cygnus.com>
6970
6971         * input.c (sub_getch): Handle 8-bit characters in string literals.
6972
6973 Sun Sep 29 03:12:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
6974
6975         * tree.c (mapcar): Handle CONSTRUCTORs.
6976         (copy_to_permanent): Handle expression_obstack properly.
6977
6978         * Make-lang.in (cplib2.txt): Also depend on the headers.
6979
6980         * rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
6981         INT_TYPE_SIZE.
6982         (expand_class_desc): Use USItype for offset field.
6983         * tinfo.h (struct __class_type_info): Likewise.
6984
6985         * method.c (build_overload_int): TYPE_PRECISION should be applied
6986         to types.
6987
6988 Sat Sep 28 14:44:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
6989
6990         * call.c (build_new_op): A COND_EXPR involving void must be a
6991         builtin.
6992
6993 Fri Sep 27 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
6994
6995         * typeck.c (build_x_component_ref): New fn.
6996         (build_object_ref): Use it.
6997         * parse.y (primary): Use it.
6998         * decl2.c (build_expr_from_tree): Use it.
6999         * cp-tree.h: Declare it.
7000
7001         * decl.c (start_decl): variable-sized arrays cannot be initialized.
7002         * error.c (dump_type_suffix): Handle variable arrays.
7003
7004 Fri Sep 27 13:14:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7005
7006         * Make-lang.in (exception.o): Put back compiling it with -fPIC.
7007
7008 Fri Sep 27 03:00:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
7009
7010         * decl.c (lookup_name_real): Don't try to look up anything in a
7011         TYPENAME_TYPE.
7012
7013         * tinfo2.cc (__throw_type_match_rtti): Oops.
7014
7015 Thu Sep 26 22:11:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7016
7017         * Make-lang.in (exception.o): Use -fno-PIC for now.
7018
7019 Thu Sep 26 10:59:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
7020
7021         * rtti.c (build_dynamic_cast): Pass tinfo fns rather than
7022         calling them.
7023         (get_tinfo_fn_dynamic): Extracted from build_typeid.
7024         * tinfo2.cc (__dynamic_cast): Adjust.
7025         
7026         * rtti.c (build_typeid): Use resolves_to_fixed_type_p.
7027         (build_x_typeid): Likewise.
7028
7029         * parse.y: Call build_x_typeid instead of build_typeid.
7030         * cp-tree.def: Add TYPEID_EXPR.
7031         * pt.c (tsubst_copy): Handle typeid.
7032         * decl2.c (build_expr_from_tree): Likewise.
7033         * rtti.c (build_x_typeid): Throw bad_typeid from here.
7034         (build_typeid): Not here.
7035         * cp-tree.h: Declare build_x_typeid.
7036
7037 Wed Sep 25 17:26:16 1996  Jason Merrill  <jason@yorick.cygnus.com>
7038
7039         * call.c (convert_like): Pull out constant values.
7040
7041         * tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
7042
7043 Wed Sep 25 17:28:53 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
7044
7045         * decl.c (init_decl_processing): Create short int types before
7046         creating size_t in case a machine description needs to use
7047         unsigned short for size_t.
7048
7049 Tue Sep 24 18:18:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
7050
7051         * Make-lang.in (exception.o): Turn off pic.
7052
7053         * tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
7054         type, multi-level ptr conversions.
7055
7056         * rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
7057         (throw_bad_cast): Use it.
7058         (throw_bad_typeid): New fn.
7059         (build_typeid): Throw bad_typeid as needed.
7060         Use build_call.
7061         (synthesize_tinfo_fn): Handle functions and arrays before checking
7062         for cv-quals.
7063
7064         * Remove .h from standard C++ headers, add new.h, move into inc
7065         subdirectory.
7066
7067         * exception*: Remove pointer from object, constructors.  Add
7068         default exception::what that uses type_info::name.  Add
7069         __throw_bad_typeid.
7070
7071         * init.c (build_new): Don't add a cookie to new (void *) T[2].
7072
7073 Mon Sep 23 15:21:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
7074
7075         * Make-lang.in: Building C++ code depends on cc1plus.
7076
7077 Mon Sep 23 12:38:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7078
7079         * decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
7080         a HOST_WIDE_INT, not a tree.
7081
7082 Mon Sep 23 12:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
7083
7084         * exception.cc: Don't include <stdlib.h>.
7085
7086         * Make-lang.in (c++.clean): Remove cplib2.*.
7087
7088 Mon Sep 23 09:42:19 1996  Doug Evans  <dje@canuck.cygnus.com>
7089
7090         * parse.y (component_decl_1, component_costructor_declarator case):
7091         Pass attributes/prefix_attributes in tree list.
7092
7093 Mon Sep 23 01:18:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
7094
7095         * tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
7096
7097 Sun Sep 22 05:31:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
7098
7099         * lex.c (do_identifier): Don't do deferred lookup in a template
7100         header.
7101
7102         * typeck2.c (store_init_value): Oops.
7103
7104         * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}: 
7105         New files for C++ lang-support library.
7106         * Make-lang.in (CXX_EXTRA_HEADERS): Define.
7107         (CXX_LIB2FUNCS): Define.
7108         And rules for building the C++ lang-support code.
7109         * config-lang.in (headers): Define.
7110         (lib2funcs): Define.
7111
7112 Sat Sep 21 19:17:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
7113
7114         * decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
7115         digest_init.
7116         * pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
7117         * typeck2.c (store_init_value): Check for initializing pmf with { }
7118         here.
7119         (process_init_constructor): Not here.
7120
7121 Thu Sep 19 16:41:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
7122
7123         * pt.c (begin_template_parm_list): Increment
7124         processing_template_decl here.
7125         (end_template_parm_list): Not here.
7126         (process_template_parm): No need to add 1 to it now.
7127         * *.c: Use processing_template_decl instead of current_template_parms
7128         to check for being in a template.
7129
7130         * pt.c (uses_template_parms): Handle SCOPE_REF.  Fix CONSTRUCTOR.
7131         (tsubst_copy): Handle CONSTRUCTOR.
7132         (instantiate_decl): Set up context properly for variables.
7133         * decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
7134         * class.c (finish_struct): Reverse CLASSTYPE_TAGS.
7135
7136 Wed Sep 18 13:30:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7137
7138         * lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
7139
7140 Wed Sep 18 04:24:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
7141
7142         * method.c (make_thunk): Call comdat_linkage before setting the
7143         TREE_CODE.
7144
7145         * decl2.c (comdat_linkage): Use make_decl_one_only.
7146         (import_export_decl): Likewise.
7147         * decl.c (init_decl_processing): Check supports_one_only instead of
7148         SUPPORTS_WEAK.
7149
7150 Sat Sep 14 08:34:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
7151
7152         * decl2.c (grokfield): Tighten checking for access decls.
7153
7154         * decl.c (make_typename_type): Resolve references to
7155         current_class_type.  Set CLASSTYPE_GOT_SEMICOLON.
7156         (lookup_name_real): Types that depend on a template parameter get
7157         an implicit 'typename' unless they're in the current scope.
7158         (start_decl_1): We don't care about incomplete types that depend
7159         on a template parm.
7160         (grokdeclarator): Resolve 'typename's in the type specifier that
7161         refer to members of the current scope.
7162
7163         * call.c (build_over_call): Remove 'inline called before
7164         definition' diagnostic.
7165         (build_method_call): Likewise.
7166         * decl.c (duplicate_decls): Downgrade 'used before declared
7167         inline' to a warning, only with -Winline.
7168
7169 Fri Sep 13 17:31:40 1996  Stan Shebs  <shebs@andros.cygnus.com>
7170
7171         * mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
7172
7173 Wed Sep 11 22:38:13 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
7174
7175         * call.c (build_method_call): When calling a signature
7176         default implementation, as in other cases, let instance_ptr simply
7177         be instance.
7178
7179 Wed Sep 11 22:14:44 1996  Mike Stump  <mrs@cygnus.com>
7180
7181         * parse.y (simple_stmt): Cleanup and use do_poplevel ().
7182
7183 Wed Sep 11 22:10:48 1996  Mike Stump  <mrs@cygnus.com>
7184
7185         * except.c (expand_start_catch_block): Add a pushlevel so that -g
7186         works on hppa and SPARC.
7187
7188 Wed Sep 11 10:18:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7189
7190         * typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
7191
7192 Mon Sep  9 19:51:14 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
7193
7194         * call.c (build_over_call): Check first whether DECL_CONTEXT exists
7195         before testing whether it's a signature.
7196
7197 Sun Sep  8 16:06:57 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
7198
7199         * call.c (build_new_method_call): Don't complain about signature
7200         pointers and references not being an aggr type.
7201         (build_this): If a signature pointer or reference was passed in,
7202         just return it.
7203         (build_new_method_call): If instance is a signature pointer, set
7204         basetype to the signature type of instance.
7205         * sig.c (build_signature_method_call): Deleted basetype and
7206         instance parameters, they can be found as the DECL_CONTEXT of
7207         function and as the first argument passed in.
7208         * cp-tree.h: Changed declaration of build_signature_method_call.
7209         * call.c (build_method_call): Deleted first two arguments in call
7210         of build_signature_method_call.
7211         (build_over_call): Added call to build_signature_method_call.
7212
7213 Thu Sep  5 16:51:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
7214
7215         * typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
7216         target_expr.
7217
7218 Thu Sep  5 10:05:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7219
7220         * cvt.c (convert_to_reference): Use %#T, not %#D, for error.
7221
7222 Wed Sep  4 17:16:09 1996  Bob Manson  <manson@charmed.cygnus.com>
7223
7224         * except.c (expand_start_try_stmts): Move to except.c in the backend.
7225         (expand_end_try_stmts): Remove.
7226
7227         * init.c (perform_member_init): Use add_partial_entry () instead
7228         of directly manipulating lists.
7229         (emit_base_init): Ditto.
7230
7231 Wed Sep  4 12:14:36 1996  Mike Stump  <mrs@cygnus.com>
7232
7233         * except.c (expand_exception_blocks): Always make sure USE and
7234         CLOBBER insns that came at the end still do, the backend relies
7235         upon this.
7236
7237 Wed Sep  4 07:44:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
7238
7239         * call.c (build_over_call): We can only use a TARGET_EXPR of the
7240         right type.
7241
7242 Tue Sep  3 19:26:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
7243
7244         * cvt.c (convert_to_reference): Revert last change, don't complain
7245         about temp without target decl.
7246
7247 Tue Sep  3 10:22:56 1996  Mike Stump  <mrs@cygnus.com>
7248
7249         * decl.c (grokdeclarator): Don't core dump when void() is given.
7250
7251 Tue Sep  3 02:38:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
7252
7253         * decl.c (copy_args_p): Don't crash.
7254
7255 Fri Aug 30 14:26:57 1996  Mike Stump  <mrs@cygnus.com>
7256
7257         * pt.c (tsubst): And support template args inside the exception
7258         specification.
7259
7260         * pt.c (tsubst): Add support for exception specifications in
7261         template functions.
7262
7263 Fri Aug 30 10:01:55 1996  Mike Stump  <mrs@cygnus.com>
7264
7265         * cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
7266         fields now.
7267         * cp-tree.h (start_decl): Eliminate the throw spec parameter.
7268         (start_function): Likewise.
7269         (start_method): Likewise.
7270         (grokfield): Likewise.
7271         (make_call_declarator): Add throw spec parameter.
7272         (set_quals_and_spec): Add routine.
7273         * lex.c (set_quals_and_spec): Likewise.
7274         * decl.h (grokdeclarator): Eliminate the throw spec parameter.
7275         * decl.c (shadow_tag): Eliminate the throw spec parameter to
7276         grokdeclarator.
7277         (groktypename): Likewise.
7278         (start_decl): Eliminate the throw spec parameter.  Eliminate the
7279         throw spec parameter to grokdeclarator.  Eliminate the throw spec
7280         field in DECL_STMT.
7281         (cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
7282         (grokfndecl): Remove useless set of raises.
7283         (grokdeclarator): Eliminate the throw spec parameter.  Eliminate
7284         the throw spec parameter to start_decl.  Pull the throw spec out
7285         of the call declarator.
7286         (grokparms): Eliminate the throw spec parameter to grokdeclarator.
7287         (start_function): Eliminate the throw spec parameter.  Eliminate
7288         the throw spec parameter to grokdeclarator.
7289         (start_method): Likewise.
7290         * decl2.c (grokfield): Likewise.
7291         (grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
7292         (grokoptypename): Likewise.
7293         (finish_file): Eliminate the throw spec parameter to
7294         start_function.  Add throw spec to make_call_declarator.
7295         * except.c (init_exception_processing): Add throw spec to
7296         make_call_declarator.  Eliminate the throw spec parameter to
7297         start_decl.
7298         (expand_start_catch_block): Eliminate the throw spec parameter to
7299         grokdeclarator.
7300         (expand_builtin_throw): Add throw spec to make_call_declarator.
7301         Eliminate the throw spec parameter to start_function.
7302         (start_anon_func): Likewise.
7303         * lex.c (make_call_declarator): Add throw spec parameter.
7304         (set_quals_and_spec): New routine.
7305         (cons_up_default_function): Add throw spec to make_call_declarator.
7306         Eliminate the throw spec parameter to grokfield.
7307         * method.c (synthesize_method): Eliminate the throw spec parameter
7308         to start_function.
7309         * pt.c (process_template_parm): Eliminate the throw spec parameter
7310         to grokdeclarator.
7311         (tsubst): Add throw spec to make_call_declarator.
7312         (tsubst_expr): Eliminate the throw spec parameter to start_decl.
7313         (do_function_instantiation): Eliminate the throw spec parameter to
7314         grokdeclarator.  Eliminate the throw spec parameter to
7315         start_function.
7316         * rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
7317         to start_function.
7318         * parse.y (datadef): Remove non-winning optimization.
7319         (decl): Likewise.
7320         (fndef): Remove ambiguous error productions uncovered by grammer
7321         fixing.
7322         (constructor_declarator): Add exception_specification_opt here.
7323         (component_constructor_declarator): Likewise.
7324         (direct_after_type_declarator): Likewise.
7325         (complex_direct_notype_declarator): Likewise.
7326         (direct_abstract_declarator): Likewise.
7327         (fn.def1): Remove exception_specification_opt.
7328         (fn.def2): Likewise.
7329         (condition): Likewise.
7330         (initdcl0): Likewise.
7331         (initdcl): Likewise.
7332         (notype_initdcl0): Likewise.
7333         (nomods_initdcl0): Likewise.
7334         (component_decl_1): Likewise.
7335         (component_declarator): Likewise.
7336         (after_type_component_declarator0): Likewise.
7337         (after_type_component_declarator): Likewise.
7338         (notype_component_declarator): Likewise.
7339
7340 Wed Aug 28 01:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
7341
7342         * call.c (build_over_call): Also use an INIT_EXPR when
7343         initializing anything from an rvalue.
7344
7345         * call.c (build_over_call): Call stabilize_reference when building
7346         an INIT_EXPR instead of calling the copy ctor.
7347
7348         * call.c (joust): Extend the previous change to all comparisons.
7349
7350         * decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and 
7351         NO_LINKAGE_HEURISTICS.
7352
7353         * decl2.c (finish_file): Emit any statics that weren't already.
7354
7355         * typeck.c (build_static_cast): Implement.
7356         * tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
7357         * decl.c (grokparms): Use can_convert_arg instead of
7358         implicit_conversion directly.
7359         (copy_args_p): New fn.
7360         * cvt.c (convert_to_reference): Don't complain about temp with
7361         static_cast.
7362         (build_up_reference): Handle TARGET_EXPRs.
7363         * call.c (build_over_call): Elide unnecessary temps.
7364         (can_convert*): Use new overloading code.
7365
7366 Tue Aug 27 13:12:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
7367
7368         * call.c: Move TYPE_PTR*_MACROS ...
7369         * cp-tree.h: To here.
7370         * typeck.c (build_reinterpret_cast): Implement.
7371
7372         * call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
7373         ptr_complete_ob.
7374         (joust): If we're comparing a function to a builtin and the worst
7375         conversion for the builtin is worse than the worst conversion for the
7376         function, take the function.
7377
7378         * typeck.c (build_const_cast): Implement.
7379         (comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
7380         (comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
7381
7382 Tue Aug 27 13:14:58 1996  Bob Manson  <manson@charmed.cygnus.com>
7383
7384         * rtti.c (build_dynamic_cast): Don't try to dereference exprtype
7385         too early. Make sure we explode if exprtype turns out to be a
7386         NULL_TREE when it shouldn't be.
7387
7388 Tue Aug 27 10:56:21 1996  Mike Stump  <mrs@cygnus.com>
7389
7390         * cp-tree.h: New routine make_call_declarator.
7391         * lex.c (make_call_declarator): Define it.
7392         * except.c (init_exception_processing): Use it.
7393         (expand_builtin_throw): Likewise.
7394         (start_anon_func): Likewise.
7395         * decl2.c (finish_file): Likewise.
7396         * lex.c (cons_up_default_function): Likewise.
7397         * parse.y: Likewise.
7398         * pt.c (tsubst): Likewise.
7399         
7400 Mon Aug 26 17:40:03 1996  Mike Stump  <mrs@cygnus.com>
7401
7402         * decl2.c (groktypefield): Remove unused code.
7403
7404 Mon Aug 26 17:00:33 1996  Mike Stump  <mrs@cygnus.com>
7405
7406         * gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
7407         * parse.y: Likewise.  Change maybe_type_qual into maybe_cv_qualifier.
7408         Change type_quals into cv_qualifiers.  Change nonempty_type_quals into
7409         nonempty_cv_qualifiers.
7410         * hash.h: Rebuild.
7411         
7412         * lex.c (make_pointer_declarator): Change type_quals into
7413         cv_qualifiers.
7414         (make_reference_declarator): Likewise.
7415         
7416 Thu Aug 22 01:09:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
7417
7418         * decl.c (start_function): Only check interface_* for templates
7419         with flag_alt_external_templates.
7420
7421         * call.c (build_new_op): Check for comparison of different enum types.
7422         (build_over_call): Fix arg # output.
7423
7424         * typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
7425
7426 Wed Aug 21 00:13:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
7427
7428         * call.c (build_new_op): Check for erroneous args.
7429
7430         * call.c (build_new_method_call): Add missing args to cp_error.
7431
7432         * tree.c (error_type): Dont print reference-to-array.
7433
7434         * typeck.c (convert_for_assignment): Don't say contravariance for
7435         removing const.
7436
7437 Tue Aug 20 13:23:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
7438
7439         * call.c (build_over_call): Diagnose bad convs for `this'.
7440
7441         * lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
7442         on _ctor_arg.
7443
7444         * call.c (convert_like): Handle bad convs.
7445         (build_over_call): Handle bad convs better.
7446
7447         * decl2.c: -fansi-overloading is now the default.
7448
7449         * call.c (build_new_method_call): Check for erroneous args.
7450
7451         * pt.c (instantiate_class_template): Propagate
7452         TYPE_USES_MULTIPLE_INHERITANCE.
7453
7454 Tue Aug 20 13:09:57 1996  Mike Stump  <mrs@cygnus.com>
7455
7456         * call.c (enforce_access): Add static to routine.
7457
7458 Sun Aug 18 14:35:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
7459
7460         * call.c (build_user_type_conversion_1): Fix bad handling.
7461         (compare_ics): Likewise.
7462
7463 Sat Aug 17 21:54:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
7464
7465         * call.c (standard_conversion): Oops.
7466
7467 Sat Aug 17 16:28:11 1996  Geoffrey Noer  <noer@cygnus.com>
7468
7469         * g++.c: Update test for win32 (&& ! cygwin32).
7470
7471 Sat Aug 17 03:45:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
7472
7473         * typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
7474         (ptr_reasonably_similar): New fn.
7475         * call.c (BAD_RANK): New rank.
7476         (ICS_BAD_FLAG): New macro.
7477         (standard_conversion): Handle almost-right pointer conversions.
7478         (reference_binding): Handle bad rvalue bindings.
7479         (add_*_candidate): Stuff.
7480         (build_over_call): Pass bad conversions to convert_for_initialization.
7481         (compare_ics): Handle bad convs.
7482         (joust): Likewise.
7483
7484 Fri Aug 16 15:02:19 1996  Bob Manson  <manson@charmed.cygnus.com>
7485
7486         * init.c (expand_vec_init): Use ptrdiff_type_node instead of
7487         integer_type_node when computing pointer offsets.
7488
7489 Fri Aug 16 01:28:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
7490
7491         * tree.c (lvalue_type): New fn.
7492         (error_type): New fn.
7493         * call.c (op_error): Use error_type.
7494         (add_conv_candidate): Use lvalue_type.
7495         (add_builtin_candidates): Likewise.
7496         * error.c (args_as_string): Use error_type.
7497
7498 Thu Aug 15 17:27:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
7499
7500         * pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
7501         (tsubst): Not here.
7502
7503         * decl.c (init_decl_processing): With -ansi, __null's type is the
7504         signed integral type with the same number of bits as a pointer.
7505         Introduce a new variable null_node for it.
7506         * cp-tree.h: Adjust.
7507         * call.c (null_ptr_cst_p): Adjust.
7508
7509 Thu Aug 15 17:09:54 1996  Mike Stump  <mrs@cygnus.com>
7510
7511         * except.c (do_unwind): Mark %i7 as used on the SPARC so we can
7512         optimize.
7513
7514 Thu Aug 15 01:36:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
7515
7516         * decl2.c (import_export_decl): Ignore #pragma interface for tinfo
7517         fns of classes without virtual functions.
7518
7519         * call.c (add_function_candidate): Handle `this' specially.
7520         (compare_ics): Likewise.
7521
7522 Tue Aug 13 12:16:10 1996  Jason Merrill  <jason@yorick.cygnus.com>
7523
7524         * typeck.c (build_conditional_expr): Fix handling of __null.
7525
7526         * decl2.c (comdat_linkage): New fn.
7527         (import_export_vtable): Use it.
7528         (import_export_decl): Use it.
7529         * method.c (make_thunk): Use it.
7530
7531 Mon Aug 12 00:09:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
7532
7533         * pt.c (end_template_decl): If we don't actually have parms, return.
7534         * parse.y (template_header): Accept 'template <>'.
7535
7536         * errfn.c: Allow 5 args.
7537
7538 Sun Aug 11 15:20:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
7539
7540         * tree.c (make_temp_vec): New fn.
7541         * pt.c (push_template_decl): Handle partial specs.
7542         (instantiate_class_template): Likewise.
7543         (more_specialized): Use get_bindings.
7544         (more_specialized_class): New fn.
7545         (get_class_bindings): New fn.
7546         (most_specialized_class): New fn.
7547         (do_function_instantiation): List candidates for ambiguous case.
7548         * decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
7549         (shadow_tag): Call push_template_decl for partial specializations.
7550         * parse.y: Likewise.
7551         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
7552         DECL_TEMPLATE_MEMBERS.
7553         * call.c (print_z_candidates): Reduce duplication.
7554
7555 Fri Aug  9 14:36:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
7556
7557         * decl2.c (lang_decode_option): Allow -fansi-overloading.
7558
7559 Thu Aug  8 17:04:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
7560
7561         * pt.c (get_bindings): New fn.
7562         (most_specialized): Likewise.
7563         (do_function_instantiation): Use them.
7564         (add_maybe_template): New fn.
7565         * cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
7566         * call.c (build_new_op): Handle guiding decls.
7567         (build_new_function_call): Likewise.
7568         * decl2.c (finish_file): Likewise.
7569
7570         * decl2.c (mark_used): Do synthesis here.
7571         * call.c (build_method_call): Not here.
7572         (build_over_call): Or here.
7573         * typeck.c (build_function_call_real): Or here.
7574         * tree.c (bot_manip): Call mark_used on functions used in default
7575         args.
7576
7577 Thu Aug  8 17:48:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
7578
7579         * decl2.c (import_export_vtable): Delete code that disabled vtable
7580         heuristic on systems with ASM_OUTPUT_EXTERNAL.
7581
7582 Wed Aug  7 12:44:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
7583
7584         * typeck.c (build_x_function_call): Handle static call context
7585         better.
7586
7587         * decl.c (finish_function): Set the DECL_CONTEXT of the result to
7588         the function, not its outer block.
7589
7590         * call.c (build_field_call): Pass fields on to build_opfncall
7591         regardless of TYPE_OVERLOADS_CALL_EXPR.
7592         (build_method_call): Pass on to build_new_method_call sooner.
7593
7594         * typeck.c (build_ptrmemfunc): Just return what instantiate_type
7595         gives us.
7596         * class.c (instantiate_type): Don't put a POINTER_TYPE to
7597         METHOD_TYPE on an expression.  Also make a copy of rhs instead of
7598         modifying it.
7599
7600 Tue Aug  6 12:58:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
7601
7602         * call.c (compare_ics): Handle qual_conv after lvalue_conv.
7603         (add_builtin_candidate): Don't take enums for ++.
7604         (build_new_method_call): Handle non-aggregates and field calls.
7605         Move new overloading code from...
7606         * cvt.c: Here.
7607
7608         * decl.c (grokparms): Don't check default args in templates.
7609
7610 Mon Aug  5 17:17:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
7611
7612         * cvt.c (build_new_op): Fix args to build_unary_op.
7613         (add_builtin_candidates): Don't call type_promotes_to on float.
7614
7615         * decl.c (grokparms): Check the type of the default arg.
7616
7617         * cvt.c (build_new_op): Pass non-overloaded cases on rather than
7618         returning NULL_TREE.
7619
7620         * typeck.c (build_x_binary_op): Avoid doing extra work.
7621         (build_x_unary_op): Likewise.
7622         (build_x_conditional_expr): Likewise.
7623         * cvt.c (build_over_call): Return.
7624         (add_builtin_candidate): Fix MEMBER_REF.
7625         (build_new_op): Likewise.
7626
7627 Mon Aug  5 17:07:47 1996  Mike Stump  <mrs@cygnus.com>
7628
7629         * method.c (build_overload_name): Put bug fix into code but leave
7630         disabled for now so we can be bug compatible with older releases
7631         that do repeats incorrectly.  In the future, we can enable it.
7632
7633 Mon Aug  5 13:46:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
7634
7635         * cvt.c (convert_like): Don't call build_cplus_new twice.
7636
7637         * call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
7638         Control new overloading code with -fansi-overloading.
7639
7640 Sun Aug  4 15:29:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
7641
7642         * cvt.c (build_over_call): Call build_cplus_new.
7643         * call.c (build_method_call): Likewise.
7644         * typeck.c (build_function_call_real): Likewise.
7645         (build_conditional_expr): If both operands are TARGET_EXPRs, wrap
7646         the COND_EXPR in a TARGET_EXPR so they use the same slot.
7647
7648         * cvt.c (build_up_reference): Propagate INDIRECT_BIND to 
7649         recursive calls.
7650         * typeck.c (complete_type): Propagate
7651         TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
7652
7653 Sat Aug  3 14:05:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
7654
7655         * cvt.c (joust): More ?: kludging.  Sigh.
7656         (build_over_call): Don't try to synthesize global fns.
7657
7658         * search.c (lookup_conversions): Use binfo marking.
7659
7660 Sat Aug  3 12:33:42 1996  Bob Manson  <manson@charmed.cygnus.com>
7661
7662         * search.c (build_mi_matrix): Use the correct value of cid
7663         when determining the new mi_size.
7664
7665 Sat Aug  3 01:27:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
7666
7667         * cvt.c (add_builtin_candidates): Do consider type conversion ops
7668         for the first parms of += et al.
7669         (strip_top_quals): New fn.
7670         (reference_binding): Use it instead of TYPE_MAIN_VARIANT.
7671         (implicit_conversion): Likewise.
7672         (add_builtin_candidates): Be careful about arrays.
7673         (build_new_method_call): Handle vtable optimization.
7674
7675 Fri Aug  2 01:26:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
7676
7677         * cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
7678         * cvt.c (reference_binding): Use it.
7679         (implicit_conversion): Use it.
7680         (add_builtin_candidate, COND_EXPR): Use it.
7681
7682         * cvt.c (build_new_function_call): Check for error args.
7683
7684         * typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
7685
7686         * gxx.gperf: Add __null.
7687         * hash.h: Regenerate.
7688         * lex.h: Add RID_NULL.
7689         * lex.c (init_lex): Create null_pointer_node here, stick it in
7690         RID_NULL.
7691         * decl.c (init_decl_processing): Still set its type here.
7692         * cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
7693         (convert_to_pointer_force): Likewise.
7694         (null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
7695         if (! pedantic).
7696         * call.c (convert_harshness): Use null_ptr_cst_p.
7697         * typeck.c (convert_for_assignment): Likewise.  Don't produce
7698         null_pointer_node.
7699
7700         * error.c (args_as_string): Handle lists of actual args, too.
7701         * cvt.c (null_ptr_cst): Support (void*)0 for now.
7702         (build_user_type_conversion_1): Improve diagnostics.
7703         (build_new_function_call): Likewise.
7704         (build_object_call): Likewise.
7705         (build_new_method_call): Likewise.  Move call before def diagnostic...
7706         (build_over_call): Here.
7707
7708         * cvt.c (build_new_method_call): Don't complain about no match if
7709         LOOKUP_SPECULATIVELY.
7710         (build_over_call): Fix 'this' for virtual fn.
7711         (build_new_method_call): Add diagnostic.
7712
7713 Thu Aug  1 16:45:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
7714
7715         * cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
7716         constructors to be passed in.
7717         (build_over_call): Likewise.
7718         (build_user_type_conversion_1): Pass them in.
7719         (convert_like): Likewise.
7720         (build_object_call): Handle overloaded conversions.
7721         (build_over_call): Pass the right args to build_vfn_ref.
7722         (standard_conversion): Fix pmf convs.
7723         (joust): Handle comparing statics and non-statics.
7724         (build_new_method_call): New fn.
7725         * call.c (build_method_call): Call it if NEW_OVER.
7726
7727 Thu Aug  1 16:06:14 1996  Mike Stump  <mrs@cygnus.com>
7728
7729         * lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
7730         %D instead.
7731
7732 Thu Aug  1 15:24:02 1996  Mike Stump  <mrs@cygnus.com>
7733
7734         * except.c (expand_throw): Use maybe_build_cleanup_and_delete
7735         instead of just maybe_build_cleanup so that we deallocate the
7736         thrown object.
7737
7738 Thu Aug  1 15:18:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7739
7740         * decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
7741         * cp-tree.h (finish_prevtable_vardecl): Add decl.
7742
7743 Thu Aug  1 11:53:51 1996  Bob Manson  <manson@charmed.cygnus.com>
7744
7745         * pt.c (instantiate_class_template): Call complete_type. Also, if
7746         we're at the end of the file and we just instantiated a template
7747         class with a vtable, call finish_prevtable_vardecl.
7748
7749         * error.c (dump_decl): Don't explode (or explode more gracefully
7750         as appropriate) if the object being dumped has a null type.
7751         (dump_expr): Likewise.
7752
7753         * search.c (build_mi_matrix): Ensure that mi_size is large enough,
7754         by counting the number of nodes that we'll need before allocating
7755         the array.
7756         (lookup_fnfields): Fix comment.
7757         (breadth_first_search): Fix comment.
7758
7759 Wed Jul 31 09:57:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
7760
7761         * pt.c (instantiate_class_template): Propagate TYPE_PACKED and
7762         TYPE_ALIGN.
7763         * class.c (finish_struct): Call cplus_decl_attributes here.
7764         (finish_struct_1): Not here.
7765         * cp-tree.h: Adjust.
7766
7767         * pt.c (type_unification): New parameter STRICT.
7768         (unify): If STRICT, don't allow cv addition or base deduction.
7769         * call.c, class.c, cvt.c, cp-tree.h: Adjust.
7770
7771 Tue Jul 30 13:06:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
7772
7773         * search.c (get_template_base{_recursive}): New fns.
7774         * pt.c (more_specialized): New fn.
7775         (do_function_instantiation): Use it.
7776         (unify): Handle base deduction.
7777         * cvt.c (joust): Use more_specialized.
7778         Don't arbitrarily choose between non-builtin candidates.
7779         (build_over_call): Call require_complete_type.
7780
7781         * decl.c (start_function): Statics are static even in a #pragma
7782         interface file.
7783
7784         * decl2.c (import_export_vtable): Disable vtable heuristic on
7785         systems with ASM_OUTPUT_EXTERNAL.
7786
7787         * cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
7788         (standard_conversion): No std conv to enum type.
7789
7790         * cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
7791         for ptm's.
7792
7793         * cvt.c (reference_binding): Bind directly to a base subobject of
7794         a class rvalue.
7795
7796         * cvt.c (build_new_op): Enforce access control.
7797
7798 Tue Jul 30 09:22:53 1996  Bob Manson  <manson@charmed.cygnus.com>
7799
7800         * typeck2.c (process_init_constructor): When scanning the
7801         union for a named field, skip things that aren't FIELD_DECLs.
7802
7803         * method.c (synthesize_method): Don't scan fndecl's rtl if
7804         we're at the end of the file; just assume the function can't
7805         be inlined.
7806
7807 Mon Jul 29 15:48:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
7808
7809         * cvt.c (build_builtin_candidate): Stick a dummy conversion in if
7810         it failed.
7811
7812         * cvt.c (build_user_type_conversion_1): Handle overloaded
7813         conversion ops.
7814
7815         * cvt.c (add_builtin_candidates): Don't consider type conversion
7816         operators for the first parameter of operator=.
7817
7818 Mon Jul 29 15:33:55 1996  Bob Manson  <manson@charmed.cygnus.com>
7819
7820         * typeck.c (complete_type): Only call layout_type if we're not
7821         expanding a template.
7822
7823 Mon Jul 29 14:40:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
7824
7825         * cvt.c (compare_ics): Oops.
7826
7827         * cvt.c (op_error): Oops.
7828
7829         * cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
7830         * cvt.c: Add IDENTITY_RANK before others.  Use real_lvalue_p.
7831         (build_conv): Use them.
7832         (implicit_conversion): Use them.
7833         (convert_like): Handle them.
7834         (build_new_op): Handle builtin COND_EXPR again.
7835         (add_builtin_candidates): Strip cv-quals.  Fix oops.  Include enums
7836         in lists of types for COND_EXPR.
7837         (add_builtin_candidate): Add enum candidates for COND_EXPR.
7838
7839 Mon Jul 29 12:05:40 1996  Bob Manson  <manson@charmed.cygnus.com>
7840
7841         * typeck.c (build_modify_expr): Always attempt to build a call to
7842         the assignment operator, even if we're using a default one.
7843         (convert_for_initialization): Call complete_type.
7844
7845 Mon Jul 29 11:25:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
7846
7847         * cvt.c (reference_binding): A REF_BIND gets the reference type.
7848         (implicit_conversion): Likewise.
7849         (convert_like): Likewise.
7850         (compare_ics): Likewise.
7851         (compare_qual): Likewise.
7852         (print_z_candidates): Handle no candidates.
7853         (build_new_op): Don't handle builtin COND_EXPR for now.
7854
7855 Sat Jul 27 11:27:47 1996  Stan Shebs  <shebs@andros.cygnus.com>
7856
7857         * cvt.c (build_builtin_candidate): Init local var in an ANSI way.
7858
7859 Fri Jul 26 01:07:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
7860
7861         * cvt.c (joust): If the candidates are the same, arbitrarily pick one.
7862
7863         * cvt.c (build_builtin_candidate): Oops.
7864         (build_new_op): Oops.
7865
7866         * method.c (build_opfncall): Pass COND_EXPR on.
7867         * cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
7868         (add_builtin_candidate{,s}): Likewise.
7869         (add_builtin_candidates): Likewise.
7870         (print_z_candidates, op_error, build_new_op): Likewise.
7871         (type_decays_to): New fn.
7872         * lex.c (init_lex): Just say ?: for COND_EXPR.
7873
7874 Thu Jul 25 09:33:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
7875
7876         * typeck.c (complete_type): Call layout_type rather than building
7877         a new array type.
7878
7879         * cvt.c (add_builtin_candidate): Pointer arithmetic candidates
7880         only use ptrdiff_t.
7881
7882 Wed Jul 24 12:45:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
7883
7884         * cvt.c: Always compile the new overloading code (but don't use it).
7885         (implicit_conversion): Add a BASE_CONV when converting to
7886         the same class type.
7887         (convert_like): Handle BASE_CONV.
7888
7889 Tue Jul 23 12:46:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
7890
7891         * cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
7892         (add_builtin_candidate): Likewise.
7893
7894         NEW_OVER changes:
7895         * typeck.c (build_x_function_call): Try an operator function
7896         whenever we call an object of class type.
7897         * method.c (build_opfncall): Pass CALL_EXPRs through.
7898         * cvt.c (implicit_conversion): Do const-ref case first.
7899         (add_conv_candidate, build_object_call, op_error): New fns.
7900         (ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
7901         ({add,build}_builtin_candidate{,s}, print_z_candidates): Display 
7902         builtin candidates.
7903         (build_new_op): Handle CALL_EXPR.  Don't try to decay void.
7904         Fall back on preincrement handling.  Use op_error.  
7905         Handle warn_synth.
7906         (convert_like): Pass INDIRECT_BIND.  Don't try to do anything with 
7907         an error_mark_node.
7908         (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
7909         properly.
7910
7911 Mon Jul 22 16:21:55 1996  Bob Manson  <manson@charmed.cygnus.com>
7912
7913         * pt.c (tsubst_expr): Handle CONTINUE_STMT.
7914
7915 Mon Jul 22 15:38:58 1996  Mike Stump  <mrs@cygnus.com>
7916
7917         * typeck.c (build_component_ref_1): Use build_component_ref
7918         instead of open coding it here.
7919
7920 Mon Jul 22 12:18:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
7921
7922         * g++.c (main): Don't link with -lg++.
7923
7924         NEW_OVER changes:
7925         * cvt.c (convert_to_reference): Don't use convert_from_refeence on
7926         result of build_type_conversion.
7927         (cp_convert): Only call build_method_call for ctors if
7928         build_type_conversion failed.
7929         (ptr_complete_ob): New function.
7930         (TYPE_PTR{,OB,MEM}_P): New macros.
7931         ({add,build}_builtin_candidate{,s}): New functions.
7932         (print_z_candidates): Handle builtins.
7933         (build_user_type_conversion_1): Don't use conversion fns for 
7934         converting to a base type.
7935         (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
7936         (build_user_type_conversion): Use convert_from_reference.
7937         (build_new_op): New function.
7938         (build_over_call): Fix handling of methods.
7939         (compare_ics): Handle AMBIG_CONV properly.
7940         * typeck2.c: Increment abort count.
7941         * method.c (build_opfncall): Forward most requests to build_new_op.
7942         * cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
7943
7944 Fri Jul 19 17:59:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7945
7946         * error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
7947         invalid second argument to dump_expr_list.
7948
7949 Fri Jul 19 14:04:05 1996  Mike Stump  <mrs@cygnus.com>
7950
7951         * decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
7952
7953 Thu Jul 18 14:48:23 1996  Bob Manson  <manson@charmed.cygnus.com>
7954
7955         * decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
7956         ASSEMBLE_EXTERNAL.
7957
7958 Mon Jul 15 17:48:43 1996  Mike Stump  <mrs@cygnus.com>
7959
7960         * typeck2.c (process_init_constructor): New pedwarn for using { }
7961         to initialize a pointer to member function.
7962         * typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
7963         we can avoid the new error.
7964
7965 Mon Jul 15 15:42:03 1996  Mike Stump  <mrs@cygnus.com>
7966
7967         * typeck.c (build_ptrmemfunc1): New function to hide details of
7968         pointer to member functions better.
7969
7970 Mon Jul 15 14:23:02 1996  Mike Stump  <mrs@cygnus.com>
7971
7972         * init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
7973         methods into the actual method, as we know the implied object is
7974         not used.
7975
7976 Mon Jul 15 13:08:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7977
7978         * parse.y (maybecomma_warn): Only emit the pedwarn if we're not
7979         inside a system header.
7980
7981 Fri Jul 12 16:30:05 1996  Bob Manson  <manson@charmed.cygnus.com>
7982
7983         * call.c (build_method_call): Call complete_type on the
7984         instance type.
7985
7986 Thu Jul 11 17:16:40 1996  Mike Stump  <mrs@cygnus.com>
7987
7988         * typeck.c (build_component_ref): Always build up an OFFSET_REF
7989         for obj_ptr->func so that we can know which object to use in a
7990         method call.
7991
7992 Wed Jul 10 19:36:37 1996  Mike Stump  <mrs@cygnus.com>
7993
7994         * typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
7995         around things.  Also improve maintainability.
7996
7997 Wed Jul 10 18:20:11 1996  Bob Manson  <manson@charmed.cygnus.com>
7998
7999         * decl.c (grokdeclarator): Check for overflow when evaluating an
8000         array dimension.
8001
8002 Wed Jul 10 17:26:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
8003
8004         * cvt.c (cp_convert): Don't check for ambiguity with constructor
8005         if NEW_OVER.
8006
8007         * typeck.c (build_x_function_call): Pass function overload
8008         questions to new overloading code if NEW_OVER.
8009         * init.c (expand_aggr_init_1): Only check for type conversion ops
8010         if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
8011         Don't check for ambiguity with constructor if NEW_OVER.
8012         * cvt.c (convert_to_reference): Dereference the result of a type
8013         conversion operator.
8014         (build_conv): Propagate ICS_USER_FLAG.
8015         (implicit_conversion): Call instantiate_type.
8016         Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
8017         (add_function_candidate): Fix cv-quals on argtype.
8018         (print_z_candidates): New function.
8019         (build_new_function_call): Call it.
8020         (build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
8021         consider non-converting constructors.
8022         Call print_z_candidates.
8023         Return an AMBIG_CONV for an ambiguous conversion.
8024         (build_user_type_conversion): Handle AMBIG_CONV.
8025         (convert_like): Fix test for building TARGET_EXPR.
8026         Call instantiate_type.
8027         Handle AMBIG_CONV and LVALUE_CONV.
8028         (build_over_call): Handle 0 args and ellipsis.
8029         * cp-tree.def: Add AMBIG_CONV.
8030
8031 Tue Jul  9 17:48:48 1996  Mike Stump  <mrs@cygnus.com>
8032
8033         * decl.c (lookup_name_real): If we find mem in obj when parsing
8034         `obj->mem', make sure we return the right value.
8035
8036 Tue Jul  9 16:11:28 1996  Bob Manson  <manson@charmed.cygnus.com>
8037
8038         * search.c (get_base_distance): Call complete_type.
8039
8040 Tue Jul  9 12:46:34 1996  Mike Stump  <mrs@cygnus.com>
8041
8042         * decl.c (store_bindings): Make static.
8043
8044 Mon Jul  8 16:42:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
8045
8046         * init.c (expand_aggr_init_1): Don't check type conversions if
8047         NEW_OVER.
8048
8049         * cvt.c (z_candidate): Put back template field.
8050         (add_function_candidate): Set it.
8051         (add_template_candidate): Likewise.
8052         (joust): Use it.
8053         (compare_qual): Handle references and pointers to members.
8054         (compare_ics): Handle reference bindings.
8055
8056         * decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
8057
8058 Mon Jul  8 16:18:56 1996  Bob Manson  <manson@charmed.cygnus.com>
8059
8060         * call.c (compute_conversion_costs): Call complete_type.
8061
8062         * tree.c (vec_binfo_member): Use comptypes instead of comparing
8063         pointers, so we can handle template parameters.
8064
8065 Fri Jul  5 16:51:53 1996  Bob Manson  <manson@charmed.cygnus.com>
8066
8067         * cvt.c (cp_convert_to_pointer): We have to call complete_type
8068         here; let's make it explicit instead of a side effect of an
8069         error check.
8070
8071 Wed Jul  3 16:29:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
8072
8073         * cvt.c (z_candidate): Remove template field.
8074         (reference_binding): Handle binding to temporary.
8075         (implicit_conversion): Likewise.
8076         (add_function_candidate): Handle artificial constructor parms.
8077         Handle functions with too few parms.
8078         (add_template_candidate): New function.
8079         (build_user_type_conversion_1): Handle constructors.
8080         (convert_like): Likewise.
8081         (build_over_call): Likewise.
8082         (build_new_function_call): Support templates.
8083         (compare_ics): Fix reference, inheritance handling.
8084
8085 Mon Jul  1 22:58:18 1996  Bob Manson  <manson@charmed.cygnus.com>
8086
8087         * decl.c: Add signed_size_zero_node.
8088         (init_decl_processing): Build it.
8089         * class.c (prepare_fresh_vtable): Use it instead of size_zero_node
8090         when we're trying to make a negative delta.
8091
8092 Mon Jul  1 17:56:19 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8093
8094         Stop doing this damn index==strchr variable name confusion.
8095         * class.c (add_virtual_function): Change local var INDEX to be
8096         named IDX.
8097         (add_method): Likewise.
8098         * lex.c (print_parse_statistics): Likewise.
8099         * search.c (make_memoized_table_entry): Likewise.
8100         (lookup_fnfields_here): Likewise.
8101         (lookup_field): Likewise.
8102         (lookup_fnfields): Likewise.
8103         (get_baselinks): Likewise.
8104         * sig.c (build_signature_table_constructor): Likewise.
8105         (build_signature_method_call): Likewise.
8106         * typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
8107         (get_member_function_from_ptrfunc): Likewise.
8108         (build_ptrmemfunc): Change local var INDEX to be IDX.
8109         (c_expand_start_case): Likewise.
8110
8111 Sat Jun 29 14:05:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
8112
8113         * cvt.c (cp_convert_to_pointer): Move user-defined type conversion
8114         handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
8115         (convert_to_reference): Use build_type_conversion to convert to
8116         the reference type directly.
8117         (standard_conversion): Fix void* case, non-conversions.
8118         (reference_binding): Fix expr == 0 case, non-conversions.
8119         (convert_like): Support REF_BIND.
8120         (compare_qual): Split out from compare_ics.
8121         (compare_ics): Use it, handle icses with only a qual_conv.
8122
8123         * init.c (expand_vec_init): Don't crash if decl is NULL.
8124
8125 Fri Jun 28 11:52:51 1996  Stan Shebs  <shebs@andros.cygnus.com>
8126
8127         * mpw-config.in: New file, configury for Mac MPW.
8128         * mpw-make.sed: New file, makefile editing for MPW.
8129
8130 Thu Jun 27 15:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
8131
8132         * pt.c (instantiate_class_template): Call repo_template_used.
8133
8134         * search.c (lookup_conversions): Only lookup conversions in
8135         complete types.
8136
8137 Thu Jun 27 12:59:53 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8138
8139         * cp-tree.def: Renamed from tree.def, to avoid confusion with
8140         gcc's tree.def.
8141         * cp-tree.h, lex.c: Include cp-tree.def.
8142         * Makefile.in (CXX_TREE_H): Reference cp-tree.def.
8143
8144 Wed Jun 26 18:29:47 1996  Bob Manson  <manson@charmed.cygnus.com>
8145
8146         * init.c (build_vec_delete_1): Call complete_type.
8147
8148 Mon Jun 24 17:17:32 1996  Mike Stump  <mrs@cygnus.com>
8149
8150         * except.c (start_anon_func): Make sure anonymous functions are
8151         never external.
8152
8153 Fri Jun 21 15:10:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
8154
8155         * decl.c (finish_function): If function_depth > 1, set nested.
8156
8157         * decl2.c (grokbitfield): Revert Bob's change.
8158         * class.c (finish_struct_1): Fix handling of named bitfield widths.
8159
8160 Thu Jun 20 23:35:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
8161
8162         * pt.c (add_pending_template): Handle types.
8163         (lookup_template_class): With -fexternal-templates, just add the class
8164         to pending_templates instead of instantiating it now.
8165         * decl2.c (finish_file): Handle types in pending_templates.
8166
8167 Thu Jun 20 14:08:40 1996  Bob Manson  <manson@charmed.cygnus.com>
8168
8169         * decl2.c (grokbitfield): Handle constant decls appropriately.
8170         Give an appropriate error message now instead of spewing core
8171         later.
8172
8173 Thu Jun 20 13:01:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
8174
8175         * decl2.c: Don't turn on thunks by default for now.
8176
8177 Wed Jun 19 11:37:04 1996  Jason Merrill  <jason@yorick.cygnus.com>
8178
8179         * typeck.c (complete_type): Handle error_mark_node.
8180         (common_type, OFFSET_TYPE): Handle template_type_parms.
8181
8182 Tue Jun 18 10:02:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
8183
8184         * pt.c (instantiate_decl): If at_eof, call import_export_decl
8185         regardless of DECL_INLINE.
8186
8187         * typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
8188
8189         * class.c (finish_struct_bits): Copy TYPE_SIZE.
8190
8191         * rtti.c (build_dynamic_cast): Support templates.
8192         * tree.def: Support DYNAMIC_CAST_EXPR.
8193         * pt.c (tsubst_copy): Likewise.
8194         * decl2.c (build_expr_from_tree): Likewise.
8195
8196 Mon Jun 17 15:23:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
8197
8198         * typeck.c (build_static_cast): Support templates.
8199         (build_const_cast): Likewise.
8200         * tree.def: Support CONST/STATIC_CAST_EXPR.
8201         * pt.c (tsubst_copy): Likewise.
8202         * decl2.c (build_expr_from_tree): Likewise.
8203
8204 Sun Jun 16 12:33:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
8205
8206         * decl2.c (finish_vtable_vardecl): Don't trust
8207         TREE_SYMBOL_REFERENCED for vtables of local classes.
8208
8209 Fri Jun 14 18:13:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
8210
8211         * pt.c (tsubst_copy): Handle operator T.
8212
8213 Wed Jun 12 17:52:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8214
8215         * init.c (build_delete): Move creation of PARMS inside test of
8216         TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
8217
8218 Tue Jun 11 15:09:18 1996  Bob Manson  <manson@charmed.cygnus.com>
8219
8220         * typeck.c (build_conditional_expr): Don't assume that
8221         the arguments to ?: are always pointers or records.
8222
8223 Tue Jun 11 13:56:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
8224
8225         * decl2.c (import_export_decl): Still emit static/weak/comdat
8226         copies of inline template functions with -fno-implicit-templates.
8227
8228 Tue Jun 11 11:42:13 1996  Bob Manson  <manson@charmed.cygnus.com>
8229
8230         * init.c (build_delete): Determine the complete basetype
8231         path to the destructor we're calling.
8232
8233 Fri Jun  7 15:30:10 1996  Bob Manson  <manson@charmed.cygnus.com>
8234
8235         * decl.c (build_enumerator): Always copy the INTEGER_CST used to
8236         initialize the enum, because we really and truly don't know where
8237         it came from.
8238         (start_enum): Don't copy integer_zero_node because
8239         build_enumerator will do it.
8240
8241 Fri Jun  7 11:11:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8242
8243         * decl.c (finish_function): Do access control on base destructors.
8244
8245         * pt.c (tsubst, case FUNCTION_DECL): Set up
8246         IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
8247         hose us.
8248
8249 Fri Jun  7 10:37:33 1996  Mike Stump  <mrs@cygnus.com>
8250
8251         * cvt.c (build_up_reference): If we have already extended the
8252         lifetime of the temporary, don't try it again.
8253         * typeck.c (c_expand_return): Don't try and convert the return
8254         value twice when we want a reference, once is enough.
8255         
8256 Tue Jun  4 15:41:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
8257
8258         * pt.c (tsubst_expr, case DECL_STMT): Don't pass
8259         LOOKUP_ONLYCONVERTING at all for now.
8260
8261         * search.c (add_conversions): Put the conversion function in
8262         TREE_VALUE, the basetype in TREE_PURPOSE.
8263         * cvt.c (build_type_conversion): Adjust.
8264         * cvt.c (build_expr_type_conversion): Adjust.
8265         * call.c (user_harshness): Adjust.
8266
8267 Mon Jun  3 15:30:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
8268
8269         * method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
8270         backend's benefit.
8271
8272 Mon Jun 10 18:58:19 1996  Mike Stump  <mrs@cygnus.com>
8273
8274         * except.c (expand_start_catch_block): Add a dummy region, if we
8275         get an error, so that we can avoid core dumping later.
8276
8277 Fri May 31 14:56:13 1996  Mike Stump  <mrs@cygnus.com>
8278
8279         * cp-tree.h (OFFSET_REF): Remove.
8280         * tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
8281         * expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
8282         * init.c (expand_aggr_init_1): Likewise.
8283         (build_new): Likewise.
8284         * typeck.c (expand_target_expr): Likewise.
8285
8286 Fri May 31 14:22:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
8287
8288         * typeck.c (build_modify_expr): Don't use TREE_VALUE on a
8289         TARGET_EXPR.
8290
8291 Wed May 29 17:04:33 1996  Mike Stump  <mrs@cygnus.com>
8292
8293         * cvt.c (build_up_reference): Redo how and when temporaries are
8294         created.
8295         * decl.c (grok_reference_init): Don't try and be smart about
8296         running cleanups.
8297
8298 Wed May 29 16:02:08 1996  Mike Stump  <mrs@cygnus.com>
8299
8300         * cvt.c (build_up_reference): Add NULL_TREE to all calls to build
8301         (TARGET_EXPR...), now that it has 4 arguments.
8302         * tree.c (build_cplus_new): Likewise.
8303
8304 Thu May 23 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
8305
8306         * error.c (dump_expr, case CAST_EXPR): Handle T() properly.
8307
8308         * pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
8309         * decl.c (struct saved_scope): Remove named_labels,
8310         {base,member}_init_list.
8311         (maybe_push_to_top_level): Don't set them.  Call
8312         push_cp_function_context if appropriate.
8313         (pop_from_top_level): Likewise.
8314
8315         * method.c (do_build_assign_ref): Remove obsolete check of
8316         TYPE_HAS_ASSIGN_REF (basetype).
8317
8318         * decl.c (grokfndecl): Diagnose user definition of
8319         implicitly-declared methods.
8320
8321 Thu May 23 12:13:08 1996  Bob Manson  <manson@charmed.cygnus.com>
8322
8323         * method.c (do_build_copy_constructor): Add code to give
8324         meaningful error messages instead of crashing.
8325         (do_build_assign_ref): Don't synthesize assignment operators for
8326         classes containing reference or const members.
8327
8328         * class.c (struct base_info): Remove cant_synth_copy_ctor
8329         and cant_synth_asn_ref.
8330         (finish_base_struct): Remove the code that tries to conditionalize
8331         synthesis of copy constructors & assignment operators based on
8332         access permissions. Instead, let it fail when it tries to
8333         synthesize the copy constructor. This will give meaningful error
8334         messages instead of silently generating code to perform a bitcopy.
8335
8336 Wed May 22 11:45:19 1996  Bob Manson  <manson@charmed.cygnus.com>
8337
8338         * lex.c (real_yylex): Remove old-n-crufty #if 0 code for
8339         determining types for constant values.
8340
8341         * decl.c (struct named_label_list): Use instead of stuffing
8342         random items into a TREE_LIST node.
8343         (named_label_uses): Use the new struct.
8344         (poplevel): Likewise.
8345         (lookup_label): Likewise.
8346         (define_label): Add an error message to tell the user the line
8347         where the goto is located in addition to the destination of the
8348         goto.
8349         (init_decl_processing): Use NULL instead of NULL_TREE to initialize
8350         named_label_uses.
8351         (finish_function): Likewise.
8352         
8353         (start_decl): Complain about defining a static data member
8354         in a different type from which it was declared.
8355
8356 Wed May 22 09:33:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
8357
8358         * cvt.c (build_expr_type_conversion): Adjust.
8359
8360 Tue May 21 11:21:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
8361
8362         * call.c (build_method_call): Always convert 'this' to the
8363         appropriate type.
8364
8365         * search.c (add_conversions): Put the conversion function in
8366         TREE_VALUE, the type in TREE_PURPOSE.
8367         * cvt.c (build_type_conversion): Adjust.
8368         * call.c (user_harshness): Adjust.
8369
8370         * method.c (emit_thunk): Call temporary_allocation and
8371         permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
8372
8373         * tree.c (build_cplus_array_type): Handle tweaking of
8374         TYPE_MAIN_VARIANT here.
8375         * typeck.c (common_type): Not here.
8376
8377         * typeck.c (complete_type): Only try to complete an array type if
8378         it has a domain.
8379
8380 Mon May 20 14:55:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
8381
8382         * decl.c (grokvardecl): Call complete_type.
8383         (grokdeclarator): Call complete_type for PARM_DECLs.
8384
8385 Fri May 17 16:41:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8386
8387         * pt.c (instantiate_class_template): Re-set
8388         CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
8389
8390 Fri May 17 14:56:55 1996  Mike Stump  <mrs@cygnus.com>
8391
8392         * cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
8393         smart enough to do it right.
8394         * tree.c (cp_expand_decl_cleanup): Likewise.
8395         * decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
8396         cp_expand_decl_cleanup.
8397         (store_parm_decls): Likewise.
8398         (hack_incomplete_structures): Likewise.
8399         * except.c (push_eh_cleanup): Likewise.
8400
8401 Fri May 17 13:13:51 1996  Mike Stump  <mrs@cygnus.com>
8402
8403         * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
8404         frontend to the backend where it belongs.
8405         * tree.c (unsave_expr): Likewise.
8406         (unsave_expr_now): Likewise.
8407         * tree.def (UNSAVE_EXPR): Likewise.
8408         * cp-tree.h (unsave_expr): Likewise.
8409         (unsave_expr_now): Likewise.
8410
8411 Fri May 17 11:02:41 1996  Mike Stump  <mrs@cygnus.com>
8412
8413         * init.c (emit_base_init): Make sure the partial EH cleanups live
8414         on the function_obstack.
8415
8416 Thu May 16 15:29:33 1996  Bob Manson  <manson@charmed.cygnus.com>
8417
8418         * expr.c (do_case): Don't try to dereference null TREE_TYPEs
8419         when checking for pointer types.
8420
8421 Thu May 16 13:38:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
8422
8423         * pt.c (instantiate_class_template): Remove obsolete check for
8424         access declarations.
8425
8426 Thu May 16 13:34:15 1996  Mike Stump  <mrs@cygnus.com>
8427
8428         * call.c (build_overload_call): Simplify calls to
8429         build_overload_call by removing last parameter.
8430         (build_method_call): Likewise.
8431         * cp-tree.h: Likewise.
8432         * method.c (build_opfncall): Likewise.
8433         * typeck.c (build_x_function_call): Likewise.
8434
8435 Thu May 16 13:15:43 1996  Mike Stump  <mrs@cygnus.com>
8436
8437         * call.c (default_parm_conversions): Factor out common code.
8438         (build_method_call): Use it.
8439         (build_overload_call_real): Use it.
8440
8441 Wed May 15 14:46:14 1996  Mike Stump  <mrs@cygnus.com>
8442
8443         * call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
8444         but pedwarn as the code is bogus.
8445         * typeck.c (decay_conversion): Likewise.
8446         (build_function_call_real): Use build_addr_func instead of
8447         default_conversion.  Don't allow pointer-to-method functions down
8448         here.
8449         (build_unary_op): Use real pointer-to-member functions instead of
8450         fake ones.
8451         (build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
8452         (convert_for_assignment): Removed some obsolete code.
8453         * decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
8454         build_x_function_call instead of current_class_ptr.  Only call
8455         digest_init once on an initializer, we do this just checking
8456         TREE_TYPE.
8457         (build_expr_from_tree): Pass current_class_ref to
8458         build_x_function_call instead of current_class_ptr.
8459         * init.c (build_member_call): Likewise.
8460         * pase.y: Likewise.
8461         * error.c (dump_expr): Handle OFFSET_REFs better.
8462         * pt.c (unify): Handle pointer-to-member functions better.
8463         * decl.c (finish_function): Clear out current_class_ref just like
8464         we do for current_class_ptr.
8465
8466         * typeck.c (get_delta_difference): Handle virtual bases better.
8467
8468 Tue May 14 16:37:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
8469
8470         * sig.c (build_signature_table_constructor): Use the delta for
8471         the original basetype for this virtual function with thunks.
8472         (build_signature_method_call): We still need to adjust 'this'
8473         with thunks.
8474
8475 Tue May 14 16:27:25 1996  Mike Stump  <mrs@cygnus.com>
8476
8477         * call.c (build_addr_func): New routine.  Used to get the `real'
8478         address of a function or a method.  Needed to avoid getting a
8479         pointer-to-member function.
8480         (build_call): New routine to build CALL_EXPRs.
8481         (build_method_call): Use it.
8482         * cvt.c (convert_to_aggr): Likewise.
8483         * typeck.c (build_function_call_real): Likewise.
8484         * sig.c (build_signature_table_constructor): Use build_addr_func.
8485         * cp-tree.h (build_call, build_addr_func): Declare them.
8486
8487 Tue May 14 12:47:47 1996  Mike Stump  <mrs@cygnus.com>
8488
8489         * cp-tree.h (LOOKUP_AGGR): Remove, unused.
8490         * parse.y: Remove uses of LOOKUP_AGGR.
8491
8492 Tue May 14 12:07:51 1996  Mike Stump  <mrs@cygnus.com>
8493
8494         * *.[chy]: Rename current_class_decl to current_class_ptr, and
8495         C_C_D to current_class_ref.
8496
8497 Mon May 13 16:55:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
8498
8499         * call.c (convert_harshness): Tighten up pointer conversions.
8500
8501 Sat May 11 04:33:50 1996  Doug Evans  <dje@canuck.cygnus.com>
8502
8503         * decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
8504         (finish_file): Likewise.
8505
8506 Fri May 10 11:09:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
8507
8508         * cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
8509
8510         * method.c (emit_thunk): Set flag_omit_frame_pointer in default
8511         code.
8512
8513 Thu May  9 18:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
8514
8515         * decl2.c: Turn on thunks by default where supported.
8516
8517 Tue May  7 20:39:57 1996  Mike Stump  <mrs@cygnus.com>
8518
8519         * cp-tree.h (build_overload_call_maybe): Removed.
8520         * call.c (build_overload_call_real): Invert meaning of last arg to
8521         be require_complete.
8522         (build_overload_call): Likewise.
8523         * typeck.c (build_x_function_call): Use build_overload_call_real
8524         instead of build_overload_call_maybe.
8525
8526 Mon May  6 01:23:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
8527
8528         * decl2.c (finish_file): Don't try to emit functions that haven't
8529         been compiled.
8530
8531 Fri May  3 09:30:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
8532
8533         * decl2.c (finish_vtable_vardecl): Oops.
8534
8535         * decl.c (maybe_push_to_top_level): Do save previous_class_*.
8536         Also store the bindings from previous_class_values.
8537         (pop_from_top_level): Restore them.
8538
8539 Thu May  2 21:56:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
8540
8541         * decl2.c (finish_vtable_vardecl): Only write out vtable if its
8542         symbol has been referenced.
8543         (finish_file): Re-join synthesis/vtable loop with inline emission
8544         loop, disable inlining when an inline is output.
8545
8546 Thu May  2 17:20:02 1996  Mike Stump  <mrs@cygnus.com>
8547
8548         * except.c (init_exception_processing): Setup saved_in_catch.
8549         (push_eh_cleanup): Reset __eh_in_catch.
8550         (expand_start_catch_block): Set __eh_in_catch.
8551
8552 Thu May  2 16:21:17 1996  Mike Stump  <mrs@cygnus.com>
8553
8554         * except.c (push_eh_cleanup): Add tracking for whether or not we
8555         have an active exception object.
8556         (expand_builtin_throw): Use it to make sure a rethrow without an
8557         exception object is caught.
8558
8559 Thu May  2 11:26:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
8560
8561         * decl.c (maybe_push_to_top_level): Clear out class-level bindings
8562         cache.
8563
8564 Wed May  1 11:26:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
8565
8566         * decl2.c (finish_file): Also use sentries for vars with
8567         DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
8568         created).
8569
8570         * lex.c (handle_cp_pragma): Disable #pragma
8571         interface/implementation if SUPPORTS_ONE_ONLY > 1.
8572
8573 Tue Apr 30 11:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
8574
8575         * method.c (emit_thunk): Wrap default case in
8576         temporary/permanent_allocation.
8577
8578         * method.c (make_thunk): Use DECL_ONE_ONLY.
8579         (emit_thunk): Call assemble_end_function.
8580
8581 Mon Apr 29 15:38:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
8582
8583         * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
8584         (import_export_decl): Likewise.
8585         (finish_prevtable_vardecl): Disable vtable hack if
8586         SUPPORTS_ONE_ONLY > 1.
8587
8588 Mon Apr 29 14:32:47 1996  Mike Stump  <mrs@cygnus.com>
8589
8590         * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
8591         PREDECREMENT_EXPRs take two arguments, not one.
8592
8593 Mon Apr 29 00:27:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
8594
8595         * class.c (build_vtable_entry): Don't build thunks for abstract
8596         virtuals.
8597
8598         * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
8599         frontend.
8600
8601 Sat Apr 27 16:45:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
8602
8603         * class.c (set_rtti_entry): Use size_zero_node.
8604         (build_vtable): Likewise.
8605
8606 Sat Apr 27 14:48:57 1996  Jason Merrill  <jason@phydeaux.cygnus.com>
8607
8608         * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
8609         (prepare_fresh_vtable): Likewise.
8610
8611 Fri Apr 26 13:14:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
8612
8613         * method.c (emit_thunk): Call mark_used on the target function.
8614
8615         * call.c (build_method_call): Don't warn about pending templates.
8616
8617 Thu Apr 25 14:55:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8618
8619         * decl2.c (finish_file): Fix list walking logic.
8620
8621         * typeck2.c (check_for_new_type): Only warn if -pedantic.
8622
8623 Wed Apr 24 15:41:15 1996  Bob Manson  <manson@charmed.cygnus.com>
8624
8625         * class.c (finish_struct_1): Remove old code for
8626         dont_allow_type_definitions.
8627         * cp-tree.h: Likewise.
8628         * spew.c: Make sure cp-tree.h is included before parse.h, so the
8629         definition of flagged_type_tree is found before it is used.
8630         * lex.c: Likewise.
8631         * parse.y: Added the ftype member to the type union, and changed a
8632         number of rules to use it instead of ttype. Added calls to
8633         check_for_new_type() as appropriate.
8634         * typeck2.c (check_for_new_type): New function for checking
8635         if a newly defined type appears in the specified tree.
8636         * cp-tree.h: Add new type flagged_type_tree. Add a prototype
8637         for check_for_new_type().
8638
8639 Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
8640
8641         * decl2.c (finish_file): Only use a sentry if the decl is public.
8642
8643         * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
8644         don't pass LOOKUP_ONLYCONVERTING.
8645
8646 Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
8647
8648         * typeck.c (common_type): Fix the ARRAY_TYPE case so it
8649         properly keeps track of const and volatile type modifiers.
8650
8651 Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
8652
8653         * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
8654         * pt.c (comp_template_args): Use it.
8655
8656         * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
8657         assemble_external for artificial function decls.
8658
8659         * decl.c (cp_finish_decl): Oops.
8660
8661 Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
8662
8663         * decl2.c (import_export_decl): Put static data member templates
8664         into common storage, or make them weak, depending on whether they
8665         are dynamically or statically initialized.
8666         (get_sentry): New function.
8667         (finish_file): Do import_export_decl for static data members before
8668         building the init/fini functions.  Don't init/fini a variable that's
8669         EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
8670         push/pop_temp_slots.
8671         * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
8672         expand_static_init thang.
8673         * method.c (get_id_2): New function.
8674
8675 Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
8676
8677         * parse.y (empty_parms): Make sure we use C++-style prototypes
8678         when we're declaring member functions.
8679
8680 Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
8681
8682         * Makefile.in (CONFLICTS): 16 s/r conflicts.
8683         * parse.y (self_template_type): New nonterminal.
8684
8685 Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
8686
8687         * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
8688         name.
8689         * parse.y (base_class.1): Allow 'typename foo::bar'.
8690
8691         * lex.c (check_newline): Remove #pragma code that plays with the
8692         input stream, since we now deal with tokens.  Clear nextchar when
8693         we're done.
8694         (handle_cp_pragma): Use real_yylex.
8695         (handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
8696         in one place.
8697
8698         * lex.c (check_for_missing_semicolon): Handle SELFNAME.
8699
8700         * lex.c (handle_cp_pragma): Fix "#pragma implementation".
8701
8702 Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
8703
8704         * parse.y: New token SELFNAME for potential constructor.
8705         * spew.c (yylex): Handle it.
8706         * lex.c (identifier_type): Produce it.
8707
8708         * parse.y (complete_type_name): In :: case, don't push class binding.
8709         (complex_type_name): Likewise.
8710
8711 Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
8712
8713         * typeck.c (build_reinterpret_cast): Handle pointer to member
8714         functions.
8715
8716 Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8717
8718         * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
8719         pragmas.
8720         (check_newline): Put the vtable/unit/implementation/interface pragma
8721         code into handle_cp_pragma, replacing it with a call.
8722         (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
8723         args.  Get the next token after handling the pragma token.
8724
8725 Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
8726
8727         * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
8728         (convert_to_pointer_force): Likewise.
8729
8730         * init.c (build_new): Fix array new without -fcheck-new.
8731
8732 Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
8733
8734         * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
8735         tree.c: Lose TYPE_NESTED_NAME.
8736
8737         * parse.y (nested_name_specifier_1): Don't treat non-identifiers
8738         as identifiers.
8739
8740         * tree.def: Add VEC_INIT_EXPR.
8741         * expr.c (cplus_expand_expr): Handle it.
8742         * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
8743         the extra file-scope symbol nastiness.
8744
8745 Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
8746
8747         * method.c (make_thunk): Thunks are static.
8748         (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
8749
8750         * decl2.c (mark_vtable_entries): Emit thunks as needed.
8751         (finish_file): Don't emit them here.
8752
8753 Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
8754
8755         * rtti.c (build_dynamic_cast): Handle null pointers.
8756         (ifnonnull): New function.
8757
8758 Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
8759
8760         * call.c (build_method_call): Remember the original basetype we
8761         were called with. Give an error message instead of trying
8762         (incorrectly) to call a non-static member function through a
8763         non-inherited class.
8764
8765         * search.c (expand_upcast_fixups): Mark the new fixup as
8766         DECL_ARTIFICIAL.
8767
8768 Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8769
8770         * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
8771
8772         * class.c (set_rtti_entry): Fix for thunks.
8773
8774         * decl2.c (import_export_decl): Still emit typeinfo fns for
8775         cv-variants of builtin types.
8776
8777         * rtti.c (expand_class_desc): Set up base_info_type_node here.
8778         (init_rtti_processing): Instead of here.
8779
8780 Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
8781
8782         * rtti.c (init_rtti_processing): Do init regardless of -frtti.
8783         (build_typeid): Only complain about taking dynamic typeid without
8784         -frtti.
8785
8786         * decl2.c: flag_rtti defaults to 1.
8787
8788         * rtti.c (get_tinfo_var): The general class case is now smaller.
8789         (init_rtti_processing): Pack the latter three fields of base_info
8790         into 32 bits.
8791
8792 Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
8793
8794         * init.c (expand_member_init): Don't dump if name is NULL_TREE.
8795
8796 Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
8797
8798         * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
8799         (push_memoized_context): Split out code to undefer pop_type_level to
8800         (clear_memoized_cache): here.
8801         (pop_memoized_context): We can only handle one layer of deferral of
8802         pop_type_level so clear the cache, if there was a previous level.
8803
8804 Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8805
8806         * rtti.c (init_rtti_processing): Build up base_info_type_node.
8807         (expand_class_desc): Use one pointer to an array of base_info
8808         structs, passed using a CONSTRUCTOR.
8809
8810 Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
8811
8812         * class.c (build_vbase_path): Remove block extern for
8813         flag_assume_nonnull_objects here.
8814         (build_vfn_ref): Split out functionality into build_vtbl_ref.
8815         (build_vtbl_ref): New routine.
8816         (build_vtable): Set up rtti info here.
8817         (add_virtual_function): Note in CLASSTYPE_RTTI the best
8818         place where we can get the rtti pointers from to avoid having to
8819         search around for a place.
8820         (finish_base_struct): Likewise.
8821         (finish_struct_1): Likewise.  Never create totally new vtables
8822         with totally new vtable pointers for rtti.  Disable code to layout
8823         vtable pointers better until we want to break binary
8824         compatibility.
8825         * rtti.c (build_headof_sub): New routine to convert down to a
8826         sub-object that has an rtti pointer in the vtable.
8827         (build_headof): Use it.  Also, use build_vtbl_ref now to be more
8828         maintainable.
8829         (build_dynamic_cast): Make sure we have saved it, if we need to.
8830         * search.c (dfs_init_vbase_pointers): Disable code that deals with
8831         a more efficient vtable layout, enable later.
8832         * call.c (flag_assume_nonnull_objects): Moved declaration to
8833         * cp-tree.h: here.  Declare build_vtbl_ref.
8834         * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
8835         function calls that want a tree.
8836
8837 Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
8838
8839         * rtti.c (build_dynamic_cast): Handle downcasting to X* given
8840         other X subobjects in the most derived type.  Ack.
8841
8842         * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
8843         get_typeid will do it for us.
8844         (get_typeid_1): Break out call-building for expand_*_desc to use.
8845         (get_typeid): Call it.
8846         (expand_*_desc): Likewise.
8847         * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
8848         and void *.
8849         (init_decl_processing): Lose builtin_type_tdescs lossage.
8850         * decl2.c (finish_vtable_vardecl): Remove obsolete code.
8851
8852 Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
8853
8854         * pt.c (tsubst): When calling set_nested_typename, use
8855         TYPE_NESTED_NAME (current_class_type) instead of
8856         current_class_name.
8857
8858         * decl.c (pushdecl): Likewise.
8859         (pushdecl_class_level): Likewise.
8860         (grokdeclarator): Use NULL_TREE instead of 0 in the call to
8861         set_nested_typename.
8862
8863 Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
8864
8865         * rtti.c (synthesize_tinfo_fn): Handle arrays.
8866
8867         * cp-tree.h (DECL_REALLY_EXTERN): New macro.
8868
8869 Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
8870
8871         * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
8872         (init_rtti_processing): Lose bad_cast_type.
8873         (build_dynamic_cast): Use throw_bad_cast.
8874
8875         * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
8876
8877         * decl2.c (finish_file): Don't synthesize artificial functions
8878         that are external and not inline.
8879
8880         * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
8881
8882         * decl2.c (finish_file): Handle having new inlines added to
8883         saved_inlines by synthesis.
8884
8885         * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
8886
8887 Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8888
8889         RTTI rewrite to initialize nodes as needed, not require that
8890         users #include <typeinfo>, complete functionality and reduce wasted 
8891         space.
8892         * rtti.c (init_rtti_processing): New fn.
8893         (build_typeid): The vtable entry is now a function.
8894         (get_tinfo_var): New fn.
8895         (get_tinfo_fn): Likewise.
8896         (get_typeid): Use it.
8897         (build_dynamic_cast): Declare and use entry point __dynamic_cast.
8898         (build_*_desc): Rename to expand_*_desc and rewrite to use entry
8899         points __rtti_*.
8900         (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
8901         (synthesize_tinfo_fn): New fn.
8902         * method.c (build_t_desc_overload): Lose.
8903         (build_overload_with_type): More generic.
8904         * decl.c (init_decl_processing): Call init_rtti_processing.
8905         * class.c (set_rtti_entry): Use get_tinfo_fn.
8906         * decl2.c (mark_vtable_entries): Mark the rtti function.
8907         (finish_prevtable_vardecl): Don't build_t_desc.
8908         (import_export_decl): Handle tinfo functions.
8909         (finish_file): Likewise.
8910         * typeck.c (inline_conversion): New fn.
8911         (build_function_call_real): Use it.
8912         * cp-tree.h: Add decls.
8913
8914         * method.c (hack_identifier): Also convert component_refs from
8915         references.
8916
8917         * lex.c (cons_up_default_function): Use the type, not the name, in
8918         declspecs.
8919
8920         * decl2.c (import_export_vtable): Fix weak vtables.
8921
8922 Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
8923
8924         * search.c (get_base_distance_recursive): Fix access checks for
8925         protected bases.
8926
8927 Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8928
8929         * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
8930         cp-tree.h.
8931         (convert_harshness): Add prototypes wrapped by PROTO.
8932         * decl2.c (grok_function_init): Likewise.
8933         (do_toplevel_using_decl): Change to void return type.
8934         * class.c (build_vtable_entry): Remove decl of make_thunk.
8935         (merge_overrides): Fix order of arg definitions.
8936         (finish_vtbls): Likewise.
8937         (fixup_vtable_deltas): Likewise.
8938         (modify_all_direct_vtables): Likewise.
8939         (modify_all_indirect_vtables): Likewise.
8940         * search.c (get_base_distance_recursive): Likewise.
8941         (get_abstract_virtuals_1): Likewise.
8942         (fixup_virtual_upcast_offsets): Likewise.
8943         (lookup_fnfields_1): Add prototypes wrapped by PROTO.
8944         * init.c (perform_member_init): Fix order of arg definitions.
8945         (expand_aggr_init_1): Add prototypes wrapped by PROTO.
8946         * cp-tree.h (make_thunk): Add decl.
8947         (overload_template_name, push_template_decl): Add decls.
8948         (do_toplevel_using_decl): Change to void return type.
8949         (vec_binfo_member): Add decl.
8950
8951 Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8952
8953         * typeck.c (mark_addressable, convert_for_assignment,
8954         convert_for_initialization, pointer_int_sum, pointer_diff,
8955         unary_complex_lvalue): Add prototypes wrapped by PROTO.
8956         (convert_sequence): #if 0 fn decl, since definition also is.
8957
8958 Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
8959
8960         * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
8961         cast to pointer types for type searching.
8962
8963 Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8964
8965         * typeck.c (get_delta_difference): Use cp_error, not error, in the
8966         case where BINFO == 0.
8967
8968 Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
8969
8970         * call.c (build_method_call): Fix wording of error messages so
8971         constructors come out right.
8972
8973 Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
8974
8975         * decl.c (push_overloaded_decl): Don't warn about hidden
8976         constructors when both the type and the function are declared
8977         in a system header file.
8978
8979 Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
8980
8981         * class.c (finish_struct_1): Propagate the TYPE_PACKED
8982         flag for the type to the type's fields.
8983
8984 Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8985
8986         * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
8987
8988 Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
8989
8990         * class.c (base_info, finish_base_struct): Replace 
8991         needs_virtual_dtor with base_has_virtual.
8992
8993         (finish_struct_1): Remove the old code that tried to make default
8994         destructors virtual. Use base_has_virtual when checking if we need
8995         to add a vtable entry for the rtti code.
8996
8997 Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
8998
8999         * pt.c (push_template_decl): Complain about template decl with
9000         inappropriate declaration.
9001
9002 Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
9003
9004         * typeck.c (build_x_unary_op): Remove bogus check for taking
9005         the address of a member function.
9006
9007 Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
9008
9009         * parse.y (constructor_declarator): Only push the class if
9010         we are not already in the class.
9011
9012 Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
9013
9014         * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
9015         Add additional argument to INIT_CUMULATIVE_ARGS.
9016
9017 Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
9018
9019         * decl.c (shadow_tag): Fix error about anon union with methods.
9020
9021         * parse.y (self_reference): Only generate a self-reference if this
9022         is a non-template class.
9023         (opt.component_decl_list): Only use it if it was generated.
9024
9025         * parse.y (component_decl_1): Use constructor_declarator.
9026         (fn.def2): Likewise.
9027         (notype_component_declarator0): Likewise.
9028
9029 Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
9030
9031         * typeck.c (build_x_unary_op): Add checks for taking the address
9032         of a TARGET_EXPR or of a member function, and give appropriate
9033         warnings.
9034
9035 Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
9036
9037         * pt.c (process_template_parm): Allow template type parms to be
9038         used as types for template const parms.
9039
9040 Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
9041
9042         * init.c (expand_vec_init): Ensure the eh cleanups are on the
9043         function_obstack.
9044
9045 Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
9046
9047         * decl.c (lookup_name_real): Be even more picky about the
9048         ambiguous lookup warning.
9049         (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
9050         * parse.y (constructor_declarator): Rather than here.
9051
9052         * parse.y (constructor_declarator): New nonterminal.
9053         (fn.def1): Use it.
9054         (explicit_instantiation): Likewise.
9055
9056 Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9057
9058         Add implicit declaration of class name at class scope.
9059         * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
9060         * parse.y (self_reference): New nonterminal.
9061         (opt.component_decl_list): Use it.
9062         (fn.def1): Add nested_name_specifier type_name cases.
9063         * class.c (build_self_reference): New function.
9064         (finish_struct): Handle access_default later, move self-reference
9065         decl to the end.
9066         * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
9067         * cp-tree.h: Adjust.
9068
9069         * pt.c (do_function_instantiation): Separate handling of member
9070         functions and non-member functions properly.
9071
9072 Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
9073
9074         * pt.c (process_template_parm): Improve error for 'volatile class K'.
9075
9076         * class.c (finish_struct_1): Check the right slot for destructors.
9077
9078         * decl.c (start_enum): Complain about enum templates.
9079
9080 Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
9081
9082         * init.c (resolve_offset_ref): Offset pointers to member data by one.
9083         * typeck.c (unary_complex_lvalue): Likewise.
9084
9085 Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
9086
9087         * typeck.c (c_expand_return): Check for a returned local
9088         array name, similar to the check for an ADDR_EXPR.
9089
9090 Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
9091
9092         * decl.c (cp_finish_decl): Don't build cleanups for static
9093         variables here.
9094
9095 Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
9096
9097         * typeck.c (build_modify_expr): Fix error messages to be more
9098         accurate.
9099         * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
9100         assignment operators.
9101         * error.c (assop_as_string): Likewise.  Add support for `%Q' for
9102         assignment operators.
9103
9104 Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
9105
9106         * decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
9107         give an error if initialized.  Pedwarn about nested type with the
9108         same name as its enclosing class.
9109
9110         * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
9111
9112         * typeck.c (require_complete_type): Be sure to instantiate the
9113         MAIN_VARIANT of the type.
9114
9115         * decl2.c (finish_file): Instantiate pending templates before
9116         processing static constructors and destructors.
9117
9118         * pt.c (instantiate_decl): Don't instantiate functions at toplevel
9119         unless at_eof.
9120
9121 Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
9122
9123         * decl2.c (delete_sanity): If error_mark_node is passed
9124         in as an expression, quit while we're ahead.
9125
9126         * decl.c (grokdeclarator): Give an error message if `friend'
9127         is combined with any storage class specifiers.
9128
9129 Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
9130
9131         * parse.y (named_complex_class_head_sans_basetype): Don't crash on
9132         definition of nonexistent nested type.
9133
9134         * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
9135         not to say 'typedef'.
9136
9137 Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9138
9139         * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
9140         * search.c (dfs_walk, dfs_init_vbase_pointers,
9141         expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
9142         (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
9143
9144 Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
9145
9146         * except.c (build_throw): Support minimal parse.
9147         * pt.c (tsubst_copy): Support THROW_EXPR.
9148         * decl2.c (build_expr_from_tree): Likewise.
9149
9150         * pt.c (mangle_class_name_for_template): Always allocate
9151         scratch_firstobj.
9152
9153 Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
9154
9155         * cvt.c (cp_convert_to_pointer): Give an appropriate error
9156         when trying to cast from an incomplete type.
9157
9158 Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9159
9160         * pt.c (instantiate_class_template): Don't bother setting up
9161         CLASSTYPE_TAGS explicitly, as the nested types will add
9162         themselves.
9163
9164 Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
9165
9166         * decl.c (shadow_tag): Remove old error check for usage of
9167         an enum without a previous declaration.
9168         (xref_tag): Add error message about usage of enums without a
9169         previous declaration.
9170
9171 Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
9172
9173         * lex.c (do_identifier): Only do name consistency check if we're
9174         parsing.
9175
9176         * pt.c (push_template_decl): Don't crash if we get a member defn
9177         that doesn't match.
9178
9179         * decl.c (xref_tag_from_type): New function to do an xref without
9180         always having to figure out code_type_node.
9181         * cp-tree.h: Declare it.
9182         * pt.c (instantiate_class_template): Use it for friend classes.
9183         (lookup_template_class): Use it.
9184
9185         * typeck2.c (build_functional_cast): Pull out a single parm before
9186         passing it to build_c_cast.
9187
9188 Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
9189
9190         * expr.c (do_case): Give an error message if a pointer is
9191         given as a case value.
9192
9193 Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
9194
9195         * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
9196         an overload list.
9197
9198         * lex.c (cons_up_default_function): Really, now, interface hackery
9199         does not apply to synthesized methods.
9200
9201 Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
9202
9203         * call.c (build_method_call): Ctors and dtors now have special names
9204         with respect to lookups.
9205         * class.c (add_method): Likewise.
9206         (grow_method): Likewise.
9207         (finish_struct_methods): Likewise.
9208         (warn_hidden): Likewise.
9209         (finish_struct_1): Likewise.
9210         * cvt.c (convert_to_reference): Likewise.
9211         (convert_to_aggr): Likewise.
9212         (cp_convert): Likewise.
9213         * decl2.c (check_classfn): Likewise.
9214         * init.c (expand_member_init): Likewise.
9215         (expand_default_init): Likewise.
9216         (expand_aggr_init_1): Likewise.
9217         (build_offset_ref): Likewise.
9218         (build_new): Likewise.
9219         (build_delete): Likewise.
9220         * lex.c (do_inline_function_hair): Likewise.
9221         * search.c (lookup_field_1): Likewise.
9222         (lookup_fnfields_here): Likewise.
9223         (lookup_field): Likewise.
9224         (lookup_fnfields): Likewise.
9225         (get_virtual_destructor): Likewise.
9226         (dfs_debug_mark): Likewise.
9227         (dfs_pushdecls): Likewise.
9228         (dfs_compress_decls): Likewise.
9229         * tree.c (layout_basetypes): Likewise.
9230         * typeck.c (build_component_ref): Likewise.
9231         (build_x_function_call): Likewise.
9232         (build_modify_expr): Likewise.
9233         (convert_for_initialization): Likewise.
9234         (build_functional_cast): Likewise.
9235         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
9236         (CTOR_NAME): New.
9237         (DTOR_NAME): New.
9238         * decl.c (ctor_identifier): New.
9239         (dtor_identifier): New.
9240         (init_decl_processing): Set them.
9241
9242 Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
9243
9244         * typeck.c (build_component_ref): Don't get confused by fields whose
9245         context has no type name, like pointer to member functions.
9246
9247 Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
9248
9249         * decl.c (grokdeclarator): Handle typedef without declarator.
9250
9251         * pt.c (tsubst): Handle SCOPE_REF in declarator.
9252
9253         * parse.y (bad_parm): Catch another case of missing `typename'.
9254
9255         * lex.c (yyprint): Handle TYPE_DECLs.
9256
9257         * decl.c (start_function): Don't try to be clever.
9258
9259         * lex.c: Lose compiler_error_with_decl.
9260         * typeck2.c: Lose error_with_aggr_type.
9261         (incomplete_type_error): Use cp_* instead of old functions.
9262         (readonly_error): Likewise.
9263         * typeck.c (convert_arguments): Likewise.
9264         * search.c (lookup_nested_field): Likewise.
9265         * method.c (make_thunk): Likewise.
9266         * decl.c (grokparms): Likewise.
9267         * cp-tree.h: Update.
9268
9269         * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
9270         and value.
9271
9272 Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
9273
9274         * method.c (build_opfncall): When deleting a pointer to an
9275         array, build a new pointer to the tree past any ARRAY_TYPE
9276         nodes.
9277
9278 Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9279
9280         * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
9281
9282 Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
9283
9284         * pt.c (instantiate_decl): Only call import_export_decl if at_eof
9285         and ! DECL_INLINE.
9286
9287         * decl.c (finish_function): Don't set nested based on
9288         hack_decl_function_context.
9289         * parse.y (function_try_block): Check for nested function.
9290         (pending_inlines): Likewise.
9291
9292         * decl2.c (build_expr_from_tree): If a unary op already has a
9293         type, just return it.
9294
9295         * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
9296
9297         * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
9298         (finish_file): Check the return value of walk_vtables.
9299         (finish_prevtable_vardecl): Return int.
9300         (finish_vtable_vardecl): Likewise.
9301         (prune_vtable_vardecl): Likewise.
9302         * lex.c (set_vardecl_interface_info): Likewise.
9303         * cp-tree.h: Adjust return types.
9304
9305         * class.c (delete_duplicate_fields_1): Don't complain about
9306         duplicate nested types if they're the same type.
9307         (finish_struct): Remove check for duplicate.
9308         * decl2.c (grokfield): Don't check for typedef of anonymous type.
9309
9310 Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
9311
9312         * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
9313
9314         * decl.c (grokdeclarator): Lose special handling of class-level
9315         typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
9316         SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
9317
9318         * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
9319
9320         * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
9321
9322         * search.c (compute_access): Fix handling of anonymous union
9323         members.
9324         * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
9325         from anonymous unions to their members.
9326
9327         * typeck.c (build_x_function_call): For static member functions,
9328         hand off to build_member_call.
9329
9330 Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
9331
9332         * typeck.c (build_component_ref): Handle OFFSET_REFs.
9333
9334         * init.c (expand_vec_init): Fix init == 0 case.
9335
9336 Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
9337
9338         * init.c (build_new): Pedwarn about init and array new.
9339         (expand_vec_init): Handle lists, use convert_for_initialization.
9340
9341         * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
9342         when converting to an aggregate type.
9343         * cvt.c (cp_convert): Pass it through.
9344
9345         * typeck.c (build_conditional_expr): Handle user-defined
9346         conversions to slightly different types.
9347
9348         * decl.c (grokdeclarator): Force an array type in a parm to be
9349         permanent.
9350
9351         * decl2.c (do_using_directive): Sorry.
9352         (do_namespace_alias): Likewise.
9353         * lex.c (real_yylex): Warn about using the `namespace' keyword.
9354
9355 Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
9356
9357         * parse.y (datadef): Move call to note_list_got_semicolon up.
9358
9359 Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
9360
9361         * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
9362
9363 Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
9364
9365         * decl.c (cp_finish_decl): The exception regions have to be
9366         nested, not overlapping.  We start the exception region for a
9367         decl, after it has been fully built, and all temporaries for it
9368         have been cleaned up.
9369
9370 Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
9371
9372         * tree.c (vec_binfo_member): Don't core dump if we have no bases.
9373
9374 Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
9375
9376         * tree.def: Add RETURN_INIT.
9377         * pt.c (instantiate_decl): Handle RETURN_INIT.
9378         * decl.c (store_return_init): Handle minimal_parse_mode.
9379
9380         * tree.c (cp_build_type_variant): Just return an error_mark_node.
9381         * decl.c (make_typename_type): Don't try to get the file and line
9382         of an identifier.
9383         * typeck.c (comptypes): Handle TYPENAME_TYPE.
9384
9385 Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
9386
9387         * decl.c (poplevel): Make sure we clear out and restore old local
9388         non-VAR_DECL values by default when they go out of scope.
9389
9390 Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
9391
9392         * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
9393         referring to addresses of variables and functions.
9394
9395         * error.c (dump_expr): Support SIZEOF_EXPR.
9396
9397         * init.c (do_friend): Use the return value of check_classfn.
9398
9399         * typeck.c (convert_arguments): Call complete_type.
9400
9401         * method.c (hack_identifier): After giving an error, set value to
9402         error_mark_node.
9403
9404 Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
9405
9406         * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
9407         lossage for local classes.
9408         * cp-tree.h: Declare it.
9409         * decl.c (lookup_name_real): Evil, painful hack for local classes.
9410         (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
9411         Use hack_decl_function_context.
9412         (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
9413         (start_function): Use hack_decl_function_context.
9414         (finish_function): Likewise.
9415         * method.c (synthesize_method): Likewise.
9416         * lex.c (process_next_inline): Likewise.
9417         (do_pending_inlines): Likewise.
9418         * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
9419         done with it.
9420
9421 Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
9422
9423         * sig.c (build_signature_pointer_or_reference_type): Align
9424         signature pointers/references on 8-byte boundaries so they can be
9425         grabbed 2 words at a time on a Sparc.
9426
9427 Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
9428
9429         * method.c (hack_identifier): Requiring a static chain is now a
9430         hard error.
9431         * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
9432         functions.
9433
9434 Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9435
9436         * init.c (build_offset_ref): Call complete_type.
9437
9438         * decl.c (pop_from_top_level): Always pop previous_class_type.
9439
9440         * parse.y: Handle multiple decls in a for-init-statement.
9441         * pt.c (tsubst_expr): Likewise.
9442
9443         * pt.c (tsubst): Use tsubst_expr for the second operand of an
9444         ARRAY_REF.
9445
9446         * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
9447         (poplevel_class): Set it here.
9448         (pop_from_top_level): Pop it here if we're returning to class scope.
9449         * class.c (pushclass): Don't set it here.
9450
9451         * decl.c (maybe_push_to_top_level): Save current_template_parms,
9452         and clear it if !pseudo.
9453         (pop_from_top_level): Restore it.
9454
9455         * decl2.c (finish_file): Push the dummy each time we walk the list
9456         of vtables.
9457
9458         * error.c (dump_expr): Support LOOKUP_EXPR and actually do
9459         something for CAST_EXPR.
9460         
9461 Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
9462
9463         * cvt.c (cp_convert): Warn about implicit conversion of the
9464         address of a function to bool, as it is always true.
9465
9466 Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
9467
9468         * typeck.c (c_expand_return): Fix warning for local externs returned.
9469
9470 Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
9471
9472         * tree.c (mapcar): Propagate const and volatile properly.
9473
9474         * typeck.c (complete_type): Be sure to instantiate the
9475         MAIN_VARIANT of the type.
9476
9477         * method.c (synthesize_method): Class interface hackery does not
9478         apply to synthesized methods.
9479
9480 Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
9481
9482         * pt.c (comp_template_args): Use comptypes rather than just
9483         checking for TEMPLATE_TYPE_PARM equivalence.
9484
9485         * typeck.c (build_x_function_call): Call complete_type before
9486         checking TYPE_OVERLOADS_CALL_EXPR.
9487
9488 Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
9489
9490         * g++.c (main): Check also for new define ALT_LIBM.
9491
9492 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9493
9494         * pt.c (instantiate_class_template): If we don't have a pattern
9495         yet, that's OK.
9496         (coerce_template_parms): If we see a local class, bail.
9497
9498         * decl.c (grok_reference_init): Make sure there's a type before
9499         checking its code.
9500
9501         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
9502         (push_template_decl): Likewise.
9503
9504         * parse.y (named_class_head): Set
9505         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
9506
9507         * decl.c (xref_tag): Diagnose redeclaration of template
9508         type-parameter name.
9509
9510         * error.c (dump_type): Handle anonymous template type parms.
9511
9512         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
9513         TYPE_STUB_DECL.
9514         (coerce_template_parms): Likewise.
9515
9516 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
9517
9518         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
9519         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
9520
9521 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
9522
9523         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
9524         before trying to get its STUB_DECL.
9525         (coerce_template_parms): Likewise.
9526
9527         * parse.y (template_type_parm): If they didn't use 'class',
9528         pretend they did after giving an error.
9529
9530         * pt.c (coerce_template_parms): Diagnose use of local class.
9531
9532         * decl.c (grok_reference_init): Use instantiate_type.
9533
9534         * error.c (dump_expr): Handle TEMPLATE_DECLs.
9535
9536         * parse.y (named_class_head): Diagnose mismatching types and tags.
9537
9538         * decl.c (pushdecl): Type decls and class templates clash with
9539         artificial type decls, not hide them.
9540
9541         * decl.c (redeclaration_error_message): Diagnose redefinition of
9542         templates properly.
9543         (duplicate_decls): Diagnose disallowed overloads for template
9544         functions, too.
9545
9546         * decl.c (start_decl): Call complete_type before checking for a
9547         destructor.
9548
9549         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
9550
9551         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
9552
9553 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
9554
9555         * decl.c (grok_op_properties): Don't check for operator++(int) in
9556         a template.
9557
9558         * tree.c (perm_manip): Return a copy of variable and function
9559         decls with external linkage.
9560
9561         * tree.def: Change some of the min tree codes to type "1".
9562         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
9563         * method.c (build_overload_int): Emit something arbitrary for
9564         anything but an INTEGER_CST if we're in a template.
9565
9566         * decl.c (cp_finish_decl): Call complete_type before deciding
9567         whether or not to lay out the decl.
9568
9569         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
9570
9571 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
9572
9573         * typeck2.c (build_x_arrow): Call complete_type.
9574
9575         * pt.c (add_pending_template): Broken out.
9576         (lookup_template_class): If -fexternal-templates, call it for all
9577         the methods of implemented types.
9578         (instantiate_class_template): Instead of instantiating them here.
9579         (instantiate_decl): Handle -fexternal-templates earlier.
9580
9581 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9582
9583         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
9584         memoized lookup stuff inside GATHER_STATISTICS.
9585
9586 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
9587
9588         * decl.c (start_decl): Complain about array of incomplete type
9589         here.
9590         (grokdeclarator): Not here.
9591
9592         * parse.y (template_parm): Expand full_parm inline so we can set
9593         the rule's precedence.
9594
9595         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
9596         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
9597         * decl2.c (grokbitfield): Don't check for integer constant here.
9598         * class.c (finish_struct_1): Check here.
9599
9600         * decl.c (define_label): Make the min decl go on permanent_obstack.
9601
9602         * pt.c (unify): Don't handle CONST_DECLs.
9603         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
9604         (tsubst_copy): Likewise.
9605
9606         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
9607         CONST_DECL for a template parm.
9608
9609 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
9610
9611         * decl.c (grokdeclarator): Complain about array of incomplete type
9612         here.
9613         (start_decl_1): Not here.
9614
9615         * pt.c (tsubst): Handle pointer-to-function declarators.
9616
9617         * method.c (hack_identifier): If pedantic, diagnose local class
9618         methods that require a static chain.
9619
9620         * decl.c (grok_op_properties): No longer static.
9621         * cp-tree.h: Declare it.
9622         * pt.c (tsubst): Call it for operators.
9623         Use tsubst_copy for TREE_VECs.
9624
9625         * parse.y (template_arg): The expr has precedence like '>'.
9626
9627 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
9628
9629         * pt.c (coerce_template_parms): Don't coerce an expression using
9630         template parms.
9631         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
9632         (tsubst): Don't use build_index_2_type if the max_value uses template
9633         parms.
9634         * method.c (build_overload_int): Emit something arbitrary for an
9635         expression using template parms.
9636
9637         * parse.y (template_close_bracket): New non-terminal to catch use
9638         of '>>' instead of '> >' in template class names.
9639         (template_type): Use it.
9640         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
9641
9642         * tree.def: Add CAST_EXPR.
9643         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
9644         CONVERT_EXPR for minimal_parse_mode.
9645         * typeck.c (build_c_cast): Likewise.
9646         * pt.c (tsubst_copy): Likewise.
9647         * decl2.c (build_expr_from_tree): Likewise.
9648         * error.c (dump_expr): Likewise.
9649
9650 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9651
9652         * except.c (SetTerminate, SetUnexpected): Put back global vars.
9653         (init_exception_processing): Put back decl/init of
9654         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
9655         fns from libstdc++.
9656
9657         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
9658         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
9659         Delete unused fns.
9660         * cp-tree.h (declare_uninstantiated_type_level,
9661         uninstantiated_type_level_p): Delete prototypes.
9662
9663 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
9664
9665         * pt.c (tsubst_expr): Add default return.
9666
9667 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9668
9669         * error.c (fndecl_as_string): Delete unused arg CNAME.
9670         * sig.c (build_signature_table_constructor,
9671         build_signature_method_call): Fix calls.
9672
9673         * class.c (the_null_vtable_entry): Delete var definition.
9674         (init_class_processing): Delete tree the_null_vtable_entry init.
9675         * decl.c (no_print_{functions, builtins}): Declare as static.
9676         (__tp_desc_type_node): #if 0 var definition.
9677         (init_type_desc): #if 0 init of __tp_desc_type_node.
9678         (vb_off_identifier): Move var decl into init_decl_processing.
9679         (current_function_assigns_this): Declare as static.
9680         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
9681         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
9682         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
9683         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
9684         * init.c (BI_header_type, BI_header_size): Declare as static.
9685         * pt.c (template_classes): Delete unused var.
9686         (add_pending_template): Delete decl for non-existent fn.
9687         (lookup_template_class): Delete vars CODE and TAG_CODE.
9688         (instantiate_template): Delete unused var TARGS.
9689         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
9690         Delete decls.
9691         (__tp_desc_type_node): #if 0 var decl.
9692         (fndecl_as_string): Fix prototype.
9693
9694 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
9695
9696         * tree.def: Add GOTO_STMT.
9697         * pt.c (tsubst_expr): Support goto and labels.
9698         * decl.c (define_label): Support minimal parsing.
9699         * parse.y (simple_stmt): Likewise.
9700
9701 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9702
9703         * xref.c (GNU_xref_member): Only define/set var I if
9704         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
9705         used.
9706         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
9707         (GNU_xref_end): Fix call.
9708         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
9709         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
9710
9711         * tree.c (build_exception_variant): Delete unused vars I, A, T,
9712         T2, and CNAME.
9713         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
9714         (mapcar): Delete unused var CODE.
9715         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
9716         (break_out_cleanups): Fix call.
9717         (bot_manip): Likewise.
9718         * call.c (build_method_call): Likewise.
9719         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
9720         Likewise.
9721         * typeck.c (unary_complex_lvalue, build_modify_expr,
9722         convert_for_initialization): Likewise.
9723         * typeck2.c (build_functional_cast): Likewise.
9724         * cp-tree.h (build_cplus_new): Fix prototype.
9725
9726         * repo.c (open_repo_file): Delete unused var Q.
9727         (repo_compile_flags, repo_template_declared,
9728         repo_template_defined, repo_class_defined, repo_inline_used,
9729         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
9730         (repo_get_id, repo_vtable_used): Declare as static. 
9731         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
9732         prototypes.
9733
9734 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
9735
9736         * parse.y (pending_inlines): Add function_try_block case.
9737
9738         * pt.c (unify): Fix for template const parms.
9739
9740 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9741
9742         * lex.c (extract_interface_info): Delete forward decl.
9743         (default_copy_constructor_body, default_assign_ref_body): Delete
9744         decls for non-existent functions.
9745         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
9746         (init_lex): Delete setting them.
9747         (cons_up_default_function): Delete unused vars FUNC_BUF,
9748         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
9749         #if 0'd synth code.
9750         (toplevel, expression_obstack): Delete unused extern decls.
9751         (tree_node_kind): Delete unused enum.
9752         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
9753         GATHER_STATISTICS.
9754         (tree_node_kind_names): Delete unused extern decl.
9755         (synth_obstack): Delete unused var.
9756         (init_lex): Don't set it.
9757         (init_parse): Add decl before use.
9758         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
9759         (current_unit_{name, language}): Delete unused vars. 
9760         (check_newline): Don't bother setting them, just accept the #pragma.
9761         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
9762         (current_unit_{name, language}): Delete decls.
9763
9764         * search.c: Wrap all of the memoized functions, macros, and
9765         variables inside #ifdef GATHER_STATISTICS.
9766         (lookup_field, lookup_fnfields): Likewise.
9767         (init_search_processing): Likewise.
9768         (reinit_search_statistics): Wrap whole function.
9769         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
9770
9771         * decl.c (finish_function): Only call pop_memoized_context if
9772         GATHER_STATISTICS is defined.
9773         (start_function): Likewise for push_memoized_context.
9774         * class.c (pushclass, popclass): Likewise.
9775
9776         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
9777         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
9778
9779         * cvt.c (cp_convert): Delete unused local var FORM.
9780         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
9781         prototypes.
9782
9783 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
9784
9785         * pt.c (do_poplevel): Oops; really return what we get from
9786         poplevel this time.
9787
9788 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9789
9790         * cp-tree.h (is_aggr_type): Add prototype.
9791
9792         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
9793         * method.c ({push,pop}_cp_function_context): Delete decls.
9794         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
9795         (SetUnexpected, SetTerminate): Delete unused vars.
9796         (init_exception_processing): Don't set SetUnexpected or
9797         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
9798         (output_exception_table_entry): Delete unused array LABEL.
9799         (expand_internal_throw): Delete unused var PARAMS.
9800         (expand_start_catch_block): Delete unused var CLEANUP.
9801         (emit_exception_table): Delete unused var EH_NODE_DECL.
9802         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
9803         GOTO_UNWIND_AND_THROW.  Don't set them.
9804         (end_eh_unwinder): Add top decl.
9805         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
9806         (exception_section, push_rtl_perm, do_function_call,
9807         lang_interim_eh, push_eh_cleanup, eh_outer_context,
9808         expand_end_eh_spec, end_eh_unwinder): Declare as static.
9809         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
9810         throw_used): Likewise.
9811         * cp-tree.h (expand_end_eh_spec): Delete prototype.
9812
9813         * search.c (dfs_mark, dfs_mark_vtable_path,
9814         dfs_unmark_vtable_path, dfs_mark_new_vtable,
9815         dfs_unmark_new_vtable, dfs_clear_search_slot,
9816         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
9817         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
9818         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
9819         functions.
9820         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
9821         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
9822         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
9823         Only define #ifdef GATHER_STATISTICS.
9824         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
9825         is defined.
9826         (vbase_decl): Delete var definition.
9827         (init_search): Delete old decl.
9828         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
9829         never actually used.
9830         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
9831         (get_base_distance_recursive): Delete unused fourth arg
9832         BASETYPE_PATH.  Fix call .
9833         (get_base_distance): Fix call.
9834         (push_class_decls): Delete unused var ID.
9835         (make_memoized_table_entry): Declare as static.
9836         (breadth_first_search): Declare as static.
9837         (tree_has_any_destructor_p): Declare as static.
9838         (pop_class_decls): Delete unused arg pop_class_decls.
9839         * class.c (popclass): Fix call to pop_class_decls.
9840         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
9841         tree_has_any_destructor_p): Delete prototypes.
9842
9843         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
9844         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
9845         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
9846         (build_user_desc): Delete unused var T.
9847         (build_class_desc): Delete unused vars T and OFF.
9848         (build_t_desc): Delete unused var NAME_STRING.
9849         (build_headof): Make static.
9850         (get_bad_cast_node): Likewise.
9851         (get_def_to_follow): Likewise.
9852         * cp-tree.h (init_type_desc): Add prototype.
9853         (build_headof): Remove prototype.
9854
9855 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
9856
9857         * pt.c (tsubst): Only look for matching decls at file scope for
9858         non-member functions.
9859
9860         * call.c (build_scoped_method_call): Handle scoped destructor
9861         calls in templates.
9862
9863         * decl.c (*_top_level): Also save previous_class_values.
9864
9865         * pt.c (tsubst_expr): Support do {} while loops.
9866         * parse.y (simple_stmt): Likewise.
9867         * tree.def: Likewise.
9868
9869         * method.c (build_overload_identifier): For a class nested in a
9870         template class, don't mangle in the template parms from our
9871         context.
9872
9873         * lex.c, cp-tree.h: Remove support for template instantiations in
9874         the pending_inlines code.
9875         * pt.c: Remove dead functions and unused arguments.
9876         (uses_template_parms): TYPENAME_TYPEs always use template parms.
9877         * parse.y: Stop passing anything to end_template_decl.
9878         * tree.c (print_lang_statistics): Only print tinst info #ifdef
9879         GATHER_STATISTICS.
9880
9881 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9882
9883         * init.c (expand_recursive_init{,_1}): Delete decls. 
9884         (sort_member_init): Delete unused var INIT.
9885         (emit_base_init): Delete unused var X.
9886         (build_offset_ref): Delete unused var CNAME.
9887         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
9888         (emit_base_init): Delete unused local var BASE.  Delete extern
9889         decl of IN_CHARGE_IDENTIFIER.
9890         (build_delete): Delete unused local var VIRTUAL_SIZE.
9891
9892         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
9893         (build_delete): Fix call.
9894         * decl2.c (delete_sanity): Likewise.
9895         * cp-tree.h (build_vec_delete): Update prototype.
9896
9897         * typeck.c (common_base_type): Delete unused var TMP.
9898         (build_binary_op): Delete local var ARGS_SAVE.
9899         (build_array_ref): Delete unused var ITYPE.
9900         (c_expand_return): Delete unused var USE_TEMP.
9901
9902         * typeck.c (compexcepttypes): Delete unused arg STRICT.
9903         (comptypes): Fix calls.
9904         * decl.c (duplicate_decls): Likewise.
9905         * cp-tree.h (compexcepttypes): Delete extra arg.
9906
9907         * decl2.c (check_classfn): Delete unused second arg CNAME.
9908         * decl.c (start_decl, grokfndecl): Fix calls.
9909         * init.c (do_friend): Likewise.
9910         * cp-tree.h (check_classfn): Update prototype.
9911
9912         * cp-tree.h (signature_error, import_export_vtable,
9913         append_signature_fields, id_in_current_class, mark_used,
9914         copy_assignment_arg_p): Add decls.
9915         * decl2.c (mark_used): Delete decl.
9916
9917         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
9918
9919         * class.c (get_vtable_entry): Diable unused function.
9920         (doing_hard_virtuals): Delete unused static global var.
9921         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
9922         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
9923         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
9924         (modify_one_vtable): Delete unused var OLD_RTTI.
9925         (finish_struct_anon): Delete unused vars OFFSET and X.
9926         (finish_struct_bits): Delete unused var METHOD_VEC.
9927         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
9928         for-scope local variable METHODS.
9929
9930         * call.c (user_harshness): Delete unused/unneeded arg PARM.
9931         (ideal_candidate): Delete unused args BASETYPE and PARMS.
9932         (build_method_call): Delete unused args passed into ideal_candidate.
9933         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
9934         * cp-tree.h (synthesize_method): Add decl.
9935
9936         * decl.c (note_level_for_for): Give void return type.
9937         (pushdecl_nonclass_level): Likewise.
9938         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
9939         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
9940         (suspend_binding_level): Delete unused var LEVEL.
9941         (duplicate_decls): Delete unused var CTYPE.
9942         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
9943         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
9944         PTR_ENDLINK.
9945         (grokdeclarator): Delete unused var C.
9946         (grokdeclarator): Delete unused var SIZE_VARIES.
9947         (grokparms): Delete unused var SAW_VOID.
9948         (start_function): Delete unused var OLDDECL.
9949         (cplus_expand_expr_stmt): Delete unused var
9950         REMOVE_IMPLICIT_IMMEDIATELY. 
9951
9952         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
9953
9954         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
9955
9956 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
9957
9958         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
9959         (build_min_nt): Likewise.
9960         * pt.c (do_pushlevel): Emit line note.
9961         (do_poplevel): Return what we get from poplevel.
9962         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
9963         * parse.y: Use do_pushlevel and do_poplevel.
9964         * cp-tree.h: Declare do_poplevel.
9965         
9966         * cp-tree.h: Declare at_eof.
9967         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
9968         * decl2.c (import_export_decl): Renamed from import_export_inline.
9969         (finish_file): Call it to do interface handling for statics.
9970         * pt.c (tsubst_copy): Call mark_used on variables and functions
9971         used here.
9972
9973         * decl2.c (finish_file): Don't emit statics we can't generate.
9974         * pt.c (instantiate_decl): Don't set interface on instantiations
9975         we can't generate.
9976
9977         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
9978         * tree.c (print_lang_statistics): Print max template depth.
9979         * pt.c (push_tinst_level): Dump entire instantiation context.
9980         (instantiate_class_template): Use it and pop_tinst_level.
9981         (instantiate_decl): Likewise.
9982
9983         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
9984         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
9985
9986 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
9987
9988         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
9989         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
9990         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
9991         the new template implementation.
9992
9993 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9994
9995         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
9996
9997 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
9998
9999         * decl.c (cp_finish_decl): Delay emitting the debug information for
10000         a typedef that has been installed as the canonical typedef, if the
10001         type has not yet been defined.
10002
10003 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
10004
10005         * decl2.c (grokfield): Still call pop_nested_class for access decls.
10006
10007 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10008
10009         * decl.c (lookup_label): Call label_rtx.
10010
10011         * decl.c (make_binding_level): New function.
10012         (pushlevel, pushlevel_class): Call it instead of explicit
10013         duplicate calls to xmalloc.
10014
10015         * decl.c (init_decl_processing): Delete useless build_pointer_type
10016         call.
10017
10018         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
10019         (sizet_ftype_string): Delete variable.
10020         (init_decl_processing): Add built-in functions fabsf, fabsl,
10021         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
10022         variable strlen_ftype, used for strlen.
10023
10024 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
10025
10026         * decl.c (push_to_top_level): Start from current_binding_level
10027         again for now; the stl hacks depend on g++ being broken in this
10028         way, and it'll be fixed in the template rewrite.
10029
10030         * tree.def: Add USING_DECL.
10031         * decl2.c (do_class_using_decl): Implement.
10032         (grokfield): Pass access decls off to do_class_using_decl instead of
10033         grokdeclarator.
10034         * error.c (dump_decl): Handle USING_DECLs.
10035         * decl.c (grokdeclarator): Remove code for handling access decls.
10036         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
10037         as access decls for now.
10038         (finish_struct): Don't check USING_DECLs for other uses of the name.
10039
10040         * search.c (get_matching_virtual): Use cp_error_at.
10041
10042 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10043
10044         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
10045         match c-typeck.c.
10046         (self_promoting_args_p): Move the check that TYPE is non-nil
10047         before trying to look at its main variant.
10048         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
10049
10050         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
10051         Delete macros.
10052         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
10053         (do_friend): Delete call to xref_friend.
10054         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
10055
10056         * typeck.c (convert_sequence): #if 0 unused function.
10057
10058         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
10059         be in decl_in_memory_p.
10060         (decl_in_memory_p): Delete decl.
10061         * expr.c (decl_in_memory_p): Delete fn.
10062         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
10063
10064         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
10065
10066 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
10067
10068         * class.c (finish_struct_1): Check for a pure-specifier on a
10069         non-virtual function here.
10070
10071         * decl2.c (grok_function_init): Don't check whether the function
10072         is virtual here.
10073         (grokfield): Don't call check_for_override here.
10074
10075         * decl.c (push_to_top_level): Start from inner_binding_level,
10076         check class_shadowed in class levels.
10077
10078 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
10079
10080         * decl.c (resume_level): Ignore things that don't have names, instead
10081         of core dumping.
10082
10083 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10084
10085         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
10086
10087 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
10088
10089         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
10090         synthesized dtor.
10091
10092         * parse.y (complete_type_name): Bind global_scope earlier.
10093         (complex_type_name): Likewise.
10094         (qualified_type_name): Remove.
10095
10096 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
10097
10098         * decl.c (grokfndecl): Move code that looks for virtuals in base
10099         classes...
10100         * class.c (check_for_override): ... to a new function.
10101         (finish_struct_1): Call it.
10102
10103         * cp-tree.h: Declare warn_sign_compare.
10104
10105         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
10106         rather than extra_warnings to decide whether to warn about
10107         comparison of signed and unsigned.
10108
10109         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
10110         implies -Wsign-compare.  -Wall doesn't imply -W.
10111
10112 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
10113
10114         * typeck.c (build_component_ref): Fix to handle anon unions in base
10115         classes as well.
10116
10117 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10118
10119         * class.c (resolves_to_fixed_type_p): Delete code dealing with
10120         a WITH_CLEANUP_EXPR, since we don't generate them any more.
10121         * cvt.c (build_up_reference): Likewise.
10122         * decl.c (grok_reference_init): Likewise.
10123         (cp_finish_decl): Likewise.
10124         * error.c (dump_expr): Likewise.
10125         * tree.c (real_lvalue_p): Likewise.
10126         (lvalue_p): Likewise.
10127         (build_cplus_new): Likewise.
10128         (unsave_expr_now): Likewise.
10129         * typeck.c (unary_complex_lvalue, build_modify_expr,
10130         c_expand_return): Likewise.
10131
10132 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10133
10134         Make the C++ front-end pay attention to attributes for structures.
10135         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
10136         finish_struct_1.
10137         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
10138         Take out old round_up_size use and setting the DECL_ALIGN possibly
10139         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
10140         can override what the attribute set.
10141         * cp-tree.h (finish_struct): Update prototype.
10142         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
10143         attributes to finish_struct.
10144         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
10145         value down into finish_struct.
10146         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
10147
10148 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
10149
10150         * decl.c (poplevel):  Re-word dead for local handling.
10151         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
10152         (cp_finish_decl):  If is_for_scope, check for duplicates so
10153         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
10154
10155         * lex.c (do_identifier):  Use global binding in preference of
10156         dead for local variable.
10157
10158 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
10159
10160         * init.c (initializing_context): Handle anon union changes, the
10161         context where fields of anon unions can be initialized now has to be
10162         found by walking up the TYPE_CONTEXT chain.
10163
10164 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
10165
10166         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
10167         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
10168         (obscure_complex_init): If bss is supported, always set
10169         DECL_INITIAL to error_mark_node.
10170
10171 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10172
10173         * init.c (is_friend): Make sure there's a context before we see if
10174         it's an aggr type.
10175
10176 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
10177
10178         * init.c (is_friend): Classes are not friendly with nested classes.
10179
10180 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
10181
10182         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
10183         and record its result.
10184
10185 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
10186
10187         * class.c (finish_struct_anon): Switch around code to not move anon
10188         union elements around, nor mess up their contexts, nor offsets,
10189         instead we now build up the right number of COMPONENT_REFs for all
10190         the anon unions that may be present at build_component_ref time.
10191         * typeck.c (lookup_anon_field): New routine to handle field lookup
10192         on fields without names.  We find them, based upon their unique type
10193         instead.
10194         * typeck.c (build_component_ref): Allow FIELD_DECL components.
10195         Handle finding components in anonymous unions, and ensure that a
10196         COMPONENT_REF is built for each level as necessary.
10197
10198 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
10199
10200         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
10201         code that ensures that copy ctors are used if appropriate.
10202
10203 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10204
10205         * init.c (build_vec_delete): Only give an error if base isn't an
10206         error_mark_node.
10207
10208 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
10209
10210         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
10211         (yylex): If we see `new', keep slurping.
10212
10213 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
10214
10215         * class.c (finish_struct_1): Move code for handling anon unions...
10216         (finish_struct_anon): to here.  Fixup so that we do the offset
10217         calculations right, and so that the fields are physically moved to
10218         the containers's chain.
10219
10220 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10221
10222         * decl.c (grokdeclarator): Avoid trying to get an operand off an
10223         identifier node.
10224
10225 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
10226
10227         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
10228         POINTER_SIZE to agree with expr.c.
10229
10230 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
10231
10232         * search.c (lookup_field): Don't report ambiguities if protect is 0,
10233         instead return NULL_TREE.
10234
10235 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
10236
10237         * class.c (finish_struct_1): Call warn_hidden if we want warnings
10238         about overloaded virtual functions.
10239         (warn_hidden): New routine to warn of virtual functions that are
10240         hidden by other virtual functions, that are not overridden.
10241         (get_basefndecls): New routine, used by warn_hidden.
10242         (mark_overriders): New routine, used by warn_hidden.
10243         * search.c (get_matching_virtual): Remove old warning that just
10244         isn't very useful.
10245
10246 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10247
10248         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
10249
10250         * typeck.c (null_ptr_cst_p): Delete unused fn.
10251         (build_function_call_maybe): Delete unused fn.
10252
10253         * expr.c (extract_init): #if 0 the code after unconditional return 0
10254         for now.
10255
10256         Delete old cadillac code.
10257         * edsel.c: Remove file.
10258         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
10259         * Makefile.in (CXX_OBJS): Delete edsel.o.
10260         (edsel.o): Delete rule.
10261         * cp-tree.h (flag_cadillac): Delete var decl.
10262         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
10263         * decl2.c (flag_cadillac): Delete var definition.
10264         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
10265         (grokfield): Delete code depending on flag_cadillac.
10266         (finish_anon_union): Likewise.
10267         * class.c (finish_struct_1): Likewise.
10268         (pushclass): Likewise.
10269         (popclass): Likewise.
10270         (push_lang_context): Likewise.
10271         (pop_lang_context): Likewise.
10272         * decl.c (init_decl_processing): Likewise.
10273         (start_decl): Likewise.
10274         (cp_finish_decl): Likewise.
10275         (xref_tag): Likewise.
10276         (finish_enum): Likewise.
10277         (start_function): Likewise.
10278         (finish_function): Likewise.
10279         (finish_stmt): Likewise.
10280         * lex.c (lang_init): Likewise.
10281         (check_newline): Likewise.
10282
10283         * lex.c (do_pending_inlines): Delete synthesized method kludge.
10284
10285         Delete defunct, ancient garbage collection implementation.
10286         * rtti.c: New file with the RTTI stuff from gc.c.
10287         * gc.c: Removed file (moved the remaining stuff into rtti.c).
10288         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
10289         (rtti.o): New rule, replacing gc.o.
10290         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
10291         * cp-tree.h: Delete gc-related fn decls.
10292         (DECL_GC_OFFSET): Delete macro.
10293         (flag_gc): Delete extern decl.
10294         * decl.c (current_function_obstack_index): Delete var decl.
10295         (current_function_obstack_usage): Delete var decl.
10296         (start_function): Delete clearing of current_function_obstack_index
10297         and current_function_obstack_usage.
10298         (init_decl_processing): Delete code relying on -fgc.
10299         Delete call to init_gc_processing.
10300         (cp_finish_decl): Delete calls to build_static_gc_entry and
10301         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
10302         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
10303         and to expand_expr of a __gc_main call.
10304         (maybe_gc_cleanup): Delete var decl.
10305         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
10306         * decl2.c (flag_gc): Delete var decl.
10307         (lang_f_options): Delete offering of -fgc.
10308         (lang_decode_option): Delete -fgc and -fno-gc handling.
10309         (get_temp_regvar): Delete gc code.
10310         * init.c (build_new): Delete gc code.
10311         * lex.c (init_lex): Delete checking of flag_gc.
10312
10313         * typeck.c (convert_arguments): Delete gc code.
10314         (build_component_addr): Delete -fgc warning.
10315         (build_modify_expr): Delete gc code.
10316
10317         * decl2.c (build_push_scope): Delete fn.
10318         * cp-tree.h (build_push_scope): Delete decl.
10319
10320         * search.c (clear_search_slots): Delete fn.
10321         * cp-tree.h (clear_search_slots): Delete decl.
10322
10323         * search.c (tree_needs_constructor_p): Delete fn.
10324         * cp-tree.h (tree_needs_constructor_p): Delete decl.
10325
10326         * tree.c (id_cmp): Delete fn.
10327
10328         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
10329         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
10330
10331         * tree.c (decl_value_member): Delete fn.
10332         * cp-tree.h (decl_value_member): Delete decl.
10333
10334         * tree.c (list_hash_lookup_or_cons): Delete fn.
10335         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
10336
10337         * method.c (cplus_exception_name): Delete fn.
10338         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
10339
10340         * spew.c (shift_tokens): Delete fn.
10341
10342 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
10343
10344         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
10345         to cp_finish_decl.
10346         * parse.y: Likewise.
10347
10348 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10349
10350         * tree.c (build_cplus_staticfn_type): Delete function definition;
10351         never used.
10352         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
10353
10354         * tree.c (virtual_member): Delete function definition; never used.
10355         * cp-tree.h (virtual_member): Delete decl.
10356
10357 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
10358
10359         * typeck.c (build_component_ref): Handle getting vbase pointers
10360         out of complex multiple inheritance better.
10361
10362 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
10363
10364         * typeck.c (build_object_ref): Make sure we use the real type, not
10365         any reference type.
10366
10367 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
10368
10369         * tree.c (build_exception_variant): Don't create new types if we
10370         don't have to, also build new types on the right obstack.
10371
10372 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
10373
10374         * decl.c (store_bindings): Split out from push_to_top_level.
10375         (push_to_top_level): Call it for b->type_shadowed on class binding
10376         levels.
10377
10378 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
10379
10380         * search.c (expand_upcast_fixups): Fix so that offsets stored in
10381         vbase_offsets are always right.  Fixes a problem where virtual base
10382         upcasting and downcasting could be wrong during conversions on this
10383         during virtual function dispatch at ctor/dtor time when dynamic
10384         vtable fixups for deltas are needed.  This only sounds easier than
10385         it is.  :-)
10386         (fixup_virtual_upcast_offsets): Change to reflect new calling
10387         convention for expand_upcast_fixups.
10388
10389 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10390
10391         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
10392         check that it's usable as the bitfield width.
10393
10394 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10395
10396         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
10397         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
10398         only ever used for functions in it.
10399
10400 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
10401
10402         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
10403         (nested_type): Likewise.
10404         (nested_name_specifier): Use lastiddecl.
10405
10406         * decl.c (grokdeclarator): Adjust accordingly.
10407         * init.c (expand_member_init): Likewise.
10408         * parse.y (base_class): Likewise.
10409         * typeck2.c (build_functional_cast): Likewise.
10410
10411         * typeck2.c (build_functional_cast): Fill in name after we've
10412         checked for non-aggr type.
10413
10414 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
10415
10416         * decl2.c (warn_pointer_arith): Default to on.
10417
10418 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
10419
10420         * lex.c (is_rid): New function.
10421         * decl.c (grokdeclarator): Diagnose reserved words used as
10422         declarator-ids.
10423
10424 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
10425
10426         * tree.c (get_decl_list): Don't lose cv-quals.
10427
10428         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
10429         typespecs used as declarator-ids.
10430
10431 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
10432
10433         * decl.c (poplevel): When poping a level, don't give a warning for
10434         any subblocks that already exist.
10435
10436 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
10437
10438         * typeck.c (build_object_ref): Finish what I started.
10439
10440         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
10441
10442         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
10443
10444         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
10445         scope.
10446
10447 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
10448
10449         * decl.c (xref_tag): Handle passing a type in directly.
10450
10451         * parse.y (qualified_type_name): Pull out the type.
10452         (nested_type): Likewise.
10453         Take types directly instead of as identifiers.
10454         * call.c (build_scoped_method_call): Take types directly instead of
10455         as identifiers.
10456         * decl.c (xref_basetypes): Likewise.
10457         * init.c (expand_member_init): Likewise.
10458         (build_member_call): Likewise.
10459         (build_offset_ref): Likewise.
10460         * typeck2.c (build_scoped_ref): Likewise, remove bogus code.
10461         * method.c (do_build_assign_ref): Likewise.
10462         * decl.c (grokdeclarator): Handle a type appearing as the
10463         declarator-id for constructors.
10464         * method.c (do_build_copy_constructor): current_base_init_list now
10465         uses the types directly, not their names.
10466         * init.c (sort_base_init): Likewise.
10467         (expand_member_init): Likewise.
10468         * init.c (is_aggr_type): New function, like is_aggr_typedef.
10469
10470 Mon Jan 15 08:45:01 1996  Jeffrey A Law  <law@cygnus.com>
10471
10472         * tree.c (layout_basetypes): Call build_lang_field_decl instead
10473         of build_lang_decl if first arg is a FIELD_DECL.
10474
10475 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10476
10477         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
10478         non-empty.
10479         * except.c (expand_start_catch_block): Set TREE_USED to avoid
10480         warnings about the catch handler.
10481
10482 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
10483
10484         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
10485         expand_target_expr.
10486
10487 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10488
10489         Fix access control to use trees rather than integers.
10490         * class.c (access_{default, public, protected, private,
10491         default_virtual, public_virtual, private_virtual}_node): Add
10492         definitions.
10493         (init_class_processing): Do creation of those nodes.
10494         * cp-tree.h (access_type): Delete enum decl.
10495         (access_{default, public, protected, private, default_virtual,
10496         public_virtual, private_virtual}_node): Add decls.
10497         (compute_access): Change return type.
10498         * search.c (compute_access): Have tree return type, instead of enum.
10499         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
10500         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
10501         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
10502         * parse.y (VISSPEC): Make ttype rather than itype.
10503         (base_class_access_list): Likewise.
10504         * *.[cy]: Change all refs of `access_public' to `access_public_node',
10505         etc.
10506         * call.c (build_method_call): Make ACCESS be a tree.
10507         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
10508         * cvt.c (convert_to_aggr): Likewise.
10509         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
10510         Likewise.
10511         * method.c (hack_identifier): Likewise.
10512         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
10513
10514 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
10515
10516         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
10517         frontend, and make it more consistent with respect to
10518         warn_pointer_arith.
10519
10520 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
10521
10522         * decl.c (pushdecl): Check for duplicate parameter names.
10523
10524 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
10525
10526         * decl.c (expand_static_init): Call assemble_external for atexit.
10527
10528 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
10529
10530         * except.c (do_unwind): Remove some generated dead code.
10531         (eh_outer_context): New routine, factor out some common code from
10532         expand_builtin_throw and end_eh_unwinder.  Add code to do return
10533         address masking for the PA.
10534         (expand_builtin_throw): Use eh_outer_context instead of open coding
10535         it here.
10536         (end_eh_unwinder): Likewise.
10537
10538 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
10539
10540         * except.c (expand_throw): Call assemble_external for __empty, if we
10541         use it.
10542
10543 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
10544
10545         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
10546         NORMAL_RETURN_ADDR_OFFSET.
10547         (end_eh_unwinder): Likewise.
10548
10549 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
10550
10551         * gc.c (build_dynamic_cast): Make sure we don't cast away const
10552         when dealing with references, and make sure we handle dynamic
10553         casting to a cv qualified reference.
10554
10555 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
10556
10557         * except.c (struct eh_context): New structure top hold eh context
10558         information.
10559         (push_eh_context): New routine.
10560         (pop_eh_context): Likewise.
10561         * decl.c (push_cp_function_context): Use them.
10562         (pop_cp_function_context): Likewise.
10563
10564 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
10565
10566         * decl2.c (finish_file): Also prune uninteresting functions in the
10567         inline emission loop.
10568
10569 Wed Dec 20 02:32:07 1995  Jeffrey A Law  <law@cygnus.com>
10570
10571         * sig.c (build_signature_table_constructor): Mark functions
10572         in the signature as referenced.
10573
10574 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
10575
10576         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
10577         the inline emission stuff.
10578
10579 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
10580
10581         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
10582         weak symbols.   
10583         * lang-options.h: Add -f{no-,}weak.
10584         * decl.c (init_decl_processing): If the target does not support weak
10585         symbols, don't use them.
10586         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
10587
10588 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
10589
10590         * init.c (expand_member_init): warning for base init after members.
10591
10592 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
10593
10594         * cvt.c (build_expr_type_conversion): Don't convert to a reference
10595         type.
10596
10597 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
10598
10599         * method.c (report_type_mismatch): Improve wording for volatile
10600         mismatches.
10601
10602 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
10603
10604         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
10605         expand_assignment, as the later doesn't handle things that have
10606         copy constructors well.  The compiler would do bitwise copying,
10607         instead of ctor calling in some cases.
10608
10609 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
10610
10611         * g++.c (my_strerror): Return "cannot access" if errno is 0.
10612         (pfatal_with_name, perror_exec): Don't assume that
10613         the returned value from my_strerror contains no '%'s.
10614         (concat): Remove.
10615         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
10616
10617 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
10618
10619         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
10620         TYPE_METHODS/TREE_CHAIN mean what they used to. 
10621         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
10622         instead of TYPE_METHODS.
10623         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
10624         * tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
10625         * cp-tree.h (CLASSTYPE_METHODS): Lose.
10626         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
10627         TYPE_METHODS.
10628         (struct lang_decl): Lose next_method field.
10629         (DECL_NEXT_METHOD): Lose.
10630         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
10631         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
10632         anymore.
10633         (finish_struct_methods): Don't mess with the TREE_CHAINs in
10634         fn_fields.
10635
10636         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
10637         vector.
10638
10639         * call.c (build_method_call): Synthesize here even when not inlining.
10640         * typeck.c (build_function_call_real): Likewise.
10641
10642 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
10643
10644         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
10645         == DBX_DEBUG, call dbxout_start_new_source_file and
10646         dbxout_resume_previous_source_file when appropriate.
10647
10648 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
10649
10650         * except.c (start_anon_func): Push to the top level.
10651         (end_anon_func): Pop from the top level.
10652
10653 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
10654
10655         * cp-tree.h (build_cleanup): New routine to build cleanups.
10656         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
10657         call at ctor time and use atexit to run it later.
10658         * decl2.c (build_cleanup): New routine, taken from finish_file.
10659         (finish_file): Use build_cleanup instead, and don't put function
10660         local statics in global dtor list.
10661         
10662 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
10663
10664         * except.c (expand_throw): Ensure that we have cleanups, if we try
10665         and expand cleanups.
10666
10667 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
10668
10669         * except.c (expand_throw): Add logic to manage dynamic cleanups for
10670         the EH object.
10671         (expand_end_catch_block): Use the magic of expand_goto, instead of
10672         emit_jump so that we get the cleanup for any catch clause parameter
10673         and the cleanup for the exception object.  Update to reflect label
10674         changes.
10675         (push_eh_cleanup): New routine to register a cleanup for an
10676         exception object.
10677         (empty_fndecl): Used to default cleanup actions to
10678         nothing.
10679         (init_exception_processing): Setup empty_fndecl.  Setup
10680         saved_cleanup.
10681         (expand_start_catch_block): Update to reflect label changes.  Call
10682         push_eh_object to register the cleanup for the EH object.
10683         (start_anon_func): New routine to start building lambda expressions
10684         from trees.
10685         (end_anon_func): New routine to end them.
10686         (struct labelNode): Change so that we can use tree labels, or rtx
10687         labels.
10688         (saved_cleanup): Object to check for dynamic cleanups for the
10689         exception handling object.
10690         (push_label_entry): Change so that we can use tree labels, or rtx
10691         labels.
10692         (pop_label_entry): Likewise.
10693         (top_label_entry): Likewise.
10694         (expand_start_all_catch): Use tree label instead of rtx label, so
10695         that we can get the magic of expand_goto.
10696         (expand_end_all_catch): Update to reflect label changes.
10697
10698         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
10699         use UNSAVE_EXPRs.
10700         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
10701         building_cleanup logic, as we now use UNSAVE_EXPRs.
10702         * cp-tree.h (unsave_expr): Declare it.
10703         * decl.c (building_cleanup): Remove.
10704         (maybe_build_cleanup): Remove building_cleanup logic, and use
10705         UNSAVE_EXPR instead.
10706
10707 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
10708
10709         * gc.c (build_t_desc): Update error message to say <typeinfo>.
10710
10711 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10712
10713         * decl.c (pushdecl): Only warn about shadowing a local variable if
10714         warn_shadow is true.
10715
10716 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
10717
10718         * typeck.c (build_binary_op_nodefault): Added warning about
10719         comparisons between different enum types with -Wall, unless
10720         -fenum-int-equiv set.
10721
10722 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
10723
10724         * class.c (finish_struct_1): Skip down to the inner type in
10725         multidimensional arrays.  Ensures ctors will be made for types that
10726         need constructing.
10727
10728 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
10729
10730         * decl.c (last_dtor_insn): New to track the last compiler generated
10731         insn in a dtor.
10732         (store_parm_decls): Set it.
10733         (finish_function): Use it to see if the dtor is empty.  Avoid doing
10734         vtable setup all the time, if we can.
10735         (struct cp_function): Add last_dtor_insn.
10736         (push_cp_function_context): Save it.
10737         (pop_cp_function_context): Restore it.
10738
10739 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
10740
10741         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
10742         warnings.
10743
10744 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
10745
10746         * typeck.c (expand_target_expr): Make sure targets get put into the
10747         current temp_slot_level, so that the free_temp_slots call will reuse
10748         them.
10749
10750 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
10751
10752         * class.c (finish_struct_1): Delay delta fixups for virtual bases
10753         until after we have done the hard virtuals, to avoid a bogus `every
10754         virtual function must have a unique final overrider' for virtual
10755         functions that are only overridden by hard virtuals.
10756
10757 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
10758
10759         * pt.c (do_function_instantiation): Don't try to find a file-scope
10760         template for a member function.
10761
10762 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
10763
10764         * g++.c (main): Add handling of -nodefaultlibs.
10765
10766 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
10767
10768         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
10769         distinguish between direct bindings of reference variables, and
10770         indirect bindings of reference variables.
10771         * cvt.c (build_up_reference): Use it.
10772         * typeck.c (convert_arguments): Use it to indicate this is an
10773         indirect binding.
10774         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
10775         as they are unused.
10776         (expand_static_init): Likewise.
10777         (cplus_expand_expr_stmt): Likewise.
10778         * decl2.c (finish_file): Likewise.
10779         * init.c (perform_member_init): Likewise.
10780         (emit_base_init): Likewise.
10781         (expand_aggr_vbase_init_1): Likewise.
10782
10783 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10784
10785         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
10786         get a DECL_LANG_SPECIFIC node.
10787         * cp-tree.h (lang_decl_flags): Add new member `level'.
10788         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
10789         decl_flags level member.
10790
10791 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10792
10793         * call.c (build_method_call): Make sure instance has a
10794         TYPE_LANG_SPECIFIC node before we dive into it.  
10795
10796 Sat Nov  4 20:01:52 1995  Jason Molenda  <crash@phydeaux.cygnus.com>
10797
10798         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
10799
10800 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
10801
10802         * decl.c (duplicate_decls): When smashing decls, smash staticness in
10803         the usual way.
10804
10805 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
10806
10807         * decl.c (poplevel): Handle the merging of subblocks of cleanups
10808         when finishing blocks that have already been created (usually due to
10809         the fixup goto code).  Fixes bad debugging information.
10810
10811 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
10812
10813         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
10814         that's not a list of overloaded functions.
10815
10816 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10817
10818         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
10819         before trying to use DECL_ABSTRACT_VIRTUAL_P.
10820
10821 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
10822
10823         * decl2.c (mark_used): New function for hooking into setting of
10824         TREE_USED on decls.
10825         * call.c (build_method_call): Use it.
10826         * class.c (instantiate_type): Likewise.
10827         * init.c (build_offset_ref): Likewise.  Don't call assemble_external
10828         for all like-named functions.
10829         * method.c (hack_identifier): Likewise.
10830         (emit_thunk): Don't call assemble_external.
10831         (make_thunk): Create thunk as a FUNCTION_DECL so that it
10832         gets the right mode and ENCODE_SECTION_INFO works.
10833         
10834         * parse.y: Use mark_used.  Pass operator names to do_identifier.
10835         * lex.c (do_identifier): Handle operator names.
10836
10837         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
10838
10839 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10840
10841         * errfn.c: Include stdio.h.
10842         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
10843
10844 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
10845
10846         * typeck2.c (digest_init): Always convert initializers to the
10847         right type.
10848
10849 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
10850
10851         * init.c (member_init_ok_or_else): Don't allow member initializers
10852         for indirect members, as it is invalid.
10853
10854 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10855
10856         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
10857
10858 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
10859
10860         * parse.y (for.init.statement): Catch compound statements inside for
10861         initializations, if we're being pedantic.
10862
10863 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
10864
10865         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
10866         looking for.
10867
10868 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
10869
10870         * error.c (dump_expr): Don't core dump when a boolean expression is
10871         used as a default argument.
10872
10873 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
10874
10875         * class.c (finish_struct_bits): Check aggregate_value_p instead of
10876         RETURN_IN_MEMORY.
10877
10878 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
10879
10880         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
10881         BLKmode type that would otherwise be returned in registers.
10882
10883 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10884
10885         * g++.c (WITHLIBC): New macro.
10886         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
10887         saw_libc and pass it at the end if it was set.
10888
10889 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10890
10891         * parse.y (fn.def1): Call split_specs_attrs in
10892         declmods notype_declarator case.