OSDN Git Service

7a479dd7bbc1eef6d498ea025c92371cc27999e3
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 1998-07-24  Jason Merrill  <jason@yorick.cygnus.com>
2
3         * pt.c (coerce_template_parms): Also complain about local enums.
4
5         * cp-tree.h: Add prototype for set_identifier_local_value.
6         * decl.c (set_identifier_local_value_with_scope): Make static,
7         prototype.
8         * search.c (covariant_return_p): Likewise.
9         * except.c (build_terminate_handler, alloc_eh_object): Likewise.
10
11         * call.c (build_method_call): Only pull out the type of a destructor
12         if it's a template type parm.
13         * decl.c (lookup_name_real): Never return the from_obj value.
14
15 1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
16
17         * except.c (process_start_catch_block_old): Call start_decl_1 for
18         catch parm.
19         * decl.c (start_decl_1): Avoid duplicate error.
20
21         * init.c (expand_default_init): Only perform the initialization if
22         it will do something.
23
24 1998-07-23  H.J. Lu  (hjl@gnu.org)
25
26         * parse.y (base_class): Check for invalid base class.
27
28 1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
29
30         * decl2.c (import_export_template): Fold in...
31         (import_export_class): ...to here.  Handle dllimport/export.
32
33         * class.c (build_vtable): Pass at_eof to import_export_vtable.
34         (prepare_fresh_vtable): Likewise.
35         * decl2.c (import_export_class): Split out...
36         (finish_prevtable_vardecl): From here.
37         * class.c (finish_struct_1): Call import_export_class if at_eof.
38
39         * decl.c (start_function): #if 0 mysterious code I wrote and have 
40         forgotten why.
41         * rtti.c (get_tinfo_fn): If this is for a class type, set
42         DECL_CONTEXT.
43
44 1998-07-22  Jason Merrill  <jason@yorick.cygnus.com>
45
46         * inc/exception: Change terminate and unexpected to ().
47
48         * parse.y (named_class_head_sans_basetype_defn): A
49         named_class_head_sans_basetype followed by '{' or ':' is a defn.
50
51 1998-07-21  Jason Merrill  <jason@yorick.cygnus.com>
52
53         * tree.c (canonical_type_variant): New fn to handle arrays.
54         * cp-tree.h (CANONICAL_TYPE_VARIANT): Remove.
55         * pt.c (unify, default case): Also fold arg.  Fix array bounds case.
56         * method.c (process_overload_item): Use build_overload_value for
57         arrays.
58
59 1998-07-20  Dave Brolley  <brolley@cygnus.com>
60
61         * lex.c (mbchar.h): #include it.
62         (GET_ENVIRONMENT): New macro.
63         (init_parse): Set character set based on LANG environment variable.
64         (real_yylex): Handle multibyte characters in character literals.
65         (real_yylex): Handle multibyte characters in string literals.
66
67 1998-07-19  Jason Merrill  <jason@yorick.cygnus.com>
68
69         * lex.c (do_identifier): Look for class value even if we don't
70         have a global value.  Do implicit declaration if parsing is 2.
71         * semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
72         lookup.
73
74 1998-07-19  Mark Mitchell  <mark@markmitchell.com>
75
76         * decl.c (pushtag): Revert previous change.
77         * pt.c (lookup_template_class): Don't put out debugging
78         information for types that use template parameters.
79
80         * decl.c (pushtag): Don't put out debugging information for
81         compiler-generated typedefs.
82         
83         * error.c (dump_type_real): Don't crash when presented with
84         intQI_type_node or the like.
85
86         * semantics.c (finish_translation_unit): Fix spelling error in
87         comment.
88
89 1998-07-17  Jason Merrill  <jason@yorick.cygnus.com>
90
91         * decl.c (lookup_name_real): Pull out single function here.
92         (select_decl): Not here.
93         (unqualified_namespace_lookup): Use CP_DECL_CONTEXT.
94
95         * decl.c (qualify_lookup): Tweak again.
96
97         * pt.c (lookup_template_class): Don't mess with the context of the
98         instantiation.
99         * decl2.c (current_decl_namespace): Remove special handling for
100         templates.
101
102         * pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
103         a member template specialization.
104
105         * tree.c (ovl_member): Use decls_match to compare functions.
106         * decl.c (decls_match): Check the context of a function.
107
108         * parse.y (primary): Use notype_unqualified_id instead of IDENTIFIER
109         in Koenig lookup support rules.
110         * semantics.c (finish_call_expr): Handle the new cases.
111
112         * typeck.c (build_x_function_call): Handle overloaded methods.
113
114         * decl.c (grokvardecl): Don't call build_static_name for extern "C".
115
116 1998-07-16  Mark Mitchell  <mark@markmitchell.com>
117
118         * semantics.c (finish_object_call_expr): Revert previous change.
119         * call.c (build_new_method_call): Likewise.  Instead, convert
120         TYPE_DECLs to IDENTIFIERs here, in the presence of templates.
121
122 1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
123
124         * decl.c (qualify_lookup): Handle templates.
125
126         * decl2.c (do_using_directive): Don't pass ancestor.
127         * decl.c (push_using_directive): Calculate ancestor.
128
129         * decl2.c (do_nonmember_using_decl): Allow for type shadowing.
130         * decl.c (pushdecl): Move type shadowing handling from here...
131         (duplicate_decls): ...to here.
132         * decl.c (set_identifier_local_value_with_scope): New fn.
133         (pushdecl): Use it.
134         (set_identifier_local_value, lookup_type_current_level): New fns.
135         * decl2.c (do_local_using_decl): Handle types and binding level
136         stuff properly.
137
138         * init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
139         * decl.c (select_decl): Extract a lone function from an OVERLOAD.
140         (lookup_namespace_name): Likewise.
141         * typeck.c (build_unary_op): Not here anymore.
142
143         * decl2.c (do_class_using_decl): Make sure we get an identifier.
144         * class.c (handle_using_decl): Ignore TYPE_DECLs.
145
146         * decl.c (qualify_lookup): New fn.
147         (lookup_name_real): Use it.
148
149 1998-07-16  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
150
151         * decl2.c (add_using_namespace): When directly using a namespace
152         that was indirect before, promote it.
153
154         * cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
155         LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
156         LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
157         * decl.c (select_decl): Replace two flag parameters by one.
158         (unqualified_namespace_lookup): Likewise, pass flag.
159         (lookup_flags): New function.
160         (lookup_name_real): Compute flags, pass them.
161         (lookup_namespace_name): Call with zero-flag.
162         * decl2.c (ambiguous_decl): Add flag parameter, complain only
163         according to flags.
164         (lookup_using_namespace, qualified_lookup_using_namespace):
165         Add flag parameter, pass them through.
166         * lex.c (do_scoped_id): Call with zero-flag.
167
168 1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
169
170         * typeck.c (convert_for_assignment): Use comptypes.
171
172 1998-07-16  Mark Mitchell  <mark@markmitchell.com>
173
174         * semantics.c (finish_object_call_expr): Move test for the
175         function called being a TYPE_DECL to ...
176         * call.c (build_new_method_call): Here.
177
178 1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
179
180         * decl2.c (arg_assoc_class): Also look at template arguments, if any.
181         (arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.
182
183         * lex.c (looking_for_typename): Don't initialize.
184
185         * decl2.c (ambiguous_decl): Clarify error message.
186
187         * decl.c (push_using_directive): Iterate over namespaces used
188         indirectly.
189
190 1998-07-15  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
191
192         * decl2.c (add_using_namespace): Iterate over namespaces used
193         indirectly.
194
195         * decl.c (lookup_name_real): Accept namespace aliases as locals.
196         (cat_namespace_levels): Ignore aliases.
197         (duplicate_decls): Ignore duplicate aliases.
198         * decl2.c (do_namespace_alias): Process block level namespace
199         aliases. Store alias with pushdecl. Remove odr errors.
200         * parse.y (namespace_alias): New non-terminal.
201         (extdef): Use it.
202
203 1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
204
205         * decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
206         Handle TEMPLATE_TYPE_PARM.
207         (arg_assoc): Rewrite.
208
209         * pt.c (complete_template_args): Don't look at the context unless
210         we have to.
211
212         * method.c (build_decl_overload_real): Fix namespace handling.
213
214         * typeck.c (build_unary_op): Extract a lone function from an
215         OVERLOAD.
216
217         * call.c (build_scoped_method_call): Handle getting a namespace
218         for basetype in a destructor call.
219         (check_dtor_name): Handle enums.
220
221         * parse.y (using_directive): New nonterminal.
222         (extdef, simple_stmt): Use it.
223
224 1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>
225
226         * decl2.c (add_function): Move error message ...
227         (arg_assoc_namespace): ... from here.
228
229 1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
230
231         * parse.y (namespace_qualifier): Fix multiple level handling.
232         * decl2.c (namespace_ancestor): Use CP_DECL_CONTEXT.
233         (arg_assoc): Don't skip the first argument of a function.
234
235 Tue Jul 14 20:09:22 1998  Jeffrey A Law  (law@cygnus.com)
236
237         * search.c (my_tree_cons): Clean up.
238
239 1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
240
241         * call.c (joust): Don't warn about "confusing" conversions to the
242         same type.
243
244 1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>
245
246         * class.c (push_nested_class): Complain about namespaces.
247         * decl.c (start_decl): Enter the object's namespace.
248         (cp_finish_decl): Leave it.
249         (grokdeclarator): Likewise.
250         * decl2.c (check_decl_namespace): New function.
251         (finish_file): Call it.
252         * parse.y (complex_direct_notype_declarator): Set complexity
253         of namespace-qualified ids to -1, enter the namespace.
254
255         * method.c (build_template_decl_overload): Expect _DECL as first
256         parameter. Put context temporarily into current_namespace.
257         * pt.c (check_explicit_specialization): Change caller.
258         (tsubst): Likewise.
259
260         * init.c (build_offset_ref): Call mark_used and
261         convert_from_reference for namespace members.
262
263 Mon Jul 13 23:25:28 1998  Martin von Löwis  <loewis@informatik.hu-berlin.de>
264
265         * search.c (my_tree_cons): The bitfield is at index 2.
266
267 Mon Jul 13 17:21:01 1998  Nick Clifton  <nickc@cygnus.com>
268
269         * lang-options.h: Format changed to work with new --help support
270         in gcc/toplev.c
271         
272 1998-07-12  Martin von Löwis  <loewis@informatik.hu-berlin.de>
273
274         * decl2.c (build_expr_from_tree): Change calls of do_identifier.
275         Do Koenig lookup in CALL_EXPR.
276         (arg_assoc): Handle error_mark.
277         * lex.c (is_global): New function.
278         (do_identifier): Expect arguments for Koenig lookup.
279         * parse.y (primary): Add rules for calls of unqualified function calls.
280         (do_id): Change call of do_identifier.
281         * pt.c (finish_stmt_expr): Likewise.
282         * semantics.c (finish_id_expr): Likewise.
283         (finish_call_expr): Add integer parameter to indicate
284         argument-dependent lookup.
285
286         * decl.c (struct binding_level): New field using_directives.
287         (push_using_decl): Not sorry anymore.
288         (push_using_directive): New function.
289         (lookup_tag): Use CP_DECL_CONTEXT to iterate.
290         (unqualified_namespace_lookup): New function, code from ...
291         (lookup_name_real): ... here.
292         * decl2.c (lookup_using_namespace): Pass using list instead of
293         initial scope.
294         (validate_nonmember_using_decl): New function.
295         (do_nonmember_using_decl): New function.
296         (do_toplevel_using_decl): Use them.
297         (do_local_using_decl): New function.
298         (do_using_directive): Support block-level directives.
299         * parse.y (simple_stmt): Support using declarations and
300         directives.
301         (namespace_qualifier, namespace_using_decl): New non-terminals.
302
303         * xref.c (classname): New function.
304         (GNU_xref_hier): Change class and base parameters to tree.
305         * decl.c (xref_baseypes): Change caller.
306         * friend.c (make_friend_class): Likewise.
307
308 1998-07-12  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
309
310         * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter 
311         comparison.
312
313         * pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a 
314         template template parameter, record its use.
315         (for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse 
316         its template arguments if exists.
317
318         * pt.c (coerce_template_template_parms): New function equivalent
319         to coerce_template_parms when IS_TMPL_PARM is true.
320         (coerce_template_parms): Use it.  Remove the IS_TMPL_PARM parameter,
321         all callers changed.
322
323         (coerce_template_parms): Access ARGLIST properly when creating a
324         new vector.  Only accept implicit TYPE_DECL as valid argument for
325         a template template parameter when it is a base class of
326         current_class_type.  Don't display error message when COMPLAIN is
327         false.
328
329 1998-07-12  Klaus Kaempf (kkaempf@progis.de)
330
331         * repo.c (get_base_filename): Use file_name_nondirectory.
332         (open_repo_file): Ditto.
333         * cp-tree.h (file_name_nondirectory): Add prototype.
334
335 1998-07-12  Jason Merrill  <jason@yorick.cygnus.com>
336
337         * friend.c (do_friend): Pull the identifier out of declarator.
338         Use cp_error and friends.
339         * decl2.c (qualified_lookup_using_namespace): Fix call to 
340         purpose_member.
341         * decl.c (lookup_name_real): Don't call complete_type on a namespace.
342         (grokvardecl): Use DECL_CLASS_SCOPE_P.
343         * cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
344         * class.c (warn_hidden): Fix for OVERLOAD.
345         From grahams@rcp.co.uk:
346         * cp-tree.h (DEFARG_NODE_CHECK): New macro.
347         (DEFARG_LENGTH, DEFARG_POINTER): Use it.
348
349 Sun Jul 12 01:20:57 1998  Jeffrey A Law  (law@cygnus.com)
350
351         * g++.1 (-traditional): Remove duplicated documentation.
352
353 1998-07-11  Mark Mitchell  <mark@markmitchell.com>
354
355         * method.c (flush_repeats): Add nrepeats parameter.
356         (issue_nrepeats): Likewise.
357         (is_back_referenceable_type): New function.  Don't back-reference
358         TEMPLATE_TYPE_PARMs as well as simple types like integers.
359         (build_mangled_name_for_type): Likewise.
360         (build_mangled_name_for_type_with_Gcode): Likewise.
361         (lasttype): Remove.
362         (nrepeats): Likewise.
363         (Nrepeats): Likewise.
364         (start_squangling): Don't clear the variables removed above.
365         (end_squangling): Likewise.
366         (flush_repeats): Tidy.  Use nrepeats parameter rather than
367         Nrepeats global.
368         (issue_nrepeats): Likewise, but with nrepeats global.  Use
369         is_backreferenceable_type.
370         (build_overload_nested_name): Tidy.  Add comment.  Use
371         build_mangled_name_for_type.
372         (build_underscore_int): Comment.
373         (build_overload_scope_ref): Use build_mangled_name_for_type.
374         (build_overload_int): Likewise.
375         (build_template_template_parm_names): Tidy.
376         (build_template_parm_names): Use build_mangled_name_for_type.
377         (build_overload_identifier): Add comments.
378         (build_mangled_name_for_type_with_Gcode): Split out from
379         build_mangled_name.
380         (build_mangled_name_for_type): Use it.
381         (build_mangled_name): Rework to use build_mangled_name_for_type
382         and to not use global nrepeats/Nrepeats.  Tidy.
383         (process_modifiers): Tidy.
384         (check_btype): Use is_backreferenceable_type.  Add comment.
385         Rename `node' to `type'.
386         (process_overload_item): Set numeric_output_need_bar here.
387         Use build_mangled_name_for_type.  Tidy.
388         (build_decl_overload_real): Tidy.  Don't use Nrepeats.  Use
389         build_mangled_name_for_type.
390
391         * pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
392         for TYPE_DECLs.
393
394 1998-07-08  Vladimir N. Makarov  <vmakarov@cygnus.com>
395
396         * cp-tree.h (warn_long_long): Define.
397         * decl.c (grokdeclarator): Add flag `warn_long_long' as guard for
398         warning "ANSI C++ does not support `long long'".
399         * decl2.c (warn_long_long): Define.
400         (lang_decode_option): Parse -Wlong-long, -Wno-long-long options.
401
402 1998-07-07  Jason Merrill  <jason@yorick.cygnus.com>
403
404         * decl.c (xref_tag): Handle attributes between 'class' and name.
405         * parse.y (aggr): Likewise.
406         * semantics.c (finish_class_definition): Likewise.
407         * Makefile.in (EXPECTED): Adjust.
408
409         * cp-tree.h: Declare flag_optional_diags and warn_multichar.
410         * decl2.c: Define them.
411         (lang_decode_option): Handle them.
412         * lang-options.h: Add -foptional-diags.
413         * class.c (finish_struct): Don't complain about multiple meanings of 
414         name if -fno-optional-diags.
415         * decl.c (pushdecl_class_level): Likewise.
416         * lex.c (real_yylex): Check warn_multichar.
417
418 1998-07-06  Jason Merrill  <jason@yorick.cygnus.com>
419
420         * decl.c (lookup_tag): Use CP_DECL_CONTEXT.
421
422         * tree.c (make_binfo): Fix length.
423
424 1998-06-30  Benjamin Kosnik  <bkoz@bliss.nabi.net>
425
426         * decl2.c (lang_decode_option): Remove warn_template_debugging.
427         * lang-options.h: Ditto.
428
429 Mon Jun 29 20:17:40 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
430
431         * except.c (build_eh_type_type_ref): Remove unused variable `susp'.
432         (process_start_catch_block): Likewise for variables
433         `false_label_rtx', `call_rtx' and `return_value_rtx'.
434
435 1998-06-29  Brendan Kehoe  <brendan@cygnus.com>
436
437         * tree.c (build_srcloc): Make sure we allocate this node on the
438         permanent obstack.
439
440 Sat Jun 27 23:34:18 1998  Fred Fish  <fnf@ninemoons.com>
441
442         * g++spec.c (NEED_MATH_LIBRARY): Define to 1 if not already defined.
443         (lang_specific_driver): Initialize need_math with NEED_MATH_LIBRARY.
444         (lang_specific_driver): Only add -lm automatically if need_math is
445         nonzero.
446
447 Sat Jun 27 12:22:56 1998  Jeffrey A Law  (law@cygnus.com)
448
449         * Make-lang.in (g++): Depend on mkstemp.o.  Link in mkstemp.o
450
451 Sat Jun 27 07:36:09 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
452
453         * Makefile.in (EXPR_H): New dependency variable.
454         (decl2.o): Depend on $(EXPR_H).
455         (typeck.o): Likewise.
456         (init.o): Likewise.
457         (expr.o): Likewise.
458
459 1998-06-25  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
460
461         * decl.c (start_enum): Put local enums on permanent_obstack.
462
463 1998-06-25  Mark Mitchell  <mark@markmitchell.com>
464
465         * cp-tree.h (c_get_alias_set): Declare.
466         * decl.c (init_decl_processing): Set lang_get_alias_set.
467
468 1998-06-25  Andrew MacLeod  <amacleod@cygnus.com>
469
470         * cp-tree.h (mark_all_runtime_matches): Add function prototype.
471         * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED
472         flag for all function decls which are in the exception table. 
473         * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match.
474         * decl2.c (finish_file): Call mark_all_runtime_matches to make sure
475         code is emitted for any referenced rtti function.
476
477 1998-06-25  Dave Brolley  <brolley@cygnus.com>
478
479         * lang-specs.h: Use new | syntax to eliminate
480         string concatenation.
481
482 1998-06-25  Jason Merrill  <jason@yorick.cygnus.com>
483
484         * cp-tree.h (CP_DECL_CONTEXT): New macro.
485         * decl2.c (is_namespace_ancestor, lookup_using_namespace): Use it.
486         * method.c (build_overload_nested_name): Likewise.
487         * sig.c (build_signature_pointer_or_reference_type): Don't set
488         DECL_CONTEXT.
489
490 1998-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
491
492         Set DECL_CONTEXT for globals to NULL_TREE instead of global_namespace.
493         * cp-tree.h (FROB_CONTEXT): New macro.
494         (DECL_MAIN_P): ::main should have a DECL_CONTEXT of NULL_TREE.
495         * decl.c (namespace_binding): Replace NULL_TREE with
496         global_namespace.
497         (set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
498         * decl2.c (is_namespace_ancestor, lookup_using_namespace):
499         Likewise.
500         * decl.c (pushtag): Use FROB_CONTEXT.
501         (pushdecl, make_typename_type, define_function, grokdeclarator):
502         Likewise.
503         * decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
504         * pt.c (push_template_decl_real, lookup_template_class, tsubst):
505         Likewise.
506         * decl2.c (decl_namespace): Return global_namespace if no context.
507         * method.c (build_overload_nested_name): Expect null as context.
508         * pt.c (mangle_class_name_for_template): Do nothing for null
509         contexts.
510         (lookup_template_class): Allow for null id_context.
511
512 1998-06-25  Richard Henderson  <rth@cygnus.com>
513
514         * method.c (emit_thunk): Set current_function_is_thunk for the
515         ASM_OUTPUT_MI_THUNK case as well.
516
517 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
518
519         * exception.cc (__cplus_type_matcher): Get a match_info pointer
520         instead of an exception table entry as a parameter.
521
522 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
523
524         * parse.y (function_try_block): Don't call start_catch_handler.
525         * except.c (call_eh_info): Remove coerced field from declaration.
526         (build_eh_type_type_ref): New function to create an address of a
527         rtti function for the new style exception tables.
528         (expand_start_catch_block): Split function, this contains the
529         common part.
530         (process_start_catch_block_old): New function to perform the rest
531         of expand_start_catch_block under old style exceptions.
532         (process_start_catch_block_old): New function to perform the rest
533         of expand_start_catch_block under new style exceptions.
534         (expand_end_catch_block): Only pop the false label off the stack under
535         the old style of exceptions.
536         * semantics.c (finish_try_block): Don't call start_catch_handler.
537         * exception.cc (struct cp_eh_info): Add original_value field.
538         (__cplus_type_matcher): Perform type matching on the original exception
539         value, and if we have a match, set the current value.
540         (__cp_push_exception): Set the original expcetion value.
541
542 1998-06-23  Jason Merrill  <jason@yorick.cygnus.com>
543
544         * call.c (joust): Fix confusing conversion warning.
545
546         * call.c (build_op_delete_call): Add placement parm.  Check
547         LOOKUP_SPECULATIVELY.
548         * cp-tree.h, decl2.c, init.c: Adjust.
549         * decl.c (finish_function): Use it.
550
551         * pt.c (tsubst): Diagnose creating void fields or variables.
552
553 Mon Jun 22 08:50:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
554
555         * call.c (build_scoped_method_call): Remove unused variable `tmp'.
556
557         * cp-tree.h (check_dtor_name): Add prototype.
558
559         * init.c (expand_member_init): Remove unused variables
560         `ptr_type_node', `parm' and `rval'.
561
562         * ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
563         in call to fprintf.
564         (lang_print_xnode): Likewise.
565
566         * typeck2.c (enum_name_string): Cast argument to sprintf to long
567         and use %ld specifier.
568
569         * xref.c (GNU_xref_end_scope): Use HOST_WIDE_INT_PRINT_DEC
570         specifier in call to fprintf.
571         (GNU_xref_member): Cast argument to sprintf to int.
572
573 Fri Jun 19 23:22:42 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
574
575         * typeck2.c (pop_init_level): Warn about implicit zero initialization
576         of struct members.
577
578 Thu Jun 18 09:32:32 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
579
580         * cp-tree.h: Prototype function `check_java_method'.
581
582 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
583
584         * class.c (finish_struct): Make conflicting use of id a pedwarn.
585         * decl.c (pushdecl_class_level): Likewise.
586
587 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
588
589         * pt.c (convert_nontype_argument): Issue an error when presented
590         with an integer (real) constant that cannot be simplified to an
591         INT_CST (REAL_CST).
592
593         * cp-tree.h (c_get_alias_set): Remove declaration added in
594         1998-06-13 change that should never have been checked in.
595
596 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
597
598         * typeck.c (build_binary_op_nodefault): Change % in format strings
599         to %%.
600
601         * decl.c (grokvardecl): Don't build_static_name for decls that
602         aren't at namespace scope.
603
604         * init.c (perform_member_init): Catch default-initialization of
605         references.
606
607 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
608
609         * errfn.c (cp_thing): Handle the `%%' formatting sequence.
610
611 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
612
613         * method.c (hack_identifier): Complain about getting a namespace
614         or class template.
615         * typeck.c (decay_conversion): Remove check for namespaces.
616         * typeck2.c (incomplete_type_error): Likewise.
617         * parse.y (template_arg): Add PTYPENAME expansion.
618
619 1998-06-16  Andrew MacLeod  <amacleod@cygnus.com>
620
621         * decl.c (grokvardecl): Don't build external assembler names for 
622         TYPENAMEs in other namespaces as there is no declarator.
623         * error.c (cp_file_of, cp_line_of): Don't extract file or line number
624         info from DECL_CONTEXT if it is NULL.
625
626 1998-06-16  Jason Merrill  <jason@yorick.cygnus.com>
627
628         * call.c (check_dtor_name): Split out.
629         (build_scoped_method_call): Use it.
630         (build_method_call): Use it.
631         * init.c (build_offset_ref): Use it.
632
633         * typeck.c (build_static_cast): Fix handling of pointers to members.
634
635         * decl.c (finish_function): Just return nothing from a constructor.
636         * typeck.c (c_expand_return): Complain about returning a void
637         expression from a destructor.
638
639 1998-06-13  Mark Mitchell  <mark@markmitchell.com>
640
641         * class.c (alter_access): Accept a BINFO explaining how to get
642         from the entity whose accessed is being altered to the type doing
643         the altering.
644         (handle_using_decl): New function containing code split out from ...
645         (finish_struct_1): Here.
646
647         * cp-tree.h (complete_type_or_else): Declare.
648         * init.c (build_new_1, build_delete): Use it.
649         * typeck.c (require_complete_type): Use complete_type, rather than
650         expanding it inline.
651         (complete_type_or_else): New function.
652         (build_component_ref): Use it.
653         (pointer_int_sum): Make sure the type pointed to is complete.
654         (pointer_diff): Likewise.
655
656         * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
657         types. 
658
659         * search.c (get_matching_virtual): Note that member templates
660         cannot override virtual functions.
661
662 1998-06-12  Brendan Kehoe  <brendan@cygnus.com>
663
664         * pt.c (check_explicit_specialization): If DECLARATOR turned into
665         an error_mark_node from lookup_template_function, return the same.
666         (determine_specialization): Also make sure TEMPLATE_ID isn't an
667         error_mark_node, before we try to read its operands.
668         * decl.c (grokdeclarator): If we got an error_mark_node from
669         check_explicit_specialization, just return it right back.
670
671 1998-06-12  Mark Mitchell  <mark@markmitchell.com>
672
673         * class.c (instantiate_type): Don't treat template-ids that don't
674         specify any template arguments as equivalent to ordinary
675         identifiers.  Use OFFSET_REF instead of SCOPE_REF to refer to
676         pointer-to-members for member templates.  Tidy slightly.
677         * cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
678         * init.c (build_offset_ref): Handle template-ids like ordinary
679         identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
680         offset part of the OFFSET_REF.
681         * typeck.c (build_unary_op): Change check for unknown types to
682         look for OFFSET_REFs, not SCOPE_REFs.
683
684 1998-06-11  Mark Mitchell  <mark@markmitchell.com>
685
686         * pt.c (is_member_template_class): New function.
687         (push_template_decl_real): Use it.
688
689 1998-06-11  Benjamin Kosnik  <bkoz@elmo.cygnus.com>
690
691         * friend.c (do_friend): Add support for nested classes using
692         member functions of the enclosing class as friends.
693
694 1998-06-10  Mark Mitchell  <mark@markmitchell.com>
695
696         * call.c (convert_default_arg): Make global, not static.
697         (convert_arg_for_ellipsis): Split out from ...
698         (build_over_call): Here.
699         * cp-tree.h (convert_default_arg); Declare.
700         (convert_arg_to_ellipsis): Likewise.
701         (do_member_init): Remove.
702         * init.c (do_member_init): Remove; this code is dead.
703         (expand_member_init): Remove much of this code; it is dead.
704         * typeck.c (convert_arguments): Use convert_default_arg and
705         convert_arg_for_ellipsis, rather than duplicating here.
706         
707         * call.c (convert_like): Don't fail silently if 
708         build_user_type_conversion fails.  Always return error_mark_node 
709         for failure.
710
711 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
712
713         * search.c (covariant_return_p): Complain about ambiguous base.
714
715         * typeck.c (build_component_ref): Diagnose ref to nested type.
716
717 1998-06-10  Brendan Kehoe  <brendan@cygnus.com>
718
719         * decl.c (grokparms): Check that INIT isn't an error_mark_node
720         before giving error about invalid type for default arg.
721
722 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
723
724         * call.c (build_method_call): Fix thinko.
725
726 1998-06-10  Dave Brolley  <brolley@cygnus.com>
727
728         * decl2.c (lang_decode_option): New argc/argv interface.
729         * cp-tree.h (lang_decode_option): New argc/argv interface.
730         * lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
731         specified for cpplib-enabled compilers.
732         * lex.c (lang_init): Don't check_newline for cpplib.
733         (init_parse): Don't initialize cpplib here.
734
735 1998-06-10  Brendan Kehoe  <brendan@cygnus.com>
736
737         * typeck.c (build_component_ref): Make sure FIELD has a lang_specific
738         piece before checking DECL_MUTABLE_P.
739
740 1998-06-10  John Carr  <jfc@mit.edu>
741
742         * tree.c (debug_binfo): Make printf format match arguments.
743
744         * error.c (OB_PUTI): Make printf format match arguments.
745
746 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
747
748         * init.c (perform_member_init): Handle default-initialization.
749
750         * except.c (build_throw): Handle throwing NULL.
751
752         * typeck.c (build_x_function_call): Use resolve_offset_ref.
753
754         * search.c (compute_access): Only strip an anonymous union
755         for a FIELD_DECL.
756
757         * call.c (add_builtin_candidates): Tweak.
758
759         * cvt.c (build_expr_type_conversion): Restore code for conversion
760         from class types.
761         * decl2.c (delete_sanity): Use it.  Clean up.
762
763         * typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.
764
765 1998-06-10  Branko Cibej  <branko.cibej@hermes.si>
766
767         * typeck.c (c_expand_return): Don't warn about void expressions on
768         return statements in functions returning void.
769
770 1998-06-09  Mark Mitchell  <mark@markmitchell.com>
771
772         * pt.c (fn_type_unification): Revise documentation.  Tidy.
773         (type_unification): Likewise.
774
775 1998-06-09  Andrew MacLeod  <amacleod@cygnus.com>
776
777         * semantics.c (finish_try_block): Rename expand_start_catch, and delete
778         expand_end_catch.
779         * parse.y (function_try_block): Rename expand_start_catch, and delete
780         expand_end_catch.
781         * except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
782         expand_end_catch.
783
784 1998-06-09  Jason Merrill  <jason@yorick.cygnus.com>
785
786         * search.c (lookup_member): New fn.
787         * class.c (finish_struct_1): Use it.
788         * decl.c (lookup_name_real): Use it.
789
790 Mon Jun  8 20:45:52 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
791
792         * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
793
794         * cp-tree.h: Add prototype for `maybe_print_template_context' and
795         `maybe_make_one_only'.
796
797         * decl.c (auto_function): Remove unused variable `decl'.
798
799         * decl2.c: Include dwarf2out.h and dwarfout.h.
800
801         * lex.c: Remove redundant declarations of `set_float_handler' and
802         `asm_out_file'.
803
804 1998-06-08  Andrew MacLeod  <amacleod@cygnus.com>
805
806         * except.c (init_exception_processing): Remove NEW_EH_MODEL compile 
807         time flag.  Call __cp_eh_info instead of __cp_exception_info.
808         * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
809         (__cp_exception_info): Return offset into cp_eh_info structure to 
810         match what use to be the start of this structure.
811         (__cp_eh_info): New function to return a pointer to cp_eh_info struct.
812         (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
813         compile time flag.
814         (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call 
815         __cp_eh_info instead of __cp_exception_info.
816
817 1998-06-08  Jason Merrill  <jason@yorick.cygnus.com>
818
819         * decl.c (cp_finish_decl): Disable inlining of extern inlines
820         with static variables.
821
822 1998-06-08  Mark Mitchell  <mark@markmitchell.com>
823
824         * init.c (build_offset_ref): Correct previous change to use build,
825         not build_min.
826
827 1998-06-07  Mark Mitchell  <mark@markmitchell.com>
828
829         * class.c (instantiate_type): Handle pointer-to-members where the
830         member is a template.
831         * init.c (build_offset_ref): Likewise.
832         * typeck.c (build_unary_op): Likewise.
833
834 1998-06-07  Richard Henderson  <rth@cygnus.com>
835
836         * lex.c (lang_init_options): New function.
837         (lang_init): Remove flag_exceptions == 2 hack.
838         
839 1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
840
841         * search.c (envelope_add_decl): Tweak for implicit typename.
842
843         * call.c (joust): Also warn about confusing conversion op/constructor
844         overload resolution.
845
846         * spew.c (yylex): Also return the TYPE_DECL if got_object.
847         Don't clear got_object after '~'.
848         * call.c (build_scoped_method_call): Tweak destructor handling.
849         (build_method_call): Likewise.
850         * pt.c (tsubst_copy, case METHOD_CALL_EXPR): Don't mess with
851         TYPE_MAIN_VARIANT for destructors.
852         * semantics.c (finish_object_call_expr): Complain about calling a
853         TYPE_DECL.
854
855 1998-06-05  Per Bothner  <bothner@cygnus.com>
856
857         * g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
858         Define - update needed by gcc.c change.
859
860 1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
861
862         * error.c (cp_printers): Use 'o' instead of '_' for the null entry.
863
864 1998-06-05  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
865
866         * cp-tree.h (DECL_NAMESPACE_ALIAS, ORIGINAL_NAMESPACE): Declare.
867         * decl.c (lookup_name_real): Add namespaces_only parameter.
868         If set, return only NAMESPACE_DECLs.
869         (select_decl): Likewise.
870         (identifier_type_value): Give additional parameter.
871         (lookup_name_nonclass): Likewise.
872         (lookup_name): Likewise.
873         (find_binding): Skip namespace aliases.
874         (binding_for_name): Likewise.
875         (push_namespace): Check for namespace aliases.
876         (lookup_name_namespace_only): New function.
877         (begin_only_namespace_names, end_only_namespace_names): New functions.
878         * decl2.c (set_decl_namespace): Skip namespace aliases.
879         (do_using_directive): Likewise.
880         (do_namespace_alias): Produce namespace aliases, fix alias 
881         redeclaration.
882         * error.c (dump_decl): Support SCOPE_REF.
883         * parse.y (extdef): Wrap lookup with namespace_only for namespace
884         aliases and using declarations.
885
886 1998-06-04  Jason Merrill  <jason@yorick.cygnus.com>
887
888         * tree.c (really_overloaded_fn): Only see through one TREE_LIST.
889
890         * error.c (dump_expr): Clean up NEW_EXPR case.
891
892 1998-06-04  Martin von Löwis  <loewis@informatik.hu-berlin.de>
893
894         Suggested by Brendan Kehoe
895         * decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
896         treat it as using ::decl.
897
898         * decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.
899
900         * tree.c (mapcar): Support NEW_EXPR.
901
902         * error.c (dump_expr): Support NEW_EXPR.
903
904 1998-06-03  Jason Merrill  <jason@yorick.cygnus.com>
905
906         * method.c (make_thunk): Use overload machinery to make name.
907         * search.c (covariant_return_p): New fn.
908         (get_matching_virtual): Use it.
909
910         * init.c (build_new_1): Fix check for void.
911
912 1998-06-01  Per Bothner  <bothner@cygnus.com>
913
914         * cp-tree.h (TYPE_FOR_JAVA):  New macro.
915         * decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
916         java_int_type_node, java_long_type_node, java_float_type_node,
917         java_double_type_node, java_char_type_node, java_boolean_type_node):
918         New "primitive" types, with predefined names __java_byte etc.
919         (record_builtin_java_type):  New function.
920         (init_decl_processing):  Make Java types with record_builtin_java_type.
921         (pushtag, grokdeclarator):  Set TYPE_FOR_JAVA if in extern "JAVA".
922         (xref_baseypes):  If base class was TYPE_FOR_JAVA, so is this class.
923         (grokfndecl):  Call check_java_method for Java classes.
924         * method.c (is_java_type):  Removed.  Replaced with TYPE_FOR_JAVA.
925         (process_overload_item):  Match types against specific
926         java_XX_type_node types, rather than using is_java_type.
927         * class.c (finish_struct_1):  Don't add default copy constructor
928         or operator= if TYPE_FOR_JAVA.
929         (pop_lang_conext):  Restore strict_prototyp proper if Java.
930         * decl2.c (acceptable_java_type, check_java_method):  New functions.
931         * pt.c (instantiate_class_template):  Copy TYPE_FOR_JAVA from pattern.
932         (tsubst):  Move common statement after if statement.
933         * typeck.c (comptypes):  If strict, TYPE_FOR_JAVA must match.
934
935 1998-06-01  Jason Merrill  <jason@yorick.cygnus.com>
936
937         * pt.c (for_each_template_parm): Use first_rtl_op.
938
939         * tree.c (build_cplus_array_type_1): Also check index_type for
940         template parms.
941
942 1998-05-31  Jason Merrill  <jason@yorick.cygnus.com>
943
944         * pt.c (tsubst): Always copy BINFO_BASETYPES.
945
946 1998-05-29  scott snyder  <snyder@d0sgif.fnal.gov>
947
948         * tree.c (layout_basetypes): If we change TYPE_SIZE, change
949         TYPE_SIZE_UNIT too.
950
951 1998-05-29  Mark Mitchell  <mark@markmitchell.com>
952
953         * decl.c (grokdeclarator): Don't complain about in-class
954         initialization of static consts if we don't really know the type
955         of the variable.
956
957 1998-05-29  Jason Merrill  <jason@yorick.cygnus.com>
958
959         * cp-tree.h (DECL_DESTRUCTOR_P): New macro.
960         * method.c (build_destructor_name): New fn.
961         * decl2.c (maybe_retrofit_in_chrg): Split out...
962         (grokclassfn): From here.  Reorganize.
963         * decl.c (grok_ctor_properties): Make sure ctors for types with 
964         vbases have the in_chrg parm.
965         * pt.c (instantiate_class_template): Update 
966         TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases.  Don't call
967         grok_*_properties.
968         (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.
969
970 1998-05-28  Mark Mitchell  <mark@markmitchell.com>
971
972         * pt.c (instantiate_decl): Make test for whether or not static
973         variables should be instantiated early match its comment.
974
975 1998-05-28  Jason Merrill  <jason@yorick.cygnus.com>
976
977         * decl.c (start_decl): Always pedwarn about vacuously redeclaring 
978         a member.
979         (start_function): Call check_default_args.
980         * decl2.c (grokfield): Don't call check_default_args.
981         (check_default_args): Use cp_error_at.
982         * lex.c (do_pending_defargs): Call check_default_args.
983
984 1998-05-27  Brendan Kehoe  <brendan@cygnus.com>
985
986         * call.c (build_method_call): Make sure get_type_value returns
987         something before we try to use its TYPE_MAIN_VARIANT.
988         (build_scoped_method_call): Likewise.
989
990 1998-05-27  Jason Merrill  <jason@yorick.cygnus.com>
991
992         * typeck2.c (digest_init): Complain about getting a TREE_LIST to
993         initialize an array.
994
995         * search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
996         DECL_VIRTUAL_P.
997
998         * friend.c (do_friend): Clarify template warning.
999
1000 1998-05-27  Mark Mitchell  <mark@markmitchell.com>
1001
1002         * decl.c (shadow_label): Don't treat decls as identifiers.
1003         (maybe_push_to_top_level): Clear shadowed_labels.
1004
1005         * pt.c (instantiate_decl): Reset lineno and filename after calling
1006         regenerate_decl_from_template. 
1007
1008         * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
1009         error_mark_node.
1010
1011 1998-05-27  Kevin Buhr  <buhr@stat.wisc.edu>
1012
1013         * parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.
1014
1015 1998-05-26  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1016
1017         * pt.c (process_template_parm): Accept TYPENAME_TYPE nodes.
1018         (convert_nontype_argument): Handle cases when nontype template
1019         parameters become classes after substitution.
1020
1021 1998-05-26  Mark Mitchell  <mark@markmitchell.com>
1022
1023         * friend.c (is_friend): Use comptypes, rather than == to compare
1024         types.  Modify for new representation of template friends.
1025         (make_friend_class): Likewise.
1026         * pt.c (tsubst_friend_class): Undo 1998-05-21 change.  Tweak.
1027         (instantiate_class_template): Deal with template friends.
1028
1029         * decl.c (store_parm_decls): Remove redundant call to
1030         expand_main_function.
1031
1032 1998-05-26  Benjamin Kosnik  <bkoz@loony.cygnus.com>
1033
1034         * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
1035         DECL_USE_TEMPLATE.
1036
1037 1998-05-26  Per Bothner  <bothner@cygnus.com>
1038
1039         * language_as_string:  Handle lang_java.
1040
1041 1998-05-26  Jason Merrill  <jason@yorick.cygnus.com>
1042
1043         * decl.c (pushdecl): Don't copy the type_decl.
1044
1045 1998-05-26  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
1046
1047         * class.c (pushclass): Always store TYPE_MAIN_VARIANT in
1048         current_class_type.
1049         * decl.c (grokdeclarator): Put typedefs on the type's obstack.
1050
1051         * parse.y (complex_direct_notype_declarator): Use $1 to access
1052         scope of notype_qualified_id.
1053
1054 1998-05-26  Dave Brolley  <brolley@cygnus.com>
1055
1056         * lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
1057         (init_parse): Initialize cpplib interface.
1058
1059         * Makefile.in (CXX_OBJS): Make sure dependencies never end with an
1060         empty continuation.
1061
1062 1998-05-26  Mark Mitchell  <mark@markmitchell.com>
1063
1064         * decl.c (pushtag): Avoid crashing on erroneous input.
1065
1066 1998-05-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
1067
1068         * decl.c (push_namespace): Only produce one unique name for
1069         anonymous namespaces.
1070         (get_unique_name): Remove.
1071
1072 1998-05-25  Mark Mitchell  <mark@markmitchell.com>
1073
1074         * call.c (tourney): Don't do any extra comparisons.
1075
1076         * decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.
1077
1078         * cp-tree.h (processing_template_parmlist): Declare.
1079         * decl.c (pushtag): Don't call push_template_decl when we
1080         shouldn't. 
1081         * pt.c (processing_template_parmlist): New variable.
1082         (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro.
1083         (complete_template_args): Use it.
1084         (add_to_template_args): Likewise.
1085         (innermost_args): Likewise.
1086         (tsubst): Likewise.
1087         (begin_template_parm_list): Use processing_template_parmlist.
1088         (end_template_parm_list): Likewise.
1089
1090         * cp-tree.h (ANON_UNION_TYPE_P): New macro.
1091         * decl.c (grokdeclarator): Use it.
1092         * decl2.c (grok_x_components): Likewise.
1093         * init.c (initializing_context): Likewise.
1094         * method.c (do_build_copy_constructor): Likewise.
1095         (do_build_assign_ref): Likewise.
1096         * search.c (compute_access): Likewise.
1097         * typeck.c (build_component_ref): Likewise.
1098
1099         * decl.c (grokdeclarator): Don't give a cv-qualified version of an
1100         unnamed type a typedef name "for linkage purposes".
1101
1102         * pt.c (lookup_template_class): Don't look at
1103         IDENTIFIER_CLASS_VALUE when there's no current_class_type.
1104
1105         * method.c (build_overload_int): Handle error cases gracefully.
1106
1107         * pt.c (instantiate_decl): Handle static member variables
1108         correctly.
1109
1110         * pt.c (tsubst): Use the tsubst'd type when producing new
1111         TEMPLATE_PARM_INDEX nodes.
1112
1113 1998-05-24  Mark Mitchell  <mark@markmitchell.com>
1114
1115         * tree.c (cp_tree_equal): Handle pointers to member functions.
1116
1117         * call.c (maybe_handle_implicit_object): Handle QUAL_CONVs.  Make
1118         sure the type of the REF_BIND is a reference type.
1119         (maybe_handle_ref_bind, compare_ics): Rename reference_type to
1120         target_type for clarity.
1121
1122         * parse.y (xcond): Move call to condition_conversion ...
1123         * semantics.c (finish_for_cond): Here.
1124         * parse.c: Regenerated.
1125         
1126 1998-05-24  Jason Merrill  <jason@yorick.cygnus.com>
1127
1128         * decl.c (push_namespace): Namespaces have type void.
1129         * typeck2.c (incomplete_type_error): Complain about namespace
1130         used as expression.
1131         * typeck.c (decay_conversion): Likewise.
1132
1133 1998-05-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1134
1135         * error.c (dump_expr): Support namespaces.
1136
1137 1998-05-23  Jason Merrill  <jason@yorick.cygnus.com>
1138
1139         * cp-tree.def: Add SRCLOC.
1140         * cp-tree.h: Add struct tree_srcloc and accessor macros.
1141         * tree.c (build_srcloc, build_srcloc_here): New fns.
1142         * pt.c (add_pending_template): Use build_srcloc_here.
1143         (push_tinst_level): Update last_template_error_tick before erroring.
1144         (instantiate_decl): Restore lineno and input_filename before 
1145         calling add_pending_template.
1146         * decl2.c (finish_file): Set up lineno and input_filename for
1147         pending templates.
1148
1149 1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
1150
1151         * decl.c (lang_print_error_function): New fn.  
1152         (init_decl_processing): Set print_error_function to use it.
1153         * errfn.c (cp_thing): Don't call maybe_print_template_context here.
1154
1155         * call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
1156         ICS_BAD_FLAG.
1157
1158         * cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
1159         copy-initialization.
1160
1161         * class.c (build_vtable_entry): Use int_fits_type_p.
1162         (build_vtable): Pass a signed offset to build_vtable_entry.
1163         (prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
1164         set_rtti_entry): Likewise.
1165
1166 1998-05-22  Per Bothner  <bothner@cygnus.com>
1167
1168         * cp-tree.h:  Add comments documenting which LANG_FLAGS are used.
1169         (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE):  Removed, not used.
1170
1171 1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
1172
1173         * pt.c (print_template_context): Use fprintf instead of cp_error.
1174
1175         * pt.c (determine_specialization): Just return an error_mark_node.
1176         Also print the decl we want in error messages.  If we complain,
1177         return error_mark_node.
1178         (tsubst_friend_function): Set lineno and input_filename so 
1179         error messages will be useful.
1180         (instantiate_template): Just return an error_mark_node.
1181         (check_explicit_specialization): Don't mess with a returned
1182         error_mark_node.
1183
1184         * pt.c (print_template_context): Add new argument.
1185         (maybe_print_template_context): New fn.
1186         (push_tinst_level): Increment tinst_level_tick.
1187         (pop_tinst_level): Likewise.
1188         * errfn.c (cp_thing): Call maybe_print_template_context.  Use
1189         xrealloc instead of xmalloc.
1190
1191         * typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.
1192
1193 1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
1194
1195         * pt.c (tsubst_friend_class): Don't call redeclare_class_template
1196         if the template we looked up is the same as the one we already
1197         have.
1198
1199 Thu May 21 11:54:44 1998  Dave Brolley  <brolley@cygnus.com>
1200
1201         * lex.c: (handle_sysv_pragma): FILE* parameter not used.
1202         (cpp_reader,parse_in): Add for cpplib.
1203         (check_newline): Call handle_sysv_pragma with new interface.
1204         (check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.
1205
1206         * input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
1207         (sub_getch): Call GETC for cpplib.
1208
1209         * cp-tree.h: (get_directive_line): Different prototype for cpplib.
1210         (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
1211
1212         * Makefile.in (CXX_OBJS): add @extra_cxx_objs@ for cpplib.
1213
1214 1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
1215
1216         * decl2.c (maybe_make_one_only): New fn.
1217         (import_export_vtable): Use it.
1218         (import_export_decl): Likewise.
1219         * pt.c (mark_decl_instantiated): Likewise.
1220
1221 1998-05-21  Mark Mitchell  <mmitchell@usa.net>
1222
1223         * decl2.c (find_representative_member): Rename to ...
1224         (build_anon_union_vars): New function.
1225         (finish_anon_union): Fix stupidity of previous change.
1226
1227 1998-05-20  Jason Merrill  <jason@yorick.cygnus.com>
1228
1229         * decl.c (grokfndecl): Handle definition of specialization in
1230         friend declaration.
1231
1232         * error.c (dump_decl): Fix LOOKUP_EXPR handling.
1233
1234 1998-05-20  Mark Mitchell  <mmitchell@usa.net>
1235
1236         * class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
1237         to look for type declarations.
1238         (finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
1239         * cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
1240         (finish_member_class_template): Declare.
1241         * decl.c (pushtag): Put member class templates on the
1242         CLASSTYPE_TAGS list, just as for ordinary member classes.
1243         (pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
1244         (lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
1245         IDENTIFIER_NAMESPACE_VALUEs. 
1246         * parse.y (component_decl): Move code to ...
1247         * semantics.c (finish_member_class_template): New function.  
1248         Don't put member class templates on the list of components for a
1249         class. 
1250         * parse.c: Regenerated.
1251         * pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
1252         In fact, don't use DECL_CONTEXT at all here.
1253
1254 1998-05-20  Martin von Loewis  <loewis@informatik.hu-berlin.de>
1255
1256         * decl.c (record_unknown_type): New function.
1257         (init_decl_processing): Call it for the unknown and global type
1258         nodes.
1259
1260 1998-05-20  Mark Mitchell  <mmitchell@usa.net>
1261
1262         * decl2.c (find_representative_member): New function.
1263         (finish_anon_union): Use it.
1264
1265         * cp-tree.h (MAIN_NAME_P): New macro.
1266         (DECL_MAIN_P): Likwise.
1267         * decl.c (pushdecl): Avoid crashing on redefinitions of `main'.
1268         (grokfndecl): Use the new macros.
1269         (grokdeclarator): Likewise.
1270         (start_function): Likewise.
1271         (store_parm_decls): Likewise.
1272         (finsh_function): Likewise.
1273         * friend.c (do_friend): Likewise.
1274         * typeck.c (build_function_call_real): Likewise.
1275         (build_unary_op): Likewise.
1276
1277 Wed May 20 02:16:01 1998  Jason Merrill  <jason@yorick.cygnus.com>
1278
1279         * decl2.c (start_objects, finish_objects, do_dtors,
1280         do_ctors): Split out from...
1281         (finish_file): ...here.
1282
1283 Tue May 19 20:36:23 1998  Jason Merrill  <jason@yorick.cygnus.com>
1284
1285         * tree.c (is_overloaded_fn): Don't abort on placeholders from
1286         push_class_decls.
1287
1288 Tue May 19 15:16:22 1998  Brendan Kehoe  <brendan@cygnus.com>
1289
1290         * class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
1291
1292         * error.c (dump_expr): Handle an ARROW_EXPR.
1293
1294 Tue May 19 15:13:39 1998  Mark Mitchell  <mmitchell@usa.net>
1295
1296         * decl.c (saveable_obstack): Declare.
1297         (pushdecl): Copy TYPE_DECLs to the same obstack as the type they
1298         declare, if necessary.
1299
1300 Tue May 19 14:50:27 1998  Mark Mitchell  <mmitchell@usa.net>
1301
1302         * call.c (compare_qual): Remove.
1303         (is_subseq): Tweak.
1304         (is_properly_derived_from): New function.
1305         (maybe_handle_ref_bind): Likewise.
1306         (maybe_handle_implicit_object): Likewise.
1307         (compare_ics): Modify substantially to bring into conformance with
1308         the standard.
1309         * cp-tree.h (TYPE_PTRMEMFUNC_OBJECT_TYPE): New macro.
1310         (comp_cv_qualification): Declare.
1311         (comp_cv_qual_signature): Likewise.
1312         * typeck.c (comp_cv_qualification): Likewise.
1313         (comp_cv_qual_signature): Likewise.
1314
1315 Tue May 19 10:05:02 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1316
1317         * Makefile.in (parse.o): Depend on toplev.h.
1318
1319         * class.c (typecode_p): Remove prototype and definition.
1320
1321         * cp-tree.h (currently_open_class, is_empty_class, member_p):
1322         Add prototype.
1323
1324         * decl.c (push_overloaded_decl_top_level): Remove prototype and
1325         definition.
1326
1327         * errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
1328         in call to `cp_thing'.
1329         (cp_warning): Likewise for function pointer `warning'.
1330
1331         * except.c (do_function_call): Remove prototype and definition.
1332         (call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
1333
1334         * method.c (is_java_type): Add prototype and make it static.
1335
1336         * parse.y: Include toplev.h.
1337
1338         * pt.c (type_unification): Remove unused variable `arg'.
1339         (instantiate_decl): likewise for `save_ti'.
1340
1341         * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.
1342         
1343 Tue May 19 02:43:25 1998  Jason Merrill  <jason@yorick.cygnus.com>
1344
1345         * init.c (build_member_call): Handle template_ids.
1346         * parse.y (primary): Add global_scope template_id.
1347
1348 Mon May 18 23:22:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
1349
1350         * decl2.c (get_sentry): Use end_temporary_allocation.
1351         Don't declare permanent_obstack.
1352
1353 Mon May 18 12:28:44 1998  Mark Mitchell  <mmitchell@usa.net>
1354
1355         * parse.y (.finish_new_placement): New non-terminal.
1356         (unary_expr, new_type_id): Use it.  
1357         * parse.c: Regenerated.
1358         
1359 Mon May 18 12:20:27 1998  Brendan Kehoe  <brendan@cygnus.com>
1360
1361         * pt.c (redeclare_class_template): Say where the original definition
1362         of the template-parameter's default argument appeared.
1363
1364 Mon May 18 03:00:57 1998  Jason Merrill  <jason@yorick.cygnus.com>
1365
1366         * call.c (build_over_call): Tweak empty class handling.
1367
1368         * decl.c (make_typename_type): Use currently_open_class.
1369
1370         * class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
1371
1372 Mon May 18 01:43:01 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
1373
1374         * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE 
1375         for a type unless it is one.
1376
1377         * class.c (finish_struct_1): Use OVL_CURRENT in error message.
1378
1379 Mon May 18 01:24:08 1998  Jeffrey A Law  (law@cygnus.com)
1380
1381         * Makefile.in (program_transform_name, objdir): Define.
1382
1383         * Makefile.in (BISON): Use bison from the build tree if it exists.
1384         (FLEX): Similarly.
1385
1386 Sun May 17 14:52:08 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
1387
1388         * typeck.c (type_unknown_p): Return true for TREE_LIST also.
1389
1390         * call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
1391
1392 Sun May 17 14:51:41 1998  Jason Merrill  <jason@yorick.cygnus.com>
1393
1394         * call.c (build_scoped_method_call): Likewise.
1395
1396 Sun May 17 13:53:48 1998  Mark Mitchell  <mmitchell@usa.net>
1397
1398         * init.c (build_new_1): Call suspend_momentary around the creation
1399         of values that must be saved for exception handling.
1400         * parse.y (.build_new_placement): New non-terminal.
1401         (unary_expr, new_placement): Use it.
1402         * parse.c: Regenerated.
1403         
1404 Sun May 17 12:32:08 1998  Jason Merrill  <jason@yorick.cygnus.com>
1405
1406         * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
1407         old and new types.
1408
1409         * pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
1410         canonical type.
1411
1412         * call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
1413
1414 Fri May 15 20:28:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
1415
1416         * decl.c (start_decl): Revert problem change.
1417
1418         * Makefile.in (CONFLICTS): Fix.
1419
1420 Fri May 15 15:34:02 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
1421
1422         * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
1423
1424 Fri May 15 00:46:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
1425
1426         * class.c (finish_struct_1): Use BINFO_SIZE.
1427
1428         * decl.c (start_decl): Use 'tem'.
1429
1430 Thu May 14 16:30:47 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
1431
1432         * exception.cc: Include eh-common.h.
1433         (struct cp_eh_info): add eh_info struct with NEW_EH_MODEL.
1434         (__cplus_type_matcher): First stab at new C++ runtime type matcher.
1435         (__cp_push_exception): Initialize eh_info struct as well.
1436         * except.c: Remove local structs and include eh-common.h.
1437         (init_exception_processing): Set language and version codes.
1438         (call_eh_info): add presence of eh_info to runtime description of 
1439         struct cp_eh_info.
1440         (expand_end_eh_spec): call start_catch_block() and end_catch_block().
1441         * semantics.c (finish_try_block): call start_catch_block() and 
1442         end_catch_block().
1443         * parse.y (function_try_block): call start_catch_block() and 
1444         end_catch_block().
1445
1446 Thu May 14 12:27:34 1998  Brendan Kehoe  <brendan@cygnus.com>
1447
1448         * typeck.c (original_type): New function.
1449         (common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
1450         to see if they're actually the same.
1451         * cp-tree.h (original_type): Declare.
1452
1453 Wed May 13 12:54:30 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1454
1455         * Makefile.in (lex.o): Depend on output.h.
1456         
1457         * call.c (add_function_candidate): Remove unused variable `cand'.
1458         (add_conv_candidate): Likewise.
1459         (build_builtin_candidate): Likewise.
1460         
1461         * cp-tree.h: Add prototype for `types_overlap_p'.
1462
1463         * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
1464
1465         * decl2.c (merge_functions): Remove unused variables `tmp' and
1466         `tempn'.
1467
1468         * error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
1469         (code_as_string): Likewise.
1470         (language_as_string): Likewise.
1471         (parm_as_string): Likewise.
1472         (op_as_string): Likewise.
1473         (assop_as_string): Likewise.
1474         (cv_as_string): Likewise.
1475
1476         * lex.c: Include output.h.
1477
1478         * pt.c (type_unification): Cast first argument of `bzero' to a char*.
1479
1480         * search.c (dfs_no_overlap_yet): Mark parameter `t' with
1481         ATTRIBUTE_UNUSED.
1482
1483         * tinfo.cc (__class_type_info::dcast): Change the type of variable
1484         `i' from int to size_t.
1485
1486         * typeck.c (language_lvalue_valid): Mark parameter `exp' with
1487         ATTRIBUTE_UNUSED.
1488
1489 Tue May 12 21:37:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
1490
1491         * error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
1492         DECL_NAMESPACE_SCOPE_P.
1493         (lang_decl_name): Likewise.
1494         * pt.c (tsubst_friend_function, tsubst): Likewise.
1495         * decl.c (pushdecl, redeclaration_error_message, start_decl, 
1496         cp_finish_decl, start_function): Likewise.
1497         * class.c (finish_struct_1): Likewise.
1498         * call.c (build_over_call): Likewise.
1499         (compare_ics): Use DERIVED_FROM_P.
1500
1501 Tue May 12 07:24:18 1998  Mark Mitchell  <mmitchell@usa.net>
1502
1503         * cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
1504         * method.c (build_mangled_name): Use it.
1505         (build_decl_overload_real): Likewise.
1506
1507         * error.c (dump_simple_decl): New function, broken out from ...
1508         (dump_decl): Use it.
1509
1510 Mon May 11 11:38:07 1998  Mark Mitchell  <mmitchell@usa.net>
1511
1512         * ptree.c (lang_print_xnode): Add missing `break'.
1513
1514         * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
1515
1516         * call.c (add_template_candidate): Adjust for changes to
1517         fn_type_unification. 
1518         (add_template_candidate_real): Likewise.
1519         (add_template_conv_candidate): Likewise.
1520         (build_user_type_conversion_1): Likewise.
1521         (build_new_function_call): Likewise.
1522         (build_object_call): Likewise.
1523         (build_new_op): Likewise.
1524         (build_new_method_call): Likewise.
1525         * class.c (instantiate_type): Likewise.
1526         * cp-tree.h (unification_kind_t): New type.
1527         (fn_type_unification): Adjust prototype.
1528         (type_unificaiton): Likewise.
1529         * pt.c (UNIFY_ALLOW_NONE): New macro.
1530         (UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
1531         (UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
1532         (UNIFY_ALLOW_DERIVED): Likewise.
1533         (unify): Change prototype.
1534         (maybe_adjust_types_for_deduction): New function.
1535         (check_cv_quals_for_unify): Likewise.
1536         (determine_specialization): Adjust.
1537         (fn_type_unification): Likewise.
1538         (type_unification): Likewise.
1539         (type_unification_real): Likewise.  Use
1540         maybe_adjust_types_for_deduction.  Fix mishandling of
1541         back-unification of template functions passed as arguments.  Pass
1542         appropriate combination of UNIFY_ALLOW_* to unify.
1543         (unify): Remove unused NTPARMS parameter.  Use
1544         check_cv_quals_for_unify.  Remove bogus code that allowed
1545         too-generous unification in order to adhere more closely to standard.
1546         (get_bindings_real): Adjust.
1547         (get_class_bindings): Likewise.
1548
1549         * method.c (build_overload_identifier): Only use the innermost
1550         template arguments when mangling.
1551         * pt.c (tsubst_template_argument_vector): New function.
1552         (complete_template_args): Deal with the situation where the
1553         extra_args contain more than one level of arguments.
1554         (lookup_template_class): Deal with member template classes, which
1555         may have more than one level of arguments.
1556         (tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
1557         Improve handling of member template classes.  Use
1558         DECL_PRIMARY_TEMPLATE instead of inline expansion.  Use
1559         tsubst_template_argument_vector where appropriate.
1560         (regenerate_decl_from_template): Break out from ...
1561         (instantiate_decl): Here.
1562         
1563         * lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
1564         * parse.h: Regenerated.
1565         * parse.c: Really regenerated.
1566         
1567         * cp-tree.h (finish_unary_op_expr): New function.
1568         (finish_id_expr): Likewise.
1569         (begin_new_placement): Likewise.
1570         (finish_new_placement): Likewise.
1571         (finish_declarator): Likewise.
1572         (finish_translation_unit): Likewise.
1573         (finish_parmlist): Likewise.
1574         (begin_class_definition): Likewise.
1575         (finish_class_definition): Likewise.
1576         (finish_default_args): Likewise.
1577         (finish_inline_definitions): Likewise.
1578         * parse.y (GCC_ASM_KEYWORD): Remove.
1579         (TYPENAME_ELLIPSIS): Likewise.
1580         * parse.c: Regenerated.
1581         Use new functions in semantics.c in the actions for many rules.
1582         * gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
1583         * hash.h: Regenerated.
1584         * semantics.c (finish_expr_stmt): Allow NULL expr.
1585         (finish_unary_op_expr): New function, containing
1586         code previously in parse.y.
1587         (finish_id_expr): Likewise.
1588         (begin_new_placement): Likewise.
1589         (finish_new_placement): Likewise.
1590         (finish_declarator): Likewise.
1591         (finish_translation_unit): Likewise.
1592         (finish_parmlist): Likewise.
1593         (begin_class_definition): Likewise.
1594         (finish_class_definition): Likewise.
1595         (finish_default_args): Likewise.
1596         (finish_inline_definitions): Likewise.
1597
1598 Sun May 10 23:43:13 1998  Mark Mitchell  <mmitchell@usa.net>
1599
1600         * typeck.c (build_c_cast): Don't decay arrays and functions to
1601         pointer type when converting to a class type.
1602
1603 Sun May 10 22:53:56 1998  Jason Merrill  <jason@yorick.cygnus.com>
1604
1605         * cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
1606         (DECL_CLASS_SCOPE_P): Likewise.
1607
1608 Sun May 10 22:48:22 1998  H.J. Lu  (hjl@gnu.org)
1609
1610         * class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
1611         * decl2.c (constructor_name_full): Likewise.
1612
1613 Sun May 10 22:48:12 1998  Mike Stump  <mrs@wrs.com>
1614
1615         * tree.c (mapcar): Add OVERLOAD support.
1616
1617         * init.c (resolve_offset_ref): We must use basetype_path before we
1618         destroy it with a call to convert_pointer_to.
1619
1620 Sat May  9 14:44:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
1621
1622         * class.c (currently_open_class): New fn.
1623         * decl.c (lookup_name_real): Use it.
1624         * search.c (lookup_field): Likewise.
1625
1626 Fri May  8 23:32:42 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
1627
1628         * cp-tree.def (OVERLOAD): New node.  
1629         * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
1630         SET_IDENTIFIER_NAMESPACE_VALUE): Define.
1631         (NAMESPACE_BINDING): Remove.
1632         (IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
1633         namespace_binding.
1634         (OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
1635         Define.
1636         (tree_overload): New struct.
1637         (IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
1638         (REAL_IDENTIFIER_TYPE_VALUE): Define.
1639         (IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
1640         (lang_decl_flags): Remove in_namespace.
1641         (lang_decl): Remove chain.
1642         (DECL_CHAIN, DECL_NAMESPACE): Remove.
1643         (flag_honor_std): Declare extern.
1644         (identifier_type_value, pushdecl_namespace_level, push_using_decl,
1645         namespace_binding, set_namespace_binding,
1646         lookup_function_nonclass, cat_namespace_levels,
1647         set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
1648         scratch_ovl_cons, ovl_member, build_overload): Declare.
1649         (decl_list_length, get_namespace_id, current_namespace_id,
1650         overloaded_globals_p): Remove.
1651         (lookup_using_namespace, qualified_lookup_using_namespace): Change
1652         return type.
1653         (push_scratch_obstack): New macro.
1654         * call.c (add_function_candidate): Special-case type of OVERLOAD node.
1655         (build_user_conversions_1): Iterate using OVL_NEXT for ctors,
1656         convs, fns.
1657         (build_new_function_call): Iterate using OVL_CHAIN.  
1658         Print DECL_NAME in when reporting ambiguities.
1659         (build_object_call): Iterate using OVL_NEXT for fns, convs.
1660         (build_new_op): Call lookup_function_nonclass.  
1661         Iterate using OVL_NEXT.
1662         (build_op_delete_call): Change detection of members.
1663         Do not wrap TREE_LIST around fields and single global functions.
1664         (build_over_call): Don't push a class level if the context is a
1665         namespace.
1666         (build_new_method_call): Iterate using OVL_NEXT.
1667         * class.c (add_method): Chain overloaded members using
1668         build_overload.  Remove copying of method.
1669         (grow_method): When iterating through the obstack, expect OVERLOAD
1670         nodes.  Chain overload members.
1671         (finish_struct_methods): Chain overload members.  Unpack OVERLOAD
1672         nodes in call to get_baselinks.
1673         (duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
1674         (finish_struct_1): Iterate over ctor using OVL_NEXT.  Handle
1675         fdecls that are OVERLOAD nodes.
1676         (validate_lhs): New function.
1677         (instantiate_type): Do not copy OVERLOAD nodes.  Remove dead
1678         code. Use DECL_NAME in error messages. Split code between global
1679         and member function processing.
1680         * decl.c (global_type_node): New static variable.
1681         (in_std): New global.
1682         (struct binding_level): New field usings.
1683         (resume_binding_level): Assert that we are not in a class.
1684         (toplevel_bindings_p): Just check for namespace_p or
1685         pseudo_global.
1686         (resume_level): Remove.
1687         (find_binding): New function.
1688         (binding_for_name): Call it.
1689         (namespace_binding, set_namespace_binding): New functions.
1690         (push_namespace): Associate binding level with new namespace,
1691         resume_binding_level for existing namespace.  Remove old code.
1692         Fake std by counting.
1693         (store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
1694         (maybe_push_to_top_level): Save current namespace.
1695         (pop_from_top_level): Restore saved namespace.
1696         (pop_namespace): Call suspend_binding_level.  Remove old code.
1697         (cat_namespace_levels): New function.
1698         (set_identifier_type_value_with_scope): For namespace bindings,
1699         set BINDING_TYPE, and use global_type_node.
1700         Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
1701         (identifier_type_value): New function.
1702         (pushtag): If no context, use current_namespace.
1703         (duplicate_decls): Don't process DECL_CHAIN.
1704         (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
1705         already set. Never reset it to NULL_TREE.  Lookup global variables
1706         in their namespace.  Push overloaded templates if they are on
1707         namespace level.
1708         (pushdecl_namespace_level): New function.
1709         (pushdecl_top_level): Implement using pushdecl_namespace_level.
1710         (pushdecl_using_decl): New function.
1711         (overloaded_globals_p): Remove.
1712         (push_overloaded_decl): Create OVERLOAD nodes, and iterate through
1713         them. Use namespace_binding and set_namespace_value.
1714         (redeclaration_error_message): Complain if the declarations come
1715         from different namespaces.
1716         (lookup_tag): On namespace level, look in the BINDING_TYPE.
1717         (lookup_namespace_name): Pass tree_bindings from stack.  Remove
1718         old code.
1719         (select_decl): New function.
1720         (lookup_name_real): Call it for qualified and unqualified lookup.
1721         Pass tree_bindings from the stack.
1722         If prefer_type is 1, also accept namespaces.
1723         (lookup_function_nonclass): New function.
1724         (init_decl_processing): Set the binding level of the global
1725         namespace to global_binding_level.
1726         Build a proper type list for __builtin_apply.
1727         Initialize std_node to "fake std" if flag_honor_std is set.
1728         Initialize global_type_node.
1729         Allocated bad_alloc in namespace std if flag_honor_std.
1730         (define_function): Set the DECL_CONTEXT to the current_namespace.
1731         (start_decl): A namespace is not considered as a context here.  If
1732         the DECL_CONTEXT is a namespace, push the decl.
1733         (cp_finish_decl): Check for namespaces used as initializers.
1734         (grokfndecl): Add namespace parameter.  Remove processing of
1735         DECL_CHAIN.
1736         (grokvardecl): Add namespace parameter.
1737         (grokdeclarator): Process SCOPEs that are namespaces.  For
1738         mangling, temporarily set the DECL_CONTEXT on anonymous structs.
1739         (start_function): Check for contexts that are namespaces.  
1740         Set context for declarations that have not been pushed.
1741         (store_parm_decls): Check for ::main only.
1742         (finish_function): Likewise.
1743         (start_method): Check for contexts that are namespaces.
1744         (start_method): Remove DECL_CHAIN processing.
1745         * decl2.c (flag_honor_std): Declare.
1746         (lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
1747         (decl_namespace_list): New static global.
1748         (grok_x_components): Ignore namespaces as type contexts.
1749         (check_classfn): Expect OVERLOAD nodes.
1750         (grokfield): Remove DECL_CHAIN processing.
1751         (finish_file): Call cat_namespace_levels.
1752         (merge_functions): New function.
1753         (ambiguous_decl): Rewrite.
1754         (lookup_using_namespace): Produce tree_bindings.
1755         (qualified_lookup_using_namespace): Likewise.
1756         (set_decl_namespace, decl_namespace, current_decl_namespace,
1757         push_decl_namespace, pop_decl_namespace): New functions.
1758         (arg_lookup): New struct.
1759         (add_function, arg_assoc_namespace, arg_assoc_class,
1760         arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
1761         New functions.
1762         (get_namespace_id, current_namespace_id): Remove.
1763         (do_toplevel_using_decl): Rewrite.
1764         (do_class_using_decl): Complain about namespace qualifiers.
1765         (do_using_directive): Sorry if not on namespace level.  Complain
1766         about unknown namespaces.
1767         * error.c (dump_aggr_type): Check for namespace contexts.
1768         * except.c (init_exception_processing): Push terminate into std.
1769         * friend.c (is_friend): A namespace is not a context, here.
1770         * init.c (expand_member_init): Remove DECL_CHAIN processing.
1771         (build_offset_ref): Process OVERLOAD nodes.
1772         * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
1773         * lex.c (identifier_type): Loop using OVL_CHAIN.
1774         (see_typename): Set looking_for_typename to 2.
1775         (real_yylex): Likewise. 
1776         (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
1777         (do_scoped_id): Expect OVERLOAD nodes.
1778         Change calling convention for qualified_lookup_using_namespace.
1779         (build_lang_decl): Don't set in_namespace anymore.
1780         * method.c (typevec_size): New global.
1781         (build_overload_nested_name): Return if global_namespace.
1782         Otherwise, always expect a declaration context.
1783         (build_qualified_name): Likewise.
1784         Make sure we don't write beyond typevec_size.
1785         (build_decl_overload_real): Likewise.
1786         Allocate one extra slot for the namespace.
1787         (hack_identifier): Mark code dead.
1788         Process OVERLOAD and NAMESPACE_DECL nodes.
1789         * parse.y (program): Pop namespaces until in global namespace.
1790         (extdef): In a using-declaration, don't discard the identifier if
1791         there is no declaration.
1792         (left_curly): Ignore type contexts which are namespaces.
1793         (typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
1794         used as scope.
1795         * pt.c (template_class_depth): Expect types to be namespaces.
1796         (determine_specialization): Simplify by expecting OVERLOAD nodes.
1797         (push_template_decl): Push into namespace level.
1798         Reset ctx if it is a namespace.
1799         Set DECL_CONTEXT to current_namespace if not set already.
1800         Ignore real contexts that are namespaces.
1801         (mangle_class_name_for_template): Skip global_namespace.
1802         Mangle other namepaces as declarations.
1803         (lookup_template_function): Set type of OVERLOAD nodes to unknown.
1804         (lookup_template_class): Push into namespace of context.
1805         If the context is a namespace, set it to global_namespace.
1806         Use id_context for mangling.
1807         (for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
1808         (tsubst_friend_function): Ignore namespace contexts.
1809         Push into namespace level.
1810         (tsubst): Handle NAMESPACE_DECL nodes.
1811         Remove DECL_CHAIN processing.
1812         (type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
1813         * ptree.c (print_lang_identifier): Print bindings.
1814         (lang_print_xnode): Print OVERLOAD nodes.
1815         * rtti.c (init_rtti_processing): Push type_info into std.
1816         * search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
1817         (lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
1818         dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
1819         lookup_fnfields_here): Likewise.
1820         Process all nodes, instead of going through TREE_CHAIN.
1821         * sig.c (build_signature_pointer_or_reference_type): Set context
1822         to global_namespace.
1823         (build_signature_table_constructor): Expect OVERLOAD nodes.
1824         * spew.c (yylex): Save old setting of looking_for_typename.
1825         * tree.c (decl_list_length): Remove.
1826         (binding_init): New function.
1827         (count_functions): Rewrite.
1828         (is_overloaded_fn): Expect OVERLOAD nodes.
1829         (really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
1830         (ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
1831         ovl_member): New functions.
1832         * typeck.c (require_complete_type): Expect OVERLOAD nodes.
1833         (type_unknown_p): Likewise.
1834         (require_instantiated_type): Likewise.
1835         (build_component_ref): Declare code dead.
1836         (build_x_function_call): Create and expect OVERLOAD nodes.
1837         (build_function_call_real): Check for ::main only.
1838         (build_unary_op): Likewise.  Expect OVERLOAD nodes.
1839         (convert_for_assignment): Check for TREE_LIST before accessing
1840         TREE_VALUE.
1841         * decl.c (duplicate_decls): Check for namespace bindings instead
1842         of global bindings.
1843         (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
1844         lookup_name_current_level, start_decl, xref_tag, 
1845         finish_enum): Likewise.
1846         * init.c (build_offset_ref): Likewise.
1847         * search.c (lookup_field): Likewise.
1848         (lookup_fnfields): Likewise.
1849         (dfs_debug_mark): Likewise.
1850         * decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
1851         (poplevel_class, pop_from_top_level): Likewise.
1852         * decl2.c (finish_method): Likewise.
1853         * class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
1854         * decl.c (record_builtin_type): Likewise.
1855         (init_decl_processing, grokfndecl): Likewise.
1856         * lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
1857         (make_lang_type): Likewise.
1858         * parse.y (make_thunk): Likewise.
1859         * pt.c (tsubst): Likewise.
1860         * tree.c (debug_binfo): Likewise.
1861         * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h, 
1862         tinfo2.cc, inc/new.h: Add std qualifications.
1863         * inc/new: Wrap with namespace std if __HONOR_STD.
1864         * inc/typeinfo: Likewise.
1865
1866 Fri May  8 00:43:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
1867
1868         * call.c (build_user_type_conversion_1): Handle second_conv 
1869         properly for templates.
1870
1871 Thu May  7 17:09:25 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
1872
1873         * method.c (build_decl_overload_real): Set TREE_USED flag to
1874         zero for build_type_variants nodes as well.
1875
1876 Wed May  6 19:27:09 1998  Jason Merrill  <jason@yorick.cygnus.com>
1877
1878         * pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
1879
1880 Wed May  6 16:49:48 1998  Jim Wilson  <wilson@cygnus.com>
1881
1882         * Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
1883         except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
1884         rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o, 
1885         xref.o): Add toplev.h dependencies.
1886
1887 Wed May  6 16:44:58 1998  Jeffrey A Law  (law@cygnus.com)
1888
1889         * errfn.c (cp_error, cp_warning): Remove declarations for
1890         error and warning respectively.
1891
1892 Wed May  6 14:28:18 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1893
1894         * error.c: Convert to using ctype macros defined in system.h.
1895         * method.c: Likewise.
1896         * xref.c: Likewise.
1897         * lex.c: Likewise.  Also remove redundant system header stuff.
1898
1899 Wed May  6 06:36:41 1998  Robert Lipe  <robertl@dgii.com>
1900
1901         * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c, 
1902         expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c, 
1903         search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c, 
1904         xref.c: Add include of toplev.h.
1905
1906 Wed May  6 02:33:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
1907
1908         * tree.c (perm_manip): Also regenerate the RTL of an extern.
1909         (copy_to_permanent): Use end_temporary_allocation.
1910
1911 Tue May  5 23:54:04 1998  Jason Merrill  <jason@yorick.cygnus.com>
1912
1913         * init.c (expand_vec_init): The initialization of each array
1914         element is a full-expression.
1915
1916 Tue May  5 18:24:13 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
1917
1918         * method.c (build_mangled_name): Add a call to build_type_variant 
1919         to get the right type.
1920
1921 Tue May  5 01:25:03 1998  Jason Merrill  <jason@yorick.cygnus.com>
1922
1923         * Makefile.in: Add .SUFFIXES.
1924
1925         * cp-tree.def: Remove NAMESPACE_DECL.
1926
1927 Sun May  3 01:32:14 1998  Jason Merrill  <jason@yorick.cygnus.com>
1928
1929         * call.c (build_over_call): Do evaluate arg even if it has empty 
1930         class type.
1931         * decl.c (start_function): Don't push a member function.
1932
1933 Thu Apr 30 18:59:23 1998  Jim Wilson  <wilson@cygnus.com>
1934
1935         * Makefile.in (g++FAQ.info): Put -o option before input file.
1936
1937 Thu Apr 30 13:05:33 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
1938
1939         * gxxint.texi: Add info for squangling codes K and B.
1940
1941 Tue Apr 28 13:22:01 1998  Mark Mitchell  <mmitchell@usa.net>
1942
1943         * semantics.c (begin_stmt_expr): Avoid duplicating the effect of
1944         the expression in templates.
1945         (finish_stmt_expr): Likewise.
1946
1947 1998-04-28  Brendan Kehoe  <brendan@cygnus.com>
1948
1949         * decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
1950
1951 Mon Apr 27 13:58:10 1998  Mark Mitchell  <mmitchell@usa.net>
1952
1953         * decl.c (maybe_push_to_top_level): Always clear
1954         current_template_parms and processing_template_decl.
1955         (pushtag): Remove check of current_class_type and some comments,
1956         since maybe_push_to_top_level no longer creates confusion.
1957
1958 Sun Apr 26 12:10:18 1998  Mark Mitchell  <mmitchell@usa.net>
1959
1960         * cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
1961         (DECL_CLASS_TEMPLATE_P): Likewise.
1962         (DECL_PRIMARY_TEMPLATE): Likewise.
1963         (PRIMARY_TEMPLATE_P): Use it.
1964         (push_template_decl_real): New function.
1965         (redeclare_class_template): Take new template parameters as
1966         input. 
1967         (is_specialization_of): New function.
1968         (comp_template_args): Declare.
1969         * decl.c (pushtag): Handle friend template classes.
1970         (xref_tag): Likewise.  Use new calling convention for
1971         redeclare_class_template.
1972         * decl2.c (grok_x_components): Handle friend templates.
1973         * friend.c (is_friend): Use is_specialization_of where
1974         appropriate.  Deal with friend class templates.
1975         (make_friend_class): Let a class template be friends with itself.
1976         * pt.c (comp_template_args): Remove declaration.
1977         (tsubst_friend_class): New function.
1978         (push_template_decl_real): New function.
1979         (push_template_decl): Use it.
1980         (redeclare_class_template): Adjust for new calling convention.
1981         (comp_template_args): Give it external linkage.
1982         (instantiate_class_type): Use tsubst_friend_class to deal
1983         with friend templates.
1984         * typeck.c (comptypes): Use comp_template_args, rather than
1985         expanding it inline.
1986         * parse.y (component_decl): Handle a nested template type 
1987         like other component type declarations.
1988
1989         * pt.c (check_explicit_specialization): Handle overloaded
1990         constructors correctly.
1991
1992         * pt.c (mabybe_get_template_decl_from_type_decl): New function.
1993         (lookup_template_class): Use it.
1994
1995 Thu Apr 23 21:19:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
1996
1997         * cp-tree.def: Add WRAPPER.  USER_CONV now only has two ops.
1998         * cp-tree.h: Add WRAPPER support.
1999         * call.c (add_candidate): Split out from add_*_candidate fns.
2000         (build_over_call): Take the candidate instead of function and args.
2001         Enforce access control here.  Emit overload warnings here.
2002         (add_warning): New fn.
2003         (joust): Add WARN parm.  If not set, call add_warning instead of
2004         printing a warning.  Reenable some warnings.
2005         (tourney): Pass it.
2006         (convert_like): Adjust.
2007         (build_new_op): Adjust.
2008         (build_new_function_call): Adjust.
2009         (build_user_type_conversion_1): Adjust.
2010         (USER_CONV_FN): Adjust.
2011         * tree.c (build_expr_wrapper, build_expr_ptr_wrapper, 
2012         build_int_wrapper): New fns.
2013
2014 Thu Apr 23 18:27:53 1998  Mark P. Mitchell  <mmitchell@usa.net>
2015
2016         * pt.c (unify): Fix typo in previous change.
2017
2018 Thu Apr 23 09:32:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
2019
2020         * error.c (dump_type_real): Declare canonical_name.
2021
2022         * typeck.c (comp_target_types): Fix PMFs.
2023
2024 Wed Apr 22 13:24:48 1998  Mark Mitchell  <mmitchell@usa.net>
2025
2026         * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
2027         the DECL_RESULTs of a member TEMPLATE_DECL, not just the
2028         TEMPLATE_DECL.
2029
2030          * pt.c (tsubst): Decrease the template-level of
2031          TEMPLATE_TEMPLATE_PARMS.  Likewise for the DECL_INITIAL of a
2032          TEMPLATE_PARM_INDEX.
2033          (template_decl_level): New function.
2034          (unify): Make sure to record unifications for template
2035          parameters, even when the parameters exactly match the arguments.
2036          Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
2037          TEMPLATE_TYPE_PARMS.  Don't try to unify template parameters that
2038          aren't from the level we're currently working on.
2039
2040 Tue Apr 21 22:00:04 1998  Mark Mitchell  <mmitchell@usa.net>
2041
2042         * errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
2043
2044         * decl2.c (check_member_template): Set DECL_IGNORED for member
2045         class templates, too.
2046
2047         * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
2048
2049 Tue Apr 21 18:59:11 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2050
2051         * decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
2052
2053 Tue Apr 21 14:22:00 1998  Jeffrey A Law  (law@cygnus.com)
2054
2055         * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
2056         * decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
2057         (init_decl_processing): Handle TI types.
2058         * typeck.c (unsigned_type, signed_type): Handle TI types.
2059
2060 Sat Apr 18 15:25:21 1998  Jim Wilson  <wilson@cygnus.com>
2061
2062         * g++spec.c (lang_specific_driver): New argument in_added_libraries.
2063         New local added_libraries.  Increment count when add library to
2064         arglist.
2065
2066 Fri Apr 17 21:25:00 1998  Mark Mitchell  <mmitchell@usa.net>
2067
2068         * cp-tree.h (type_as_string_real): New function.
2069         * pt.c (mangle_class_name_for_template): Use it.
2070         * error.c (dump_aggr_type): Change prototype.
2071         (dump_type_prefix): Likewise.
2072         (dump_type_suffix): Likewise.
2073         (dump_type_real): Convert from dump_type.  If desired, the
2074         "canonica" name of a typedef, i.e., the name of the underlying
2075         type, can be printed.
2076         (dump_type): Call dump_type_real.
2077
2078 Fri Apr 17 14:30:45 1998  Jason Merrill  <jason@yorick.cygnus.com>
2079
2080         * decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
2081
2082         * typeck.c (comp_target_types): Tweak pedantic case.
2083         (comp_target_parms): Tweak pedantic case.  Clean up somewhat.
2084         Return -1 or 1 instead of 1 or 2.
2085         (compparms): Remove STRICT handling.
2086         (convert_for_assignment): Fix handling of pmfs.
2087
2088 Fri Apr 17 14:04:16 1998  Mark Mitchell  <mmitchell@usa.net>
2089
2090         * typeck.c (comp_target_types): Handle references like pointers.
2091         (comp_target_parms): Note that return code from comp_target_types
2092         can be negative to indicate failure.
2093
2094 Fri Apr 17 09:10:52 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2095
2096         * Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
2097         which requires a working target compiler to build.
2098
2099 Fri Apr 17 08:57:35 1998  Jeffrey A Law  (law@cygnus.com)
2100
2101         * tree.c (avoid_overlap): Add prototype.
2102
2103         * spew.c (num_tokens): Add prototype.
2104         (nth_noken, add_token, consume_token, debug_yychar): Likewise.
2105
2106         * search.c (dfs_check_overlap): Add prototype.
2107         (dfs_no_overlap_yet): Likewise.
2108
2109         * pt.c (original_template): Add prototype.
2110         (inline_needs_template_parms): Likewise.
2111         (push_inline_template_parms_recursive): Likewise.
2112         (retrieve_specialization, register_specialization): Likewise.
2113         (print_candidates, reduce_template_parm_level): Likewise.
2114         (build_template_decl, mark_template_parm): Likewise.
2115         (tsubst_friend_function, get_bindings_real): Likewise.
2116
2117         * method.c (start_squangling): Add prototype.
2118         (end_squangling, check_ktype, issue_ktype): Likewise.
2119         (build_overloaded_scope_ref, check_btype): Likewise.
2120         (build_mangled_template_parm_index): Likewise.
2121
2122         * lex.c (init_cpp_parse): Add prototype.
2123         (handle_cp_pragma, handle_sysv_pragma): Likewise.
2124         (reduce_cmp, token_cmp): Likewise.
2125
2126         * except.c (call_eh_info): Add prototype.
2127         (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
2128         (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
2129
2130         * decl2.c (is_namespace_ancestor): Add prototype.
2131         (namespace_ancestor, add_using_namespace): Likewise.
2132         (ambiguous_decl): Likewise.
2133
2134         * decl.c (indent): Add prototype.
2135
2136         * call.c (add_template_candidate_real): Add prototype.
2137
2138 Fri Apr 17 01:57:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
2139
2140         * decl2.c (build_expr_from_tree): Just return a PMF.
2141
2142 Fri Apr 17 00:45:12 1998  Mark Mitchell  <mmitchell@usa.net>
2143
2144         * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
2145         when doing initializations.
2146
2147         * pt.c (unify): Use comptypes to compare type args.
2148
2149 Fri Apr 17 00:24:22 1998  Jason Merrill  <jason@yorick.cygnus.com>
2150
2151         * decl.c (duplicate_decls): Fix check for when it's safe to free
2152         the new decl.
2153
2154         * pt.c (mangle_class_name_for_template): Don't pass a typedef type
2155         to type_as_string.
2156
2157 Thu Apr 16 17:47:30 1998  Jeffrey A Law  (law@cygnus.com)
2158
2159         * pt.c (build_template_parm_index): Add prototype.
2160
2161         * search.c (my_tree_cons): Don't clear words outside the
2162         newly allocated node.
2163
2164 Wed Apr 15 15:34:44 1998  Dave Brolley  <brolley@cygnus.com>
2165
2166         * lex.c (init_parse): Now returns char* containing the filename.
2167
2168 Wed Apr 15 13:20:06 1998  John Carr  <jfc@mit.edu>
2169                           Jeff Law   <law@cygnus.com>
2170
2171         * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
2172         than a pointer.
2173
2174 Sun Apr 12 22:31:19 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2175
2176         * cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
2177
2178 Fri Apr 10 12:16:49 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
2179
2180         * decl.c (duplicate_decls): Don't warn for redundant decls if
2181         friend: let add_friend take care of it.
2182
2183 Thu Apr  9 02:40:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
2184
2185         * sig.c (build_signature_pointer_constructor): Don't set
2186         TREE_HAS_CONSTRUCTOR for a signature pointer.
2187         * cvt.c (ocp_convert): Don't force a temporary for internal structs.
2188         * init.c (resolve_offset_ref): Warn about implicit & on pmfs 
2189         here, too.
2190         * typeck.c (build_unary_op): Only allow taking the address of a 
2191         real constructor.
2192         * typeck2.c (digest_init): Simplify.
2193         (store_init_value): Don't pedwarn about using { } for pmfs.
2194
2195 Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>
2196
2197         * cp-tree.h (start_decl):  Update prototype.
2198         * decl.c (start_decl):  Like the C version, new parameters
2199         for the attributes.  Call cplus_decl_attributes here,
2200         (pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
2201         (grokdeclarator):  Pass NULL for new start_decl arguments.
2202         * pt.c (tsubst_expr):  Likewise.
2203         * parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
2204         * typeck.c (common_type): Check TYPE_MAIN_VARIANT.
2205         * lex.c (build_lang_decl): Add lang_name_java.
2206         * class.c (push_lang_context): Add lang_name_java.
2207         * method.c (build_mangled_name): Check for is_java_type.
2208
2209 Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
2210
2211         * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
2212         * call.c (build_scoped_method_call): Check for TREE_CODE for
2213         VOID_TYPE instead of type ==  void_type_node.
2214         (build_method_call): Ditto.
2215         * decl.c (lookup_name_real): Ditto.
2216         (grokdeclarator): Ditto.
2217         (start_decl): Ditto.
2218         (grokparms): Ditto.
2219         (start_function): Ditto.
2220         (finish_function): Ditto.
2221         (start_method): Ditto.
2222
2223 Thu Apr  9 00:18:44 1998  Dave Brolley  (brolley@cygnus.com)
2224
2225         * lex.c (finput): New variable.
2226         (init_cpp_parse):  Renamed from init_parse.
2227         (init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
2228         (finish_parse): New function.
2229         * cp-tree.h (init_lex, init_parse): Remove declarations.
2230
2231 Mon Apr  6 02:25:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
2232
2233         * call.c (build_call): Still evaluate the actual argument.
2234         * class.c (is_empty_class): Update for -fnew-abi.
2235
2236         * decl2.c: -fnew-abi implies -fsquangle.
2237
2238         * method.c (do_build_assign_ref): Don't do anything to copy
2239         an empty class.
2240         (do_build_copy_constructor): Likewise.
2241         * call.c (build_over_call): Likewise.
2242
2243 Sat Apr  4 18:43:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
2244
2245         * tree.c (avoid_overlap): Return a value.
2246
2247 Sat Apr  4 12:52:35 1998  Jeffrey A Law  (law@cygnus.com)
2248
2249         * method.c (check_btype): Add missing argument to xrealloc.
2250         (check_ktype): Likewise.
2251
2252 Fri Apr  3 02:22:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
2253
2254         Implement empty base optimization.
2255         * class.c (finish_struct_1): Add vbase fields earlier.  Set 
2256         CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
2257         * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
2258         (types_overlap_p): New fn.
2259         * tree.c (avoid_overlap): New fn.
2260         (build_base_fields): Use it to avoid overlapping empty bases.
2261         * cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
2262
2263         * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
2264
2265         Re-implement allocation of base class subobjects.
2266         * tree.c (unshare_base_binfos): New fn.
2267         (layout_basetypes): Use it.  Now handles offsets of both virtual and
2268         non-virtual bases, after layout_type.
2269         (layout_vbasetypes): Remove.
2270         (build_base_fields): Generate FIELD_DECLs for each non-virtual base.
2271         (build_vbase_pointer_fields): Split out from old layout_basetypes.
2272         * class.c (finish_base_struct): Lose offset handling code.
2273         Move nonvdtor warning here.  Don't mess with t_binfo anymore.
2274         (finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
2275         * cp-tree.h: Adjust.
2276
2277 Thu Apr  2 14:25:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
2278
2279         * cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
2280         * decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
2281         * class.c (duplicate_tag_error): Likewise.
2282         (finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
2283         * tree.c (layout_vbasetypes): Update from layout_record, remove
2284         var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
2285         (layout_basetypes): Likewise.
2286
2287 Wed Apr  1 18:22:25 1998  Jeffrey A Law  (law@cygnus.com)
2288
2289         * class.c, Make sure system.h is included just after config.h.
2290         Delete lingering stdio and errno references too.
2291         * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
2292         
2293 Wed Apr  1 15:38:36 1998  Jason Merrill  <jason@yorick.cygnus.com>
2294
2295         * friend.c (is_friend): Fix access control for local classes.
2296
2297         * class.c (is_empty_class): New fn.
2298         * call.c (build_call): Don't pass empty class objects to a function.
2299
2300 Wed Apr  1 14:58:35 1998  Mark Mitchell  <mmitchell@usa.net>
2301
2302         * call.c (build_over_call): Do name resolution for default
2303         arguments of function templates in the scope of the templates.
2304
2305 Tue Mar 31 13:43:57 1998  Jeffrey A Law  (law@cygnus.com)
2306
2307         * call.c: Include system.h.  Remove includes, declarations and
2308         defines provided by system.h.
2309         * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
2310         * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
2311         * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
2312         * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
2313         * typeck2.c, xref.c: Likewise.
2314         * Makefile.in: Dependencies updated as appropriate.
2315         * Make-lang.in: Likewise.
2316
2317 Mon Mar 30 12:15:00 1998  Mark Mitchell  <mmitchell@usa.net>
2318
2319         * pt.c (fn_type_unification): Allow incomplete unification without 
2320         an immediate error message.
2321
2322 Mon Mar 30 08:55:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
2323
2324         * tree.c (member_p): New fn.
2325         * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
2326         initializing class members.
2327
2328         * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
2329         * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
2330
2331         * call.c (build_method_call): Handle non-scoped destructors, too.
2332         * pt.c (tsubst_copy): Likewise.
2333
2334         * pt.c (print_template_context): Split out...
2335         (push_tinst_level): ...from here.
2336
2337         * friend.c (is_friend): Don't pass a type to decl_function_context.
2338
2339         * typeck.c (convert_for_initialization): Always hand off
2340         conversions to class type.
2341
2342 Sun Mar 29 20:01:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
2343
2344         * friend.c (is_friend): Local classes have the same access as the
2345         enclosing function.
2346
2347 Sun Mar 29 00:47:32 1998  Jeffrey A Law  (law@cygnus.com)
2348
2349         * typeck.c (expand_target_expr): Delete dead function.
2350
2351         * search.c: Put various prototypes inside #ifdef MI_MATRIX.
2352
2353         * repo.c (save_string): Delete dead function.
2354
2355         * method.c (thunk_printable_name): Delete dead function.
2356
2357         * lex.c (yynextch): Delete dead function.
2358
2359         * expr.c (tree_extract_aggr_init): #if 0 out.
2360
2361         * except.c (do_unwind): Delete dead function.
2362         (easy_expand_asm): Likewise.
2363
2364         * cvt.c (build_conversion_type_1): Delete dead function.
2365
2366         * cp-tree.h (push_expression_obstack): Declare.
2367
2368         * call.c (source_type): #if 0 out.
2369
2370         * class.c (alter_access): Remove unused label.  Add braces
2371         around empty else clause.
2372
2373         * lex.c (yyprint): Fix argument to printf.
2374
2375 Sat Mar 28 17:43:52 1998  Mark Mitchell  <mmitchell@usa.net>
2376
2377         * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
2378
2379         * pt.c (instantiate_class_template): Make sure template
2380         arguments are permanent.
2381         * init.c (resolve_offset_ref): Don't go looking around in
2382         template types.
2383
2384         * semantics.c: Add routines to handle expressions, and some
2385         declaration processing.
2386         * parse.y: Use them.
2387         (current_class_depth): Move declaration to cp-tree.h.
2388         * parse.c: Regenerated.
2389         * cp-tree.h: Use them.
2390         (current_class_depth): Declare.
2391         * pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
2392
2393 Fri Mar 27 20:23:18 1998  Mark Mitchell  <mmitchell@usa.net>
2394
2395         * error.c (dump_decl): Be a bit more explicit with template
2396         type arguments, when verbose.
2397         
2398 Fri Mar 27 18:16:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
2399
2400         * inc/exception: Reorder closing braces.
2401
2402 Fri Mar 27 13:22:18 1998  Mark Mitchell  <mmitchell@usa.net>
2403
2404         * pt.c (redeclare_class_template): New function.
2405         * cp_tree.h (redeclare_class_template): Declare it.
2406         * decl.c (xref_tag): Use it.
2407
2408 Thu Mar 26 11:16:30 1998  Jason Merrill  <jason@yorick.cygnus.com>
2409
2410         * call.c (build_over_call): Check IS_AGGR_TYPE, not 
2411         TYPE_LANG_SPECIFIC.
2412         * typeck.c (convert_arguments): Likewise.
2413
2414         * decl.c (grokdeclarator): Remove const and volatile from type after
2415         setting constp and volatilep.
2416
2417         * class.c (finish_struct_1): Don't warn about bool bitfield larger
2418         than one bit.
2419
2420 Thu Mar 26 10:25:52 1998  Mark Mitchell  <mmitchell@usa.net>
2421
2422         * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
2423
2424 Thu Mar 26 10:24:05 1998  Mark Mitchell  <mmitchell@usa.net>
2425
2426         * call.c (build_object_call): Complain about ambiguous operator(),
2427         rather that crashing.
2428         (build_new_op): Likewise.
2429         (build_op_delete_call): Likewise.
2430
2431 Thu Mar 26 10:23:24 1998  Mark Mitchell  <mmitchell@usa.net>
2432
2433         * cvt.c (perform_qualification_conversions): Use comp_target_types
2434         instead of comp_ptr_ttypes.
2435
2436 Wed Mar 25 16:10:50 1998  Mark Mitchell  <mmitchell@usa.net>
2437
2438         * cp-tree.h (enforce_access): Declare.
2439         * call.c (enforce_access): Make it extern, not static.
2440         * class.c (alter_access): Use enforce_access; modify code for ISO
2441         compliance, rather than ARM rules.
2442
2443 Wed Mar 25 12:10:45 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2444
2445         * cp-tree.h: Fix typo.
2446
2447 Wed Mar 25 02:01:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
2448
2449         * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
2450         if (aggregate_value_p (type)).
2451
2452         * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
2453
2454 Tue Mar 24 16:12:01 1998  Mark Mitchell  <mmitchell@usa.net>
2455
2456         * tree.c (mapcar): When dealing with a DECL, use it's constant
2457         value, if any.
2458         * pt.c (lookup_template_class): Don't mangle the names of template
2459         classes whose arguments are unknown.
2460
2461         * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
2462
2463 Tue Mar 24 12:21:55 1998  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
2464
2465         * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
2466
2467 Tue Mar 24 12:21:48 1998  Jim Wilson  <wilson@cygnus.com>
2468
2469         * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
2470         boolean_type_node to 1.
2471
2472 Tue Mar 24 10:23:47 1998  Mark Mitchell  <mmitchell@usa.net>
2473
2474         * error.c (dump_expr): Remove unused variable `l'.
2475
2476         * pt.c (for_each_template_parm): New function, created by
2477         converting uses_template_parms.
2478         (tree_fn_t): New typedef.
2479         (uses_template_parms): Use it.
2480         (mark_template_parm): New function.
2481         (push_template_decl): Check that the argument list of a partial
2482         specialization uses all the template parameters.
2483
2484         * Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
2485         with it; we might want it for debugging.
2486         * cp-tree.h (type_unification): Change interface.
2487         * class.c (finish_struct_1): Skip nested template types, just like
2488         ordinary nested types.
2489         (instantiate_type): Use new interface to type_unification.
2490         * lex.c (init_lex): Add __sz as opname for sizeof.
2491         * method.c (build_overload_scope_ref): New function.
2492         (build_overload_int): Handle complex expressions.  Set
2493         numeric_output_need_bar if necessary.
2494         (build_overload_value): Handle non-PARM_DECL nodes; this
2495         routine is now used by build_overload_int.  Remove some
2496         assignments to numeric_output_need_bar.  Use
2497         build_overload_scope_ref.
2498         (build_qualified_name): Note that some template mangled names end
2499         with digits, and set numeric_output_need_bar appropriately.  Use
2500         build_underscore_int.
2501         * pt.c (unify): Change interface.
2502         (type_unification_real): Likewise.
2503         (determine_specialization): Use new interfaces.
2504         (tsubst): Deal gracefully with situations in which the argument
2505         vector is not fully filled.
2506         (fn_type_unification): Use new interfaces.
2507         (type_unification): Likewise.  Remove NOP_EXPR hack.
2508         (type_unification_real): Likewise.
2509         (unify): Likewise.  Deal with unification of complex expresions.
2510
2511 Mon Mar 23 12:24:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
2512
2513         * pt.c (complete_template_args): Initialize skip properly.
2514
2515         * decl.c (make_typename_type): Revert.
2516         (make_implicit_typename): Remove.
2517         (lookup_name_real): Don't call it.  Call lookup_field if we see a
2518         TYPE_DECL from a template base.
2519         * search.c (lookup_field): Do implicit typename stuff.
2520
2521 Sun Mar 22 00:50:42 1998  Nick Clifton  <nickc@cygnus.com>
2522                           Geoff Noer    <noer@cygnus.com>
2523
2524         * Makefile.in: Various fixes for building cygwin32 native toolchains.
2525         * Make-lang.in: Likewise.
2526
2527 Fri Mar 20 18:07:39 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2528
2529         * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
2530
2531 Fri Mar 20 10:42:07 1998  Jason Merrill  <jason@yorick.cygnus.com>
2532
2533         * decl.c (make_implicit_typename): Rewrite removed code.
2534         (make_typename_type): Call it if the type we look up comes from
2535         a base that uses template parms.
2536
2537         * pt.c (complete_template_args): Rewrite.
2538         (tsubst, FUNCTION_DECL): Use it.
2539
2540 Fri Mar 20 08:12:43 1998  H.J. Lu  (hjl@gnu.org)
2541
2542         * semantics.c (finish_asm_stmt): Fix combine strings. Call
2543         c_expand_asm_operands () if output_operands, input_operands or
2544         clobbers is not NULL_TREE.
2545
2546 Fri Mar 20 00:10:19 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2547
2548         * pt.c (complete_template_args): New function.
2549         (get_bindings): Deal with specializations of function templates
2550         with return type containing parameters from outer class 
2551         templates.
2552         (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
2553         substitute arguments and compose a new type.
2554
2555 Thu Mar 19 19:01:48 1998  Mark Mitchell  <mmitchell@usa.net>
2556
2557         * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
2558         FUNCTION_DECLs.
2559
2560 Thu Mar 19 11:51:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
2561
2562         * decl.c (make_implicit_typename): Lose useless code.
2563
2564         * call.c (standard_conversion): Handle A* -> const A* properly.
2565
2566         * pt.c (get_bindings_real): Rename from get_bindings.  Add 
2567         check_rettype parm.
2568         (get_bindings): Pass 1.
2569         (get_bindings_overload): Pass 0.
2570
2571 Wed Mar 19 09:08:12 1998  Mark Mitchell  <mmitchell@usa.net>
2572
2573         * pt.c (check_explicit_specialization): When reverting a static
2574         member function, also remove the `this' parameter from
2575         last_function_parms.
2576
2577 Thu Mar 19 02:27:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
2578
2579         * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
2580         a function context.
2581
2582         * decl.c (store_bindings): Use free_binding_vecs.
2583         (pop_from_top_level): Likewise.
2584
2585 Wed Mar 18 12:41:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
2586
2587         * decl.c (make_implicit_typename): Only change the type of a 
2588         TYPENAME_TYPE.
2589
2590 Wed Mar 18 10:09:51 1998  Mark Mitchell  <mmitchell@usa.net>
2591
2592         * semantics.c: New file, containing routines to perform the
2593         semantic phase of parsing.
2594         * parse.y: Use it.
2595         * pt.c (tsubst_expr): Likewise.
2596         * cp-tree.h: Declare the various functions in semantics.c.
2597         Provide macros to access _STMT tree nodes.
2598         * cp-tree.def: Add ASM_STMT tree node.
2599         * Makefile.in, Make-lang.in: Add dependencies on and for
2600         semantics.c.
2601         
2602 Wed Mar 18 00:24:10 1998  Jason Merrill  <jason@yorick.cygnus.com>
2603
2604         * pt.c (push_template_decl): Only check primary templates.
2605
2606         * pt.c (check_explicit_specialization): Complain about default args
2607         in explicit specialization.
2608
2609         * parse.y (nomods_initdcl0): Also call cp_finish_decl for a 
2610         constructor_declarator.
2611
2612 Tue Mar 17 14:44:54 1998  Mark Mitchell  <mmitchell@usa.net>
2613
2614         * typeck2.c (build_x_arrow): Don't crash when an aggregate type
2615         has no overloaded operator ->.
2616
2617         * call.c (build_field_call): Don't crash when presented with a
2618         field that is actually a nested type.
2619
2620         * decl.c (pushtag): Deal with friend class injection in local
2621         classes.
2622
2623         * call.c (build_object_call): Don't crash if OBJ is a
2624         pointer-to-member-function.
2625
2626 Tue Mar 17 11:40:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
2627
2628         * pt.c (push_template_decl): Complain about template with C linkage,
2629         anonymous template class.
2630
2631 Mon Mar 16 12:10:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
2632
2633         * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
2634         * search.c: Likewise.
2635
2636         * lex.c (do_pending_defargs): Only call 
2637         maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
2638
2639         * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
2640
2641 Mon Mar 16 10:47:22 1998  Mark Mitchell  <mmitchell@usa.net>
2642
2643         * parse.y: Deal with CONSTRUCTORS in new_initializers.
2644
2645 Mon Mar 16 10:54:21 1998  Mark Mitchell  <mmitchell@usa.net>
2646
2647         * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
2648         closely mimics the behavior in parse.y.
2649         (tsubst_expr): Return the resuting BLOCK when making a tsubst'ing
2650         into a compound statement.
2651         
2652 Sun Mar 15 02:07:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
2653
2654         * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
2655         * pt.c (inline_needs_template_parms): New fn.
2656         (original_template): New fn.
2657         (push_inline_template_parms_recursive): New fn.
2658         (maybe_begin_member_template_processing): Use them.
2659         (maybe_end_member_template_processing): Likewise.
2660         (is_member_or_friend_template): Rename to is_member_template.
2661         Member functions of local classes are never member templates.
2662
2663 Sun Mar 15 01:14:22 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2664
2665         * lex.c (do_identifier): Handle TEMPLATE_DECL that was
2666         added in the class scope to catch redefinition error.
2667
2668         * pt.c (reduce_template_parm_level): Also copy 
2669         the DECL_TEMPLATE_PARMS field.
2670
2671 Sun Mar 15 10:54:08 1998  Mark Mitchell  <mmitchell@usa.net>
2672
2673         * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
2674         reduced-level template type parameter.
2675
2676 Sun Mar 15 12:26:02 1998  Manfred Hollstein  <manfred@s-direktnet.de>
2677
2678         * cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
2679         (DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
2680         * class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
2681         * decl.c (duplicate_decls): Propagate it.
2682         * typeck2.c (abstract_virtuals_error): Use two loops to emit
2683         abstract virtual functions and virtual functions which need a
2684         final overrider separately.
2685         
2686 Thu Mar 12 09:39:40 1998  Manfred Hollstein  <manfred@s-direktnet.de>
2687
2688         * lang-specs.h: Properly put brackets around array elements in 
2689         initializer.
2690
2691         * typeck.c (build_binary_op_nodefault): Correctly place parens around
2692         && and || in expression.
2693
2694 Thu Mar 12 09:26:04 1998  Manfred Hollstein  <manfred@s-direktnet.de>
2695
2696         * call.c (default_parm_conversions): Remove prototype definition.
2697         (build_method_call): Remove unused variable result.
2698
2699         * cvt.c (ocp_convert): Remove unused variable conversion.
2700
2701         * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
2702
2703         * except.c (do_unwind): #if 0 definition of unused variables fcall
2704         and next_pc.
2705
2706         * expr.c (extract_scalar_init): #if 0 prototype and function 
2707         definition.
2708
2709         * init.c (expand_aggr_init_1): Remove unused variable init_type.
2710         (build_new_1): Remove unused variable t.
2711
2712         * pt.c (instantiate_class_template): Remove unused variable newtag;
2713         cast called function return value to void.
2714         (do_decl_instantiation): Remove unused variables name and fn.
2715
2716         * tree.c (get_type_decl): Add default return to shut up compiler from
2717         complaining control reaches end of non-void function.
2718
2719         * typeck.c (build_x_conditional_expr): Remove unused variable rval.
2720
2721 Thu Mar 12 09:12:15 1998  Manfred Hollstein  <manfred@s-direktnet.de>
2722
2723         * call.c (default_parm_conversions): Remove prototype definition.
2724         (build_method_call): Remove unused variable result.
2725         (build_over_call): Add default case in enumeration switch.
2726
2727 Thu Mar 12 08:39:13 1998  Manfred Hollstein  <manfred@s-direktnet.de>
2728
2729         * decl2.c (lang_decode_option): Change j's type to size_t.
2730
2731         * tree.c (layout_vbasetypes): record_align and desired_align are of
2732         type unsigned int; const_size and nonvirtual_const_size likewise.
2733
2734 Wed Mar 11 07:25:20 1998  Mark Mitchell  <mmitchell@usa.net>
2735
2736         * parse.y (new_initializer): Make sure all initializers are
2737         lists.
2738
2739 Tue Mar 10 07:32:36 1998  Mark Mitchell  <mmitchell@usa.net>
2740
2741         * decl2.c (import_export_decl): Mark tinfo functions for
2742         cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
2743
2744 Fri Mar  6 23:27:35 1998  Jeffrey A Law  (law@cygnus.com)
2745
2746         * method.c: Fix typo.
2747
2748 Fri Mar  6 10:06:59 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2749
2750         * method.c: Include "system.h" to get stdlib.h, stdio.h,
2751         ctype.h, string.h, etc.
2752         (issue_nrepeats): Add default case in enumeration switch.
2753         (check_btype): Likewise.
2754         (process_overload_item): Likewise.
2755          
2756         * Makefile.in (method.o): Depend on system.h.
2757
2758 Wed Mar  4 22:26:53 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2759
2760         * lex.c (do_scoped_id): Fix parenthesizing.
2761
2762 Wed Mar  4 12:11:53 1998  Michael Tiemann  <tiemann@axon.cygnus.com>
2763
2764         * rtti.c (get_tinfo_fn_dynamic): If this function is called an
2765         FLAG_RTTI is unset, initialize type info machinery and continue
2766         with FLAG_RTTI enabled.
2767         (get_typeid): Ditto.
2768
2769 Wed Mar  4 11:47:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
2770
2771         * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
2772         from B.
2773
2774 Wed Mar  4 11:28:08 1998  Mark Mitchell  <mmitchell@usa.net>
2775
2776         * pt.c (finish_member_template_decl): Deal more gracefully with
2777         invalid declarations.
2778
2779 Tue Mar  3 01:38:17 1998  Jason Merrill  <jason@yorick.cygnus.com>
2780
2781         * cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
2782         cp-tree.h: Clean up more old overloading code, old RTTI code, and
2783         some formatting quirks.
2784
2785         * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
2786         method.c, pt.c, ptree.c, typeck.c: Remove support for 
2787         -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
2788         * class.h: Remove.
2789         * Makefile.in: Adjust.
2790
2791         * pt.c (unify): Don't allow reduced cv-quals when strict.
2792
2793         * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
2794         *type_unification* and unify.
2795
2796 Mon Mar  2 12:11:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
2797
2798         * parse.y (explicit_template_type): Remove TEMPLATE keyword.
2799         (nested_name_specifier): And add it before this use.
2800         (typename_sub0): And this use.  Also add use without the keyword.
2801         (typename_sub1): Likewise.
2802         * pt.c (instantiate_class_template): Don't actually instantiate 
2803         anything if our type uses template parms.
2804
2805 Mon Mar  2 11:04:59 1998  Jim Wilson  <wilson@cygnus.com>
2806
2807         * decl.c (start_function): Don't call temporary_allocation for a
2808         nested function.
2809
2810 Sun Mar  1 21:06:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
2811
2812         * pt.c (instantiate_class_template): Don't mess with friends if
2813         our type uses template parms.
2814
2815 Sat Feb 28 12:06:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
2816
2817         * parse.y (nested_name_specifier): Use explicit_template_type.
2818         (typename_sub): Allow a template_type, an explicit_template_type,
2819         or an implicit template type at the end.
2820         * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
2821         * decl.c (make_typename_type): Handle template-id where the name
2822         is a TEMPLATE_DECL.
2823         * call.c (build_scoped_method_call): Handle member template 
2824         destructor call.
2825         * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member 
2826         destructor is represented by the type.
2827
2828         * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
2829         * parse.y (nested_name_specifier): Add 'template' case.
2830         (explicit_template_type): New rule.
2831         (typename_sub): Use it.
2832         * decl.c (make_typename_type): Handle getting a template-id for NAME.
2833         * pt.c (tsubst): Likewise.
2834
2835 Fri Feb 27 11:17:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
2836
2837         * pt.c (add_to_template_args): Fix thinko.
2838         (instantiate_class_template): Call it later.
2839
2840         * pt.c (get_class_bindings): Add outer_args parm.
2841         (most_specialized_class): Likewise.
2842         (instantiate_class_template): Pass it.
2843         (more_specialized_class): Likewise.
2844         (lookup_template_class): Get context from template if none
2845         was specified.
2846         (finish_member_template_decl): Don't do anything with a
2847         partial specialization.
2848         * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
2849         AGGREGATE_TYPE_P.
2850         * class.c (finish_struct): Member class templates have already been
2851         checked for name clashes.
2852         * decl.c (pushdecl_with_scope): Handle pushing at class level.
2853
2854 Fri Feb 27 02:25:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
2855
2856         * pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
2857         (tsubst, *_PARM): Support multiple levels of template classes.
2858         (instantiate_class_template): Look up the pattern from the
2859         original template.
2860         (lookup_template_class): Handle getting a template for d1.
2861         (push_template_decl): Correct setting of 'primary'.
2862         (reduce_template_parm_level): Add 'levels' parm.
2863         (finish_member_template_decl): Support member class templates.
2864         (template_class_depth): Handle multiple levels.
2865         * parse.y (component_decl_1, fn.def2): Remove member template case.
2866         (component_decl): Add member template cases.
2867         * decl2.c (check_member_template): We now handle member template
2868         classes.
2869         * decl.c (pushtag): Handle member templates.
2870         * method.c (do_inline_function_hair): Don't touch
2871         IDENTIFIER_GLOBAL_VALUE.
2872         * init.c (build_offset_ref): If name isn't an identifier, just 
2873         return it.
2874         * spew.c (yylex): Handle PTYPENAME like TYPENAME.
2875
2876         * typeck.c (get_delta_difference): Do adjust for conversions to
2877         and from virtual base.
2878
2879 Wed Feb 25 09:51:29 1998  Jason Merrill  <jason@yorick.cygnus.com>
2880
2881         * typeck.c (get_delta_difference): Give hard error for conversion
2882         from virtual base.
2883
2884         * cp-tree.h: Tweak formatting.
2885
2886 Wed Feb 25 00:35:33 1998  Jason Merrill  <jason@yorick.cygnus.com>
2887
2888         * decl.c (push_namespace): Handle redeclaration error.
2889
2890         * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
2891         (IDENTIFIER_NAMESPACE_BINDINGS): New macro.
2892         (NAMESPACE_BINDING): New macro.
2893         (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
2894         * *.c: Use them.
2895
2896         * pt.c (push_template_decl): Use innermost_args.
2897
2898         * decl.c (get_unique_name): Tweak from earlier in the name.
2899
2900 Tue Feb 24 22:15:04 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
2901
2902         * cp-tree.def: Add CPLUS_BINDING node.
2903         * cp-tree.h (tree_binding): new struct
2904         (BINDING_SCOPE, BINDING_VALUE): new macros
2905         (current_namespace, global_namespace): declare extern
2906         (struct lang_decl_flags): new field in_namespace
2907         (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros
2908         (DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros
2909         (TREE_INDIRECT_USING): new macro
2910         * decl2.c (current_namespace, global_namespace): Declare.  The
2911         value is a NAMESPACE_DECL now, not a TREE_LIST.
2912         (is_namespace_ancestor, namespace_ancestor):new static functions.
2913         (add_using_namespace, ambiguous_decl): likewise.
2914         (lookup_using_namespace): new support function for lookup_name.
2915         (qualified_lookup_using_namespace): new support function for
2916         do_scoped_id and lookup_namespace_name
2917         (get_namespace_id): mark as obsolete.
2918         (current_namespace_id): Likewise.
2919         (do_namespace_alias): Implement.
2920         (do_using_directive): Implement as call to add_using_namespace.
2921         * decl.c (binding_for_name): new function.
2922         (push_namespace, pop_namespace): implement.
2923         (push_decl): don't install a FUNCTION_DECL in the global branch.
2924         (lookup_namespace_name): implement using qualified lookup.
2925         (lookup_name_real): For global scoping, lookup in
2926         global_namespace. For namespace scoping, lookup in given
2927         namespace. For unscoped lookup, iterate over namespace,
2928         considering using directives.
2929         (init_decl_processing): initialize global_namespace.
2930         (grokvardecl): Build assembler name as static name for globals.
2931         (grokdeclarator): Remove old namespace mangling.
2932         (xref_tag): When installing a global binding for the
2933         tag, make sure we have an identifier.
2934         * method.c (build_overload_nested_name): mangle namespaces.
2935         (build_qualified_name): Likewise.
2936         (build_decl_overload_real): Likewise.
2937         * lex.c (build_lang_decl): set namespace for new declaration to
2938         current_namespace.
2939         (do_scoped_id): find global names in global or current
2940         namespace, or using qualified namespace lookup, depending on
2941         context.
2942         * init.c (build_member_call): When scope is namespace, use
2943         build_x_function_call instead.
2944         (build_offset_ref): When scope is namespace, collapse processing
2945         to lookup_namespace_name instead.
2946         * error.c (dump_decl): Support NAMESPACE_DECL.
2947         * decl.c (pushdecl): Bind globals to current namespace.
2948         (push_overloaded_decl): Likewise.
2949         (lookup_tag): Likewise.
2950         (lookup_name_current_level): Likewise.
2951         (xref_tag): Likewise.
2952         (start_function): Likewise.
2953         * lex.c (do_identifier): Likewise.
2954         (identifier_typedecl_value): Likewise.
2955         (real_yylex): Likewise.
2956         * method.c (do_inline_function_hair): Likewise.
2957         * parse.y (unscoped): Likewise.
2958         * pt.c (check_explicit_specialization): Likewise.
2959         (lookup_template_class): Likewise.
2960         * rtti.c (call_void_fn): Likewise.
2961         * sig.c (build_sigtable): Likewise.
2962         * ptree.c (lang_print_xnode): New function.
2963
2964 Tue Feb 24 01:40:24 1998  Jason Merrill  <jason@yorick.cygnus.com>
2965
2966         * pt.c (instantiate_class_template): Don't instantiate if pedantic
2967         and the args use template parms.
2968
2969         * pt.c (push_tinst_level): If the instantiaton uses template parms,
2970         fail silently.
2971         * decl.c (xref_basetypes): Do call complete_type for basetypes
2972         that involve template parameters.
2973
2974 Tue Feb 24 00:36:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
2975
2976         * typeck2.c (process_init_constructor): Fix labeled init check.
2977
2978 Mon Feb 23 05:08:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
2979
2980         * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
2981         argument to tsubst and friends.
2982
2983         * pt.c (tsubst, FUNCTION_DECL): Tidy.
2984
2985         * typeck.c (build_x_function_call): Handle static member function
2986         templates like non-templates.  Handle friend templates like normal
2987         function templates.
2988         * pt.c (tsubst, *_PARM): Don't use orig_level.
2989         (get_bindings): Don't call add_to_template_args.
2990         (instantiate_template): Likewise.
2991         (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
2992         * ptree.c (print_lang_type): Print index/level for template parms.
2993
2994 Mon Feb 23 02:52:29 1998  Mark Mitchell  <mmitchell@usa.net>
2995
2996         * Make-lang.in (cc1plus): Note that cc1plus depends on
2997         cp/cp-tree.h and cp/cp-tree.def.
2998         
2999         * cp-tree.def (TEMPLATE_CONST_PARM): Remove.
3000         (TEMPLATE_PARM_INDEX): New tree code, used to indicate a
3001         position in a template parameter list.
3002         * cp-tree.h (template_parm_index): New structure, used as the tree
3003         structure for a TEMPLATE_PARM_INDEX.
3004         (TEMPLATE_PARM_IDX): New macro.
3005         (TEMPLATE_PARM_LEVEL): Likewise.
3006         (TEMPLATE_PARM_DESCENDANTS): Likewise.
3007         (TEMPLATE_PARM_ORIG_LEVEL): Likewise.
3008         (TEMPLATE_PARM_DECL): Likewise.
3009         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
3010         (TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
3011         (TEMPLATE_TYPE_DECL): Likewise.
3012         (TEMPLATE_CONST_IDX): Remove.
3013         (TEMPLATE_CONST_LEVEL): Likewise.
3014         (TEMPLATE_CONST_SET_INFO): Likewise.
3015         (TEMPLATE_TYPE_SET_INFO): Likewise.
3016         (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
3017         node.
3018         (TEMPLATE_TYPE_LEVEL): Likewise.
3019         * decl.c (decls_match): Call comp_template_parms, rather than
3020         expanding it inline.
3021         (duplicate_decls): If two template declarations are being merged,
3022         then their TEMPLATE_INFOs should be merged as well.
3023         (grokfndecl): Save template-id information when declaring a friend
3024         with explicit template arguments.  Pass arguments to
3025         check_explicit_specialization via correct convention; at some
3026         point check_explicit_specialization changed, but these call-sites
3027         did not.
3028         (grokdeclarator): Tidy up slightly.
3029         * decl2.c (check_classfn): Tidy up slightly.  Don't assume that
3030         two template functions with the same DECL_ASSEMBLER_NAME the same,
3031         since the names are not yet mangled.
3032         * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
3033         TEMPLATE_CONST_PARM. 
3034         (dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
3035         decl for a non-type parameter, rather than printing `<tparm ...>'.
3036         * friend.c (is_friend): Handle TEMPLATE_DECL friends.
3037         (do_friend): Deal with template friends.
3038         * lex.c (do_pending_inlines): Call
3039         maybe_begin_member_template_processing, rather than
3040         conditionally calling begin_member_template_processing.
3041         (process_next_inline): Likewise.  Call
3042         maybe_end_member_template_processing, rather than
3043         conditionally calling end_member_template_processing.
3044         (do_pending_defargs): Likewise.
3045         (do_identifier): Use TEMPLATE_PARM_INDEX instead of
3046         TEMPLATE_CONST_PARM.  
3047         * method.c (build_mangled_template_parm_index): New function.
3048         (build_overload_value): Use it.
3049         (build_overload_name): Likewise.
3050         * pt.c (finish_member_template_decl): Allow friend declarations.
3051         (template_class_depth): New function.
3052         (is_member_template): Rename, and modify, to become...
3053         (is_member_or_friend_template): New function.
3054         (end_member_template_processing): Rename, and modify, to become...
3055         (maybe_end_member_template_processing).
3056         (build_template_parm_index): New function.
3057         (reduce_template_parm_level): New function.
3058         (process_template_parm): Modify to use build_template_parm_index.
3059         (push_template_decl): Deal with friend templates.
3060         (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
3061         TEMPLATE_CONST_PARM.
3062         (tsubst_friend_function): New function.
3063         (instantiate_class_template): Generate the DECL_FRIENDLIST
3064         for a new instantiation by using tsubst_friend_function rather
3065         than just tsubst.
3066         (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
3067         Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
3068         appropriate new macros.  Use reduce_template_parm_level to
3069         generate lower-level template parameters.  Handle tsubst'ing into
3070         TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
3071         to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
3072         templates.  Similarly for the template parameters for a new
3073         template.
3074         (tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
3075         of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
3076         (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.  
3077         (get_bindings): Call add_to_template_args if necessary.
3078         (instantiate_decl): Handle instantiations of friend templates.
3079         * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
3080         TEMPLATE_TYPE_PARM as a list of fields; it's not!
3081         * spew.c (yylex): Do a little manual constant propogation to
3082         clarify the code.
3083         
3084 Sun Feb 22 19:53:29 1998  Jeffrey A Law  (law@cygnus.com)
3085
3086         * error.c: Include sys/types.h.
3087
3088 Thu Feb 19 14:49:09 1998  Jeffrey A Law  (law@cygnus.com)
3089
3090         * method.c (build_mangled_name): Start CPP directives in column zero.
3091
3092 Thu Feb 19 10:36:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
3093
3094         * typeck2.c (process_init_constructor): Sorry about non-trivial
3095         labeled initializers.
3096         * parse.y (initlist): Reenable labeled initializers.
3097
3098 Thu Feb 19 10:15:55 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
3099
3100         * pt.c (coerce_template_parms) Add a new parameter, is_tmpl_parm,
3101         all callers changed.  Rely on the new parameter instead of arg 
3102         being a TREE_LIST when determine whether we are working inside
3103         template template parameter.  Clean up is_type test.
3104         
3105 Thu Feb 19 10:04:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
3106
3107         * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
3108         * typeck2.c (initializer_constant_valid_p): Allow conversions
3109         between pointers and refrerences.
3110
3111 1998-02-19  Brendan Kehoe  <brendan@cygnus.com>
3112
3113         * typeck.c (build_unary_op): Only warn about incr/decr a pointer
3114         if pedantic || warn_pointer_arith.
3115
3116 Thu Feb 19 09:37:21 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
3117
3118         * pt.c (unify): Handle TEMPLATE_DECL.
3119
3120 1998-02-18  Brendan Kehoe  <brendan@cygnus.com>
3121
3122         * cp-tree.h (strip_attrs): Remove decl.
3123
3124 1998-02-18  Doug Evans  <devans@cygnus.com>
3125
3126         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
3127         Update olddecl's attributes too.
3128         (strip_attrs): Remove function.
3129         * typeck.c (common_type): Call merge_machine_type_attributes.
3130
3131 Tue Feb 17 14:07:52 1998  Mark Mitchell  <mmitchell@usa.net>
3132
3133         * parse.y (initdcl0_innards): New grammar symbol.
3134         (nomods_initdecls, nomods_initdcl0): Change type from itype to
3135         none, since the resulting value is never used.
3136         (parse_decl): New function.
3137         (datadef): Remove redundant actions.
3138         (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
3139         * parse.c: Regenerated.
3140         
3141 Tue Feb 17 11:54:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
3142
3143         * parse.y (simple_stmt): Use getdecls() to check for decl.
3144
3145 Sat Feb 14 11:50:51 1998  Manfred Hollstein  <manfred@s-direktnet.de>
3146
3147         * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New 
3148         macros.
3149         (c++.install-common): Install c++filt properly as native or as cross
3150         variant.
3151         (c++.uninstall): Add c++filt.
3152
3153 Fri Feb 13 14:55:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
3154
3155         * call.c (standard_conversion): Fix multi-level ptr conversions.
3156
3157 Fri Feb 13 14:06:22 1998  Mike Stump  <mrs@wrs.com>
3158
3159         * init.c (build_new): Propagate error_mark_node up.
3160
3161 Fri Feb 13 13:24:32 1998  Jason Merrill  <jason@yorick.cygnus.com>
3162
3163         * parse.y (simple_stmt): If the condition isn't a declaration, 
3164         start the controlled block after the test.
3165
3166 Fri Feb 13 02:26:10 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
3167
3168         * call.c (build_over_call): Convert builtin abs, labs and fabs to
3169         tree-codes.
3170         * decl.c (init_decl_processing): Reenable abs, labs and fabs as
3171         builtins.
3172
3173 Fri Feb 13 01:36:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
3174
3175         * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
3176
3177 Fri Feb 13 00:21:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
3178
3179         * cp-tree.h: Add access_protected_virtual_node.
3180         * class.c (init_class_processing): Initialize it.
3181         * decl.c (xref_basetypes): Use it.
3182         * parse.y (base_class_access_list): Likewise.
3183
3184         * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
3185         (c++.install-common): Install c++filt.
3186
3187 Thu Feb 12 12:46:51 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3188
3189         * decl.c (shadow_tag): Give error for typedef-ing built-in types.
3190
3191 Wed Feb 11 23:28:05 1998  Mark Mitchell  <mmitchell@usa.net>
3192
3193         * call.c (reference_binding): Use comptypes when comparing
3194         TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
3195
3196 Wed Feb 11 16:42:04 1998  Mark Mitchell  <mmitchell@usa.net>
3197
3198         * tree.c (is_overloaded_fn): Use really_overloaded_fn.
3199         (really_overloaded_fn): Move check here from is_overloaded_fn. 
3200         (get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
3201
3202 Wed Feb 11 15:54:18 1998  Mark Mitchell  <mmitchell@usa.net>
3203
3204         * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
3205         conversions.
3206
3207 Mon Feb  9 22:23:31 1998  Mark Mitchell  <mmitchell@usa.net>
3208
3209         * cp-tree.h (push_template_decl): Return the decl passed in, or an
3210         equivalent duplicate.
3211         * decl.c (pushtag): Use the return value from push_template_decl.
3212         (duplicate_decls): When duplicating a template declaration, merge
3213         the DECL_TEMPLATE_RESULTs as well.
3214         (make_implicit_typename): Don't try to dive into typename types to
3215         find a context for making a new implicit typename.
3216         (start_decl): Use the return value from push_template_decl.
3217         (grokdeclarator): Complain about declarations list `const operator
3218         int'.  Since we don't correctly handle in-class initializations of
3219         non-static data members, complain about this (now illegal)
3220         practice.  Issue an error for initializations of non-const statics
3221         since that is illegal as well, and since we don't handle that case
3222         correctly either.
3223         (start_function): Use the return value from push_template_decl.
3224         (start_method): Likewise.
3225         * decl2.c (grokfield): Likewise.  Since the change to
3226         grokdeclarator ensures that all initialized fields are in fact
3227         static, remove a redundant test for TREE_PUBLIC.
3228         * parse.y (initlist): Disable labeled initializers since they do
3229         not work as per the documentation, and since they do not use the
3230         same syntax as the C front end.
3231         * pt.c (push_template_decl): Return the decl passed in, or an
3232         equivalent duplicate.
3233         (lookup_template_class): When searching in a nested context,
3234         use the right arguments.
3235         (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
3236         * typeck.c (build_component_ref): Assign the correct type to the
3237         result of build_vfn_ref.
3238         
3239 Tue Feb 10 23:56:46 1998  Jason Merrill  <jason@yorick.cygnus.com>
3240
3241         * pt.c (convert_nontype_argument): Fix typo.
3242         (check_explicit_specialization): Allow old-style specialization
3243         of class template members.
3244
3245 Tue Feb 10 20:36:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
3246                           Manfred Hollstein  <manfred@s-direktnet.de>
3247
3248         * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
3249         when deciding to override DECL_ASSEMBLER_NAME.
3250
3251 Tue Feb 10 15:30:55 EST 1998 Andrew MacLeod <amacleod@torpedo.to.cygnus.com>
3252
3253         * decl2.c (lang_f_options): Add -fsquangle to option processing list.
3254         * cp-tree.h (flag_do_squangling): Add declaration.
3255         * lang-options.h: Add -fsquangle and -fno-squangle.
3256         * method.c: Add macros and static variables for squangling.
3257         (build_overload_name): Rename to build_mangled_name, add logic for B 
3258         compression, and split into process_modifiers and 
3259         process_overload_item.
3260         (process_modifiers): New function, to handle constant, reference, 
3261         and pointer types. 
3262         (process_overload_item): New function, handles issue of type codes.
3263         (build_overload_name): New function, start squangling and call 
3264         build_mangled_name.
3265         (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
3266         (start_squangling): New function to initialize squangling structs.
3267         (end_squangling): New function to destroy squangling structs.
3268         (nrepeats): Rename variable to Nrepeats.
3269         (issue_nrepeats): New function for issuing 'n' type repeats.
3270         (check_ktype): New function to check for type K name compression.
3271         (build_overload_nested_name): Add a check for K name compression.
3272         (build_qualified_name): Add a check for K name compression and don't
3273         use DECL_ASSEMBLER_NAME when squangling is on.
3274         (check_btype): New function, checks for B type compression.
3275         (build_static_name, build_decl_overload_real): Initiate squangling.
3276         (build_typename_overload, build_overload_with_type): Initiate 
3277         squangling
3278
3279 Sun Feb  8 23:47:38 1998  scott snyder  <sss@d0linux01.fnal.gov>
3280
3281         * method.c (make_thunk): Avoid name buffer overflow.
3282
3283 Sat Feb  7 16:48:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
3284
3285         * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
3286         don't define them yet.
3287
3288         * parse.y (nomods_initdcl0): Add constructor_declarator case.
3289
3290 Fri Feb  6 21:32:25 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3291
3292         * config-lang.in (diff_excludes): Use basename only.
3293
3294 Thu Feb  5 19:10:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
3295
3296         * tinfo2.cc: Add tinfo for signed char.
3297
3298 Thu Feb  5 14:38:23 1998  Mike Stump  <mrs@wrs.com>
3299
3300         * search.c (compute_access): Handle protected constructors in derived
3301         classes as accessible.
3302
3303 Wed Feb  4 01:26:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
3304
3305         * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
3306         Call convert_from_reference sooner.
3307
3308 Tue Feb  3 23:50:52 1998  Mark Mitchell  <mmitchell@usa.net>
3309
3310         * cvt.c (ocp_convert): Obtain the constant values from constant
3311         decls even if the destination type is the same as the type of the
3312         decl. 
3313
3314         * decl2.c (finish_file): Make sure that static inlines with
3315         definitions are not marked DECL_EXTERNAL before returning.
3316
3317 Tue Feb  3 22:43:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
3318
3319         * decl.c: Lose arg_looking_for_template.
3320         (lookup_name_real): Likewise.
3321         * parse.y: Lose processing_template_arg, template_arg1
3322         (primary): Likewise.
3323         * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
3324
3325 Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
3326
3327         * error.c (dump_decl): Fix type of default arguments for template
3328         template parameters and nontype template parameters.
3329         * parse.y (template_parm): Handle invalid default template 
3330         template arguments here.
3331
3332         * parse.y (template_parm): Use template_arg instead of PTYPENAME 
3333         for default template template argument.
3334         * pt.c (coerce_template_parms): Merge default template argument 
3335         codes.  Can treat RECORD_TYPE as template name if it is implicitly
3336         created.  Fix argument index in error message.
3337         * typeck.c (comptypes): Merge template argument comparison codes in 
3338         TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
3339
3340 Tue Jan  6 01:42:44 1998  Mumit Khan <khan@xraylith.wisc.edu>
3341
3342         * lex.c (file_name_nondirectory): Also check for '/'.
3343
3344 Mon Feb  2 11:24:22 1998  Mark Mitchell  <mmitchell@usa.net>
3345
3346         * parse.y (primary): Deal with statement-expressions in
3347         templates. 
3348         * pt.c (tsubst_copy): Handle BIND_EXPR.
3349         * tree.c (mapcar): Likewise.
3350
3351         * call.c (add_template_candidate_real): Pass extra parameter to
3352         fn_type_unification. 
3353         * cp-tree.h (fn_type_unification): Add parameter.
3354         * pt.c (fn_type_unification): Add additional parameter to deal with
3355         static member functions.
3356         (get_bindings): Deal with static member functions.
3357
3358         * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.      
3359         (revert_static_member_fn): Declare.
3360         * decl.c (revert_static_member_fn): Remove declaration.  Change
3361         linkage from internal to external.
3362         (cp_finish_decl): Deal with virtual functions in classes local to
3363         template functions.
3364         * decl2.c (finish_file): Don't forget to emit increment/decrement
3365         expressions in initializers for file-scope variables.
3366         * parse.y (typename_sub2): If the typename doesn't names a
3367         template, rather than a type, issue an error message.
3368         * pt.c (check_explicit_specialization): Handle specializations of
3369         static member functions.
3370         (coerce_template_parms): Handle offset references to lists of
3371         member functions.
3372         * search.c (note_debug_info_needed): Don't crash when handed a
3373         type which is being defined.
3374         * typeck.c (complete_type): Don't crash when handed NULL_TREE;
3375         that can happen with some illegal code.
3376
3377 Mon Feb  2 00:57:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3378
3379         * call.c (user_harshness): Initialize `code' to 0.
3380         (build_method_call): Initialize `candidates', `cp' and `len' to 0.
3381         (null_ptr_cst_p): Add parentheses around && within ||.
3382         (standard_conversion): Likewise.
3383         (z_candidate): Likewise.
3384         (build_user_type_conversion_1): Initialize `args' to NULL_TREE.
3385         (build_object_call): Likewise for `mem_args'.
3386         (build_new_op): Likewise for `mem_arglist'.  Add `return' from
3387         default case in enumeration switch.
3388
3389         * class.c (build_vtable_entry): Add explicit braces to avoid
3390         ambiguous `else'.
3391         (build_class_init_list): Likewise.
3392         (finish_struct_1): Initialize `width' to 0.
3393         (instantiate_type): Initialize `name' to NULL_TREE.  Add
3394         explicit braces to avoid ambiguous `else'.
3395
3396         * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
3397         `else'.
3398
3399         * decl.c (grok_reference_init): Eliminate unused parameter, all
3400         callers changed.
3401         (record_builtin_type): Initialize `tdecl' to NULL_TREE.
3402         (init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
3403         (cp_finish_decl): Initialize `ttype' to NULL_TREE.
3404         (grokdeclarator): Add parentheses around && within ||.  Add
3405         explicit braces to avoid ambiguous `else'.
3406         (grokparms): Initialize `type' to NULL_TREE.
3407         (xref_tag): Remove unused label `just_return'.
3408         (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
3409         (finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
3410         (hack_incomplete_structures): Add parentheses around assignment
3411         used as truth value.
3412
3413         * decl2.c (coerce_delete_type): Hide definition of `e3'.
3414
3415         * error.c: Include <stdlib.h>.
3416         (dump_expr): Change the type of `i' to size_t.  Remove unused
3417         label `error'. 
3418
3419         * except.c (init_exception_processing): Remove unused variable `d'.
3420         (expand_throw): Likewise for `label'.
3421
3422         * friend.c (add_friends): Add explicit braces to avoid ambiguous
3423         `else'.
3424
3425         * init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
3426         (sort_base_init): Likewise for `binfo'.
3427         (expand_member_init): Likewise for `rval'.
3428         (build_member_call): Add parentheses around assignment used as
3429         truth value.
3430         (build_offset_ref): Add explicit braces to avoid ambiguous `else'.
3431         (build_new): Initialize `nelts' to NULL_TREE.  Initialize
3432         `old_immediate_size_expand' to 0.
3433         (build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
3434         (build_vec_delete_1): Remove unused variable `block'.
3435         (expand_vec_init): Initialize `itype' to NULL_TREE.
3436
3437         * lex.c: Include <strings.h> if we don't have <string.h>.  Protect
3438         declaration of `index' and `rindex' with autoconf macros.
3439         (reinit_parse_for_expr): Remove unused variables
3440         `look_for_semicolon' and `look_for_lbrac'.
3441         (cons_up_default_function): Initialize `args' to NULL_TREE.
3442         (readescape): Initialize `firstdig' to 0.
3443         (real_yylex): Add parentheses around assignment used as truth value. 
3444
3445         * method.c: Include <strings.h> if we don't have <string.h>.
3446         Protect declaration of `index' with autoconf macro.
3447
3448         * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
3449         Initialize `type' to NULL_TREE.
3450         (structsp): Remove unused variable `id'.
3451
3452         * pt.c (coerce_template_parms): Add explicit braces to avoid
3453         ambiguous `else'.
3454         (lookup_template_class): Initialize `template' to NULL_TREE.
3455         (instantiate_class_template): Remove unused variable `name' and `e'.
3456         (tsubst): Likewise for `i'.  Initialize `last' to NULL_TREE.
3457         (do_poplevel): Initialize `saved_warn_unused' to 0.
3458         (type_unification): Remove unused varable `parm'.
3459         (unify): Likewise for `j'.
3460
3461         * repo.c (init_repo): Add parentheses around assignment used as
3462         truth value.
3463         (finish_repo): Remove unused varable `p'.
3464         
3465         * search.c (get_binfo): Initiize `type' to NULL_TREE.
3466         (get_base_distance): Likewise.
3467         (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
3468         and `new_v' to NULL_TREE.
3469         (lookup_fnfields): Likewise for `rval_binfo_h'.
3470         (breadth_first_search): Add parentheses around assignment used as
3471         truth value.
3472         (get_template_base): Initialize `type' to NULL_TREE.
3473
3474         * sig.c (append_signature_fields): Initialize `last_mfptr' to
3475         NULL_TREE.
3476         (build_signature_table_constructor): Likewise for
3477         `last_rhs_field', `pfn' and `vt_off'.
3478         (build_sigtable): Likewise for `init'.
3479
3480         * tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
3481         (propagate_binfo_offsets): Likewise for `delta'.
3482         (hash_tree_cons): Initialize hashcode to 0.
3483         (can_free): Likewise for `size'.
3484         (cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
3485         
3486         * typeck.c (convert_sequence): Hide prototype.
3487         (common_type): Add explicit braces to avoid ambiguous `else'.
3488         (comp_target_types): Likewise.
3489         (build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
3490         (build_function_call_real): Add explicit braces to avoid ambiguous
3491         `else'.
3492         (convert_arguments): Initialize `called_thing' to 0.
3493         (convert_for_initialization): Initialize `savew' and `savee' to 0.
3494
3495         * typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
3496         (digest_init): Initialize `old_tail_contents' to NULL_TREE.
3497         (build_x_arrow): Likewise for `last_rval'.
3498
3499         * xref.c (GNU_xref_decl): Initialize `cls' to 0.
3500
3501 Sun Feb  1 12:45:34 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
3502
3503         * decl.c (init_decl_processing): Use set_sizetype.
3504         * decl2.c (sizetype): Don't declare.
3505         * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
3506         (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
3507         (build_component_addr, unary_complex_lvalue): Likewise.
3508         * rtti.c (expand_class_desc): Likewise.
3509         * class.c (get_vfield_offset): Likewise.
3510
3511 Thu Jan 29 10:39:30 1998  Mark Mitchell  <mmitchell@usa.net>
3512
3513         * pt.c (convert_nontype_argument): Move check for is_overloaded_fn
3514         early to avoid bogus error.  Handle overloaded function
3515         names provided as template arguments correctly.
3516         (coerce_template_parms): Don't mishandle overloaded functions when
3517         dealing with template template parameters.
3518         (lookup_template_class): Issue an error message, rather than
3519         crashing, when the TYPE_DECL provided is not a template type.
3520
3521 Wed Jan 28 23:14:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
3522
3523         * class.c (instantiate_type): Don't just return a known type if
3524         it's wrong.
3525
3526 Wed Jan 28 11:04:07 1998  Mark Mitchell  <mmitchell@usa.net>
3527
3528         * class.c (instantiate_type): Remove handling of FUNCTION_DECL
3529         since that code could never be reached.
3530         
3531         * error.c (dump_decl): Avoid aborting in the midst of printing an
3532         error message about an illegal template declaration.
3533
3534         * parse.y (structsp): Print an error message, rather than crashing,
3535         when a class-head does not name a class.
3536
3537         * pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
3538         template arguments as a g++ extension.
3539         
3540         * cp-tree.def (ALIGNOF_EXPR): New tree code.
3541         * decl2.c (grok_alignof): If processing_template_decl, just store
3542         the expression.
3543         * typeck.c (c_alignof): Likewise.
3544         * decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
3545         * error.c (dump_expr): Likewise.
3546         * pt.c (tsubst_copy): Likewise.
3547         * tree.c (cp_tree_equal): Likewise.
3548         * pt.c (uses_template_parms): Correctly determine whether or not a
3549         SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
3550         folding can be done.
3551         
3552         * cp-tree.h (grok_enum_decls): Remove type parameter.
3553         * decl.c (grok_enum_decls): Likewise.
3554         * decl2.c (grok_x_components): Call grok_enum_decls
3555         unconditionally, since it will do nothing if there is no
3556         current_local_enum.  Use the new calling sequence.
3557         * pt.c (tsubst_enum): Use the new calling sequence for
3558         grok_enum_decls.
3559
3560         * decl.c (start_function): Make member functions of local classes
3561         in extern inline functions have comdat linkage here...
3562         (grokdeclarator): Rather than here.
3563         
3564 Wed Jan 28 10:55:47 1998  Jason Merrill  <jason@yorick.cygnus.com>
3565
3566         * pt.c (convert_nontype_argument): Use decl_constant_value.
3567
3568 Tue Jan 27 16:42:21 1998  Mark Mitchell  <mmitchell@usa.net>
3569
3570         * call.c (add_template_candidate_real): New function.
3571         (add_template_candidate): Use it.
3572         (add_template_conv_candidate): Likewise.
3573         (joust): Pass extra argument to more_specialized.
3574         * class.c (instantiate_type): Handle a single FUNCTION_DECL.
3575         (is_local_class): Remove.
3576         (finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
3577         * cp-tree.h (is_local_class): Remove.
3578         (perform_array_to_pointer_conversion): Likewise.
3579         (finish_member_template_decl): Add.
3580         (check_explicit_specialization): Return a tree, not an int.
3581         (more_specialized): Take additional argument.
3582         (get_bindings): Likewise.
3583         (TI_PENDING_SPECIALIZATION_FLAG): New macro.
3584         * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
3585         (perform_array_to_pointer_conversion): Remove.
3586         * decl.c (saved_scope): Add processing_specialization,
3587         processing_explicit_instantiation fields.
3588         (maybe_push_to_top_level): Save them.
3589         (pop_from_top_level): Restore them.
3590         (grokfndecl): Use new return value from
3591         check_explicit_specialization. 
3592         (start_decl): Don't check flag_guiding_decls before pushing
3593         decls. 
3594         (cp_finish_decl): Remove previous (bogus) change.
3595         (grok_declarator): Use decl_function_context rather than
3596         is_local_class. 
3597         * decl2.c (finish_file): Pass extra argument to get_bindings.
3598         (build_expr_from_tree): Let build_x_component_ref check 
3599         validity of arguments rather than doing it here.
3600         * lex.c (cons_up_default_function): Remove code fooling with
3601         processing_specialization, processing_explicit_instantiation
3602         flags, as that is now done in {maybe_push_top,pop_from}_top_level. 
3603         * method.c (build_overload_identifier): Mangle local classes in
3604         template functions correctly.
3605         * parse.y (finish_member_template_decl): Move to pt.c.
3606         * pt.c (finish_member_template_decl): Moved here from parse.y.
3607         (print_candidates): New function.
3608         (determine_specialization): Change interface.  Properly look for
3609         most specialized versions of template candidates.
3610         (check_explicit_specialization): Fully process explicit
3611         instantiations. 
3612         (push_template_decl): Avoid looking at CLASSTYPE fields in
3613         FUNCTION_DECLS. 
3614         (determine_overloaded_function): Remove.
3615         (convert_nontype_argument): Change name from
3616         convert_nontype_parameter.  Use determine_overloaded_function
3617         instead of instantiate_type.
3618         (mangle_class_name_for_template): Handle type contexts as well as
3619         function contexts.
3620         (classtype_mangled_name): Likewise.
3621         (lookup_template_class): Likewise.
3622         (tsubst): Likewise.
3623         (more_specialized): Take explict template arguments as a
3624         parameter. 
3625         (most_specialized): Likewise.
3626         (get_bindings): Likewise.  Check that return types match before
3627         proclaiming a function a match.
3628         (do_decl_instantiation): Remove code searching for function to
3629         instantiate; that is now done in check_explicit_specialization.
3630         (add_maybe_template): Pass extra argument to get_bindings.
3631         * tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
3632         implementation.
3633         * typeck.c (build_component_ref): Check for invalid arguments.
3634
3635 Tue Jan 27 01:44:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
3636
3637         * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that 
3638         return_target and call_target are equivalent.
3639
3640         * pt.c (type_unification_real): Just accept function parms that
3641         don't use any template parms.
3642
3643 Sun Jan 25 03:30:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
3644
3645         * decl.c (cp_finish_decl): When bailing on a comdat variable, also
3646         unset DECL_NOT_REALLY_EXTERN.
3647
3648         * parse.y (typename_sub*): Fix std::.
3649
3650 Sat Jan 24 12:13:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
3651
3652         * error.c (dump_decl): Fix type default template args.
3653         (dump_type): Hand TEMPLATE_DECL off to dump_decl.
3654
3655 Fri Jan 23 18:34:37 1998  Mumit Khan <khan@xraylith.wisc.edu>
3656
3657         * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
3658         (file_name_nondirectory): Use.
3659
3660 Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
3661
3662         * pt.c (coerce_template_parms): Don't access elements of ARGLIST
3663         that are not really present.  Substitute default arguments in 
3664         template template arguments.  Correctly convert TEMPLATE_DECL to 
3665         TEMPLATE_TEMPLATE_PARM.
3666         (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM 
3667         are no longer treated specially here.
3668         * parse.y (template_template_parm): Fix copy error.
3669         * decl.c (grokdeclarator): Warn about missing `typename' for nested
3670         type created from template template parameters.
3671         * parse.y (bad_parm): Likewise
3672
3673         * class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
3674         (push_nested_class): Likewise.
3675         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
3676         * cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
3677         (copy_template_template_parm): Declare.
3678         * decl.c (arg_looking_for_template): New variable.
3679         (lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
3680         Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
3681         node if arg_looking_for_template is nonzero.
3682         (pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
3683         (grok_op_properties, xref_tag, xref_basetypes): Likewise.
3684         (grokdeclarator): Handle TEMPLATE_DECL.
3685         * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
3686         * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
3687         (dump_type_prefix, dump_type_suffix) Handle TEMPLATE_TEMPLATE_PARM.
3688         (dump_decl): Handle unnamed template type parameters.
3689         Handle template template parameters.
3690         (dump_function_name): Handle template template parameters.
3691         * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef): 
3692         Handle TEMPLATE_TEMPLATE_PARM.
3693         * method.c (build_template_template_parm_names): New function.
3694         (build_template_parm_names): Handle TEMPLATE_DECL.
3695         (build_overload_nested_name, build_overload_name): 
3696         Handle TEMPLATE_TEMPLATE_PARM.
3697         * parse.y (maybe_identifier): New nonterminal.
3698         (template_type_parm): Use it.
3699         (template_template_parm, template_arg1): New nonterminal.
3700         (template_parm): Add template_template_parm rules.
3701         (template_arg): Set processing_template_arg.
3702         (template_arg1): Rules moved from template_arg.
3703         (primary, nonnested_type): Set arg_looking_for_template if we are
3704         processing template arguments.
3705         * pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
3706         (process_template_parm): Handle template template parameters.
3707         (coerce_template_parms, comp_template_args): Likewise.
3708         (mangle_class_name_for_template, lookup_template_class): Likewise.
3709         (uses_template_parms): Handle TEMPLATE_DECL and 
3710         TEMPLATE_TEMPLATE_PARM.
3711         (current_template_args): Handle TEMPLATE_DECL.
3712         (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
3713         * search.c (dfs_walk, dfs_record_inheritance): 
3714         Handle TEMPLATE_TEMPLATE_PARM.
3715         * tree.c (copy_template_template_parm): New function.
3716         (mapcar): Handle TEMPLATE_TEMPLATE_PARM.
3717         * typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
3718
3719 Mon Jan 19 22:40:03 1998  Mark Mitchell  <mmitchell@usa.net>
3720
3721         * decl.c (start_decl): Don't allow duplicate definitions of static
3722         data members.
3723
3724         * call.c (build_user_type_conversion_1): Handle user-defined
3725         template conversion operators correctly.
3726
3727         * decl2.c (build_expr_from_tree): Issue an error message if the
3728         object in a COMPONENT_REF is a TEMPLATE_DECL.
3729         
3730         * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
3731         
3732         * class.c (is_local_class): New function.
3733         * cp-tree.h (is_local_class): Declare it.
3734         (last_tree): Likewise.
3735         (begin_tree): Likewise.
3736         (end_tree): Likewise.
3737         (lookup_template_class): Change prototype.
3738         * decl.c (cp_finish_decl): Check for NULL where necesary.
3739         Consider FUNCTION_DECLS to declare objects with top-level binding,
3740         when calling make_decl_rtl.
3741         (grokdeclarator): Give members of local classes internal linkage.
3742         (start_function): Remove declaration of last_tree.
3743         (finish_function): Set flag_keep_inline_functions around call to
3744         rest_of_compilation if we are processing a member function in a
3745         local class.
3746         (start_method): Call push_template_decl for member functions of
3747         local classes in template functions.
3748         * decl2.c (import_export_decl): Don't give external linkage to
3749         instantiations of templates with internal linkage.
3750         * parse.y (last_tree): Remove declaration.
3751         (template_type): Pass extra parameter to lookup_template_class.
3752         (self_template_type): Likewise.
3753         (structsp): Move call to reset_specialization into left_curly.
3754         (left_curly): Call reset_specialization, and begin_tree.
3755         * pt.c (saved_trees): New variable.
3756         (mangle_class_name_for_template): Change prototype.  Use
3757         additional function context to name local classes in templates
3758         correctly. 
3759         (classtype_mangled_name): Pass the context.
3760         (push_template_decl): Handle local classes and templates, and
3761         member functions for such classes.
3762         (convert_nontype_parameter): Fix handling of pointer-to-member
3763         constants. 
3764         (lookup_template_class): Handle local classes in templates.
3765         (tsubst): Likewise.  Don't assume that template instantiations
3766         have external linkage; pay attention to the template declaration. 
3767         (mark_decl_instantiated): Likewise.
3768         (begin_tree): New function.
3769         (end_tree): Likewise.
3770         
3771         * decl.c (xref_basetypes): Don't call complete_type for basetypes
3772         that involve template parameters; that can lead to infinite
3773         recursion unnecessarily.
3774
3775         * pt.c (register_specialization): Do not register specializations
3776         that aren't ready to be registered yet.
3777         (check_explicit_specialization): Handle explicit specialization of
3778         constructors and destructors.
3779         (build_template_decl): New function.
3780         (push_template_delc): Handle out-of-class specializations of
3781         member templates.
3782         
3783         * pt.c (check_explicit_specialization): Set up the template
3784         information before registering the specialization.
3785         (coerce_template_parms): Fix thinko.
3786         (tsubst): Handle specializations of member templates correctly.
3787
3788         * class.c (finish_struct_methods): Remove calls to
3789         check_explicit_specialization from here.
3790         (finish_struct): And insert them here.
3791         * cp-tree.h (perform_qualification_conversions): New function.
3792         (perform_array_to_pointer_conversion): Likewise.
3793         (begin_explicit_instantiation): Likewise.
3794         (end_explicit_instantiation): Likewise.
3795         (determine_specialization): Renamed from
3796         determine_explicit_specialization. 
3797         (comp_template_parms): New function.
3798         (processing_explicit_instantiation): New variable.
3799         * cvt.c (perform_qualification_conversions): New function.
3800         (perform_array_to_pointer_conversion): Likewise.
3801         * decl.c (duplicate_decls): Don't consider template functions
3802         alike unless they have the same parameters.  Refine handling of
3803         instantiation/specialization mismatches.
3804         (start_decl): Don't call pushdecl for template specializations,
3805         since they don't affect overloading.
3806         (start_function): Likewise
3807         (grokfndecl): Call check_explicit_specialization a little later.
3808         Don't call duplicate_decls for memberm template specializations.
3809         (grokdeclarator): Don't update template_count for classes that are
3810         themselves specializations.  Remove use of `2' as parameter to
3811         grokfndecl since that value isn't used.
3812         * lex.c (cons_up_default_function): Save and restore
3813         processing_explicit_instantiation around calls to grokfield.
3814         * parse.y (finish_member_template_decl): New function.
3815         (component_decl_1): Use it.
3816         (fn.def2): Likewise.
3817         (template_arg_list_opt): New nonterminal.       
3818         (template_type): Use it.
3819         (self_template_type): Likewise.
3820         (template_id): Likewise.
3821         (object_template_id): Likewise.
3822         (notype_template_declarator): Likwise.
3823         (begin_explicit_instantiation): Likewise.
3824         (end_explicit_instantiation): Likewise.
3825         (explicit_instantiation): Use them.
3826         * pt.c (coerce_template_parms): Add parameters.
3827         (processing_explicit_instantiation): New variable.
3828         (convert_nontype_parameter): New function.
3829         (determine_overloaded_function): Likewise.
3830         (begin_explicit_instantiation): Likewise.
3831         (end_explicit_instantiation): Likewise.
3832         (retrieve_specialization): Likewise.
3833         (register_specialization): Likewise.
3834         (processing_explicit_specialization): Removed.
3835         (determine_specialization): Handle specializations of member
3836         functions of template class instantiations.
3837         (check_explicit_specialization): Refine to conform to standard.
3838         (comp_template_parms): New function.
3839         (coerce_template_parms): Call convert_nontype_parameter.
3840         (tsubst): Refine handling of member templates.  Use
3841         register_specialization. 
3842         (instantiate_template): Use retrieve_specialization.
3843         (do_decl_instantiation): Likewise.
3844         (instantiate_decl): Likewise.
3845         (type_unification): Improve handling of explict template
3846         arguments. 
3847         * tree.c (mapcar): Return error_mark_node, rather than aborting,
3848         on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
3849         * typeck.c (build_unary_op): Call determine_specialization, rather
3850         than determine_explicit_specialization.
3851
3852 Mon Jan 19 13:18:51 1998  Jason Merrill  <jason@yorick.cygnus.com>
3853
3854         * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
3855
3856 Fri Jan 16 11:40:50 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
3857
3858         * error.c (dump_decl): For enum tags, output the tag, not its value.
3859
3860 1998-01-13  Brendan Kehoe  <brendan@cygnus.com>
3861
3862         * decl.c (init_decl_processing): Only call init_rtti_processing
3863         FLAG_RTTI is set.
3864
3865 Mon Jan 12 01:35:18 1998  Jason Merrill  <jason@yorick.cygnus.com>
3866
3867         * init.c (build_new_1): Split out from build_new.
3868         (build_new): Just return a NEW_EXPR.
3869         * expr.c (cplus_expand_expr): Handle NEW_EXPR.
3870
3871         * decl2.c (get_temp_regvar): Tweak.
3872
3873         * cp-tree.h (TREE_CALLS_NEW): Comment out.
3874         * class.c (resolves_to_fixed_type_p): Remove use.
3875         * method.c (build_opfncall): Likewise.
3876         * call.c (build_new_op): Likewise.
3877
3878 Wed Jan  7 23:47:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
3879
3880         * exception.cc (__eh_alloc, __eh_free): New fns.
3881         (__cp_push_exception, __cp_pop_exception): Use them.
3882         (__uncatch_exception): Call terminate here if no exception.
3883         * except.c (build_terminate_handler): New fn.
3884         (expand_start_catch_block): Use it.
3885         (expand_exception_blocks): Likewise.
3886         (alloc_eh_object): New fn.
3887         (expand_throw): Use it.  Protect exception init with terminate.
3888         * typeck.c (build_modify_expr): Remove code that ignores trivial 
3889         methods.
3890
3891 Mon Dec 22 11:36:27 1997  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3892  
3893         * call.c (add_builtin_candidate): Add default case in enumeration
3894         switch.
3895         (build_new_op): Likewise.
3896         (convert_like): Likewise.
3897         * cvt.c (build_expr_type_conversion): Likewise.
3898         * tree.c (real_lvalue_p): Likewise.
3899         (lvalue_p): Likewise.
3900         (cp_tree_equal): Likewise.
3901         * typeck.c (comptypes): Likewise.
3902         (build_component_ref): Likewise.
3903         (build_function_call_real): Likewise.
3904         (build_binary_op_nodefault): Likewise.
3905         (build_unary_op): Likewise.
3906         (build_modify_expr): Likewise.
3907         * typeck2.c (initializer_constant_valid_p): Likewise.
3908
3909 Sun Dec 21 15:59:00 1997  Nick Clifton  <nickc@cygnus.com>
3910
3911         * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
3912
3913 Thu Dec 18 14:51:50 1997  Mark Mitchell  <mmitchell@usa.net>
3914
3915         * pt.c (coerce_template_parms): Make sure to digest_init if
3916         possible.
3917
3918         * decl.c (duplicate_decls): Make the newdecl virtual if the
3919         olddecl was, just as is done with other attributes of olddecl.
3920
3921 Thu Dec 18 14:43:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
3922
3923         * typeck.c (unary_complex_lvalue): Ignore op0 when taking the 
3924         address of an OFFSET_REF.
3925
3926         * cp-tree.def: Add AGGR_INIT_EXPR.
3927         * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
3928         AGGR_INIT_EXPR where appropriate.
3929         * expr.c (cplus_expand_expr): Likewise.  Simplify.
3930
3931         * decl2.c (finish_file): Remove call to register_exception_table.
3932
3933 Wed Dec 17 17:08:52 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3934
3935         * pt.c (instantiate_class_template): Don't do injection when
3936         processing_template_decl is true, as pollutes current_binding_level 
3937         for base classes.
3938
3939 Wed Dec 17 21:17:39 1997  Peter Schmid <schmid@ltoi.iap.physik.tu-darmstadt.de>
3940
3941         * pt.c (maybe_fold_nontype_arg): Add prototype.
3942
3943 Tue Dec 16 10:31:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
3944
3945         * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
3946         * error.c (dump_expr): Likewise.
3947
3948 Mon Dec 15 12:22:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
3949
3950         * typeck.c (build_function_call_real): Remove "inline called before
3951         definition" pedwarn.
3952
3953         * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
3954
3955 Sun Dec 14 22:34:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
3956
3957         * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
3958
3959         * pt.c (type_unification_real): Change __null to type void* with 
3960         a warning.
3961
3962 Sun Dec 14 20:38:35 1997  Mark Mitchell  <mmitchell@usa.net>
3963
3964         * call.c (implicit_conversion): Don't call
3965         build_user_type_conversion_1 with a NULL expr, since it will
3966         crash. 
3967
3968         * pt.c (unify): Don't try to unify array bounds if either array is
3969         unbounded.
3970
3971 Fri Dec 12 16:09:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
3972
3973         * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at): 
3974         Replace extern decls with casts.
3975
3976         * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
3977         Update last_parm_cleanup_insn.
3978         (store_after_parms): Remove.
3979         * cp-tree.h: Adjust.
3980
3981 Thu Dec 11 22:18:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
3982
3983         * decl2.c (comdat_linkage): Also set DECL_COMDAT.
3984         (finish_file): Check DECL_COMDAT instead of weak|one_only.
3985         (import_export_vtable): Use make_decl_one_only instead of
3986         comdat_linkage for win32 tweak.
3987         (import_export_decl): Likewise.
3988         * pt.c (mark_decl_instantiated): Likewise.
3989
3990         * decl2.c (finish_file): Lose handling of templates in pending_statics.
3991
3992 Thu Dec 11 21:12:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
3993
3994         * decl2.c (finish_file): Lose call to expand_builtin_throw.
3995         * except.c (expand_builtin_throw): Remove.
3996         * cp-tree.h: Remove ptr_ptr_type_node.
3997         * decl.c: Likewise.
3998
3999 Thu Dec 11 20:43:33 1997  Teemu Torma  <tot@trema.com>
4000         
4001         * decl.c (ptr_ptr_type_node): Define.
4002         (init_decl_processing): Initialize it.
4003         * cp-tree.h: Declare it.
4004         * exception.cc (__cp_exception_info): Use __get_eh_info.
4005         (__cp_push_exception): Ditto.
4006         (__cp_pop_exception): Ditto.
4007
4008         From Scott Snyder <snyder@d0sgif.fnal.gov>:
4009         * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
4010         saved_pc.
4011         (init_exception_processing): Removed saved_pc initialization.
4012
4013 Wed Dec 10 11:04:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
4014
4015         * pt.c (instantiate_decl): Defer all templates but inline functions.
4016
4017 Mon Dec  8 23:17:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
4018
4019         * init.c (expand_vec_init): Don't fold a list of parameters.
4020
4021         * decl.c (copy_args_p): Handle copy elision for types with virtual
4022         bases.
4023         * call.c (build_over_call): Likewise.
4024
4025 Sun Dec  7 22:38:12 1997  Mark Mitchell  <mmitchell@usa.net>
4026
4027         * pt.c (lookup_template_function): Copy the template arguments,
4028         not just the list containing them, to the permanent obstack.
4029
4030 Sun Dec  7 15:53:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
4031
4032         * except.c (expand_start_catch_block): suspend_momentary for the
4033         terminate handler.
4034
4035         * error.c (dump_decl): Handle LOOKUP_EXPR.
4036
4037 Sun Dec  7 15:45:07 1997  Mark Mitchell  <mmitchell@usa.net>
4038
4039         * rtti.c (build_dynamic_cast): Copy the cast-to type to the
4040         permanent obstack if we are processing a template decl.
4041         * typeck.c (build_static_cast): Likewise.
4042         (build_const_cast): Likewise.
4043         (build_reinterpret_cast): Likewise.
4044
4045         * pt.c (coerce_template_parms): Coerce some expressions, even
4046         when processing_template_decl.
4047
4048 Sun Dec  7 01:46:33 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4049
4050         * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
4051         handling of pointer difference expressions.
4052
4053         * typeck.c (comp_target_types): Comparison of function/method types
4054         is independent of nptrs.
4055
4056 Sun Dec  7 01:40:27 1997  Mark Mitchell  <mmitchell@usa.net>
4057
4058         * pt.c (tsubst): Avoid creating pointer to reference and
4059         reference to reference types.
4060
4061 Sat Dec  6 01:29:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
4062
4063         * parse.y (do_id): New nonterminal.
4064         (template_id): Use it.
4065
4066 Fri Dec  5 01:17:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
4067
4068         * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
4069         * spew.c (yylex): Don't do_identifier here.
4070         * decl2.c (build_expr_from_tree): Revert last change.
4071
4072         * decl2.c (build_expr_from_tree): Expand the name for a method call.
4073         * parse.y (object_template_id): Don't try to take the DECL_NAME.
4074
4075 Wed Dec  3 20:02:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
4076
4077         * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
4078         alloc_expr.
4079         * call.c (build_op_delete_call): Adjust.
4080
4081         * except.c (expand_end_catch_block): Lose rethrow region.
4082         (expand_start_catch_block): Likewise.
4083         (expand_end_catch_block): Don't expand_leftover_cleanups.
4084
4085 Wed Dec  3 13:24:04 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4086
4087         * pt.c (tsubst): Remove tree_cons call (places redundant info into
4088         DECL_TEMPLATE_INSTANTIATION).   
4089
4090 Wed Dec  3 11:44:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
4091
4092         * tree.c (is_overloaded_fn): Handle getting a fn template.
4093         (really_overloaded_fn): Likewise.
4094         * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
4095         * pt.c (check_explicit_specialization): Tweak.
4096         (determine_explicit_specialization): Tweak.
4097
4098         * tree.c, cp-tree.h (get_target_expr): New fn.
4099
4100 Wed Dec  3 08:47:27 1997  Paul Eggert  <eggert@twinsun.com>
4101
4102         * pt.c (check_explicit_specialization): Fix misspelling in
4103         diagnostic: `preceeded'.
4104         * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
4105         `conversiona'.
4106
4107 1997-12-02  Mark Mitchell  <mmitchell@usa.net>
4108
4109         * pt.c (determine_explicit_specialization): Avoid an internal
4110         error for bad specializations.
4111
4112         * method.c (build_overload_value): Handle SCOPE_REF.
4113
4114 Tue Dec  2 19:18:50 1997  Mike Stump  <mrs@wrs.com>
4115
4116         * class.c (prepare_fresh_vtable): Enable even more complex MI
4117         vtable names.
4118
4119 Tue Dec  2 01:37:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
4120
4121         * exception.cc (__check_eh_spec): Optimize a bit.
4122
4123         * exception.cc (__cp_pop_exception): Lose handler arg.
4124         * except.c (do_pop_exception): Likewise.
4125         (push_eh_cleanup): Let the cleanup mechanism supply the handler.
4126         (expand_end_catch_block): Likewise.
4127
4128 Fri Nov 28 01:58:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
4129
4130         * pt.c (check_explicit_specialization): Complain about using a 
4131         template-id for a non-specialization.
4132
4133 Fri Nov 28 12:35:19 1997  Scott Christley  <scottc@net-community.com>
4134
4135         * repo.c: Prototype rindex only if needed.
4136         * xref.c: Likewise.
4137
4138 Fri Nov 28 01:56:35 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4139
4140         * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
4141
4142 Thu Nov 27 00:59:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
4143
4144         * typeck.c (build_const_cast): Handle references here instead of
4145         handing off to convert_to_reference.
4146
4147         * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
4148         TerminateFunctionCall.
4149         (init_exception_processing): Likewise.  Terminate et al are now
4150         the fns, not ADDR_EXPRs.
4151         (various): Lose redundant assemble_external calls.
4152         (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
4153
4154         * cp-tree.h (struct lang_decl_flags): Add comdat.
4155         (DECL_COMDAT): New macro.
4156         * decl.c (duplicate_decls): Propagate it.
4157         (cp_finish_decl): Handle it.
4158         * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
4159
4160         * class.c: Remove static pending_hard_virtuals.
4161         (add_virtual_function): Take pointers to pending_virtuals
4162         and pending_hard_virtuals.
4163         (finish_struct_1): Pass them.  Declare pending_hard_virtuals.
4164
4165 Wed Nov 26 20:28:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
4166
4167         * decl2.c (import_export_vtable): If we support one_only but not
4168         weak symbols, mark instantiated template vtables one_only.
4169         (import_export_decl): Likewise for tinfo functions.
4170         (finish_vtable_vardecl): Also write out vtables from explicitly 
4171         instantiated template classes.
4172         * pt.c (mark_class_instantiated): Revert last change.
4173
4174         * except.c (expand_throw): Call mark_used on the destructor.
4175
4176 Wed Nov 26 15:13:48 1997  Jeffrey A Law  (law@cygnus.com)
4177
4178         * lex.c (lang_init): Enable flag_exceptions by default if no
4179         command line switch was specified.
4180
4181 1997-11-26  Mark Mitchell  <mmitchell@usa.net>
4182
4183         * pt.c (unify): Handle `void' template parameters in
4184         specializations.
4185
4186 Wed Nov 26 01:11:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
4187
4188         * rtti.c (build_dynamic_cast): Handle template case here.
4189         (build_dynamic_cast_1): Not here.
4190
4191         * typeck2.c (digest_init): Make copies where appropriate.
4192
4193         * decl2.c (delete_sanity): resolve_offset_ref.
4194
4195         * except.c: Call terminate without caching so many bits.
4196
4197         * except.c (expand_start_catch_block): Fix catching a reference
4198         to pointer.
4199
4200 Tue Nov 25 11:28:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
4201
4202         * init.c (build_new): Copy size to the saveable obstack.
4203
4204         * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
4205         TRY_CATCH_EXPR for now.
4206
4207 Mon Nov 24 12:15:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
4208
4209         * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
4210         has DECL_LANG_SPECIFIC.
4211
4212         * exception.cc (struct cp_eh_info): Add handlers field.
4213         (__cp_push_exception): Initialize it.
4214         (__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
4215         (__throw_bad_exception): Remove.
4216         * except.c (call_eh_info): Add handlers field.
4217         (get_eh_handlers): New fn.
4218         (push_eh_cleanup): Increment handlers.
4219
4220 Fri Nov 21 12:22:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
4221
4222         * except.c (expand_start_eh_spec): Use the try/catch code.
4223         (expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
4224         doing everything inline.
4225         (init_exception_processing): throw_type_match now takes
4226         const void pointers.
4227         * exception.cc (__check_eh_spec): New fn.
4228         * inc/exception: Neither terminate nor unexpected return.
4229         * decl.c: Make const_ptr_type_node public.
4230         * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
4231
4232         * except.c (expand_start_catch_block): We only need the rethrow
4233         region for non-sjlj exceptions.
4234         (expand_end_catch_block): Likewise.  Use outer_context_label_stack.
4235
4236 Thu Nov 20 14:40:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
4237
4238         * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
4239         (various.o): Likewise.
4240         * inc/new: Add placement deletes.  Add throw specs for default new.
4241         * new.cc (set_new_handler): Move here from libgcc2.
4242         * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
4243         (new): Move from libgcc2.  Throw bad_alloc.
4244         * new2.cc: Move the rest of the op news and op deletes from libgcc2.
4245         * decl.c (init_decl_processing): Update exception specs on new and
4246         delete.
4247
4248         * method.c (build_decl_overload_real): Don't mess with global 
4249         placement delete.
4250
4251         * init.c (build_new): Check for null throw spec, not nothrow_t.
4252
4253         * decl.c (duplicate_decls): Don't complain about different exceptions
4254         from an internal declaration.
4255
4256         * call.c (build_op_delete_call): Fix check for member fns again.
4257
4258         * decl2.c (import_export_decl): Interface hackery affects
4259         virtual synthesized methods.
4260
4261 Wed Nov 19 18:24:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
4262
4263         * decl.c (start_decl): Don't just complain about a mismatched 
4264         scope, fix it.
4265
4266         * decl.c (make_implicit_typename): Handle case where t is not
4267         actually from context.
4268         * tree.c (get_type_decl): Lose identifier case.
4269         * spew.c (yylex): Lose useless call to identifer_typedecl_value.
4270         * parse.y (nonnested_type): Just use lookup_name.
4271         (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
4272
4273 Wed Nov 19 11:45:07 1997  Michael Tiemann  <tiemann@axon.cygnus.com>
4274
4275         * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
4276         T was built in C language context (for example, by
4277         output_func_start_profiler).
4278
4279 Wed Nov 19 10:39:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
4280
4281         * decl.c (make_implicit_typename): New fn.
4282         (lookup_name_real): Use it.  Use current_class_type as the context.
4283
4284 Mon Nov 17 23:42:03 1997  Bruno Haible <haible@ilog.fr>
4285
4286         * pt.c (do_poplevel): Don't prohibit jumps into this contour.
4287
4288 Mon Nov 17 02:01:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
4289
4290         * friend.c (do_friend): Warn about non-template friends in templates.
4291
4292         * call.c (build_op_delete_call): Fix handling of inherited delete.
4293
4294         * search.c (dfs_record_inheritance): Ignore template type parms.
4295
4296 Sat Nov 15 00:30:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
4297
4298         * call.c (build_new_op): Fix copy error.
4299         (build_op_new_call): New fn.
4300         (build_op_delete_call): New fn.
4301         * cp-tree.h: Declare them.
4302         * init.c (build_new): Use them.  Support placement delete.
4303         (build_x_delete): Use build_op_delete_call.
4304         (build_delete): Likewise.
4305         * decl2.c (delete_sanity): Likewise.
4306         (coerce_delete_type): Don't complain about placement delete.
4307
4308 Thu Nov 13 01:52:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
4309
4310         * call.c (build_new_function_call): Remove unused 'obj' parm.
4311         * cp-tree.h, typeck.c: Adjust.
4312
4313         * init.c (build_new): Make the cleanup last longer.
4314         (expand_vec_init): Call do_pending_stack_adjust.
4315
4316 Wed Nov 12 11:04:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
4317
4318         * pt.c (do_type_instantiation): Fix typo.
4319         (mark_class_instantiated): If we support one_only but not weak 
4320         symbols, don't mark this as known.
4321
4322         * init.c (build_new): Handle vec delete in EH cleanup.
4323
4324 Wed Nov 12 08:11:55 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4325
4326         * call.c (build_method_call): Call complete_type before checking
4327         for destructor.
4328
4329 Sun Nov  9 01:29:55 1997  Jim Wilson  (wilson@cygnus.com)
4330
4331         * decl.c (add_block_current_level): Delete.
4332         * init.c (build_vec_delete_1): Delete build_block and
4333         add_block_current_level calls.
4334
4335 Wed Nov 12 00:48:16 1997  Jason Merrill  <jason@yorick.cygnus.com>
4336
4337         * init.c (build_new): Handle freeing allocated memory when the
4338         constructor throws.
4339
4340         * call.c (build_new_method_call): Fix flags arg.
4341
4342         * pt.c (do_type_instantiation): Don't try to instantiate
4343         member templates.
4344         (mark_decl_instantiated): If we support one_only but not
4345         weak symbols, mark this one_only.
4346         * decl2.c (import_export_vtable): Don't defer handling of vtables
4347         if MULTIPLE_SYMBOL_SPACES.
4348
4349 Tue Nov 11 12:02:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
4350
4351         * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
4352
4353 Tue Nov 11 02:53:44 1997  Jason Merrill  <jason@lasher.cygnus.com>
4354
4355         * except.c (do_pop_exception): Return a value.
4356
4357 Mon Nov 10 20:25:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
4358
4359         * call.c (build_new_method_call): Handle getting a
4360         TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
4361         if we got template parms.
4362         * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
4363         not just the args.
4364         * decl2.c (build_expr_from_tree): Tweak last change.
4365         * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
4366         (maybe_fold_nontype_arg): Split out from tsubst_copy.
4367         * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
4368
4369 Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
4370
4371         * pt.c (tsubst_copy): Handle explicit template arguments in 
4372         function calls.
4373         * typeck.c (build_x_function_call): Likewise.
4374         * decl2.c (build_expr_from_tree): Lookup function name if it 
4375         hasn't been done.
4376
4377         * pt.c (tsubst): Instantiate template functions properly when 
4378         template parameter does not appear in function arguments and return 
4379         type.
4380         (comp_template_args): Handle member templates required by tsubst.
4381
4382 Mon Nov 10 20:08:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
4383
4384         * decl.c (grokdeclarator): Tweak conditions for pedwarn in
4385         previous change.
4386
4387 Mon Nov 10 20:08:29 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4388
4389         * pt.c (coerce_template_parms): Tweak error message.
4390
4391         * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
4392         return type defaults to `int', even if there are storage-class
4393         specifiers.
4394
4395 Mon Nov 10 03:04:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
4396
4397         Complete nested exception support.
4398         * except.c (do_pop_exception): Split out...
4399         (push_eh_cleanup): From here.  Handle the EH region by hand.
4400         (expand_start_catch_block): Add a new level for the catch parm.
4401         Move the rethrow region outside the two cleanup regions.
4402         Protect the initializer for the catch parm with terminate.
4403         (expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
4404         * exception.cc (__cp_pop_exception): Now takes two parms.  Handle
4405         popping off the middle of the stack.
4406         * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR, 
4407         WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
4408         (build_cplus_new): Only wrap CALL_EXPRs.
4409         * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around 
4410         the constructor call.
4411
4412 Sun Nov  9 18:00:26 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4413
4414         * Make-lang.in (c++.distdir): Make inc subdirectory.
4415
4416 Fri Nov  7 11:57:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
4417
4418         * decl2.c (finish_file): Put back some code.
4419
4420 Thu Nov  6 11:28:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
4421
4422         * decl2.c (finish_file): Remove redundant code.
4423         * method.c (emit_thunk): Don't let the backend defer generic thunks.
4424
4425 Wed Nov  5 23:52:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
4426
4427         * except.c (call_eh_info): Split out...
4428         (push_eh_info): From here.
4429         (expand_builtin_throw): Use it.
4430         (expand_start_catch_block): Move region start back.
4431
4432 Tue Nov  4 13:45:10 1997  Doug Evans  <devans@canuck.cygnus.com>
4433
4434         * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
4435         (real_yylex): Record wide strings using target endianness, not host.
4436
4437 1997-11-03  Brendan Kehoe  <brendan@lisa.cygnus.com>
4438
4439         * repo.c (rindex): Add decl unconditionally.
4440         (get_base_filename, open_repo_file): Don't cast rindex.
4441         * xref.c (rindex): Add decl unconditionally.
4442         (index): Remove unused decl.
4443         (open_xref_file): Don't cast rindex.
4444
4445 Sun Nov  2 15:04:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
4446
4447         * class.c (build_vbase_path): Propagate the result type properly.
4448
4449 1997-11-01  Brendan Kehoe  <brendan@lisa.cygnus.com>
4450
4451         * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
4452         remaining use of saved_throw_type with a call to get_eh_type.
4453
4454 1997-10-31  Brendan Kehoe  <brendan@lisa.cygnus.com>
4455
4456         * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
4457         (file_name_nondirectory): New function, doing the same as the macro.
4458         (set_typedecl_interface_info): Use it instead of the macro.
4459         (check_newline): Likewise.
4460         (handle_cp_pragma): Likewise.
4461
4462         * repo.c (get_base_filename): Cast result of rindex to char*.
4463         (open_repo_file): Likewise.
4464         * xref.c (open_xref_file): Likewise.
4465         * error.c (dump_char): Make its arg int, not char.
4466
4467         * except.c (push_eh_info): Pass the number of fields - 1 down, not
4468         the exact number of fields.
4469
4470 Fri Oct 31 01:47:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
4471
4472         Support for nested exceptions.
4473         * tinfo2.cc (__is_pointer): New fn.
4474         * exception.cc (struct cp_eh_info): Define.
4475         (__cp_exception_info, __uncatch_exception): New fns.
4476         (__cp_push_exception, __cp_pop_exception): New fns.
4477         * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
4478         Lose empty_fndecl.
4479         (init_exception_processing): Likewise.  __eh_pc is now external.
4480         (push_eh_info): New fn.
4481         (get_eh_{info,value,type,caught}): New fns.
4482         (push_eh_cleanup): Just call __cp_pop_exception.
4483         (expand_start_catch_block): Use push_eh_info.  Start the eh region
4484         sooner.
4485         (expand_end_eh_spec): Use push_eh_info.
4486         (expand_throw): Call __cp_push_exception to set up the exception info.
4487         Just pass the destructor or 0 as the cleanup.  Call __uncatch_exception
4488         when we rethrow.
4489         (expand_builtin_throw): Don't refer to empty_fndecl.
4490
4491 Thu Oct 23 02:01:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
4492
4493         * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
4494
4495 1997-10-22  Brendan Kehoe  <brendan@cygnus.com>
4496
4497         * method.c (build_template_parm_names, build_decl_overload_real):
4498         Add static to definitions.
4499         * pt.c (add_to_template_args, note_template_header,
4500         processing_explicit_specialization, type_unification_real): Likewise.
4501         ({determine,check}_explicit_specialization): Use a single string for
4502         error messages.
4503
4504 Mon Oct 20 12:06:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
4505
4506         * except.c (expand_exception_blocks): Call do_pending_stack_adust.
4507         (expand_end_catch_block): Likewise.
4508         (expand_end_eh_spec): Likewise.
4509
4510 Mon Oct 20 11:44:20 1997  Mark Mitchell  <mmitchell@usa.net>
4511
4512         * decl.c (duplicate_decls): Handle template specializations
4513         correctly. 
4514         * error.c (dump_function_name): Fix printing of specializations of
4515         member functions that are not member templates.
4516         * cp-tree.h (processing_specialization): Make global.
4517         * pt.c (processing_specialization): Likewise.
4518         * lex.c (cons_up_default_function): Save and restore
4519         processing_specialization to avoid confusion.
4520         
4521 Mon Oct 20 10:52:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
4522
4523         * decl.c (init_decl_processing): Give null_node unknown* type.
4524         * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
4525         (common_type): Likewise.
4526         * error.c (args_as_string): Recognize null_node.
4527
4528 Sun Oct 19 09:13:01 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4529
4530         * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
4531         (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
4532
4533         * decl.c (init_decl_processing): Call using_eh_for_cleanups.
4534
4535         * Make-lang.in (g++): Include prefix.o.
4536
4537 Thu Oct 16 15:31:09 1997  Judy Goldberg <judygold@sanwafp.com>
4538
4539         * pt.c (determine_explicit_specialization): Initialize "dummy"
4540         to keep Purify quiet.
4541
4542 Thu Oct 16 00:14:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
4543
4544         * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
4545         (build_overload_int): Not here.
4546
4547 Wed Oct 15 00:35:28 1997  Mike Stump  <mrs@wrs.com>
4548
4549         * class.c (build_type_pathname): Remove.
4550         (prepare_fresh_vtable): Fix problem with complex MI vtable names.
4551
4552 1997-10-14  Brendan Kehoe  <brendan@lisa.cygnus.com>
4553
4554         * parse.y (unary_expr): Give a pedwarn if someone tries to use the
4555         &&label GNU extension.
4556
4557 Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>
4558
4559         * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
4560         so as to avoid incorrect manglings.
4561         * method.c (build_decl_overload_real): Don't mangle return types
4562         for constructors.
4563         
4564 Tue Oct 14 11:46:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
4565
4566         * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
4567         scratch_tree_cons): Define as macros for now.
4568         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c, 
4569         lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
4570         typeck2.c: Use them and the expression_obstack variants.
4571
4572 Mon Oct 13 17:41:26 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4573
4574         * decl.c (store_return_init): Allow classes with explicit ctors to
4575         be used with the named return values extension.
4576
4577 Fri Oct 10 12:21:11 1997  Jason Merrill  <jason@yorick.cygnus.com>
4578
4579         * pt.c (instantiate_decl): Fix previous change.
4580
4581 Thu Oct  9 12:08:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
4582
4583         * pt.c (tsubst): Fix thinko.
4584         (instantiate_decl): Really use the original template.
4585
4586         * call.c (build_new_method_call): Use simple constructor_name for
4587         error messages.
4588
4589 Wed Oct  8 22:44:42 1997  Jeffrey A Law  (law@cygnus.com)
4590
4591         * method.c (build_underscore_int): Don't use ANSI specific
4592         features.
4593
4594 Wed Oct  8 00:18:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
4595
4596         * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
4597         for our key method; it might have been inlined by -O3.
4598
4599 Tue Oct  7 23:00:12 1997  Mark Mitchell  <mmitchell@usa.net>
4600
4601         * decl.c (make_typename_type): Do not try to call lookup_field for
4602         non-aggregate types.
4603
4604 Tue Oct  7 22:52:10 1997  Jason Merrill  <jason@yorick.cygnus.com>
4605
4606         * typeck.c (build_reinterpret_cast): Tweak.
4607
4608 Tue Oct  7 22:45:31 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
4609
4610         * typeck.c (build_reinterpret_cast): converting a void pointer
4611         to function pointer with a reinterpret_cast produces a warning
4612         if -pedantic is issued
4613
4614 Tue Oct  7 22:43:43 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4615
4616         * typeck.c (c_expand_return): Don't warn about returning a
4617         reference-type variable as a reference.
4618
4619 Tue Oct  7 21:11:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
4620
4621         * method.c (build_static_name): Fix typo.
4622
4623 1997-10-07  Brendan Kehoe  <brendan@lisa.cygnus.com>
4624
4625         * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
4626         OLDDECL before we try to do DECL_USE_TEMPLATE.
4627
4628 Tue Oct  7 00:48:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
4629
4630         * decl.c (duplicate_decls): Don't warn about template instances.
4631
4632         * typeck.c (mark_addressable): Lose ancient code that unsets
4633         DECL_EXTERNAL.
4634
4635         * pt.c (do_decl_instantiation): Lose support for instantiating
4636         non-templates.
4637
4638         * call.c (build_new_function_call): Fix handling of null explicit
4639         template args.
4640         (build_new_method_call): Likewise.
4641
4642 Mon Oct  6 23:44:34 1997  Mark Mitchell  <mmitchell@usa.net>
4643
4644         * method.c (build_underscore_int): Fix typo.
4645
4646 1997-10-06  Brendan Kehoe  <brendan@lisa.cygnus.com>
4647
4648         * tree.c (print_lang_statistics): #if 0 call to
4649         print_inline_obstack_statistics until its definition is checked in.
4650
4651 Mon Oct  6 09:27:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
4652
4653         * decl2.c (finish_file): Move dump_tree_statistics to end.
4654
4655         * pt.c (instantiate_decl): Look for the original template.
4656         (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
4657         of member templates.
4658
4659 Wed Oct  1 08:41:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
4660
4661         * Makefile.in (g++FAQ.*): New rules.
4662         (CONFLICTS): Update.
4663         * g++FAQ.texi: Moved from libg++.
4664
4665         * parse.y (PFUNCNAME): Only specify the type once.
4666
4667 1997-10-01  Brendan Kehoe  <brendan@lasher.cygnus.com>
4668
4669         * lex.c (real_yylex): Clean up the code to fully behave the way
4670         the c-lex.c parser does for complex and real numbers.
4671
4672 Tue Sep 30 08:51:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
4673
4674         * method.c (build_decl_overload_real): Reformat.
4675
4676 Tue Sep 30 00:18:26 1997  Jason Merrill  <jason@yorick.cygnus.com>
4677
4678         * method.c (synthesize_method): If at_eof, determine our linkage.
4679
4680 1997-09-29  Paul Eggert  <eggert@twinsun.com>
4681
4682         * lex.c (real_yylex): Treat `$' just like `_', except issue a
4683         diagnostic if !dollars_in_ident or if pedantic.
4684
4685         * lang-specs.h (@c++): -ansi no longer implies -$.
4686
4687         * decl2.c (lang_decode_option):
4688         -traditional and -ansi now do not mess with
4689         dollars_in_ident.
4690
4691 Mon Sep 29 19:57:51 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
4692
4693         * Makefile.in (parse.o, decl.o): Also depend on
4694         $(srcdir)/../except.h $(srcdir)/../output.h.
4695         (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
4696         $(srcdir)/../except.h $(srcdir)/../output.h.
4697         (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
4698         ../insn-codes.h.
4699
4700         * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
4701
4702         * expr.c (cplus_expand_expr): Make it static. 
4703
4704         * decl2.c, init.c, typeck.c: Include "expr.h".
4705         (expand_expr): Use proper values when calling the function.
4706
4707 Mon Sep 29 11:05:54 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
4708
4709         * lang-options.h: new -Wold-style-cast flag.
4710         * cp-tree.h (warn_old_style_cast): new variable.
4711         * decl2.c (warn_old_style_cast): ditto.
4712         (lang_decode_option): support -Wold-style-cast.
4713         (reparse_absdcl_as_casts): produce old-style-cast warning.
4714
4715 Mon Sep 29 09:20:53 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4716
4717         * decl.c (cp_finish_decl): Allow expand_aggr_init to set
4718         TREE_USED, reset value based on already_used.
4719
4720         * init.c (expand_member_init): Revert change.
4721         
4722 Mon Sep 29 08:57:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
4723
4724         * cp-tree.h, decl.c, decl2.c, pt.c:
4725         Lose DECL_C_STATIC and DECL_PUBLIC.  Don't pretend statics are public.
4726
4727         * decl2.c (lang_decode_option): Add missing ;.
4728
4729 Sat Sep 27 16:22:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
4730
4731         * friend.c (do_friend): Disable injection for all template-derived
4732         decls.
4733         * decl2.c (lang_decode_option): Handle -fguiding-decls.
4734         * parse.y (notype_template_declarator): New nonterminal.
4735         (direct_notype_declarator): Use it.
4736         (complex_direct_notype_declarator): Likewise.
4737         (object_template_id): Accept any kind of identifier after TEMPLATE.
4738         (notype_qualified_id): Don't add template declarators here.
4739
4740 Sat Sep 27 16:21:58 1997  Mark Mitchell  <mmitchell@usa.net>
4741
4742         * call.c (add_template_candidate): Add explicit_targs parameter.
4743         (build_scoped_method_call): Use it.
4744         (build_overload_call_real): Likewise.
4745         (build_user_type_conversion_1): Likewise.
4746         (build_new_function_call): Likewise.
4747         (build_object_call): Likewise.
4748         (build_new_op): Likewise.
4749         (build_new_method_call): Likewise.
4750         (build_new_function_call): Handle TEMPLATE_ID_EXPR.
4751         (build_new_method_call): Likewise.
4752
4753         * class.c (finish_struct_methods): Add specialization pass to
4754         determine which methods were specializing which other methods.
4755         (instantiate_type): Handle TEMPLATE_ID_EXPR.
4756
4757         * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
4758
4759         * cp-tree.h (name_mangling_version): New variable.
4760         (flag_guiding_decls): Likewise.
4761         (build_template_decl_overload): New function.
4762         (begin_specialization): Likewise.
4763         (reset_specialization): Likewise.
4764         (end_specialization): Likewise.
4765         (determine_explicit_specialization): Likewise.
4766         (check_explicit_specialization): Likewise.
4767         (lookup_template_function): Likewise.
4768         (fn_type_unification): Add explicit_targs parameter.
4769         (type_unification): Likewise.
4770
4771         * decl.c (duplicate_decls): Add smarts for explicit
4772         specializations.
4773         (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
4774         specializations.
4775         (grokfndecl): Call check_explicit_specialization.
4776
4777         * decl2.c (lang_decode_option): Handle -fname-mangling-version.
4778         (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
4779         (check_classfn): Handle specializations.
4780
4781         * error.c (dump_function_name): Print specialization arguments.
4782
4783         * friend.c (do_friend): Don't call pushdecl for template 
4784         instantiations. 
4785
4786         * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
4787
4788         * lang-options.h: Add -fname-mangling-version, -fguiding-decls, 
4789         and -fno-guiding-decls.
4790
4791         * lex.c (identifier_type): Return PFUNCNAME for template function
4792         names.
4793
4794         * method.c (build_decl_overload_real): New function.
4795         (build_template_parm_names): New function.
4796         (build_overload_identifier): Use it.
4797         (build_underscore_int): New function.
4798         (build_overload_int): Use it.  Add levels for template
4799         parameters.
4800         (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
4801         (build_overload_nested_names): Handle template type parameters.
4802         (build_template_decl_overload): New function.
4803
4804         * parse.y (YYSTYPE): New ntype member.
4805         (nested_name_specifier): Use it.
4806         (nested_name_specifier_1): Likewise.
4807         (PFUNCNAME): New token.
4808         (template_id, object_template_id): New non-terminals.
4809         (template_parm_list): Note specializations.
4810         (template_def): Likewise.
4811         (structsp): Likewise.
4812         (fn.def2): Handle member template specializations.
4813         (component_decl_1): Likewise.
4814         (direct_notype_declarator): Handle template-ids.
4815         (component_decl_1): Likewise.
4816         (direct_notype_declarator): Handle template-ids.
4817         (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
4818
4819         * pt.c (processing_specializations): New variable.
4820         (template_header_count): Likewise.
4821         (type_unification_real): New function.
4822         (processing_explicit_specialization): Likewise.
4823         (note_template_header): Likewise.
4824         (is_member_template): Handle specializations.
4825         (end_template_decl): Call reset_specialization.
4826         (push_template_decl): Handle member template specializations.
4827         (tsubst): Likewise.
4828         (tsubst_copy): Handle TEMPLATE_ID_EXPR.
4829         (instantiate_template): Handle specializations.
4830         (instantiate_decl): Likewise.
4831         (fn_type_unification): Handle explicit_targs.
4832         (type_unification): Likewise.  Allow incomplete unification
4833         without an error message, if allow_incomplete.
4834         (get_bindings): Use new calling sequence for fn_type_unification.
4835
4836         * spew.c (yylex): Handle PFUNCNAME.
4837
4838         * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
4839         (really_overloaded_fn): Likewise.
4840         (get_first_fn): Handle function templates.
4841
4842         * typeck.c (build_x_function_call): Use really_overloaded_fn.
4843         Handle TEMPLATE_ID_EXPR.
4844         (build_x_unary_op): Likewise.
4845         (build_unary_op): Likewise.
4846         (mark_addressable): Templates whose address is taken are marked  
4847         as used. 
4848
4849 1997-09-25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
4850
4851         * decl.c (init_decl_processing): Declare __builtin_constant_p as
4852         accepting any kind of type, not only int.
4853
4854 Fri Sep 26 00:22:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
4855
4856         * search.c (get_matching_virtual): Notice virtual bases when sorrying
4857         about covariant returns.
4858
4859         * parse.y (member_init): Also imply typename here.  Remove ancient
4860         extension for initializing base members.
4861
4862 Thu Sep 25 11:11:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
4863
4864         Handle multi-level typenames and implicit typename in base list.
4865         * parse.y (typename_sub{,[0-2]}): New rules.
4866         (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
4867         (nonnested_type): New rule.
4868         (complete_type_name): Use it.
4869         (base_class.1): Use typename_sub and nonnested_type.
4870         (nested_name_specifier): Don't elide std:: here.
4871         * decl.c (make_typename_type): Handle getting a type for NAME.
4872         (lookup_name_real): Turn std:: into :: here.
4873
4874         Rvalue conversions were removed in London.
4875         * call.c (is_subseq): Don't consider lvalue transformations.
4876         (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
4877         (joust): Reenable ?: kludge.
4878
4879 1997-09-22  Brendan Kehoe  <brendan@lisa.cygnus.com>
4880
4881         * decl.c (start_function): Up warning of no return type to be a
4882         pedwarn.
4883
4884 Mon Sep 22 14:15:34 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4885
4886         * init.c (expand_member_init): Don't set TREE_USED.
4887         * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
4888         set,don't clear TREE_USED wholesale.
4889
4890 Sat Sep 20 15:31:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
4891
4892         * call.c (build_over_call): Do require_complete_type before
4893         build_cplus_new.
4894
4895 Thu Sep 18 16:47:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
4896
4897         * search.c (lookup_field): Call complete_type in all cases.
4898
4899         * decl.c (finish_function): Just warn about flowing off the end.
4900
4901 Wed Sep 17 10:31:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
4902
4903         * decl.c (grokparms): Don't bash a permanent list node if we're
4904         in a function.
4905
4906 1997-09-17  Brendan Kehoe  <brendan@lisa.cygnus.com>
4907
4908         * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
4909
4910 Tue Sep 16 14:06:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
4911
4912         * call.c (build_new_op): Give better error for syntactically
4913         correct, but semantically invalid, use of undeclared template.
4914
4915         * call.c (compare_qual): Handle pmfs.
4916
4917         * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
4918         after the exception spec.
4919
4920 Mon Sep 15 11:52:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
4921
4922         * call.c (null_ptr_cst_p): Integer type, not integral type.
4923
4924         * call.c (joust): Disable warnings until they can be moved to the
4925         right place.
4926
4927 Fri Sep 12 16:11:13 1997  Per Bothner  <bothner@cygnus.com>
4928
4929         * Makefile.in, config-lang.in:  Convert to autoconf.
4930
4931 Thu Sep 11 17:14:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
4932
4933         * decl.c (lookup_name_real): Add implicit 'typename' to types from
4934         base classes.
4935
4936         * pt.c (most_specialized_class): Fix typo.
4937         (tsubst): Move constant folding to TREE_VEC case.
4938
4939 Thu Sep 11 10:08:45 1997  Mark Mitchell  <mmitchell@usa.net>
4940
4941         * pt.c (do_poplevel): Don't warn about unused local variables
4942         while processing_template_decl since we don't always know whether
4943         or not they will need constructing/destructing.
4944
4945         * pt.c (uses_template_parms): Check the values of an enumeration
4946         type to make sure they don't depend on template parms.
4947
4948         * decl.c (make_typename_type): Don't lookup the field if the
4949         context uses template parms, even if we're not
4950         processing_template_decl at the moment.
4951
4952         * pt.c (coerce_template_parms): Avoid looking at the
4953         TYPE_LANG_DECL portion of a typename type, since there won't be
4954         one. 
4955         (tsubst): Do constant folding as necessary to make sure that
4956         arguments passed to lookup_template_class really are constants. 
4957
4958 Wed Sep 10 11:21:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
4959
4960         * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
4961         * decl2.c (finish_file): Only register exception tables if we
4962         need to.
4963
4964         * decl.c (init_decl_processing): Add __builtin_[fs]p.
4965
4966 Tue Sep  9 19:49:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
4967
4968         * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
4969
4970 Tue Sep  9 17:57:25 1997  Mark Mitchell  <mmitchell@usa.net>
4971
4972         * error.c (dump_decl): Avoid crashing when presented with a
4973         uninitialized constant, as can occur with a template parameter.
4974         (dump_expr): Make sure that there are enough levels of
4975         current_template_parms before we start diving through them.
4976
4977 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
4978
4979         * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
4980         c-typeck.c.
4981
4982 Tue Sep  9 09:36:39 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4983
4984         * except.c (expand_throw): Call build_delete for all 
4985         exception types, not just objects with destructors.
4986
4987 Mon Sep  8 02:33:20 1997  Jody Goldberg  <jodyg@idt.net>
4988
4989         * decl.c (current_local_enum): Remove static.
4990         * pt.c (tsubst_enum): Save and restore value of current_local_enum
4991         in case template is expanded in enum decl.
4992         (instantiate_class_template) : Use new tsubst_enum signature.
4993         (tsubst_expr): Likewise.
4994
4995 Mon Sep  8 01:21:43 1997  Mark Mitchell  <mmitchell@usa.net>
4996
4997         * pt.c (begin_member_template_processing): Take a function as
4998         argument, not a set of template arguments.  Use the template
4999         parameters, rather than the arguments.  Handle non-type parameters
5000         correctly.  Push a binding level for the parameters so that multiple
5001         member templates using the same parameter names can be declared.
5002         (end_member_template_processing): Pop the binding level.
5003         (push_template_decl): Mark member templates as static when
5004         appropriate. 
5005
5006         * lex.c (do_pending_inlines): Pass the function, not its template
5007         arguments, to begin_member_template_processing.
5008         (process_next_inline): Likewise.
5009         (do_pending_defargs): Likewise.
5010
5011         * error.c (dump_expr): Obtain the correct declaration for a
5012         TEMPLATE_CONST_PARM. 
5013
5014         * call.c (add_template_conv_candidate): New function.
5015         (build_object_call): Handle member templates, as done in the other
5016         build_ functions.
5017         
5018 Sat Sep  6 10:20:27 1997  Mark Mitchell  <mmitchell@usa.net>
5019
5020         * decl.c (replace_defag): Undo previous change.
5021         * lex.c (do_pending_defargs): Deal with member templates.
5022         
5023         * pt.c (is_member_template): Avoid crashing when passed a
5024         non-function argument.
5025
5026 Fri Sep  5 17:27:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
5027
5028         * class.c (grow_method): Remove check for redeclaration.
5029
5030 Fri Sep  5 01:37:17 1997  Mark Mitchell  <mmitchell@usa.net>
5031
5032         * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
5033         (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
5034         (PRIMARY_TEMPLATE_P): Use it.
5035         * call.c (build_overload_call_real): Use it.
5036         * class.c (instantiate_type): Likewise.
5037         * decl.c (decls_match): Likewise.
5038         * method.c (build_overload_identifier): Likewise.
5039         * pt.c (push_template_decl): Likewise.
5040         (classtype_mangled_name): Likewise.
5041         (lookup_template_class): Likewise.
5042         
5043         * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
5044         DECL_NTPARMS to conform to usage elsewhere.
5045         * call.c (add_template_candidate): Likewise.
5046         * class.c (instantiate_type): Likewise.
5047         * pt.c (instantiate_template): Likewise.
5048         (get_bindings): Likewise.
5049         
5050         * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
5051         is_member_template.
5052
5053         * pt.c (unify): Undo changes to allow multiple levels of template
5054         parameters. 
5055         (type_unification): Likewise.
5056         (fn_type_unification): Likewise.
5057         (get_class_bindings): Likewise.
5058         * cp-tree.h (Likewise).
5059         
5060         * decl.c (replace_defarg): Check that the type of the default
5061         parameter does not invlove a template type before complaining
5062         about the initialization.
5063
5064         * error.c (dump_expr): Deal with template constant parameters in
5065         member templates correctly.
5066
5067         * pt.c (is_member_template): Deal with class specializations
5068         correctly. 
5069         (tsubst): Handle "partial instantiation" of member templates
5070         correctly. 
5071
5072 Wed Sep  3 12:30:24 1997  Mark Mitchell  <mmitchell@usa.net>
5073
5074         * pt.c (type_unification): Change calling squence to allow for
5075         multiple levels of template parameters.
5076         (tsubst_expr): Likewise.
5077         (tsubst): Likewise.
5078         (tsubst_copy): Likewise.
5079         (instantiate_template): Likewise.
5080         (unify): Likewise.
5081         * call.c (build_overload_call_real): Use it.
5082         (add_builtin_candidate): Use it.
5083         (build_new_method_call): Use it.
5084         * class.c (instantiate_type): Use it.
5085         * decl.c (grokdeclarator): Use it.
5086         * decl2.c (finish_file): Use it.
5087         * method.c (build_overload_identifier): Use it.
5088         
5089         * call.c (add_template_candidate):  Add additional parameter for
5090         the function return type.  Call fn_type_unification istead of
5091         type_unification.
5092         (build_user_type_conversion_1): Handle member templates.
5093         (build_new_function_call): Likewise.
5094         (build_new_op): Likewise.
5095         (build_new_method_call): Likewise.
5096         
5097         * class.c (grow_method): Don't give an error message indicating
5098         that two member templates with the same name are ambiguous.
5099         (finish_struct): Treat member template functions just like member
5100         functions.
5101         
5102         * cp-tree.h (check_member_template): Add declaration.
5103         (begin_member_template_processing): Likewise.
5104         (end_member_template_processing): Likewise.
5105         (fn_type_unification): Likewise.
5106         (is_member_template): Likewise.
5107         (tsubst): Change prototype.
5108         (tsubst_expr): Likewise.
5109         (tsubst_copy): Likewise.
5110         (instantiate_template): Likewise.
5111         (get_bindings): Likewise.
5112
5113         * decl.c (decls_match): Handle multiple levels of template
5114         parameters. 
5115         (pushdecl): Handle template type params just like other type
5116         declarations. 
5117         (push_class_level_binding): Return immediately if the
5118         class_binding_level is NULL.
5119         (grokfndecl): If check_classfn() returns a member_template, use
5120         the result of the template, not the template itself.
5121         
5122         * decl2.c (check_member_template): New function.  Check to see
5123         that the entity declared to be a member template can be one.
5124         (check_classfn): Allow redeclaration of member template functions
5125         with different types; the new functions can be specializations or
5126         explicit instantiations.
5127         
5128         * error.c (dump_decl): Handle multiple levels of template
5129         parameters. 
5130         (dump_function_decl): Update to handle function templates.
5131
5132         * lex.c (do_pending_inlines): Set up template parameter context
5133         for member templates.
5134         (process_next_inline): Likewise.
5135
5136         * method. (build_overload_identifier): Adjust for multiple levels
5137         of template parameters.
5138         
5139         * parse.y (fn.def2): Add member templates.
5140         (component_decl_1): Likewise.
5141
5142         * pt.c (begin_member_template_processing): New function.
5143         (end_member_template_processing): Likewise.
5144         (is_member_template): Likewise.
5145         (fn_type_unification): Likewise.
5146         (current_template_parms): Return a vector of all the template
5147         parms, not just the innermost level of parms.
5148         (push_template_decl): Deal with the possibility of member
5149         templates. 
5150         (lookup_template_class): Likewise.
5151         (uses_template_parms): Likewise.
5152         (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
5153         TEMPLATE_CONST_PARM to deal with multiple levels of template
5154         arguments.   Add processing of TEMPLATE_DECL to produce new
5155         TEMPLATE_DECLs from old ones.
5156         (do_decl_instantiation): Handle member templates.
5157
5158         * search.c (lookup_fnfields_1): Handle member template conversion
5159         operators. 
5160
5161         * tree.c (cp_tree_equal): Check the levels, as well as the
5162         indices, of TEMPLATE_CONST_PARMs.
5163
5164         * typeck.c (comptypes): Check the levels, as well as the indices,
5165         fo TEMPLATE_TYPE_PARMs.
5166         (build_x_function_call): Treat member templates like member
5167         functions. 
5168         
5169 Wed Sep  3 11:09:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
5170
5171         * typeck.c (c_expand_return): Always convert_for_initialization
5172         before checking for returning a pointer to local.
5173
5174         * pt.c (type_unification): If strict and the function parm doesn't
5175         use template parms, just compare types.
5176
5177 Wed Sep  3 10:35:49 1997  Klaus Espenlaub  <kespenla@student.informatik.uni-ulm.de>
5178
5179         * method.c (build_overloaded_value): Replace direct call
5180         to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
5181
5182 Wed Sep  3 00:02:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
5183
5184         * typeck.c (convert_arguments): Don't arbitrarily choose the first
5185         of a set of overloaded functions.
5186
5187 Tue Sep  2 12:09:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
5188
5189         * lex.c (real_yylex): Don't elide __FUNCTION__.
5190
5191         * method.c (build_overload_value): Add in_template parm.
5192         (build_overload_int): Likewise.
5193         (build_overload_identifier): Pass it.
5194
5195         * decl.c (duplicate_decls): Don't bash a previous template
5196         definition with a redeclaration.
5197
5198         * pt.c (unify): float doesn't match double.
5199
5200         * pt.c (do_type_instantiation): Handle getting a _TYPE or a
5201         TYPE_DECL.  Handle getting non-template types.
5202         * parse.y (explicit_instantiation): Use typespec instead of
5203         aggr template_type.
5204
5205 Tue Sep  2 10:27:08 1997  Richard Henderson  <rth@cygnus.com>
5206
5207         * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
5208
5209 Mon Sep  1 13:19:04 1997  Eugene Mamchits <eugin@ips.ras.ru>
5210
5211         * call.c (add_builtin_candidate): Add missing TREE_TYPE.
5212         (compare_ics): Likewise.
5213
5214 Mon Sep  1 13:19:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
5215
5216         * call.c (joust): Warn about choosing one conversion op over
5217         another because of 'this' argument when the other return type is
5218         better.
5219         (source_type): New fn.
5220
5221         * call.c (build_new_op): Strip leading REF_BIND from first operand
5222         to builtin operator.
5223
5224         * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
5225         use its RTL.
5226
5227 Thu Aug 28 09:45:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
5228
5229         * call.c (null_ptr_cst_p): Remove support for (void*)0.
5230
5231 Wed Aug 27 02:03:34 1997  Jeffrey A Law  (law@cygnus.com)
5232
5233         * typeck.c (expand_target_expr): Make definition match declaration.
5234
5235         * class.c (get_basefndecls): Make definition match declaration.
5236
5237 Mon Aug 25 14:30:02 1997  Jason Merrill  <jason@yorick.cygnus.com>
5238
5239         * input.c (sub_getch): Eventually give up and release the input file.
5240
5241         * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
5242         right place.
5243
5244         * call.c (joust): Tweak message.
5245
5246 Sat Aug 23 18:02:59 1997  Mark Mitchell  <mmitchell@usa.net>
5247
5248         * error.c (type_as_string): Put const/volatile on template type
5249         parameters where appropriate.
5250
5251 Sat Aug 23 17:47:22 1997  Jeffrey A Law  (law@cygnus.com)
5252
5253         * call.c (strictly_better): Make arguments unsigned ints.
5254
5255 Thu Aug 21 18:48:44 1997  Jason Merrill  <jason@yorick.cygnus.com>
5256
5257         * lex.c (real_yylex): Refer to __complex instead of complex.
5258
5259 Thu Aug 21 22:25:46 1997  J"orn Rennecke <amylaar@cygnus.co.uk>
5260
5261         * lex.c (real_yylex): Don't use getc directly.
5262
5263 Wed Aug 20 17:25:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
5264
5265         * call.c (is_subseq): Don't try to be clever.
5266
5267 Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
5268
5269         * parse.y, pt.c: Include "except.h".
5270         * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
5271         error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
5272         lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
5273         sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
5274         prototyping.
5275
5276 Wed Aug 20 01:34:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
5277
5278         * decl2.c (mark_vtable_entries): Instead of replacing pure
5279         virtuals with a reference to __pure_virtual, copy the decl and
5280         change the RTL.
5281
5282 Tue Aug 19 02:26:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
5283
5284         * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
5285
5286         * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
5287
5288         * pt.c (instantiate_class_template): Call repo_template_used
5289         before finish_prevtable_vardecl.
5290
5291         * call.c (is_subseq): New fn.
5292         (compare_ics): Use it.
5293
5294         * repo.c (finish_repo): Don't crash on no args.
5295
5296         * parse.y (named_complex_class_head_sans_basetype): Handle
5297         explicit global scope.
5298         * decl2.c (handle_class_head): New fn.
5299
5300         * pt.c (unify): Add CONST_DECL case.
5301
5302 Thu Aug 14 10:05:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5303
5304         * rtti.c (permanent_obstack): Fix decl to not be a pointer.
5305
5306         * cp-tree.h (report_type_mismatch): Add prototype.
5307         * call.c (build_overload_call_real): Remove erroneous fourth
5308         argument to report_type_mismatch.
5309         (build_user_type_conversion_1): Remove erroneous second arg to
5310         tourney.
5311         (build_new_function_call): Likewise.
5312         (build_object_call): Likewise.
5313         (build_new_op): Likewise.
5314         (build_new_method_call): Likewise.
5315
5316 Wed Aug 13 19:19:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
5317
5318         * error.c (dump_decl): Don't bother processing a function with no
5319         DECL_LANG_SPECIFIC.
5320
5321         * method.c (emit_thunk): Call init_function_start in the macro case.
5322
5323 Wed Aug 13 10:46:19 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
5324
5325         * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
5326         defined and used to set flag_vtable_thunks.
5327
5328 Tue Aug 12 20:13:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
5329
5330         * parse.y: Don't clear the inlines from their obstack until they've 
5331         all been processed.
5332
5333         * decl.c (duplicate_decls): Don't complain about exception
5334         specification mismatch if flag_exceptions is off.
5335
5336 Mon Aug 11 15:01:56  1997  Marc Lehmann <pcg@goof.com>
5337
5338         * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
5339
5340 Sun Aug 10 12:06:09 1997  Paul Eggert  <eggert@twinsun.com>
5341
5342         * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
5343         * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
5344         Include <stdio.h> before include files that formerly used STDIO_PROTO. 
5345
5346         * decl.c, g++spec.c, lex.c, method.c, repo.c:
5347         Include "config.h" first, as per autoconf manual.
5348
5349 Fri Aug  8 11:47:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
5350
5351         * decl.c (duplicate_decls): Tweak wording.
5352         * lex.c (do_pending_defargs): Don't die if we see a default arg
5353         that isn't a DEFAULT_ARG.
5354         * error.c (dump_expr): Handle DEFAULT_ARG.
5355
5356         * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
5357         * lang-options.h: Add -fhandle-exceptions.
5358
5359         * class.c (build_vtable): vtables are artificial.
5360         (prepare_fresh_vtable): Likewise.
5361
5362 Wed Aug  6 11:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
5363
5364         * cvt.c (ocp_convert): After converting to the target type, set
5365         LOOKUP_NO_CONVERSION.
5366
5367         * call.c (joust): Warn about potentially confusing promotion rules
5368         with -Wsign-promo.
5369         * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
5370
5371 Tue Aug  5 15:15:07 1997  Michael Meissner  <meissner@cygnus.com>
5372
5373         * exception.cc: Declare __terminate_func with noreturn attribute.
5374
5375 Fri Aug  1 03:18:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
5376
5377         * parse.y: Break out eat_saved_input, handle errors.
5378         (function_try_block): Use compstmt instead of compstmt_or_error.
5379
5380 Thu Jul 31 17:14:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
5381
5382         * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
5383
5384 Fri Jul  4 01:45:16 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
5385
5386         * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
5387         existence of cc1plus check whether $(LANGUAGES) contains C++.
5388
5389 Wed Jul 30 13:04:21 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
5390
5391         * method.c (do_build_copy_constructor): When copying an anonymous
5392         union member loop around to handle nested anonymous unions.  Use
5393         the offset of the member relative to the outer structure, not the
5394         union.
5395
5396 Tue Jul 29 21:17:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
5397
5398         * call.c (resolve_args): New fn.
5399         (build_new_function_call): Use it.
5400         (build_object_call): Likewise.
5401         (build_new_method_call): Likewise.
5402
5403 Mon Jul 28 16:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
5404
5405         * call.c (build_over_call): tsubst all default parms from templates.
5406
5407 Wed Jul 23 13:36:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
5408
5409         * decl.c (struct cp_function): Add static_labelno.
5410         (push_cp_function_context): Save it.
5411         (pop_cp_function_context): Restore it.
5412
5413 Tue Jul 22 14:43:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
5414
5415         * typeck.c (build_component_ref_1): Convert from reference.
5416
5417 Tue Jul 22 11:06:23 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5418
5419         * parse.y (current_declspecs, prefix_attributes): Initialize to
5420         NULL_TREE.
5421
5422         * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
5423         before we try to force it to be a TREE_LIST.
5424         (decl): Make sure $1.t is non-nil.
5425
5426 Sun Jul 20 11:53:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
5427
5428         * pt.c (uses_template_parms): Handle template first-parse codes.
5429
5430         * decl.c (cp_finish_decl): Only warn about user-defined statics.
5431
5432 Fri Jul 18 17:56:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
5433
5434         * pt.c (unify): Handle BOOLEAN_TYPE.
5435
5436         * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
5437         * pt.c (tsubst): Don't set it.
5438         * call.c (build_over_call): Use uses_template_parms.
5439
5440 Thu Jul 17 18:06:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
5441
5442         * method.c (build_overload_nested_name): Use static_labelno
5443         instead of var_labelno.
5444         (build_qualified_name): New fn.
5445         (build_overload_name): Split out from here.
5446         (build_static_name): Use build_qualified_name.
5447         * decl.c (cp_finish_decl): Statics in extern inline functions 
5448         have comdat linkage.
5449         (start_function): Initialize static_labelno.
5450
5451 Thu Jul 17 11:20:17 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
5452
5453         * class.c (finish_struct_methods): add check of warn_ctor_dtor_privacy
5454         before "all member functions in class [] are private"
5455
5456 Wed Jul 16 23:47:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
5457
5458         * lex.c (do_scoped_id): convert_from_reference.
5459         * init.c (build_offset_ref): Likewise.
5460
5461 Wed Jul 16 12:34:29 1997  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
5462
5463         * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
5464
5465 Mon Jul 14 03:23:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
5466
5467         * typeck.c (get_member_function_from_ptrfunc): Promote index
5468         before saving it.
5469
5470 Sun Jul 13 00:11:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
5471
5472         * tree.c (layout_basetypes): Move non-virtual destructor warning.
5473         * decl.c (xref_basetypes): Remove non-virtual destructor warning.
5474
5475 Sat Jul 12 12:47:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
5476
5477         * decl.c (grokdeclarator): Call add_defarg_fn for the function
5478         type, too.
5479         * lex.c (add_defarg_fn): Adjust.
5480         (do_pending_defargs): Adjust.  Don't skip the first parm.
5481
5482 Fri Jul 11 01:39:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
5483
5484         * decl.c (build_enumerator): Global enumerators are also readonly.
5485
5486         * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
5487         (build_dynamic_cast): Call it and convert_from_reference.
5488
5489         * lex.c (add_defarg_fn): New fn.
5490         (snarf_defarg): Don't add to defarg_types.
5491         (do_pending_defargs): Lose defarg_types.  All fns we process now
5492         have defargs.
5493         * decl.c (grokfndecl): Call add_defarg_fn.
5494
5495         * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
5496         * cp-tree.def: Add DEFAULT_ARG.
5497         * spew.c (yylex): Call snarf_defarg as appropriate.
5498         * parse.y: New tokens DEFARG and DEFARG_MARKER.
5499         (defarg_again, pending_defargs, defarg, defarg1): New rules.
5500         (structsp): Use pending_defargs.
5501         (parms, full_parm): Use defarg.
5502         * lex.c (init_lex): Initialize inline_text_firstobj.
5503         (do_pending_inlines): Never pass the obstack to feed_input.
5504         (process_next_inline): Call end_input instead of restore_pending_input.
5505         (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
5506         finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
5507         * input.c (end_input): New fn.
5508         (sub_getch): At the end of some fed input, just keep returning EOF
5509         until someone calls end_input.
5510         Remove 'obstack' field from struct input_source.
5511         * decl.c (grokparms): Handle DEFAULT_ARG.
5512         (replace_defarg): New fn.
5513         * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
5514
5515 Wed Jul  9 13:44:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
5516
5517         * call.c (implicit_conversion): If nothing else works, try binding
5518         an rvalue to a reference.
5519
5520 Wed Jul  9 13:04:38 1997  Geoffrey Noer  <noer@cygnus.com>
5521
5522         * decl.c (init_decl_processing): fix Jun 30 patch -- move
5523         ifndef for Cygwin32 to include SIGSEGV.
5524
5525 Thu Jul  3 01:44:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
5526
5527         * class.c (finish_struct_1): Only complain about pointers without
5528         copy stuff if there are any constructors.
5529
5530         * rtti.c (build_dynamic_cast): Call complete_type on the types.
5531
5532         * decl.c (grokfndecl): If the function we chose doesn't actually
5533         match, die.
5534
5535         * decl2.c (grokclassfn): Don't specify 'const int' for the
5536         artificial destructor parm.
5537
5538         * pt.c (type_unification): If we are called recursively, nothing 
5539         decays.
5540
5541 Mon Jun 30 17:53:21 1997  Geoffrey Noer  <noer@cygnus.com>
5542
5543         * decl.c (init_decl_processing): Stop trying to catch signals
5544         other than SIGABRT since the Cygwin32 library doesn't support
5545         them correctly yet.  This fixes a situation in which g++ causes
5546         a hang on SIGSEGVs and other such signals in our Win32-hosted
5547         tools.
5548
5549 Mon Jun 30 14:50:01 1997  Jason Merrill  <jason@yorick.cygnus.com>
5550
5551         * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
5552
5553 Fri Jun 27 15:18:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
5554
5555         * typeck2.c (store_init_value): Always return the value if our 
5556         type needs constructing.
5557
5558         * method.c (hack_identifier): Convert class statics from
5559         reference, too.
5560
5561 Thu Jun 26 11:44:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
5562
5563         * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
5564
5565 Thu Jun 19 16:49:28 1997  Mike Stump  <mrs@cygnus.com>
5566
5567         * typeck.c (c_expand_return): Make sure we clean up temporaries at
5568         the end of return x;
5569
5570 Thu Jun 19 12:28:43 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5571
5572         * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
5573
5574 Tue Jun 17 18:35:57 1997  Mike Stump  <mrs@cygnus.com>
5575
5576         * except.c (expand_builtin_throw): Add support
5577         -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
5578
5579 Mon Jun 16 01:24:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
5580
5581         * repo.c (extract_string): Null-terminate.
5582
5583         * cp-tree.h (TI_SPEC_INFO): New macro.
5584         (CLASSTYPE_TI_SPEC_INFO): New macro.
5585         * pt.c (push_template_decl): Correctly determine # of template parms 
5586         for partial specs.
5587
5588         * call.c (compare_ics): Really fix 'this' conversions.
5589
5590         * pt.c (do_decl_instantiation): Don't crash on explicit inst of
5591         non-template fn.
5592
5593         * pt.c (push_template_decl): Complain about mismatch in # of
5594         template parms between a class template and a member template.
5595
5596 Sun Jun 15 02:38:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
5597
5598         * method.c (synthesize_method): You can't call
5599         function_cannot_inline_p after finish_function.
5600         * decl.c (finish_function): Turn on flag_inline_functions and turn
5601         off DECL_INLINE before handing a synthesized method to the
5602         backend.
5603
5604 Thu Jun 12 17:35:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
5605
5606         * method.c (synthesize_method): Remove July 30 change to never set
5607         DECL_INLINE if at_eof.
5608
5609 Thu Jun 12 15:25:08 1997  Mike Stump  <mrs@cygnus.com>
5610
5611         * xref.c (GNU_xref_member): Ensure that the node has a
5612         decl_lang_specific part before checking DECL_FRIEND_P.
5613
5614 Thu Jun 12 12:36:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
5615
5616         * pt.c (instantiate_class_template): Diagnose non-class types used
5617         as bases.
5618
5619 Wed Jun 11 17:33:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
5620
5621         * typeck.c (build_conditional_expr): Use convert_for_initialization
5622         instead of convert_and_check.
5623
5624 Wed Jun 11 12:31:33 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5625
5626         * parse.y (typespec): Don't pedwarn for typeof.
5627
5628 Tue Jun 10 00:22:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
5629
5630         * repo.c (finish_repo): Only check changes if we would write a
5631         repo file.
5632
5633         * call.c (compare_ics): Fix handling of 'this' conversions.
5634
5635         * pt.c (do_decl_instantiation): Support static data too.  Rename
5636         from do_function_instantiation.
5637         * cp-tree.h: Adjust.
5638         * parse.y: Adjust.
5639
5640         * repo.c (extract_string): New fn.
5641         (get_base_filename): Use it.
5642         (init_repo): Compare old args with current args.
5643
5644 Mon Jun  9 14:25:30 1997  Mike Stump  <mrs@cygnus.com>
5645
5646         * Makefile.in, Make-lang.in: Protect C-ls with a comment
5647         character, idea from Paul Eggert <eggert@twinsun.com>.
5648
5649 Mon Jun  9 01:52:03 1997  Jason Merrill  <jason@yorick.cygnus.com>
5650
5651         * typeck.c (c_expand_return): Be more persistent in looking for
5652         returned temps.
5653
5654         * cvt.c (build_up_reference): Use NOP_EXPR for switching from
5655         pointer to reference.
5656
5657         * class.c (build_vbase_path): Don't do anything if PATH has no steps.
5658
5659 Sun Jun  8 03:07:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
5660
5661         * init.c (build_member_call, build_offset_ref):
5662         Use do_scoped_id instead of do_identifier.
5663
5664         * cvt.c (convert): Remove bogosity.
5665
5666 Sat Jun  7 20:50:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5667
5668         * cvt.c (build_up_reference): Do checks of ARGTYPE and
5669         TARGET_TYPE before trying to use get_binfo.
5670
5671 Fri Jun  6 17:36:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
5672
5673         * cvt.c (build_up_reference): Call get_binfo to get access control.
5674
5675         * decl2.c (import_export_decl): If we don't support weaks, leave
5676         statics undefined.
5677
5678 Fri Jun  6 15:55:49 1997  Mike Stump  <mrs@cygnus.com>
5679
5680         * except.c (expand_builtin_throw): Add support for machines that
5681         cannot access globals after throw's epilogue when
5682         -fno-sjlj-exceptions is used.
5683
5684 Thu Jun  5 16:28:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
5685
5686         * parse.y: 'std::' becomes '::'.
5687         * lex.c (real_yylex): Remove 'namespace' warning.
5688         * init.c (build_member_call): Ignore 'std::'.
5689         (build_offset_ref): Likewise.
5690         * decl2.c (do_using_directive): Ignore 'using namespace std;'.
5691         (do_toplevel_using_decl): Ignore 'using std::whatever'.
5692         * decl.c (push_namespace): Just sorry.
5693         (pop_namespace): Nop.
5694         (init_decl_processing): Declare std namespace.
5695
5696 Tue Jun  3 18:08:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
5697
5698         * search.c (push_class_decls): A name which ambiguously refers to
5699         several instantiations of the same template just refers to the
5700         template.
5701
5702 Tue Jun  3 12:30:40 1997  Benjamin Kosnik  <bkoz@cirdan.cygnus.com>
5703
5704         * decl.c (build_enumerator): fix problem with unsigned long
5705         enumerated values being smashed to ints, causing overflow
5706         when computing next enumerated value. (for enum values around
5707         MAX_VAL).
5708
5709 Mon Jun  2 17:40:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
5710
5711         * typeck.c (build_component_ref): Only call mark_used on a decl.
5712
5713 Thu May 29 15:54:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5714
5715         * typeck.c (build_c_cast): Make the check for a ptr to function
5716         more specific before possible default_conversion call.
5717
5718 Thu May 29 13:02:06 1997  Mike Stump  <mrs@cygnus.com>
5719
5720         * except.c (expand_exception_blocks): Simplify and fix and make
5721         sure we don't end a region in a sequence, as expand_end_bindings
5722         doesn't like it.
5723
5724 Wed May 28 17:08:03 1997  Mike Stump  <mrs@cygnus.com>
5725
5726         * except.c (init_exception_processing): Mark terminate as not
5727         returning so that the optimizer can optimize better.
5728
5729 Tue May 27 19:49:19 1997  Mike Stump  <mrs@cygnus.com>
5730
5731         * cvt.c (convert): Don't do any extra work, if we can avoid it
5732         easily.
5733
5734 Tue May 27 18:21:47 1997  Mike Stump  <mrs@cygnus.com>
5735
5736         * *.[chy]: Change cp_convert to ocp_convert, change convert to
5737         cp_convert.  convert is now reserved for the backend, and doesn't
5738         have the semantics a frontend person should ever want.
5739
5740 Fri May 23 10:58:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
5741
5742         * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
5743         Lose -traditional support.
5744
5745 Thu May 22 15:41:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
5746
5747         * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
5748
5749         * parse.y (self_reference): Do it for templates, too.
5750         * class.c (pushclass): Don't overload_template_name; the alias
5751         generated by build_self_reference serves the same purpose.
5752
5753         * tree.c (list_hash): Make static, take more args.
5754         (list_hash_lookup): Likewise.
5755         (list_hash_add): Make static.
5756         (list_hash_canon): Lose.
5757         (hash_tree_cons): Only build a new node if one isn't already in the
5758         hashtable.
5759         (hash_tree_chain): Use hash_tree_cons.
5760         * cp-tree.h: Adjust.
5761         * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
5762         of calling lookup_name.
5763
5764 Wed May 21 18:24:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
5765
5766         * pt.c (instantiate_class_template): TYPE_VALUES for an enum
5767         doesn't refer to the CONST_DECLs.
5768
5769 Tue May 20 21:09:32 1997  Bob Manson  <manson@charmed.cygnus.com>
5770
5771         * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
5772         is bigger.
5773         (expand_class_desc): Convert the last argument to a sizetype.
5774
5775 Tue May 20 13:55:57 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5776
5777         * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
5778         __real__): Add reswords.
5779         * hash.h: Regenerate.
5780         * lex.h (rid): Add RID_COMPLEX.
5781         (RID_LAST_MODIFIER): Set to RID_COMPLEX.
5782         * lex.c (init_lex): Add building of RID_COMPLEX.
5783         (real_yylex): General cleanup in line with what c-lex.c also has,
5784         sans the cruft for traditional; add handling of SPEC_IMAG, complex
5785         types, and imaginary numeric constants.
5786         * parse.y (REALPART, IMAGPART): Add tokens.
5787         (unary_expr): Add REALPART and IMAGPART rules.
5788         * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
5789         * decl.c (complex_{integer,float,double,long}_type_node): Define
5790         types.
5791         (init_decl_processing): Set up the types.
5792         (grokdeclarator): Add handling of RID_COMPLEX.  Set and use
5793         DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
5794         * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
5795         * cvt.c (cp_convert): Handle COMPLEX_TYPE.
5796         * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
5797         COMPLEX_TYPE case.
5798         * method.c (build_overload_name): Add handling of the different
5799         COMPLEX_TYPEs, prefixing them with `J'.
5800         * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
5801         as a template parm.
5802         (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
5803         * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
5804         (mapcar): Handle COMPLEX_CST.
5805         * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
5806         (common_type): Add code for complex types.
5807         (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
5808         (convert_for_assignment): Likewise.
5809         (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
5810
5811 Mon May 19 12:26:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
5812
5813         * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
5814         tsubst_expr, as it might try to do overload resolution.
5815
5816 Sat May 17 10:48:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
5817
5818         * pt.c (instantiate_class_template): Oops.
5819
5820 Fri May 16 14:23:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
5821
5822         * cp-tree.def: Add TAG_DEFN.
5823         * pt.c (tsubst_enum): New fn.
5824         (instantiate_class_template): Use it.
5825         (tsubst_expr): Support TAG_DEFN.
5826         (tsubst): Support local enums.
5827         (tsubst_copy): Likewise.
5828         * decl.c (finish_enum): Likewise.
5829         (start_enum): If this is a local enum, switch to permanent_obstack.
5830
5831 Wed May 14 19:08:28 1997  Mike Stump  <mrs@cygnus.com>
5832
5833         * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
5834         (finish_function): Put the base init code for constructors just
5835         after the parm cleanup insns.
5836         (struct cp_function): Add last_parm_cleanup_insn.
5837         (push_cp_function_context): Likewise.
5838         (pop_cp_function_context): Likewise.
5839         
5840 Tue May 13 15:51:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
5841
5842         * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
5843
5844 Wed May  7 11:17:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5845
5846         * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
5847         for THUNK_FNDECL before we switch to temporary allocation.
5848
5849 Mon May  5 14:46:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
5850
5851         * call.c (build_new_op): Handle null arg2 for ?:.
5852
5853 Thu May  1 18:26:37 1997  Mike Stump  <mrs@cygnus.com>
5854
5855         * except.c (expand_exception_blocks): Ensure that we flow through
5856         the end of the exception region for the exception specification.
5857         Move exception region for the exception specification in, so that
5858         it doesn't protect the parm cleanup.  Remove some obsolete code.
5859         * decl.c (store_parm_decls): Likewise.
5860         (finish_function): Likewise.
5861
5862 Tue Apr 29 15:38:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
5863
5864         * init.c (build_new): Fix nothrow handling.
5865
5866 Tue Apr 29 14:29:50 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5867
5868         * init.c (emit_base_init): Don't warn about the initialization
5869         list for an artificial member.
5870
5871 Fri Apr 25 17:47:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5872
5873         * expr.c (do_case): Handle !START case for the error msg.
5874
5875 Fri Apr 25 11:55:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
5876
5877         * decl2.c, lang-options.h: New option -Weffc++.
5878         * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
5879         to -Weffc++.
5880
5881         * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
5882         to MULTIPLE_SYMBOL_SPACES.
5883
5884 Wed Apr 23 18:06:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
5885
5886         * method.c (emit_thunk, generic case): Set current_function_is_thunk.
5887
5888         * method.c (emit_thunk, macro case): Set up DECL_RESULT.
5889
5890         * typeck.c (c_expand_return): Don't complain about returning void
5891         to void in an artificial function.
5892         * method.c (make_thunk): Change settings of READONLY/VOLATILE, 
5893         don't set DECL_RESULT, set DECL_ARTIFICIAL.
5894         (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC. 
5895
5896 Wed Apr 23 14:43:06 1997  Mike Stump  <mrs@cygnus.com>
5897
5898         * init.c (init_decl_processing): Add supoprt for setjmp/longjmp based
5899         exception handling.
5900         * except.c (init_exception_processing): Likewise.
5901         (expand_end_catch_block): Likewise.
5902         (expand_exception_blocks): Likewise.
5903         (expand_throw): Likewise.
5904         * exception.cc (__default_terminate): Likewise.
5905
5906         * init.c (perform_member_init): Use new method of expr level
5907         cleanups, instead of cleanups_this_call and friends.
5908         (emit_base_init): Likewise.
5909         (expand_aggr_vbase_init_1): Likewise.
5910         (expand_vec_init): Likewise.
5911         * decl.c (cp_finish_decl): Likewise.
5912         (expand_static_init): Likewise.
5913         (store_parm_decls): Likewise.
5914         (cplus_expand_expr_stmt): Likewise.
5915         * decl2.c (finish_file): Likewise.
5916         
5917         * Make-lang.in (exception.o): Ok to compile with -O now.
5918
5919         * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
5920         we know it will be done later by the backend.
5921
5922         * decl2.c (lang_f_options): Remove support for short temps.
5923         * lang-options.h: Likewise.
5924         
5925 Wed Apr 23 04:12:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
5926
5927         * tree.c (varargs_function_p): New fn.
5928         * method.c (emit_thunk): Replace broken generic code with code to
5929         generate a heavyweight thunk function.
5930
5931 Tue Apr 22 02:45:18 1997  Jason Merrill  <jason@yorick.cygnus.com>
5932
5933         * pt.c (process_template_parm): pedwarn about floating-point parms.
5934
5935         * decl.c (grokdeclarator): inline no longer implies static.
5936
5937         * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
5938
5939 Mon Apr 21 15:42:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
5940
5941         * class.c (check_for_override): The signature of an overriding
5942         function is not changed.
5943
5944         * call.c (build_over_call): Move setting of conv into the loop.
5945         Note: this change, along with the related changes of the 18th thru
5946         the 20th of April, fix an infinite loop problem in conversions.
5947
5948 Sun Apr 20 16:24:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
5949
5950         * call.c (build_user_type_conversion_1): Really ignore rvalue
5951         conversions when looking for a REFERENCE_TYPE.
5952
5953         * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
5954         * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
5955         * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
5956         (build_unary_op): Likewise.
5957         * call.c (build_over_call): See through a CONVERT_EXPR around the
5958         ADDR_EXPR for on a temporary.
5959         * typeck.c (c_expand_return): See through a CONVERT_EXPR around
5960         the ADDR_EXPR for a local variable.
5961
5962 Fri Apr 18 12:11:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
5963
5964         * call.c (build_user_type_conversion_1): If we're trying to
5965         convert to a REFERENCE_TYPE, only consider lvalue conversions.
5966         (build_new_function_call): Print candidates.
5967         (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
5968         (reference_binding): Binding a temporary of a reference-related type
5969         is BAD.
5970
5971 Thu Apr 17 14:37:22 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
5972
5973         * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
5974         * tinfo2.cc (type_info::before): Likewise.
5975
5976 Mon Apr 14 12:38:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
5977
5978         * call.c (implicit_conversion): Oops.
5979
5980 Fri Apr 11 02:18:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
5981
5982         * call.c (implicit_conversion): Try to find a reference conversion
5983         before binding a const reference to a temporary.
5984
5985 Wed Apr  2 12:51:36 1997  Mike Stump  <mrs@cygnus.com>
5986
5987         * exception.cc (__default_unexpected): Call terminate by default,
5988         so that if the user overrides terminate, the correct function will
5989         be called.
5990         
5991 Wed Mar 19 14:14:45 1997  Mike Stump  <mrs@cygnus.com>
5992
5993         * parse.y (left_curly): Avoid trying to use any fields of
5994         error_mark_node, as there aren't any.
5995
5996 Thu Mar 13 16:33:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
5997
5998         * lex.c (do_identifier): Avoid breaking on overloaded methods
5999         as default arguments.
6000
6001 Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  <Hans-Peter.Nilsson@axis.se>
6002
6003         * call.c (add_template_candidate): Initialize the variable "dummy".
6004
6005 Mon Mar 10 15:13:14 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>
6006
6007         * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
6008         before we try to use TYPE_SIZE and TREE_CONSTANT on it.
6009
6010 Fri Mar  7 13:19:36 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6011
6012         * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
6013         (debug_binfo): Delete decl, not needed.
6014
6015         * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
6016         promotes_to_aggr_type): Delete fns.
6017         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
6018         SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
6019         PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
6020
6021         * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
6022
6023         * friend.c (is_friend_type): Delete fn.
6024         * cp-tree.h (is_friend_type): Delete decl.
6025
6026         * decl.c (original_result_rtx, double_ftype_double,
6027         double_ftype_double_double, int_ftype_int, long_ftype_long,
6028         float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
6029         * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
6030
6031         * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
6032         fwd decls.
6033         * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
6034
6035         * decl.c (pushdecl_nonclass_level): #if 0, unused.
6036         * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
6037
6038         * lex.c (reinit_lang_specific): #if 0, unused.
6039         * cp-tree.h (reinit_lang_specific): #if 0 decl.
6040
6041         * decl.c (revert_static_member_fn): Make static, adding fwd decl.
6042         * cp-tree.h (revert_static_member_fn): Delete decl.
6043
6044         * class.c (root_lang_context_p): Delete fn.
6045         * cp-tree.h (root_lang_context_p): Delete decl.
6046
6047         * decl.c (set_current_level_tags_transparency): #if 0, unused.
6048         * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
6049
6050         * lex.c (set_vardecl_interface_info): Make static.
6051         * cp-tree.h (set_vardecl_interface_info): Delete decl.
6052
6053         * call.c (find_scoped_type): Make static.
6054         * cp-tree.h (find_scoped_type): Delete decl.
6055
6056         * search.c (convert_pointer_to_vbase): Make static.
6057         * cp-tree.h (convert_pointer_to_vbase): Delete decl.
6058
6059         * decl.c (const_ptr_type_node): Likewise.
6060         * cp-tree.h (const_ptr_type_node): Delete decl.
6061
6062         * typeck.c (common_base_type): Make static.
6063         * cp-tree.h (common_base_types): Delete erroneous decl.
6064
6065         * pt.c (classtype_mangled_name): Make static.
6066         * cp-tree.h (classtype_mangled_name): Delete decl.
6067
6068         * lex.c (check_newline): Make static.
6069         * cp-tree.h (check_newline): Delete decl.
6070
6071         * typeck.c (build_x_array_ref): Delete fn, same idea as
6072         grok_array_decl.
6073         * cp-tree.h (build_x_array_ref): Delete decl.
6074
6075         * lex.c (copy_decl_lang_specific): Delete fn, same idea as
6076         copy_lang_decl.
6077         * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
6078
6079         * class.c (build_vtable_entry): Make static.
6080         * cp-tree.h (build_vtable_entry): Delete decl.
6081
6082         * class.c (build_vbase_pointer): Make static.
6083         * cp-tree.h (build_vbase_pointer): Delete decl.
6084
6085         * sig.c (build_sptr_ref): Add forward decl and make static.
6086         * cp-tree.h (build_sptr_ref): Delete decl.
6087
6088         * call.c (build_new_method_call): Add forward decl and make static.
6089         * cp-tree.h (build_new_method_call): Delete decl.
6090
6091         * call.c (build_object_call): Make static.
6092         * class.c (check_for_override, complete_type_p, mark_overriders):
6093         Likewise.
6094         * decl.c (cp_function_chain): Likewise.
6095         * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
6096         Likewise.
6097         * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
6098         Likewise.
6099         * tree.c (build_cplus_array_type_1): Likewise.
6100         * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
6101         (comp_target_parms): Likewise.
6102
6103         * init.c (build_builtin_call): Make static.
6104         * cp-tree.h (build_builtin_call): Delete decl.
6105
6106         * typeck.c (binary_op_error): Delete decl.
6107         * cp-tree.h (binary_op_error): Likewise.
6108
6109 Thu Mar  6 16:13:52 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6110
6111         * call.c (build_method_call): Compare against error_mark_node
6112         directly, rather than the ERROR_MARK tree code.
6113         * cvt.c (cp_convert): Likewise.
6114         * decl.c (print_binding_level): Likewise.
6115         (duplicate_decls): Likewise.
6116         (grokdeclarator): Likewise.
6117         (grokdeclarator): Likewise.
6118         * init.c (expand_aggr_init_1): Likewise.
6119         (decl_constant_value): Likewise.
6120         * method.c (build_opfncall): Likewise.
6121         (hack_identifier): Likewise.
6122         * typeck.c (build_modify_expr): Likewise.
6123
6124         * typeck.c (build_c_cast): Don't decl TYPE as register tree.
6125
6126 Sun Mar  2 02:54:36 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
6127
6128         * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
6129
6130         * pt.c (coerce_template_parms): Add new error message.
6131
6132         * method.c (build_overload_value): Implement name mangling for
6133         floating-point template arguments.
6134
6135         * method.c (build_overload_int, icat, dicat): Fix mangling of template
6136         arguments whose absolute value doesn't fit in a signed word.
6137
6138 Mon Mar  3 12:14:54 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6139
6140         * friend.c: New file; put all of the friend stuff in here.
6141         * init.c: Instead of here.
6142         * Makefile.in (CXX_OBJS): Add friend.o.
6143         (friend.o): Add dependencies.
6144         * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
6145
6146 Sun Mar  2 11:04:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
6147
6148         * call.c (build_scoped_method_call): Complain if the scope isn't a
6149         base.
6150
6151 Wed Feb 26 11:31:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
6152
6153         * parse.y (left_curly): Don't crash on erroneous type.
6154
6155         * init.c (build_delete): Fix type of ref.
6156
6157 Tue Feb 25 12:41:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
6158
6159         * search.c (get_vbase_1): Renamed from get_vbase.
6160         (get_vbase): Wrapper, now non-static.
6161         (convert_pointer_to_vbase): Now static.
6162
6163         * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
6164         * init.c (build_delete): Pass one.
6165         (build_partial_cleanup_for): Use build_scoped_method_call.
6166         * decl.c (finish_function): Pass a binfo.
6167
6168 Mon Feb 24 15:00:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
6169
6170         * call.c (build_over_call): Only synthesize non-trivial copy ctors.
6171
6172         * typeck.c (build_c_cast): Lose other reference to flag.
6173
6174         * call.c (build_field_call): Don't look for [cd]tor_identifier.
6175         * decl2.c (delete_sanity): Remove meaningless use of
6176         LOOKUP_HAS_IN_CHARGE.
6177         * decl.c (finish_function): Use build_scoped_method_call instead
6178         of build_delete for running vbase dtors.
6179         * init.c (build_delete): Call overload resolution code instead of
6180         duplicating it badly.
6181
6182 Thu Feb 20 15:12:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
6183
6184         * call.c (build_over_call): Call mark_used before trying to elide
6185         the call.
6186
6187         * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
6188
6189 Wed Feb 19 11:18:53 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6190
6191         * typeck.c (build_modify_expr): Always pedwarn for a cast to
6192         non-reference used as an lvalue.
6193
6194 Wed Feb 19 10:35:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
6195
6196         * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
6197
6198 Tue Feb 18 15:40:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
6199
6200         * parse.y (handler): Fix template typo.
6201
6202 Sun Feb 16 02:12:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
6203
6204         * error.c (lang_decl_name): New fn.
6205         * tree.c (lang_printable_name): Use it.
6206
6207 Fri Feb 14 16:57:05 1997  Mike Stump  <mrs@cygnus.com>
6208
6209         * g++spec.c: Include config.h so that we can catch bzero #defines
6210         from the config file.
6211
6212 Tue Feb 11 13:50:48 1997  Mike Stump  <mrs@cygnus.com>
6213
6214         * new1.cc: Include a declaration for malloc, to avoid warning, and
6215         avoid lossing on systems that require one (ones that define malloc
6216         in xm.h).
6217
6218 Mon Feb 10 22:51:13 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
6219
6220         * decl2.c (max_tinst_depth): New variable.
6221         (lang_decode_option): Parse "-ftemplate-depth-NN" command line
6222         option.
6223         * pt.c (max_tinst_depth): Variable moved.
6224         * lang-options.h: Declare "-ftemplate-depth-NN" command line option
6225         as legal.
6226
6227 Fri Feb  7 15:43:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
6228
6229         * decl.c (xref_basetypes): Allow a base class that depends on
6230         template parms to be incomplete.
6231
6232         * decl2.c (build_expr_from_tree): Support typeid(type).
6233         * rtti.c (get_typeid): Support templates.
6234         (expand_si_desc, expand_class_desc): Fix string length.
6235         (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
6236
6237 Tue Feb  4 11:28:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
6238
6239         * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
6240
6241         * pt.c (tsubst): Put it back for -fno-ansi-overloading.
6242
6243 Mon Feb  3 18:41:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
6244
6245         * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
6246         smashes together template and non-template decls of the same
6247         signature.
6248
6249 Thu Jan 30 19:18:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
6250
6251         * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
6252
6253 Wed Jan 29 11:40:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6254
6255         * decl.c (duplicate_decls): Next route, pedwarn about different
6256         exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
6257
6258 Tue Jan 28 20:43:29 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6259
6260         * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
6261         (struct lang_type): Delete has_default_implementation member.
6262         Increase dummy to 21.
6263         * decl.c (start_method): Delete usage.
6264
6265         * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
6266         store_after_parms, start_decl_1, auto_function): Add decls.
6267         (get_arglist_len_in_bytes, declare_implicit_exception,
6268         have_exceptions_p, make_type_decl, typedecl_for_tag,
6269         store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
6270         build_component_type_expr, cplus_exception_name,
6271         {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
6272         * call.c (build_this): Make static.
6273         (is_complete): Likewise.
6274         (implicit_conversion): Likewise.
6275         (reference_binding): Likewise.
6276         (standard_conversion): Likewise.
6277         (strip_top_quals): Likewise.
6278         (non_reference): Likewise.
6279         (build_conv): Likewise.
6280         (user_harshness): Likewise.
6281         (rank_for_ideal): Likewise.
6282         * decl.c (start_decl_1): Delete forward decl.
6283         (push_decl_level): Make static.
6284         (resume_binding_level): Make static.
6285         (namespace_bindings_p): Make static.
6286         (declare_namespace_level): Make static.
6287         (lookup_name_real): Make static.
6288         (duplicate_decls): Make static.  Take register off NEWDECL and
6289         OLDDECL parm decls.
6290         * decl2.c (get_sentry): Make static.
6291         (temp_name_p): Delete fn.
6292         * except.c (auto_function): Delete decl.
6293         * lex.c (handle_{cp,sysv}_pragma): Make static.
6294         (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
6295         * method.c (do_build_{copy_constructor,assign_ref}): Make static.
6296         * pt.c (tsubst_expr_values): Make static.
6297         * rtti.c (combine_strings): Delete decl.
6298
6299 Tue Jan 28 16:40:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
6300
6301         * pt.c (push_template_decl): Handle getting a typedef.
6302
6303         * call.c (build_new_function_call): Complain about void arg.
6304
6305 Tue Jan 28 15:25:09 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6306
6307         * decl.c (duplicate_decls): Give pedwarn of different exceptions
6308         if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
6309
6310 Mon Jan 27 19:21:29 1997  Mike Stump  <mrs@cygnus.com>
6311
6312         * except.c (expand_throw): Don't expand the cleanup tree here,
6313         since we are not going to write the rtl out.  Fixes problem with
6314         -g -O on SPARC.
6315
6316 Mon Jan 27 16:24:35 1997  Sean McNeil  <sean@mcneil.com>
6317
6318         * Make-lang.in: Add $(exeext) as necessary.
6319
6320 Mon Jan 27 13:20:39 1997  Mike Stump  <mrs@cygnus.com>
6321
6322         * parse.y (handler_seq): Must have at least one catch clause.
6323
6324 Sat Jan 25 12:00:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
6325
6326         * call.c (add_builtin_candidate): Restore ?: hack.
6327
6328         * decl.c (grok_op_properties): More warnings.
6329
6330 Sat Jan 25 08:50:03 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6331
6332         * decl.c (duplicate_decls): On second thought, do it as a pedwarn
6333         still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
6334
6335         * decl.c (duplicate_decls): Scale back to a warning, and only do
6336         'em if -pedantic.
6337
6338 Fri Jan 24 17:52:54 1997  Mike Stump  <mrs@cygnus.com>
6339
6340         * decl.c (duplicate_decls): pedwarn mismatched exception
6341         specifications.
6342
6343 Thu Jan 23 18:18:54 1997  Mike Stump  <mrs@cygnus.com>
6344
6345         * call.c (build_new_method_call): Don't display the invisible
6346         argument for controlling virtual bases.
6347
6348 Thu Jan 23 16:48:10 1997  Mike Stump  <mrs@cygnus.com>
6349
6350         * new: Add nothrow new and delete, bad_alloc and throw specifications
6351         for delete.
6352         * decl.c (init_decl_processing): Add throw specification for delete.
6353         * new.cc (nothrow): Define.
6354         * lex.c (real_yylex): Removing warning that throw and friends are
6355         keywords.
6356         * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
6357         * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
6358         * Make-lang.in: Add new{1,2}.{cc,o}.
6359
6360 Thu Jan 23 16:39:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
6361
6362         * lex.c (cons_up_default_function): Fix return type of synth op=.
6363
6364         * init.c (emit_base_init): Add warnings for uninitialized members
6365         and bases.
6366
6367         * decl.c (xref_basetypes): Add warning for non-polymorphic type
6368         with destructor used as base type.
6369
6370         * decl.c (grok_op_properties): Add warning for op= returning void.
6371         * typeck.c (c_expand_return): Add warning for op= returning anything
6372         other than *this.
6373
6374         * class.c (finish_struct_1): Add warning for class with pointers
6375         but not copy ctor or copy op=.
6376
6377         * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
6378         * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
6379         (instantiate_template): If -fexternal-templates, add this
6380         instantiation to pending_templates.
6381
6382         * decl2.c (copy_assignment_arg_p): Disable old hack to support
6383         Booch components.
6384
6385 Tue Jan 21 18:32:04 1997  Mike Stump  <mrs@cygnus.com>
6386
6387         * cvt.c (cp_convert): Pedwarn enum to pointer conversions.
6388
6389 Mon Jan 20 17:59:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
6390
6391         * call.c (standard_conversion): Handle getting references.  Tack
6392         on RVALUE_CONV here.  Do it for non-class types, too.
6393         (reference_binding): Pass references to standard_conversion.
6394         (implicit_conversion): Likewise.
6395         (add_builtin_candidate): Disable one ?: kludge.
6396         (convert_like): Handle RVALUE_CONVs for non-class types.
6397         (joust): Disable the other ?: kludge.
6398
6399 Mon Jan 20 14:53:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6400
6401         * decl.c (init_decl_processing): Add code to build up common
6402         function types beforehand, to avoid creation then removal of
6403         things already in the hash table.
6404
6405 Mon Jan 20 14:43:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
6406
6407         * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
6408         the arguments.
6409
6410         * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
6411         current_template_parms.
6412
6413 Fri Jan 17 10:25:42 1997  Jason Merrill  <jason@yorick.cygnus.com>
6414
6415         * search.c (lookup_field): Don't return a function, check want_type.
6416
6417 Thu Jan 16 18:14:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6418
6419         * init.c (build_new): Make sure PLACEMENT has a type.
6420
6421 Thu Jan 16 17:40:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
6422
6423         * init.c (build_new): Support new (nothrow).
6424
6425 Wed Jan 15 12:38:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
6426
6427         * pt.c (instantiate_decl): Also do push_to_top_level before setting
6428         up DECL_INITIAL.
6429
6430         * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
6431         * pt.c (tsubst): Defer instantiation of default args.
6432         * call.c (build_over_call): Until here.
6433
6434 Wed Jan 15 10:08:10 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6435
6436         * search.c (lookup_field): Make sure we have an
6437         IDENTIFIER_CLASS_VALUE before we try to return it.
6438
6439 Thu Jan  9 07:19:01 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
6440
6441         * call.c (build_method_call): Delete unused var PARM.
6442         (build_overload_call_real): Likewise.
6443         (build_object_call): Delete unused var P.
6444         (build_new_op): Likewise.
6445         * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
6446         var definitions, which are never used.
6447         (shadow_tag): Delete unused var FN.
6448         * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
6449         * init.c (build_new): Delete unused var ALLOC_TEMP.
6450         * method.c (hack_identifier): Delete unused var CONTEXT.
6451         (do_build_copy_constructor): Delete unused var NAME.
6452         (synthesize_method): Delete unused var BASE.
6453         * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
6454         * rtti.c (build_headof): Delete unused var VPTR.
6455         (get_typeid): Delete unused var T.
6456         * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
6457         and ORIG_OP2.
6458         (build_ptrmemfunc): Delete unused vars U and NINDEX.
6459         * typeck2.c (build_functional_cast): Delete unused var BINFO.
6460
6461 Wed Jan  8 13:09:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
6462
6463         * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
6464         things in a type being defined.
6465         * decl.c (finish_enum): Reverse the values so that they are in
6466         the correct order.
6467
6468         * pt.c (instantiate_class_template): Don't initialize
6469         BINFO_BASETYPES until the vector is filled out.
6470         (unify): Don't abort on conflicting bindings, just fail.
6471         (instantiate_decl): Do push_tinst_level before any tsubsting.
6472
6473         * method.c (build_overload_value): Handle getting a
6474         TEMPLATE_CONST_PARM for a pointer.
6475
6476 Tue Jan  7 14:00:58 1997  Jason Merrill  <jason@yorick.cygnus.com>
6477
6478         * init.c (expand_member_init): Don't give 'not a base' error for
6479         templates.
6480
6481         * pt.c (instantiate_decl): Call import_export_decl later.
6482
6483         * pt.c (instantiate_class_template): Return a value.
6484
6485         * parse.y (extension): New rule for __extension__.
6486         (extdef, unary_expr, decl, component_decl): Use it.
6487
6488 Tue Jan  7 09:20:28 1997  Mike Stump  <mrs@cygnus.com>
6489
6490         * class.c (base_binfo): Remove unused base_has_virtual member.
6491         (finish_base_struct): Likewise.
6492         (finish_struct_1): Likewise.
6493
6494 Tue Dec 31 20:25:50 1996  Mike Stump  <mrs@cygnus.com>
6495
6496         * search.c (expand_upcast_fixups): Fix bogus code generation
6497         problem where the generated code uses the wrong index into the
6498         runtime built vtable on the stack.  Old code could clobber random
6499         stack values.
6500
6501 Tue Dec 31 15:16:56 1996  Mike Stump  <mrs@cygnus.com>
6502
6503         * init.c (perform_member_init): Make sure the partial EH cleanups
6504         live on the function_obstack.
6505
6506 Fri Dec 27 10:31:40 1996  Paul Eggert  <eggert@twinsun.com>
6507
6508         * Make-lang.in (g++spec.o): Don't use $< with an explicit target;
6509         this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
6510
6511 Tue Dec 24 10:24:03 1996  Jeffrey A Law  (law@cygnus.com)
6512
6513         * decl.c (grokvardecl): Avoid ANSI style initialization.
6514
6515 Sun Dec 22 04:22:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
6516
6517         * pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
6518
6519 Fri Dec 20 17:09:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
6520
6521         * pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
6522
6523 Fri Dec 20 12:17:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6524
6525         * g++spec.c (lang_specific_driver): Put missing hyphen in front of
6526         arguments we compare against.  Start the count of I at 1, not 0,
6527         since argv[0] is still the command.
6528
6529 Thu Dec 19 11:53:57 1996  Stan Shebs  <shebs@andros.cygnus.com>
6530
6531         * lang-specs.h: Accept .cp as an C++ extension.
6532
6533 Mon Dec 16 22:43:31 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6534
6535         * cp-tree.h (ptr_reasonably_similar): Add decl.
6536
6537 Thu Dec 12 15:00:35 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6538
6539         * decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
6540         pointer.  New local SPECBITS with the parm's value.
6541         (grokdeclarator): Pass &specbits down.
6542
6543         * parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
6544         before we try to do C_SET_EXP_ORIGINAL_CODE on it.
6545
6546         * search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
6547         CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
6548
6549         * decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
6550         not an error_mark_node.
6551
6552 Sat Dec  7 17:20:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
6553
6554         * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
6555         * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
6556         
6557 Fri Dec  6 14:40:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
6558
6559         * decl.c (grokdeclarator): When giving an anonymous struct a name,
6560         replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
6561         not affected).
6562
6563         * typeck2.c (build_m_component_ref): If component is a pointer
6564         to data member, resolve the OFFSET_REF now.
6565
6566         * call.c (convert_like): Don't go into infinite recursion.
6567
6568         * pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
6569
6570         * class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
6571         * tree.c (layout_basetypes): And on the vbase ptr.
6572
6573 Thu Dec  5 02:11:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
6574
6575         * decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
6576         CHAR_TYPE_SIZE so bool is always the same size as another type.
6577
6578         * decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
6579
6580 Tue Dec  3 23:18:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
6581
6582         * decl2.c (grok_x_components): Remove synthesized methods from
6583         TYPE_METHODS of an anonymous union, complain about member
6584         functions.
6585         * decl.c (shadow_tag): Wipe out memory of synthesized methods in
6586         anonymous unions.
6587         (finish_function): Just clear the DECL_RTL of our arguments.
6588
6589 Fri Nov 29 21:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6590
6591         * decl2.c (finish_file): Emit DWARF debugging info for static data
6592         members.
6593
6594         * pt.c (tsubst): If t is a stub decl, return the stub decl for type.
6595
6596 Wed Nov 27 14:47:15 1996  Bob Manson  <manson@charmed.cygnus.com>
6597
6598         * typeck.c (build_component_ref): Don't die if COMPONENT isn't a
6599         IDENTIFIER_NODE.
6600
6601 Wed Nov 27 16:05:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
6602
6603         * Make-lang.in (g++-cross$(exeext)): Fix typo.
6604
6605 Wed Nov 27 08:14:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6606
6607         Make the g++ driver now be a standalone program, rather than one
6608         that tries to run the gcc driver after munging up the options.
6609         * Make-lang.in (g++.c, g++spec.o): New rules.
6610         (g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
6611         added.
6612         (g++$(exeext)): New rule, based on xgcc rule.
6613         (g++-cross$(exeext)): Now just copies g++$(exeext) over.
6614         * g++spec.c: New file.
6615         * g++.c: Removed file.
6616
6617 Tue Nov 26 19:01:09 1996  Mike Stump  <mrs@cygnus.com>
6618
6619         * cvt.c (build_up_reference): Arrange for any temporary values
6620         that have been keep in registers until now to be put into memory.
6621
6622 Mon Nov 25 15:16:41 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6623
6624         * Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
6625         that make -j3 bootstrap works better.
6626
6627 Sun Nov 24 02:09:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
6628
6629         * decl.c (pushtag): Do pushdecl for anon tags.
6630
6631 Thu Nov 21 16:30:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
6632
6633         * typeck.c (c_expand_return): Fix logic.
6634         (unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
6635
6636 Wed Nov 20 18:47:31 1996  Bob Manson  <manson@charmed.cygnus.com>
6637
6638         * g++.c (main): Make sure arglist has a final NULL entry.  Add
6639         PEXECUTE_LAST to the flags passed to pexecute, as otherwise
6640         stdin/stdout of the invoked program are redirected to
6641         nowheresville.
6642
6643 Tue Nov 19 16:12:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
6644
6645         * decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
6646
6647 Tue Nov 19 15:48:19 1996  Mike Stump  <mrs@cygnus.com>
6648
6649         * init.c (resolve_offset_ref): Handle obj.vfn better.
6650         * typeck.c (build_component_ref): Set TREE_TYPE on result from
6651         build_vfn_ref.
6652
6653 Tue Nov 19 13:14:33 1996  Mike Stump  <mrs@cygnus.com>
6654
6655         * typeck.c (convert_for_assignment): Also handle anachronistic
6656         implicit conversions from (::*)() to cv void*.
6657         * cvt.c (cp_convert_to_pointer): Likewise.
6658
6659 Mon Nov 18 17:05:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
6660
6661         * lex.c (handle_cp_pragma): Fix bogus warning.
6662
6663 Mon Nov 18 16:10:43 1996  Mike Stump  <mrs@cygnus.com>
6664
6665         * cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
6666         (METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
6667
6668 Thu Nov 14 23:18:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6669
6670         * class.c (finish_struct_1): Support DWARF2_DEBUG.
6671         * search.c (dfs_debug_mark): Likewise.
6672         * decl2.c (finish_vtable_vardecl): Likewise.
6673         * decl.c (pushtag, finish_enum): Likewise.
6674         * lex.c (check_newline): Use debug_* instead of calling *out
6675         functions directly.
6676
6677 Thu Nov 14 15:21:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6678
6679         * Make-lang.in (cplib2.ready): Add else clause to avoid problems
6680         on some picky hosts.
6681
6682 Wed Nov 13 12:32:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
6683
6684         * class.c (finish_struct_1): A class has a non-trivial copy
6685         constructor if it has virtual functions.
6686
6687         * cvt.c (cp_convert): Always call a constructor.
6688
6689         * call.c (reference_binding): Still tack on a REF_BIND
6690         for bad conversions.
6691         (build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
6692
6693         * typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
6694         (c_expand_return): Likewise.
6695         * typeck2.c (digest_init): Likewise for { }.
6696         * init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
6697         * cvt.c (cp_convert): Handle failure better.
6698
6699 Wed Nov 13 11:51:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6700
6701         * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
6702         of GCC be path-relative. 
6703
6704 Wed Nov 13 11:27:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
6705
6706         * Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
6707         it does need choose-temp.o and pexecute.o.
6708
6709 Wed Nov 13 07:53:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6710
6711         * g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
6712         that we still use it.
6713         (P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
6714
6715 Wed Nov 13 02:00:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
6716
6717         * init.c (expand_default_init): Avoid calling constructors to 
6718         initialize reference temps.
6719
6720         * cvt.c (convert_to_reference): Fix.
6721
6722 Tue Nov 12 19:10:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
6723
6724         * cvt.c (cp_convert): Simplify for flag_ansi_overloading.
6725         (convert_to_reference): Likewise.
6726         * typeck.c (convert_for_initialization): Likewise.
6727         * init.c (expand_default_init): Likewise.
6728         (expand_aggr_init_1): Likewise.
6729         * cp-tree.h (CONV_NONCONVERTING): Lose.
6730         * typeck.c (build_c_cast): Lose allow_nonconverting parm.
6731         * *.c: Adjust.
6732         * call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
6733
6734 Tue Nov 12 16:29:04 1996  Brendan Kehoe  <brendan@canuck.cygnus.com>
6735
6736         * pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
6737
6738 Tue Nov 12 15:26:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6739
6740         * init.c (expand_aggr_init_1): Don't crash on non-constructor
6741         TARGET_EXPR.
6742
6743 Tue Nov 12 14:00:50 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6744
6745         * g++.c: Include gansidecl.h.
6746         (VPROTO, PVPROTO, VA_START): Delete.
6747         (choose_temp_base_try, choose_temp_base, perror_exec,
6748         run_dos) [__MSDOS__]: Delete fns.
6749         (pfatal_with_name): Delete fn.
6750         (temp_filename): Declare like in gcc.c.
6751         (pexecute, pwait, choose_temp_base): Declare from gcc.c.
6752         (error_count, signal_count): Define.
6753         (error): Delete both definitions.
6754         (PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
6755         (pfatal_pexecute): Add fn from gcc.c.
6756         (main): Rename local VERBOSE var to VERBOSE_FLAG.  Rewrite the
6757         code to use the pexecute stuff also used by gcc.c.
6758         (MIN_FATAL_STATUS): Define.
6759         * Make-lang.in (g++): Add dependency on and linking with
6760         choose-temp.o and pexecute.o.
6761
6762         * cp-tree.h: Include gansidecl.h.
6763         (STDIO_PROTO): Delete #undef/#define.
6764         * cvt.c (NULL): Delete #undef/#define.
6765         * expr.c (NULL): Likewise.
6766         * init.c (NULL): Likewise.
6767         * rtti.c (NULL): Likewise.
6768         * xref.c (NULL): Likewise.
6769
6770         * cp-tree.h (build_user_type_conversion): Add prototype.
6771         * call.c (build_user_type_conversion): Delete prototype.  Correct
6772         decl of FLAGS arg to be an int.
6773         * cvt.c (build_user_type_conversion): Likewise.
6774
6775 Tue Nov 12 12:16:20 1996  Jason Merrill  <jason@yorick.cygnus.com>
6776
6777         * cp-tree.def: Add TRY_BLOCK and HANDLER.
6778         * except.c (expand_start_catch_block): Support templates.
6779         * parse.y (try_block, handler_seq): Likewise.
6780         * pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
6781
6782 Mon Nov 11 13:57:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
6783
6784         * pt.c (current_template_args): New fn.
6785         (push_template_decl): Use it.
6786         * decl.c (grokdeclarator): Use it.
6787
6788         * decl2.c (build_expr_from_tree): Dereference ref vars.
6789
6790         * decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
6791         the decl-specifier-seq.
6792
6793         * decl.c (grok_op_properties): Don't force the type of a conversion
6794         op to be complete.  Don't warn about converting to the same type
6795         for template instantiations.
6796
6797         * decl2.c (finish_file): Don't call instantiate_decl on synthesized
6798         methods.
6799
6800 Mon Nov 11 13:20:34 1996  Bob Manson  <manson@charmed.cygnus.com>
6801
6802         * typeck.c (get_delta_difference): Remove previous bogusness.
6803         Don't give errors if force is set.
6804
6805 Fri Nov  8 17:38:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
6806
6807         * decl2.c (finish_file): Don't emit debug info.
6808         * decl.c (pushdecl): Lose obsolete code.
6809         (grokdeclarator): Still do the long long thing after complaining.
6810         * search.c (note_debug_info_needed): Don't do anything if we're in a 
6811         template.
6812         * method.c (synthesize_method): For non-local classes,
6813         push_to_top_level first.
6814
6815 Fri Nov  8 11:52:28 1996  Bob Manson  <manson@charmed.cygnus.com>
6816
6817         * typeck.c (get_delta_difference): Add no_error parameter.
6818         (build_ptrmemfunc): Call get_delta_difference with no_error set;
6819         we don't want error messages when converting unrelated
6820         pointer-to-member functions.
6821
6822 Thu Nov  7 11:16:24 1996  Mike Stump  <mrs@cygnus.com>
6823
6824         * error.c (dump_expr): Improve the wording on error messages that
6825         involve pointer to member functions.
6826
6827 Tue Nov  5 17:12:05 1996  Mike Stump  <mrs@cygnus.com>
6828
6829         * cvt.c (cp_convert_to_pointer): Move code for conversions from
6830         (::*)() to void* or (*)() up a bit, so that we can convert from
6831         METHOD_TYPEs as well.
6832
6833 Tue Nov  5 14:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6834
6835         * rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
6836         There are no 'member' types.
6837         (get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
6838         (build_x_typeid): Handle errors.
6839
6840 Mon Nov  4 17:43:12 1996  Mike Stump  <mrs@cygnus.com>
6841
6842         * typeck.c (convert_for_assignment): Handle anachronistic implicit
6843         conversions from (::*)() to void* or (*)().
6844         * cvt.c (cp_convert_to_pointer): Likewise.
6845         (cp_convert_to_pointer_force): Remove cp_convert_to_pointer
6846         conversions from here.
6847         * decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
6848         * lang-options.h: Likewise.
6849         * decl2.c (warn_pmf2ptr): Define.
6850         * cp-tree.h: Declare it.
6851         * typeck2.c (digest_init): Allow pmfs down into
6852         convert_for_initialization.
6853
6854 Sun Nov  3 09:43:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
6855
6856         * typeck.c (c_expand_return): Fix for returning overloaded fn.
6857
6858 Fri Nov  1 08:53:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6859
6860         * cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
6861         * decl.c (grok_reference_init): Pass DIRECT_BIND.
6862         * cvt.c (build_up_reference): Don't mark 'this' addressable.  Use
6863         DIRECT_BIND.
6864         * call.c (convert_like): Don't pass INDIRECT_BIND.
6865         * typeck.c (convert_arguments): Likewise.
6866         * typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
6867
6868 Thu Oct 31 17:08:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
6869
6870         * typeck.c (mark_addressable): Support TARGET_EXPR, unify with
6871         similar code in build_up_ref.
6872         * cvt.c (build_up_reference): Drastically simplify.
6873
6874 Mon Oct 28 12:45:05 1996  Jeffrey A Law  (law@cygnus.com)
6875
6876         * typeck.c (signed_or_unsigned_type): If the given type already
6877         as the correct signedness, then just return it.
6878
6879         * typeck.c ({un,}signed_type): If can't do anything, call
6880         signed_or_unsigned_type.
6881
6882 Thu Oct 24 14:21:59 1996  Bob Manson  <manson@charmed.cygnus.com>
6883
6884         * decl2.c (copy_assignment_arg_p): Don't buy the farm if
6885         current_class_type is NULL.
6886
6887 Wed Oct 23 00:43:10 1996  Jason Merrill  <jason@gerbil.cygnus.com>
6888
6889         * class.c (finish_struct_1): Avoid empty structs by adding a field
6890         so layout_type gets the mode right.
6891
6892         * typeck.c (c_expand_return): Drastically simplify.
6893
6894 Mon Oct 21 22:34:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
6895
6896         * typeck.c (decay_conversion): Handle overloaded methods.
6897
6898 Fri Oct 18 16:03:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
6899
6900         * call.c (build_over_call): A TARGET_EXPR has side-effects.
6901
6902 Thu Oct 17 11:31:59 1996  Mike Stump  <mrs@cygnus.com>
6903
6904         * cvt.c (convert_to_pointer_force): Add code to support pointer to
6905         member function to pointer to function conversions.
6906         * init.c (resolve_offset_ref): Add code to allow faked up objects,
6907         ignoring them if they are not used, and giving an error, if they
6908         are needed.
6909         * typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
6910         code, and so that we can give an error, if we needed an object,
6911         and one was not provided.
6912         (build_c_cast): Don't call default_conversion when we want to
6913         convert to pointer to function from a METHOD_TYPE.
6914
6915 Mon Oct 14 00:28:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
6916
6917         * Make-lang.in (cplib2.ready): Fix logic.
6918
6919         * decl.c (shadow_tag): Only complain about non-artificial function
6920         members.
6921
6922         * class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
6923
6924 Fri Oct 11 16:12:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
6925
6926         * expr.c (cplus_expand_expr): Pre-tweak call_target like
6927         expand_inline_function would.
6928
6929         * pt.c (mark_decl_instantiated): If extern_p, call
6930         mark_inline_for_output.
6931
6932 Thu Oct 10 15:58:08 1996  Mike Stump  <mrs@cygnus.com>
6933
6934         * typeck.c (unary_complex_lvalue): Add code to handle intermediate
6935         pmd conversions.
6936
6937         * typeck.c (get_delta_difference): Fix wording, as we can be used
6938         for pointer to data members.
6939
6940 Tue Oct  8 12:43:51 1996  Bob Manson  <manson@charmed.cygnus.com>
6941
6942         * pt.c (tsubst): If the function decl isn't a member of this
6943         template, return a copy of the decl (including copying the
6944         lang-specific part) so we don't hose ourselves later.
6945
6946 Thu Oct  3 16:24:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
6947
6948         * class.c (finish_struct): Remove DWARF-specific tag handling.
6949         * decl.c (pushtag): Likewise.
6950         (finish_function): Always clear DECL_ARGUMENTS on function decls with
6951         no saved RTX.
6952         * decl2.c (finish_file): Emit DWARF debugging info for static data
6953         members.
6954
6955 Wed Oct  2 21:58:01 1996  Bob Manson  <manson@charmed.cygnus.com>
6956
6957         * decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
6958         isn't the same as the new one before we whack it.
6959
6960 Mon Sep 30 13:38:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
6961
6962         * class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
6963         lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
6964         warn_traditional and warn_strict_prototypes; remove ancient
6965         'overload' code; remove references to flag_traditional.
6966
6967 Mon Sep 30 12:58:40 1996  Mike Stump  <mrs@cygnus.com>
6968
6969         * input.c (sub_getch): Handle 8-bit characters in string literals.
6970
6971 Sun Sep 29 03:12:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
6972
6973         * tree.c (mapcar): Handle CONSTRUCTORs.
6974         (copy_to_permanent): Handle expression_obstack properly.
6975
6976         * Make-lang.in (cplib2.txt): Also depend on the headers.
6977
6978         * rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
6979         INT_TYPE_SIZE.
6980         (expand_class_desc): Use USItype for offset field.
6981         * tinfo.h (struct __class_type_info): Likewise.
6982
6983         * method.c (build_overload_int): TYPE_PRECISION should be applied
6984         to types.
6985
6986 Sat Sep 28 14:44:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
6987
6988         * call.c (build_new_op): A COND_EXPR involving void must be a
6989         builtin.
6990
6991 Fri Sep 27 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
6992
6993         * typeck.c (build_x_component_ref): New fn.
6994         (build_object_ref): Use it.
6995         * parse.y (primary): Use it.
6996         * decl2.c (build_expr_from_tree): Use it.
6997         * cp-tree.h: Declare it.
6998
6999         * decl.c (start_decl): variable-sized arrays cannot be initialized.
7000         * error.c (dump_type_suffix): Handle variable arrays.
7001
7002 Fri Sep 27 13:14:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7003
7004         * Make-lang.in (exception.o): Put back compiling it with -fPIC.
7005
7006 Fri Sep 27 03:00:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
7007
7008         * decl.c (lookup_name_real): Don't try to look up anything in a
7009         TYPENAME_TYPE.
7010
7011         * tinfo2.cc (__throw_type_match_rtti): Oops.
7012
7013 Thu Sep 26 22:11:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7014
7015         * Make-lang.in (exception.o): Use -fno-PIC for now.
7016
7017 Thu Sep 26 10:59:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
7018
7019         * rtti.c (build_dynamic_cast): Pass tinfo fns rather than
7020         calling them.
7021         (get_tinfo_fn_dynamic): Extracted from build_typeid.
7022         * tinfo2.cc (__dynamic_cast): Adjust.
7023         
7024         * rtti.c (build_typeid): Use resolves_to_fixed_type_p.
7025         (build_x_typeid): Likewise.
7026
7027         * parse.y: Call build_x_typeid instead of build_typeid.
7028         * cp-tree.def: Add TYPEID_EXPR.
7029         * pt.c (tsubst_copy): Handle typeid.
7030         * decl2.c (build_expr_from_tree): Likewise.
7031         * rtti.c (build_x_typeid): Throw bad_typeid from here.
7032         (build_typeid): Not here.
7033         * cp-tree.h: Declare build_x_typeid.
7034
7035 Wed Sep 25 17:26:16 1996  Jason Merrill  <jason@yorick.cygnus.com>
7036
7037         * call.c (convert_like): Pull out constant values.
7038
7039         * tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
7040
7041 Wed Sep 25 17:28:53 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
7042
7043         * decl.c (init_decl_processing): Create short int types before
7044         creating size_t in case a machine description needs to use
7045         unsigned short for size_t.
7046
7047 Tue Sep 24 18:18:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
7048
7049         * Make-lang.in (exception.o): Turn off pic.
7050
7051         * tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
7052         type, multi-level ptr conversions.
7053
7054         * rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
7055         (throw_bad_cast): Use it.
7056         (throw_bad_typeid): New fn.
7057         (build_typeid): Throw bad_typeid as needed.
7058         Use build_call.
7059         (synthesize_tinfo_fn): Handle functions and arrays before checking
7060         for cv-quals.
7061
7062         * Remove .h from standard C++ headers, add new.h, move into inc
7063         subdirectory.
7064
7065         * exception*: Remove pointer from object, constructors.  Add
7066         default exception::what that uses type_info::name.  Add
7067         __throw_bad_typeid.
7068
7069         * init.c (build_new): Don't add a cookie to new (void *) T[2].
7070
7071 Mon Sep 23 15:21:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
7072
7073         * Make-lang.in: Building C++ code depends on cc1plus.
7074
7075 Mon Sep 23 12:38:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7076
7077         * decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
7078         a HOST_WIDE_INT, not a tree.
7079
7080 Mon Sep 23 12:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
7081
7082         * exception.cc: Don't include <stdlib.h>.
7083
7084         * Make-lang.in (c++.clean): Remove cplib2.*.
7085
7086 Mon Sep 23 09:42:19 1996  Doug Evans  <dje@canuck.cygnus.com>
7087
7088         * parse.y (component_decl_1, component_costructor_declarator case):
7089         Pass attributes/prefix_attributes in tree list.
7090
7091 Mon Sep 23 01:18:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
7092
7093         * tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
7094
7095 Sun Sep 22 05:31:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
7096
7097         * lex.c (do_identifier): Don't do deferred lookup in a template
7098         header.
7099
7100         * typeck2.c (store_init_value): Oops.
7101
7102         * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}: 
7103         New files for C++ lang-support library.
7104         * Make-lang.in (CXX_EXTRA_HEADERS): Define.
7105         (CXX_LIB2FUNCS): Define.
7106         And rules for building the C++ lang-support code.
7107         * config-lang.in (headers): Define.
7108         (lib2funcs): Define.
7109
7110 Sat Sep 21 19:17:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
7111
7112         * decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
7113         digest_init.
7114         * pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
7115         * typeck2.c (store_init_value): Check for initializing pmf with { }
7116         here.
7117         (process_init_constructor): Not here.
7118
7119 Thu Sep 19 16:41:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
7120
7121         * pt.c (begin_template_parm_list): Increment
7122         processing_template_decl here.
7123         (end_template_parm_list): Not here.
7124         (process_template_parm): No need to add 1 to it now.
7125         * *.c: Use processing_template_decl instead of current_template_parms
7126         to check for being in a template.
7127
7128         * pt.c (uses_template_parms): Handle SCOPE_REF.  Fix CONSTRUCTOR.
7129         (tsubst_copy): Handle CONSTRUCTOR.
7130         (instantiate_decl): Set up context properly for variables.
7131         * decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
7132         * class.c (finish_struct): Reverse CLASSTYPE_TAGS.
7133
7134 Wed Sep 18 13:30:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7135
7136         * lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
7137
7138 Wed Sep 18 04:24:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
7139
7140         * method.c (make_thunk): Call comdat_linkage before setting the
7141         TREE_CODE.
7142
7143         * decl2.c (comdat_linkage): Use make_decl_one_only.
7144         (import_export_decl): Likewise.
7145         * decl.c (init_decl_processing): Check supports_one_only instead of
7146         SUPPORTS_WEAK.
7147
7148 Sat Sep 14 08:34:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
7149
7150         * decl2.c (grokfield): Tighten checking for access decls.
7151
7152         * decl.c (make_typename_type): Resolve references to
7153         current_class_type.  Set CLASSTYPE_GOT_SEMICOLON.
7154         (lookup_name_real): Types that depend on a template parameter get
7155         an implicit 'typename' unless they're in the current scope.
7156         (start_decl_1): We don't care about incomplete types that depend
7157         on a template parm.
7158         (grokdeclarator): Resolve 'typename's in the type specifier that
7159         refer to members of the current scope.
7160
7161         * call.c (build_over_call): Remove 'inline called before
7162         definition' diagnostic.
7163         (build_method_call): Likewise.
7164         * decl.c (duplicate_decls): Downgrade 'used before declared
7165         inline' to a warning, only with -Winline.
7166
7167 Fri Sep 13 17:31:40 1996  Stan Shebs  <shebs@andros.cygnus.com>
7168
7169         * mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
7170
7171 Wed Sep 11 22:38:13 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
7172
7173         * call.c (build_method_call): When calling a signature
7174         default implementation, as in other cases, let instance_ptr simply
7175         be instance.
7176
7177 Wed Sep 11 22:14:44 1996  Mike Stump  <mrs@cygnus.com>
7178
7179         * parse.y (simple_stmt): Cleanup and use do_poplevel ().
7180
7181 Wed Sep 11 22:10:48 1996  Mike Stump  <mrs@cygnus.com>
7182
7183         * except.c (expand_start_catch_block): Add a pushlevel so that -g
7184         works on hppa and SPARC.
7185
7186 Wed Sep 11 10:18:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7187
7188         * typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
7189
7190 Mon Sep  9 19:51:14 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
7191
7192         * call.c (build_over_call): Check first whether DECL_CONTEXT exists
7193         before testing whether it's a signature.
7194
7195 Sun Sep  8 16:06:57 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
7196
7197         * call.c (build_new_method_call): Don't complain about signature
7198         pointers and references not being an aggr type.
7199         (build_this): If a signature pointer or reference was passed in,
7200         just return it.
7201         (build_new_method_call): If instance is a signature pointer, set
7202         basetype to the signature type of instance.
7203         * sig.c (build_signature_method_call): Deleted basetype and
7204         instance parameters, they can be found as the DECL_CONTEXT of
7205         function and as the first argument passed in.
7206         * cp-tree.h: Changed declaration of build_signature_method_call.
7207         * call.c (build_method_call): Deleted first two arguments in call
7208         of build_signature_method_call.
7209         (build_over_call): Added call to build_signature_method_call.
7210
7211 Thu Sep  5 16:51:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
7212
7213         * typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
7214         target_expr.
7215
7216 Thu Sep  5 10:05:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7217
7218         * cvt.c (convert_to_reference): Use %#T, not %#D, for error.
7219
7220 Wed Sep  4 17:16:09 1996  Bob Manson  <manson@charmed.cygnus.com>
7221
7222         * except.c (expand_start_try_stmts): Move to except.c in the backend.
7223         (expand_end_try_stmts): Remove.
7224
7225         * init.c (perform_member_init): Use add_partial_entry () instead
7226         of directly manipulating lists.
7227         (emit_base_init): Ditto.
7228
7229 Wed Sep  4 12:14:36 1996  Mike Stump  <mrs@cygnus.com>
7230
7231         * except.c (expand_exception_blocks): Always make sure USE and
7232         CLOBBER insns that came at the end still do, the backend relies
7233         upon this.
7234
7235 Wed Sep  4 07:44:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
7236
7237         * call.c (build_over_call): We can only use a TARGET_EXPR of the
7238         right type.
7239
7240 Tue Sep  3 19:26:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
7241
7242         * cvt.c (convert_to_reference): Revert last change, don't complain
7243         about temp without target decl.
7244
7245 Tue Sep  3 10:22:56 1996  Mike Stump  <mrs@cygnus.com>
7246
7247         * decl.c (grokdeclarator): Don't core dump when void() is given.
7248
7249 Tue Sep  3 02:38:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
7250
7251         * decl.c (copy_args_p): Don't crash.
7252
7253 Fri Aug 30 14:26:57 1996  Mike Stump  <mrs@cygnus.com>
7254
7255         * pt.c (tsubst): And support template args inside the exception
7256         specification.
7257
7258         * pt.c (tsubst): Add support for exception specifications in
7259         template functions.
7260
7261 Fri Aug 30 10:01:55 1996  Mike Stump  <mrs@cygnus.com>
7262
7263         * cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
7264         fields now.
7265         * cp-tree.h (start_decl): Eliminate the throw spec parameter.
7266         (start_function): Likewise.
7267         (start_method): Likewise.
7268         (grokfield): Likewise.
7269         (make_call_declarator): Add throw spec parameter.
7270         (set_quals_and_spec): Add routine.
7271         * lex.c (set_quals_and_spec): Likewise.
7272         * decl.h (grokdeclarator): Eliminate the throw spec parameter.
7273         * decl.c (shadow_tag): Eliminate the throw spec parameter to
7274         grokdeclarator.
7275         (groktypename): Likewise.
7276         (start_decl): Eliminate the throw spec parameter.  Eliminate the
7277         throw spec parameter to grokdeclarator.  Eliminate the throw spec
7278         field in DECL_STMT.
7279         (cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
7280         (grokfndecl): Remove useless set of raises.
7281         (grokdeclarator): Eliminate the throw spec parameter.  Eliminate
7282         the throw spec parameter to start_decl.  Pull the throw spec out
7283         of the call declarator.
7284         (grokparms): Eliminate the throw spec parameter to grokdeclarator.
7285         (start_function): Eliminate the throw spec parameter.  Eliminate
7286         the throw spec parameter to grokdeclarator.
7287         (start_method): Likewise.
7288         * decl2.c (grokfield): Likewise.
7289         (grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
7290         (grokoptypename): Likewise.
7291         (finish_file): Eliminate the throw spec parameter to
7292         start_function.  Add throw spec to make_call_declarator.
7293         * except.c (init_exception_processing): Add throw spec to
7294         make_call_declarator.  Eliminate the throw spec parameter to
7295         start_decl.
7296         (expand_start_catch_block): Eliminate the throw spec parameter to
7297         grokdeclarator.
7298         (expand_builtin_throw): Add throw spec to make_call_declarator.
7299         Eliminate the throw spec parameter to start_function.
7300         (start_anon_func): Likewise.
7301         * lex.c (make_call_declarator): Add throw spec parameter.
7302         (set_quals_and_spec): New routine.
7303         (cons_up_default_function): Add throw spec to make_call_declarator.
7304         Eliminate the throw spec parameter to grokfield.
7305         * method.c (synthesize_method): Eliminate the throw spec parameter
7306         to start_function.
7307         * pt.c (process_template_parm): Eliminate the throw spec parameter
7308         to grokdeclarator.
7309         (tsubst): Add throw spec to make_call_declarator.
7310         (tsubst_expr): Eliminate the throw spec parameter to start_decl.
7311         (do_function_instantiation): Eliminate the throw spec parameter to
7312         grokdeclarator.  Eliminate the throw spec parameter to
7313         start_function.
7314         * rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
7315         to start_function.
7316         * parse.y (datadef): Remove non-winning optimization.
7317         (decl): Likewise.
7318         (fndef): Remove ambiguous error productions uncovered by grammer
7319         fixing.
7320         (constructor_declarator): Add exception_specification_opt here.
7321         (component_constructor_declarator): Likewise.
7322         (direct_after_type_declarator): Likewise.
7323         (complex_direct_notype_declarator): Likewise.
7324         (direct_abstract_declarator): Likewise.
7325         (fn.def1): Remove exception_specification_opt.
7326         (fn.def2): Likewise.
7327         (condition): Likewise.
7328         (initdcl0): Likewise.
7329         (initdcl): Likewise.
7330         (notype_initdcl0): Likewise.
7331         (nomods_initdcl0): Likewise.
7332         (component_decl_1): Likewise.
7333         (component_declarator): Likewise.
7334         (after_type_component_declarator0): Likewise.
7335         (after_type_component_declarator): Likewise.
7336         (notype_component_declarator): Likewise.
7337
7338 Wed Aug 28 01:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
7339
7340         * call.c (build_over_call): Also use an INIT_EXPR when
7341         initializing anything from an rvalue.
7342
7343         * call.c (build_over_call): Call stabilize_reference when building
7344         an INIT_EXPR instead of calling the copy ctor.
7345
7346         * call.c (joust): Extend the previous change to all comparisons.
7347
7348         * decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and 
7349         NO_LINKAGE_HEURISTICS.
7350
7351         * decl2.c (finish_file): Emit any statics that weren't already.
7352
7353         * typeck.c (build_static_cast): Implement.
7354         * tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
7355         * decl.c (grokparms): Use can_convert_arg instead of
7356         implicit_conversion directly.
7357         (copy_args_p): New fn.
7358         * cvt.c (convert_to_reference): Don't complain about temp with
7359         static_cast.
7360         (build_up_reference): Handle TARGET_EXPRs.
7361         * call.c (build_over_call): Elide unnecessary temps.
7362         (can_convert*): Use new overloading code.
7363
7364 Tue Aug 27 13:12:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
7365
7366         * call.c: Move TYPE_PTR*_MACROS ...
7367         * cp-tree.h: To here.
7368         * typeck.c (build_reinterpret_cast): Implement.
7369
7370         * call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
7371         ptr_complete_ob.
7372         (joust): If we're comparing a function to a builtin and the worst
7373         conversion for the builtin is worse than the worst conversion for the
7374         function, take the function.
7375
7376         * typeck.c (build_const_cast): Implement.
7377         (comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
7378         (comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
7379
7380 Tue Aug 27 13:14:58 1996  Bob Manson  <manson@charmed.cygnus.com>
7381
7382         * rtti.c (build_dynamic_cast): Don't try to dereference exprtype
7383         too early. Make sure we explode if exprtype turns out to be a
7384         NULL_TREE when it shouldn't be.
7385
7386 Tue Aug 27 10:56:21 1996  Mike Stump  <mrs@cygnus.com>
7387
7388         * cp-tree.h: New routine make_call_declarator.
7389         * lex.c (make_call_declarator): Define it.
7390         * except.c (init_exception_processing): Use it.
7391         (expand_builtin_throw): Likewise.
7392         (start_anon_func): Likewise.
7393         * decl2.c (finish_file): Likewise.
7394         * lex.c (cons_up_default_function): Likewise.
7395         * parse.y: Likewise.
7396         * pt.c (tsubst): Likewise.
7397         
7398 Mon Aug 26 17:40:03 1996  Mike Stump  <mrs@cygnus.com>
7399
7400         * decl2.c (groktypefield): Remove unused code.
7401
7402 Mon Aug 26 17:00:33 1996  Mike Stump  <mrs@cygnus.com>
7403
7404         * gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
7405         * parse.y: Likewise.  Change maybe_type_qual into maybe_cv_qualifier.
7406         Change type_quals into cv_qualifiers.  Change nonempty_type_quals into
7407         nonempty_cv_qualifiers.
7408         * hash.h: Rebuild.
7409         
7410         * lex.c (make_pointer_declarator): Change type_quals into
7411         cv_qualifiers.
7412         (make_reference_declarator): Likewise.
7413         
7414 Thu Aug 22 01:09:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
7415
7416         * decl.c (start_function): Only check interface_* for templates
7417         with flag_alt_external_templates.
7418
7419         * call.c (build_new_op): Check for comparison of different enum types.
7420         (build_over_call): Fix arg # output.
7421
7422         * typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
7423
7424 Wed Aug 21 00:13:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
7425
7426         * call.c (build_new_op): Check for erroneous args.
7427
7428         * call.c (build_new_method_call): Add missing args to cp_error.
7429
7430         * tree.c (error_type): Dont print reference-to-array.
7431
7432         * typeck.c (convert_for_assignment): Don't say contravariance for
7433         removing const.
7434
7435 Tue Aug 20 13:23:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
7436
7437         * call.c (build_over_call): Diagnose bad convs for `this'.
7438
7439         * lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
7440         on _ctor_arg.
7441
7442         * call.c (convert_like): Handle bad convs.
7443         (build_over_call): Handle bad convs better.
7444
7445         * decl2.c: -fansi-overloading is now the default.
7446
7447         * call.c (build_new_method_call): Check for erroneous args.
7448
7449         * pt.c (instantiate_class_template): Propagate
7450         TYPE_USES_MULTIPLE_INHERITANCE.
7451
7452 Tue Aug 20 13:09:57 1996  Mike Stump  <mrs@cygnus.com>
7453
7454         * call.c (enforce_access): Add static to routine.
7455
7456 Sun Aug 18 14:35:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
7457
7458         * call.c (build_user_type_conversion_1): Fix bad handling.
7459         (compare_ics): Likewise.
7460
7461 Sat Aug 17 21:54:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
7462
7463         * call.c (standard_conversion): Oops.
7464
7465 Sat Aug 17 16:28:11 1996  Geoffrey Noer  <noer@cygnus.com>
7466
7467         * g++.c: Update test for win32 (&& ! cygwin32).
7468
7469 Sat Aug 17 03:45:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
7470
7471         * typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
7472         (ptr_reasonably_similar): New fn.
7473         * call.c (BAD_RANK): New rank.
7474         (ICS_BAD_FLAG): New macro.
7475         (standard_conversion): Handle almost-right pointer conversions.
7476         (reference_binding): Handle bad rvalue bindings.
7477         (add_*_candidate): Stuff.
7478         (build_over_call): Pass bad conversions to convert_for_initialization.
7479         (compare_ics): Handle bad convs.
7480         (joust): Likewise.
7481
7482 Fri Aug 16 15:02:19 1996  Bob Manson  <manson@charmed.cygnus.com>
7483
7484         * init.c (expand_vec_init): Use ptrdiff_type_node instead of
7485         integer_type_node when computing pointer offsets.
7486
7487 Fri Aug 16 01:28:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
7488
7489         * tree.c (lvalue_type): New fn.
7490         (error_type): New fn.
7491         * call.c (op_error): Use error_type.
7492         (add_conv_candidate): Use lvalue_type.
7493         (add_builtin_candidates): Likewise.
7494         * error.c (args_as_string): Use error_type.
7495
7496 Thu Aug 15 17:27:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
7497
7498         * pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
7499         (tsubst): Not here.
7500
7501         * decl.c (init_decl_processing): With -ansi, __null's type is the
7502         signed integral type with the same number of bits as a pointer.
7503         Introduce a new variable null_node for it.
7504         * cp-tree.h: Adjust.
7505         * call.c (null_ptr_cst_p): Adjust.
7506
7507 Thu Aug 15 17:09:54 1996  Mike Stump  <mrs@cygnus.com>
7508
7509         * except.c (do_unwind): Mark %i7 as used on the SPARC so we can
7510         optimize.
7511
7512 Thu Aug 15 01:36:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
7513
7514         * decl2.c (import_export_decl): Ignore #pragma interface for tinfo
7515         fns of classes without virtual functions.
7516
7517         * call.c (add_function_candidate): Handle `this' specially.
7518         (compare_ics): Likewise.
7519
7520 Tue Aug 13 12:16:10 1996  Jason Merrill  <jason@yorick.cygnus.com>
7521
7522         * typeck.c (build_conditional_expr): Fix handling of __null.
7523
7524         * decl2.c (comdat_linkage): New fn.
7525         (import_export_vtable): Use it.
7526         (import_export_decl): Use it.
7527         * method.c (make_thunk): Use it.
7528
7529 Mon Aug 12 00:09:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
7530
7531         * pt.c (end_template_decl): If we don't actually have parms, return.
7532         * parse.y (template_header): Accept 'template <>'.
7533
7534         * errfn.c: Allow 5 args.
7535
7536 Sun Aug 11 15:20:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
7537
7538         * tree.c (make_temp_vec): New fn.
7539         * pt.c (push_template_decl): Handle partial specs.
7540         (instantiate_class_template): Likewise.
7541         (more_specialized): Use get_bindings.
7542         (more_specialized_class): New fn.
7543         (get_class_bindings): New fn.
7544         (most_specialized_class): New fn.
7545         (do_function_instantiation): List candidates for ambiguous case.
7546         * decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
7547         (shadow_tag): Call push_template_decl for partial specializations.
7548         * parse.y: Likewise.
7549         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
7550         DECL_TEMPLATE_MEMBERS.
7551         * call.c (print_z_candidates): Reduce duplication.
7552
7553 Fri Aug  9 14:36:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
7554
7555         * decl2.c (lang_decode_option): Allow -fansi-overloading.
7556
7557 Thu Aug  8 17:04:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
7558
7559         * pt.c (get_bindings): New fn.
7560         (most_specialized): Likewise.
7561         (do_function_instantiation): Use them.
7562         (add_maybe_template): New fn.
7563         * cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
7564         * call.c (build_new_op): Handle guiding decls.
7565         (build_new_function_call): Likewise.
7566         * decl2.c (finish_file): Likewise.
7567
7568         * decl2.c (mark_used): Do synthesis here.
7569         * call.c (build_method_call): Not here.
7570         (build_over_call): Or here.
7571         * typeck.c (build_function_call_real): Or here.
7572         * tree.c (bot_manip): Call mark_used on functions used in default
7573         args.
7574
7575 Thu Aug  8 17:48:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
7576
7577         * decl2.c (import_export_vtable): Delete code that disabled vtable
7578         heuristic on systems with ASM_OUTPUT_EXTERNAL.
7579
7580 Wed Aug  7 12:44:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
7581
7582         * typeck.c (build_x_function_call): Handle static call context
7583         better.
7584
7585         * decl.c (finish_function): Set the DECL_CONTEXT of the result to
7586         the function, not its outer block.
7587
7588         * call.c (build_field_call): Pass fields on to build_opfncall
7589         regardless of TYPE_OVERLOADS_CALL_EXPR.
7590         (build_method_call): Pass on to build_new_method_call sooner.
7591
7592         * typeck.c (build_ptrmemfunc): Just return what instantiate_type
7593         gives us.
7594         * class.c (instantiate_type): Don't put a POINTER_TYPE to
7595         METHOD_TYPE on an expression.  Also make a copy of rhs instead of
7596         modifying it.
7597
7598 Tue Aug  6 12:58:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
7599
7600         * call.c (compare_ics): Handle qual_conv after lvalue_conv.
7601         (add_builtin_candidate): Don't take enums for ++.
7602         (build_new_method_call): Handle non-aggregates and field calls.
7603         Move new overloading code from...
7604         * cvt.c: Here.
7605
7606         * decl.c (grokparms): Don't check default args in templates.
7607
7608 Mon Aug  5 17:17:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
7609
7610         * cvt.c (build_new_op): Fix args to build_unary_op.
7611         (add_builtin_candidates): Don't call type_promotes_to on float.
7612
7613         * decl.c (grokparms): Check the type of the default arg.
7614
7615         * cvt.c (build_new_op): Pass non-overloaded cases on rather than
7616         returning NULL_TREE.
7617
7618         * typeck.c (build_x_binary_op): Avoid doing extra work.
7619         (build_x_unary_op): Likewise.
7620         (build_x_conditional_expr): Likewise.
7621         * cvt.c (build_over_call): Return.
7622         (add_builtin_candidate): Fix MEMBER_REF.
7623         (build_new_op): Likewise.
7624
7625 Mon Aug  5 17:07:47 1996  Mike Stump  <mrs@cygnus.com>
7626
7627         * method.c (build_overload_name): Put bug fix into code but leave
7628         disabled for now so we can be bug compatible with older releases
7629         that do repeats incorrectly.  In the future, we can enable it.
7630
7631 Mon Aug  5 13:46:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
7632
7633         * cvt.c (convert_like): Don't call build_cplus_new twice.
7634
7635         * call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
7636         Control new overloading code with -fansi-overloading.
7637
7638 Sun Aug  4 15:29:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
7639
7640         * cvt.c (build_over_call): Call build_cplus_new.
7641         * call.c (build_method_call): Likewise.
7642         * typeck.c (build_function_call_real): Likewise.
7643         (build_conditional_expr): If both operands are TARGET_EXPRs, wrap
7644         the COND_EXPR in a TARGET_EXPR so they use the same slot.
7645
7646         * cvt.c (build_up_reference): Propagate INDIRECT_BIND to 
7647         recursive calls.
7648         * typeck.c (complete_type): Propagate
7649         TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
7650
7651 Sat Aug  3 14:05:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
7652
7653         * cvt.c (joust): More ?: kludging.  Sigh.
7654         (build_over_call): Don't try to synthesize global fns.
7655
7656         * search.c (lookup_conversions): Use binfo marking.
7657
7658 Sat Aug  3 12:33:42 1996  Bob Manson  <manson@charmed.cygnus.com>
7659
7660         * search.c (build_mi_matrix): Use the correct value of cid
7661         when determining the new mi_size.
7662
7663 Sat Aug  3 01:27:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
7664
7665         * cvt.c (add_builtin_candidates): Do consider type conversion ops
7666         for the first parms of += et al.
7667         (strip_top_quals): New fn.
7668         (reference_binding): Use it instead of TYPE_MAIN_VARIANT.
7669         (implicit_conversion): Likewise.
7670         (add_builtin_candidates): Be careful about arrays.
7671         (build_new_method_call): Handle vtable optimization.
7672
7673 Fri Aug  2 01:26:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
7674
7675         * cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
7676         * cvt.c (reference_binding): Use it.
7677         (implicit_conversion): Use it.
7678         (add_builtin_candidate, COND_EXPR): Use it.
7679
7680         * cvt.c (build_new_function_call): Check for error args.
7681
7682         * typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
7683
7684         * gxx.gperf: Add __null.
7685         * hash.h: Regenerate.
7686         * lex.h: Add RID_NULL.
7687         * lex.c (init_lex): Create null_pointer_node here, stick it in
7688         RID_NULL.
7689         * decl.c (init_decl_processing): Still set its type here.
7690         * cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
7691         (convert_to_pointer_force): Likewise.
7692         (null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
7693         if (! pedantic).
7694         * call.c (convert_harshness): Use null_ptr_cst_p.
7695         * typeck.c (convert_for_assignment): Likewise.  Don't produce
7696         null_pointer_node.
7697
7698         * error.c (args_as_string): Handle lists of actual args, too.
7699         * cvt.c (null_ptr_cst): Support (void*)0 for now.
7700         (build_user_type_conversion_1): Improve diagnostics.
7701         (build_new_function_call): Likewise.
7702         (build_object_call): Likewise.
7703         (build_new_method_call): Likewise.  Move call before def diagnostic...
7704         (build_over_call): Here.
7705
7706         * cvt.c (build_new_method_call): Don't complain about no match if
7707         LOOKUP_SPECULATIVELY.
7708         (build_over_call): Fix 'this' for virtual fn.
7709         (build_new_method_call): Add diagnostic.
7710
7711 Thu Aug  1 16:45:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
7712
7713         * cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
7714         constructors to be passed in.
7715         (build_over_call): Likewise.
7716         (build_user_type_conversion_1): Pass them in.
7717         (convert_like): Likewise.
7718         (build_object_call): Handle overloaded conversions.
7719         (build_over_call): Pass the right args to build_vfn_ref.
7720         (standard_conversion): Fix pmf convs.
7721         (joust): Handle comparing statics and non-statics.
7722         (build_new_method_call): New fn.
7723         * call.c (build_method_call): Call it if NEW_OVER.
7724
7725 Thu Aug  1 16:06:14 1996  Mike Stump  <mrs@cygnus.com>
7726
7727         * lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
7728         %D instead.
7729
7730 Thu Aug  1 15:24:02 1996  Mike Stump  <mrs@cygnus.com>
7731
7732         * except.c (expand_throw): Use maybe_build_cleanup_and_delete
7733         instead of just maybe_build_cleanup so that we deallocate the
7734         thrown object.
7735
7736 Thu Aug  1 15:18:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7737
7738         * decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
7739         * cp-tree.h (finish_prevtable_vardecl): Add decl.
7740
7741 Thu Aug  1 11:53:51 1996  Bob Manson  <manson@charmed.cygnus.com>
7742
7743         * pt.c (instantiate_class_template): Call complete_type. Also, if
7744         we're at the end of the file and we just instantiated a template
7745         class with a vtable, call finish_prevtable_vardecl.
7746
7747         * error.c (dump_decl): Don't explode (or explode more gracefully
7748         as appropriate) if the object being dumped has a null type.
7749         (dump_expr): Likewise.
7750
7751         * search.c (build_mi_matrix): Ensure that mi_size is large enough,
7752         by counting the number of nodes that we'll need before allocating
7753         the array.
7754         (lookup_fnfields): Fix comment.
7755         (breadth_first_search): Fix comment.
7756
7757 Wed Jul 31 09:57:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
7758
7759         * pt.c (instantiate_class_template): Propagate TYPE_PACKED and
7760         TYPE_ALIGN.
7761         * class.c (finish_struct): Call cplus_decl_attributes here.
7762         (finish_struct_1): Not here.
7763         * cp-tree.h: Adjust.
7764
7765         * pt.c (type_unification): New parameter STRICT.
7766         (unify): If STRICT, don't allow cv addition or base deduction.
7767         * call.c, class.c, cvt.c, cp-tree.h: Adjust.
7768
7769 Tue Jul 30 13:06:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
7770
7771         * search.c (get_template_base{_recursive}): New fns.
7772         * pt.c (more_specialized): New fn.
7773         (do_function_instantiation): Use it.
7774         (unify): Handle base deduction.
7775         * cvt.c (joust): Use more_specialized.
7776         Don't arbitrarily choose between non-builtin candidates.
7777         (build_over_call): Call require_complete_type.
7778
7779         * decl.c (start_function): Statics are static even in a #pragma
7780         interface file.
7781
7782         * decl2.c (import_export_vtable): Disable vtable heuristic on
7783         systems with ASM_OUTPUT_EXTERNAL.
7784
7785         * cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
7786         (standard_conversion): No std conv to enum type.
7787
7788         * cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
7789         for ptm's.
7790
7791         * cvt.c (reference_binding): Bind directly to a base subobject of
7792         a class rvalue.
7793
7794         * cvt.c (build_new_op): Enforce access control.
7795
7796 Tue Jul 30 09:22:53 1996  Bob Manson  <manson@charmed.cygnus.com>
7797
7798         * typeck2.c (process_init_constructor): When scanning the
7799         union for a named field, skip things that aren't FIELD_DECLs.
7800
7801         * method.c (synthesize_method): Don't scan fndecl's rtl if
7802         we're at the end of the file; just assume the function can't
7803         be inlined.
7804
7805 Mon Jul 29 15:48:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
7806
7807         * cvt.c (build_builtin_candidate): Stick a dummy conversion in if
7808         it failed.
7809
7810         * cvt.c (build_user_type_conversion_1): Handle overloaded
7811         conversion ops.
7812
7813         * cvt.c (add_builtin_candidates): Don't consider type conversion
7814         operators for the first parameter of operator=.
7815
7816 Mon Jul 29 15:33:55 1996  Bob Manson  <manson@charmed.cygnus.com>
7817
7818         * typeck.c (complete_type): Only call layout_type if we're not
7819         expanding a template.
7820
7821 Mon Jul 29 14:40:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
7822
7823         * cvt.c (compare_ics): Oops.
7824
7825         * cvt.c (op_error): Oops.
7826
7827         * cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
7828         * cvt.c: Add IDENTITY_RANK before others.  Use real_lvalue_p.
7829         (build_conv): Use them.
7830         (implicit_conversion): Use them.
7831         (convert_like): Handle them.
7832         (build_new_op): Handle builtin COND_EXPR again.
7833         (add_builtin_candidates): Strip cv-quals.  Fix oops.  Include enums
7834         in lists of types for COND_EXPR.
7835         (add_builtin_candidate): Add enum candidates for COND_EXPR.
7836
7837 Mon Jul 29 12:05:40 1996  Bob Manson  <manson@charmed.cygnus.com>
7838
7839         * typeck.c (build_modify_expr): Always attempt to build a call to
7840         the assignment operator, even if we're using a default one.
7841         (convert_for_initialization): Call complete_type.
7842
7843 Mon Jul 29 11:25:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
7844
7845         * cvt.c (reference_binding): A REF_BIND gets the reference type.
7846         (implicit_conversion): Likewise.
7847         (convert_like): Likewise.
7848         (compare_ics): Likewise.
7849         (compare_qual): Likewise.
7850         (print_z_candidates): Handle no candidates.
7851         (build_new_op): Don't handle builtin COND_EXPR for now.
7852
7853 Sat Jul 27 11:27:47 1996  Stan Shebs  <shebs@andros.cygnus.com>
7854
7855         * cvt.c (build_builtin_candidate): Init local var in an ANSI way.
7856
7857 Fri Jul 26 01:07:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
7858
7859         * cvt.c (joust): If the candidates are the same, arbitrarily pick one.
7860
7861         * cvt.c (build_builtin_candidate): Oops.
7862         (build_new_op): Oops.
7863
7864         * method.c (build_opfncall): Pass COND_EXPR on.
7865         * cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
7866         (add_builtin_candidate{,s}): Likewise.
7867         (add_builtin_candidates): Likewise.
7868         (print_z_candidates, op_error, build_new_op): Likewise.
7869         (type_decays_to): New fn.
7870         * lex.c (init_lex): Just say ?: for COND_EXPR.
7871
7872 Thu Jul 25 09:33:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
7873
7874         * typeck.c (complete_type): Call layout_type rather than building
7875         a new array type.
7876
7877         * cvt.c (add_builtin_candidate): Pointer arithmetic candidates
7878         only use ptrdiff_t.
7879
7880 Wed Jul 24 12:45:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
7881
7882         * cvt.c: Always compile the new overloading code (but don't use it).
7883         (implicit_conversion): Add a BASE_CONV when converting to
7884         the same class type.
7885         (convert_like): Handle BASE_CONV.
7886
7887 Tue Jul 23 12:46:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
7888
7889         * cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
7890         (add_builtin_candidate): Likewise.
7891
7892         NEW_OVER changes:
7893         * typeck.c (build_x_function_call): Try an operator function
7894         whenever we call an object of class type.
7895         * method.c (build_opfncall): Pass CALL_EXPRs through.
7896         * cvt.c (implicit_conversion): Do const-ref case first.
7897         (add_conv_candidate, build_object_call, op_error): New fns.
7898         (ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
7899         ({add,build}_builtin_candidate{,s}, print_z_candidates): Display 
7900         builtin candidates.
7901         (build_new_op): Handle CALL_EXPR.  Don't try to decay void.
7902         Fall back on preincrement handling.  Use op_error.  
7903         Handle warn_synth.
7904         (convert_like): Pass INDIRECT_BIND.  Don't try to do anything with 
7905         an error_mark_node.
7906         (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
7907         properly.
7908
7909 Mon Jul 22 16:21:55 1996  Bob Manson  <manson@charmed.cygnus.com>
7910
7911         * pt.c (tsubst_expr): Handle CONTINUE_STMT.
7912
7913 Mon Jul 22 15:38:58 1996  Mike Stump  <mrs@cygnus.com>
7914
7915         * typeck.c (build_component_ref_1): Use build_component_ref
7916         instead of open coding it here.
7917
7918 Mon Jul 22 12:18:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
7919
7920         * g++.c (main): Don't link with -lg++.
7921
7922         NEW_OVER changes:
7923         * cvt.c (convert_to_reference): Don't use convert_from_refeence on
7924         result of build_type_conversion.
7925         (cp_convert): Only call build_method_call for ctors if
7926         build_type_conversion failed.
7927         (ptr_complete_ob): New function.
7928         (TYPE_PTR{,OB,MEM}_P): New macros.
7929         ({add,build}_builtin_candidate{,s}): New functions.
7930         (print_z_candidates): Handle builtins.
7931         (build_user_type_conversion_1): Don't use conversion fns for 
7932         converting to a base type.
7933         (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
7934         (build_user_type_conversion): Use convert_from_reference.
7935         (build_new_op): New function.
7936         (build_over_call): Fix handling of methods.
7937         (compare_ics): Handle AMBIG_CONV properly.
7938         * typeck2.c: Increment abort count.
7939         * method.c (build_opfncall): Forward most requests to build_new_op.
7940         * cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
7941
7942 Fri Jul 19 17:59:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7943
7944         * error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
7945         invalid second argument to dump_expr_list.
7946
7947 Fri Jul 19 14:04:05 1996  Mike Stump  <mrs@cygnus.com>
7948
7949         * decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
7950
7951 Thu Jul 18 14:48:23 1996  Bob Manson  <manson@charmed.cygnus.com>
7952
7953         * decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
7954         ASSEMBLE_EXTERNAL.
7955
7956 Mon Jul 15 17:48:43 1996  Mike Stump  <mrs@cygnus.com>
7957
7958         * typeck2.c (process_init_constructor): New pedwarn for using { }
7959         to initialize a pointer to member function.
7960         * typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
7961         we can avoid the new error.
7962
7963 Mon Jul 15 15:42:03 1996  Mike Stump  <mrs@cygnus.com>
7964
7965         * typeck.c (build_ptrmemfunc1): New function to hide details of
7966         pointer to member functions better.
7967
7968 Mon Jul 15 14:23:02 1996  Mike Stump  <mrs@cygnus.com>
7969
7970         * init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
7971         methods into the actual method, as we know the implied object is
7972         not used.
7973
7974 Mon Jul 15 13:08:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7975
7976         * parse.y (maybecomma_warn): Only emit the pedwarn if we're not
7977         inside a system header.
7978
7979 Fri Jul 12 16:30:05 1996  Bob Manson  <manson@charmed.cygnus.com>
7980
7981         * call.c (build_method_call): Call complete_type on the
7982         instance type.
7983
7984 Thu Jul 11 17:16:40 1996  Mike Stump  <mrs@cygnus.com>
7985
7986         * typeck.c (build_component_ref): Always build up an OFFSET_REF
7987         for obj_ptr->func so that we can know which object to use in a
7988         method call.
7989
7990 Wed Jul 10 19:36:37 1996  Mike Stump  <mrs@cygnus.com>
7991
7992         * typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
7993         around things.  Also improve maintainability.
7994
7995 Wed Jul 10 18:20:11 1996  Bob Manson  <manson@charmed.cygnus.com>
7996
7997         * decl.c (grokdeclarator): Check for overflow when evaluating an
7998         array dimension.
7999
8000 Wed Jul 10 17:26:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
8001
8002         * cvt.c (cp_convert): Don't check for ambiguity with constructor
8003         if NEW_OVER.
8004
8005         * typeck.c (build_x_function_call): Pass function overload
8006         questions to new overloading code if NEW_OVER.
8007         * init.c (expand_aggr_init_1): Only check for type conversion ops
8008         if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
8009         Don't check for ambiguity with constructor if NEW_OVER.
8010         * cvt.c (convert_to_reference): Dereference the result of a type
8011         conversion operator.
8012         (build_conv): Propagate ICS_USER_FLAG.
8013         (implicit_conversion): Call instantiate_type.
8014         Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
8015         (add_function_candidate): Fix cv-quals on argtype.
8016         (print_z_candidates): New function.
8017         (build_new_function_call): Call it.
8018         (build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
8019         consider non-converting constructors.
8020         Call print_z_candidates.
8021         Return an AMBIG_CONV for an ambiguous conversion.
8022         (build_user_type_conversion): Handle AMBIG_CONV.
8023         (convert_like): Fix test for building TARGET_EXPR.
8024         Call instantiate_type.
8025         Handle AMBIG_CONV and LVALUE_CONV.
8026         (build_over_call): Handle 0 args and ellipsis.
8027         * cp-tree.def: Add AMBIG_CONV.
8028
8029 Tue Jul  9 17:48:48 1996  Mike Stump  <mrs@cygnus.com>
8030
8031         * decl.c (lookup_name_real): If we find mem in obj when parsing
8032         `obj->mem', make sure we return the right value.
8033
8034 Tue Jul  9 16:11:28 1996  Bob Manson  <manson@charmed.cygnus.com>
8035
8036         * search.c (get_base_distance): Call complete_type.
8037
8038 Tue Jul  9 12:46:34 1996  Mike Stump  <mrs@cygnus.com>
8039
8040         * decl.c (store_bindings): Make static.
8041
8042 Mon Jul  8 16:42:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
8043
8044         * init.c (expand_aggr_init_1): Don't check type conversions if
8045         NEW_OVER.
8046
8047         * cvt.c (z_candidate): Put back template field.
8048         (add_function_candidate): Set it.
8049         (add_template_candidate): Likewise.
8050         (joust): Use it.
8051         (compare_qual): Handle references and pointers to members.
8052         (compare_ics): Handle reference bindings.
8053
8054         * decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
8055
8056 Mon Jul  8 16:18:56 1996  Bob Manson  <manson@charmed.cygnus.com>
8057
8058         * call.c (compute_conversion_costs): Call complete_type.
8059
8060         * tree.c (vec_binfo_member): Use comptypes instead of comparing
8061         pointers, so we can handle template parameters.
8062
8063 Fri Jul  5 16:51:53 1996  Bob Manson  <manson@charmed.cygnus.com>
8064
8065         * cvt.c (cp_convert_to_pointer): We have to call complete_type
8066         here; let's make it explicit instead of a side effect of an
8067         error check.
8068
8069 Wed Jul  3 16:29:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
8070
8071         * cvt.c (z_candidate): Remove template field.
8072         (reference_binding): Handle binding to temporary.
8073         (implicit_conversion): Likewise.
8074         (add_function_candidate): Handle artificial constructor parms.
8075         Handle functions with too few parms.
8076         (add_template_candidate): New function.
8077         (build_user_type_conversion_1): Handle constructors.
8078         (convert_like): Likewise.
8079         (build_over_call): Likewise.
8080         (build_new_function_call): Support templates.
8081         (compare_ics): Fix reference, inheritance handling.
8082
8083 Mon Jul  1 22:58:18 1996  Bob Manson  <manson@charmed.cygnus.com>
8084
8085         * decl.c: Add signed_size_zero_node.
8086         (init_decl_processing): Build it.
8087         * class.c (prepare_fresh_vtable): Use it instead of size_zero_node
8088         when we're trying to make a negative delta.
8089
8090 Mon Jul  1 17:56:19 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8091
8092         Stop doing this damn index==strchr variable name confusion.
8093         * class.c (add_virtual_function): Change local var INDEX to be
8094         named IDX.
8095         (add_method): Likewise.
8096         * lex.c (print_parse_statistics): Likewise.
8097         * search.c (make_memoized_table_entry): Likewise.
8098         (lookup_fnfields_here): Likewise.
8099         (lookup_field): Likewise.
8100         (lookup_fnfields): Likewise.
8101         (get_baselinks): Likewise.
8102         * sig.c (build_signature_table_constructor): Likewise.
8103         (build_signature_method_call): Likewise.
8104         * typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
8105         (get_member_function_from_ptrfunc): Likewise.
8106         (build_ptrmemfunc): Change local var INDEX to be IDX.
8107         (c_expand_start_case): Likewise.
8108
8109 Sat Jun 29 14:05:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
8110
8111         * cvt.c (cp_convert_to_pointer): Move user-defined type conversion
8112         handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
8113         (convert_to_reference): Use build_type_conversion to convert to
8114         the reference type directly.
8115         (standard_conversion): Fix void* case, non-conversions.
8116         (reference_binding): Fix expr == 0 case, non-conversions.
8117         (convert_like): Support REF_BIND.
8118         (compare_qual): Split out from compare_ics.
8119         (compare_ics): Use it, handle icses with only a qual_conv.
8120
8121         * init.c (expand_vec_init): Don't crash if decl is NULL.
8122
8123 Fri Jun 28 11:52:51 1996  Stan Shebs  <shebs@andros.cygnus.com>
8124
8125         * mpw-config.in: New file, configury for Mac MPW.
8126         * mpw-make.sed: New file, makefile editing for MPW.
8127
8128 Thu Jun 27 15:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
8129
8130         * pt.c (instantiate_class_template): Call repo_template_used.
8131
8132         * search.c (lookup_conversions): Only lookup conversions in
8133         complete types.
8134
8135 Thu Jun 27 12:59:53 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8136
8137         * cp-tree.def: Renamed from tree.def, to avoid confusion with
8138         gcc's tree.def.
8139         * cp-tree.h, lex.c: Include cp-tree.def.
8140         * Makefile.in (CXX_TREE_H): Reference cp-tree.def.
8141
8142 Wed Jun 26 18:29:47 1996  Bob Manson  <manson@charmed.cygnus.com>
8143
8144         * init.c (build_vec_delete_1): Call complete_type.
8145
8146 Mon Jun 24 17:17:32 1996  Mike Stump  <mrs@cygnus.com>
8147
8148         * except.c (start_anon_func): Make sure anonymous functions are
8149         never external.
8150
8151 Fri Jun 21 15:10:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
8152
8153         * decl.c (finish_function): If function_depth > 1, set nested.
8154
8155         * decl2.c (grokbitfield): Revert Bob's change.
8156         * class.c (finish_struct_1): Fix handling of named bitfield widths.
8157
8158 Thu Jun 20 23:35:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
8159
8160         * pt.c (add_pending_template): Handle types.
8161         (lookup_template_class): With -fexternal-templates, just add the class
8162         to pending_templates instead of instantiating it now.
8163         * decl2.c (finish_file): Handle types in pending_templates.
8164
8165 Thu Jun 20 14:08:40 1996  Bob Manson  <manson@charmed.cygnus.com>
8166
8167         * decl2.c (grokbitfield): Handle constant decls appropriately.
8168         Give an appropriate error message now instead of spewing core
8169         later.
8170
8171 Thu Jun 20 13:01:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
8172
8173         * decl2.c: Don't turn on thunks by default for now.
8174
8175 Wed Jun 19 11:37:04 1996  Jason Merrill  <jason@yorick.cygnus.com>
8176
8177         * typeck.c (complete_type): Handle error_mark_node.
8178         (common_type, OFFSET_TYPE): Handle template_type_parms.
8179
8180 Tue Jun 18 10:02:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
8181
8182         * pt.c (instantiate_decl): If at_eof, call import_export_decl
8183         regardless of DECL_INLINE.
8184
8185         * typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
8186
8187         * class.c (finish_struct_bits): Copy TYPE_SIZE.
8188
8189         * rtti.c (build_dynamic_cast): Support templates.
8190         * tree.def: Support DYNAMIC_CAST_EXPR.
8191         * pt.c (tsubst_copy): Likewise.
8192         * decl2.c (build_expr_from_tree): Likewise.
8193
8194 Mon Jun 17 15:23:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
8195
8196         * typeck.c (build_static_cast): Support templates.
8197         (build_const_cast): Likewise.
8198         * tree.def: Support CONST/STATIC_CAST_EXPR.
8199         * pt.c (tsubst_copy): Likewise.
8200         * decl2.c (build_expr_from_tree): Likewise.
8201
8202 Sun Jun 16 12:33:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
8203
8204         * decl2.c (finish_vtable_vardecl): Don't trust
8205         TREE_SYMBOL_REFERENCED for vtables of local classes.
8206
8207 Fri Jun 14 18:13:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
8208
8209         * pt.c (tsubst_copy): Handle operator T.
8210
8211 Wed Jun 12 17:52:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8212
8213         * init.c (build_delete): Move creation of PARMS inside test of
8214         TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
8215
8216 Tue Jun 11 15:09:18 1996  Bob Manson  <manson@charmed.cygnus.com>
8217
8218         * typeck.c (build_conditional_expr): Don't assume that
8219         the arguments to ?: are always pointers or records.
8220
8221 Tue Jun 11 13:56:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
8222
8223         * decl2.c (import_export_decl): Still emit static/weak/comdat
8224         copies of inline template functions with -fno-implicit-templates.
8225
8226 Tue Jun 11 11:42:13 1996  Bob Manson  <manson@charmed.cygnus.com>
8227
8228         * init.c (build_delete): Determine the complete basetype
8229         path to the destructor we're calling.
8230
8231 Fri Jun  7 15:30:10 1996  Bob Manson  <manson@charmed.cygnus.com>
8232
8233         * decl.c (build_enumerator): Always copy the INTEGER_CST used to
8234         initialize the enum, because we really and truly don't know where
8235         it came from.
8236         (start_enum): Don't copy integer_zero_node because
8237         build_enumerator will do it.
8238
8239 Fri Jun  7 11:11:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8240
8241         * decl.c (finish_function): Do access control on base destructors.
8242
8243         * pt.c (tsubst, case FUNCTION_DECL): Set up
8244         IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
8245         hose us.
8246
8247 Fri Jun  7 10:37:33 1996  Mike Stump  <mrs@cygnus.com>
8248
8249         * cvt.c (build_up_reference): If we have already extended the
8250         lifetime of the temporary, don't try it again.
8251         * typeck.c (c_expand_return): Don't try and convert the return
8252         value twice when we want a reference, once is enough.
8253         
8254 Tue Jun  4 15:41:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
8255
8256         * pt.c (tsubst_expr, case DECL_STMT): Don't pass
8257         LOOKUP_ONLYCONVERTING at all for now.
8258
8259         * search.c (add_conversions): Put the conversion function in
8260         TREE_VALUE, the basetype in TREE_PURPOSE.
8261         * cvt.c (build_type_conversion): Adjust.
8262         * cvt.c (build_expr_type_conversion): Adjust.
8263         * call.c (user_harshness): Adjust.
8264
8265 Mon Jun  3 15:30:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
8266
8267         * method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
8268         backend's benefit.
8269
8270 Mon Jun 10 18:58:19 1996  Mike Stump  <mrs@cygnus.com>
8271
8272         * except.c (expand_start_catch_block): Add a dummy region, if we
8273         get an error, so that we can avoid core dumping later.
8274
8275 Fri May 31 14:56:13 1996  Mike Stump  <mrs@cygnus.com>
8276
8277         * cp-tree.h (OFFSET_REF): Remove.
8278         * tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
8279         * expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
8280         * init.c (expand_aggr_init_1): Likewise.
8281         (build_new): Likewise.
8282         * typeck.c (expand_target_expr): Likewise.
8283
8284 Fri May 31 14:22:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
8285
8286         * typeck.c (build_modify_expr): Don't use TREE_VALUE on a
8287         TARGET_EXPR.
8288
8289 Wed May 29 17:04:33 1996  Mike Stump  <mrs@cygnus.com>
8290
8291         * cvt.c (build_up_reference): Redo how and when temporaries are
8292         created.
8293         * decl.c (grok_reference_init): Don't try and be smart about
8294         running cleanups.
8295
8296 Wed May 29 16:02:08 1996  Mike Stump  <mrs@cygnus.com>
8297
8298         * cvt.c (build_up_reference): Add NULL_TREE to all calls to build
8299         (TARGET_EXPR...), now that it has 4 arguments.
8300         * tree.c (build_cplus_new): Likewise.
8301
8302 Thu May 23 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
8303
8304         * error.c (dump_expr, case CAST_EXPR): Handle T() properly.
8305
8306         * pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
8307         * decl.c (struct saved_scope): Remove named_labels,
8308         {base,member}_init_list.
8309         (maybe_push_to_top_level): Don't set them.  Call
8310         push_cp_function_context if appropriate.
8311         (pop_from_top_level): Likewise.
8312
8313         * method.c (do_build_assign_ref): Remove obsolete check of
8314         TYPE_HAS_ASSIGN_REF (basetype).
8315
8316         * decl.c (grokfndecl): Diagnose user definition of
8317         implicitly-declared methods.
8318
8319 Thu May 23 12:13:08 1996  Bob Manson  <manson@charmed.cygnus.com>
8320
8321         * method.c (do_build_copy_constructor): Add code to give
8322         meaningful error messages instead of crashing.
8323         (do_build_assign_ref): Don't synthesize assignment operators for
8324         classes containing reference or const members.
8325
8326         * class.c (struct base_info): Remove cant_synth_copy_ctor
8327         and cant_synth_asn_ref.
8328         (finish_base_struct): Remove the code that tries to conditionalize
8329         synthesis of copy constructors & assignment operators based on
8330         access permissions. Instead, let it fail when it tries to
8331         synthesize the copy constructor. This will give meaningful error
8332         messages instead of silently generating code to perform a bitcopy.
8333
8334 Wed May 22 11:45:19 1996  Bob Manson  <manson@charmed.cygnus.com>
8335
8336         * lex.c (real_yylex): Remove old-n-crufty #if 0 code for
8337         determining types for constant values.
8338
8339         * decl.c (struct named_label_list): Use instead of stuffing
8340         random items into a TREE_LIST node.
8341         (named_label_uses): Use the new struct.
8342         (poplevel): Likewise.
8343         (lookup_label): Likewise.
8344         (define_label): Add an error message to tell the user the line
8345         where the goto is located in addition to the destination of the
8346         goto.
8347         (init_decl_processing): Use NULL instead of NULL_TREE to initialize
8348         named_label_uses.
8349         (finish_function): Likewise.
8350         
8351         (start_decl): Complain about defining a static data member
8352         in a different type from which it was declared.
8353
8354 Wed May 22 09:33:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
8355
8356         * cvt.c (build_expr_type_conversion): Adjust.
8357
8358 Tue May 21 11:21:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
8359
8360         * call.c (build_method_call): Always convert 'this' to the
8361         appropriate type.
8362
8363         * search.c (add_conversions): Put the conversion function in
8364         TREE_VALUE, the type in TREE_PURPOSE.
8365         * cvt.c (build_type_conversion): Adjust.
8366         * call.c (user_harshness): Adjust.
8367
8368         * method.c (emit_thunk): Call temporary_allocation and
8369         permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
8370
8371         * tree.c (build_cplus_array_type): Handle tweaking of
8372         TYPE_MAIN_VARIANT here.
8373         * typeck.c (common_type): Not here.
8374
8375         * typeck.c (complete_type): Only try to complete an array type if
8376         it has a domain.
8377
8378 Mon May 20 14:55:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
8379
8380         * decl.c (grokvardecl): Call complete_type.
8381         (grokdeclarator): Call complete_type for PARM_DECLs.
8382
8383 Fri May 17 16:41:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8384
8385         * pt.c (instantiate_class_template): Re-set
8386         CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
8387
8388 Fri May 17 14:56:55 1996  Mike Stump  <mrs@cygnus.com>
8389
8390         * cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
8391         smart enough to do it right.
8392         * tree.c (cp_expand_decl_cleanup): Likewise.
8393         * decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
8394         cp_expand_decl_cleanup.
8395         (store_parm_decls): Likewise.
8396         (hack_incomplete_structures): Likewise.
8397         * except.c (push_eh_cleanup): Likewise.
8398
8399 Fri May 17 13:13:51 1996  Mike Stump  <mrs@cygnus.com>
8400
8401         * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
8402         frontend to the backend where it belongs.
8403         * tree.c (unsave_expr): Likewise.
8404         (unsave_expr_now): Likewise.
8405         * tree.def (UNSAVE_EXPR): Likewise.
8406         * cp-tree.h (unsave_expr): Likewise.
8407         (unsave_expr_now): Likewise.
8408
8409 Fri May 17 11:02:41 1996  Mike Stump  <mrs@cygnus.com>
8410
8411         * init.c (emit_base_init): Make sure the partial EH cleanups live
8412         on the function_obstack.
8413
8414 Thu May 16 15:29:33 1996  Bob Manson  <manson@charmed.cygnus.com>
8415
8416         * expr.c (do_case): Don't try to dereference null TREE_TYPEs
8417         when checking for pointer types.
8418
8419 Thu May 16 13:38:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
8420
8421         * pt.c (instantiate_class_template): Remove obsolete check for
8422         access declarations.
8423
8424 Thu May 16 13:34:15 1996  Mike Stump  <mrs@cygnus.com>
8425
8426         * call.c (build_overload_call): Simplify calls to
8427         build_overload_call by removing last parameter.
8428         (build_method_call): Likewise.
8429         * cp-tree.h: Likewise.
8430         * method.c (build_opfncall): Likewise.
8431         * typeck.c (build_x_function_call): Likewise.
8432
8433 Thu May 16 13:15:43 1996  Mike Stump  <mrs@cygnus.com>
8434
8435         * call.c (default_parm_conversions): Factor out common code.
8436         (build_method_call): Use it.
8437         (build_overload_call_real): Use it.
8438
8439 Wed May 15 14:46:14 1996  Mike Stump  <mrs@cygnus.com>
8440
8441         * call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
8442         but pedwarn as the code is bogus.
8443         * typeck.c (decay_conversion): Likewise.
8444         (build_function_call_real): Use build_addr_func instead of
8445         default_conversion.  Don't allow pointer-to-method functions down
8446         here.
8447         (build_unary_op): Use real pointer-to-member functions instead of
8448         fake ones.
8449         (build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
8450         (convert_for_assignment): Removed some obsolete code.
8451         * decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
8452         build_x_function_call instead of current_class_ptr.  Only call
8453         digest_init once on an initializer, we do this just checking
8454         TREE_TYPE.
8455         (build_expr_from_tree): Pass current_class_ref to
8456         build_x_function_call instead of current_class_ptr.
8457         * init.c (build_member_call): Likewise.
8458         * pase.y: Likewise.
8459         * error.c (dump_expr): Handle OFFSET_REFs better.
8460         * pt.c (unify): Handle pointer-to-member functions better.
8461         * decl.c (finish_function): Clear out current_class_ref just like
8462         we do for current_class_ptr.
8463
8464         * typeck.c (get_delta_difference): Handle virtual bases better.
8465
8466 Tue May 14 16:37:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
8467
8468         * sig.c (build_signature_table_constructor): Use the delta for
8469         the original basetype for this virtual function with thunks.
8470         (build_signature_method_call): We still need to adjust 'this'
8471         with thunks.
8472
8473 Tue May 14 16:27:25 1996  Mike Stump  <mrs@cygnus.com>
8474
8475         * call.c (build_addr_func): New routine.  Used to get the `real'
8476         address of a function or a method.  Needed to avoid getting a
8477         pointer-to-member function.
8478         (build_call): New routine to build CALL_EXPRs.
8479         (build_method_call): Use it.
8480         * cvt.c (convert_to_aggr): Likewise.
8481         * typeck.c (build_function_call_real): Likewise.
8482         * sig.c (build_signature_table_constructor): Use build_addr_func.
8483         * cp-tree.h (build_call, build_addr_func): Declare them.
8484
8485 Tue May 14 12:47:47 1996  Mike Stump  <mrs@cygnus.com>
8486
8487         * cp-tree.h (LOOKUP_AGGR): Remove, unused.
8488         * parse.y: Remove uses of LOOKUP_AGGR.
8489
8490 Tue May 14 12:07:51 1996  Mike Stump  <mrs@cygnus.com>
8491
8492         * *.[chy]: Rename current_class_decl to current_class_ptr, and
8493         C_C_D to current_class_ref.
8494
8495 Mon May 13 16:55:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
8496
8497         * call.c (convert_harshness): Tighten up pointer conversions.
8498
8499 Sat May 11 04:33:50 1996  Doug Evans  <dje@canuck.cygnus.com>
8500
8501         * decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
8502         (finish_file): Likewise.
8503
8504 Fri May 10 11:09:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
8505
8506         * cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
8507
8508         * method.c (emit_thunk): Set flag_omit_frame_pointer in default
8509         code.
8510
8511 Thu May  9 18:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
8512
8513         * decl2.c: Turn on thunks by default where supported.
8514
8515 Tue May  7 20:39:57 1996  Mike Stump  <mrs@cygnus.com>
8516
8517         * cp-tree.h (build_overload_call_maybe): Removed.
8518         * call.c (build_overload_call_real): Invert meaning of last arg to
8519         be require_complete.
8520         (build_overload_call): Likewise.
8521         * typeck.c (build_x_function_call): Use build_overload_call_real
8522         instead of build_overload_call_maybe.
8523
8524 Mon May  6 01:23:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
8525
8526         * decl2.c (finish_file): Don't try to emit functions that haven't
8527         been compiled.
8528
8529 Fri May  3 09:30:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
8530
8531         * decl2.c (finish_vtable_vardecl): Oops.
8532
8533         * decl.c (maybe_push_to_top_level): Do save previous_class_*.
8534         Also store the bindings from previous_class_values.
8535         (pop_from_top_level): Restore them.
8536
8537 Thu May  2 21:56:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
8538
8539         * decl2.c (finish_vtable_vardecl): Only write out vtable if its
8540         symbol has been referenced.
8541         (finish_file): Re-join synthesis/vtable loop with inline emission
8542         loop, disable inlining when an inline is output.
8543
8544 Thu May  2 17:20:02 1996  Mike Stump  <mrs@cygnus.com>
8545
8546         * except.c (init_exception_processing): Setup saved_in_catch.
8547         (push_eh_cleanup): Reset __eh_in_catch.
8548         (expand_start_catch_block): Set __eh_in_catch.
8549
8550 Thu May  2 16:21:17 1996  Mike Stump  <mrs@cygnus.com>
8551
8552         * except.c (push_eh_cleanup): Add tracking for whether or not we
8553         have an active exception object.
8554         (expand_builtin_throw): Use it to make sure a rethrow without an
8555         exception object is caught.
8556
8557 Thu May  2 11:26:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
8558
8559         * decl.c (maybe_push_to_top_level): Clear out class-level bindings
8560         cache.
8561
8562 Wed May  1 11:26:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
8563
8564         * decl2.c (finish_file): Also use sentries for vars with
8565         DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
8566         created).
8567
8568         * lex.c (handle_cp_pragma): Disable #pragma
8569         interface/implementation if SUPPORTS_ONE_ONLY > 1.
8570
8571 Tue Apr 30 11:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
8572
8573         * method.c (emit_thunk): Wrap default case in
8574         temporary/permanent_allocation.
8575
8576         * method.c (make_thunk): Use DECL_ONE_ONLY.
8577         (emit_thunk): Call assemble_end_function.
8578
8579 Mon Apr 29 15:38:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
8580
8581         * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
8582         (import_export_decl): Likewise.
8583         (finish_prevtable_vardecl): Disable vtable hack if
8584         SUPPORTS_ONE_ONLY > 1.
8585
8586 Mon Apr 29 14:32:47 1996  Mike Stump  <mrs@cygnus.com>
8587
8588         * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
8589         PREDECREMENT_EXPRs take two arguments, not one.
8590
8591 Mon Apr 29 00:27:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
8592
8593         * class.c (build_vtable_entry): Don't build thunks for abstract
8594         virtuals.
8595
8596         * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
8597         frontend.
8598
8599 Sat Apr 27 16:45:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
8600
8601         * class.c (set_rtti_entry): Use size_zero_node.
8602         (build_vtable): Likewise.
8603
8604 Sat Apr 27 14:48:57 1996  Jason Merrill  <jason@phydeaux.cygnus.com>
8605
8606         * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
8607         (prepare_fresh_vtable): Likewise.
8608
8609 Fri Apr 26 13:14:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
8610
8611         * method.c (emit_thunk): Call mark_used on the target function.
8612
8613         * call.c (build_method_call): Don't warn about pending templates.
8614
8615 Thu Apr 25 14:55:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8616
8617         * decl2.c (finish_file): Fix list walking logic.
8618
8619         * typeck2.c (check_for_new_type): Only warn if -pedantic.
8620
8621 Wed Apr 24 15:41:15 1996  Bob Manson  <manson@charmed.cygnus.com>
8622
8623         * class.c (finish_struct_1): Remove old code for
8624         dont_allow_type_definitions.
8625         * cp-tree.h: Likewise.
8626         * spew.c: Make sure cp-tree.h is included before parse.h, so the
8627         definition of flagged_type_tree is found before it is used.
8628         * lex.c: Likewise.
8629         * parse.y: Added the ftype member to the type union, and changed a
8630         number of rules to use it instead of ttype. Added calls to
8631         check_for_new_type() as appropriate.
8632         * typeck2.c (check_for_new_type): New function for checking
8633         if a newly defined type appears in the specified tree.
8634         * cp-tree.h: Add new type flagged_type_tree. Add a prototype
8635         for check_for_new_type().
8636
8637 Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
8638
8639         * decl2.c (finish_file): Only use a sentry if the decl is public.
8640
8641         * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
8642         don't pass LOOKUP_ONLYCONVERTING.
8643
8644 Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
8645
8646         * typeck.c (common_type): Fix the ARRAY_TYPE case so it
8647         properly keeps track of const and volatile type modifiers.
8648
8649 Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
8650
8651         * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
8652         * pt.c (comp_template_args): Use it.
8653
8654         * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
8655         assemble_external for artificial function decls.
8656
8657         * decl.c (cp_finish_decl): Oops.
8658
8659 Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
8660
8661         * decl2.c (import_export_decl): Put static data member templates
8662         into common storage, or make them weak, depending on whether they
8663         are dynamically or statically initialized.
8664         (get_sentry): New function.
8665         (finish_file): Do import_export_decl for static data members before
8666         building the init/fini functions.  Don't init/fini a variable that's
8667         EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
8668         push/pop_temp_slots.
8669         * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
8670         expand_static_init thang.
8671         * method.c (get_id_2): New function.
8672
8673 Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
8674
8675         * parse.y (empty_parms): Make sure we use C++-style prototypes
8676         when we're declaring member functions.
8677
8678 Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
8679
8680         * Makefile.in (CONFLICTS): 16 s/r conflicts.
8681         * parse.y (self_template_type): New nonterminal.
8682
8683 Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
8684
8685         * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
8686         name.
8687         * parse.y (base_class.1): Allow 'typename foo::bar'.
8688
8689         * lex.c (check_newline): Remove #pragma code that plays with the
8690         input stream, since we now deal with tokens.  Clear nextchar when
8691         we're done.
8692         (handle_cp_pragma): Use real_yylex.
8693         (handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
8694         in one place.
8695
8696         * lex.c (check_for_missing_semicolon): Handle SELFNAME.
8697
8698         * lex.c (handle_cp_pragma): Fix "#pragma implementation".
8699
8700 Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
8701
8702         * parse.y: New token SELFNAME for potential constructor.
8703         * spew.c (yylex): Handle it.
8704         * lex.c (identifier_type): Produce it.
8705
8706         * parse.y (complete_type_name): In :: case, don't push class binding.
8707         (complex_type_name): Likewise.
8708
8709 Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
8710
8711         * typeck.c (build_reinterpret_cast): Handle pointer to member
8712         functions.
8713
8714 Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8715
8716         * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
8717         pragmas.
8718         (check_newline): Put the vtable/unit/implementation/interface pragma
8719         code into handle_cp_pragma, replacing it with a call.
8720         (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
8721         args.  Get the next token after handling the pragma token.
8722
8723 Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
8724
8725         * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
8726         (convert_to_pointer_force): Likewise.
8727
8728         * init.c (build_new): Fix array new without -fcheck-new.
8729
8730 Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
8731
8732         * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
8733         tree.c: Lose TYPE_NESTED_NAME.
8734
8735         * parse.y (nested_name_specifier_1): Don't treat non-identifiers
8736         as identifiers.
8737
8738         * tree.def: Add VEC_INIT_EXPR.
8739         * expr.c (cplus_expand_expr): Handle it.
8740         * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
8741         the extra file-scope symbol nastiness.
8742
8743 Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
8744
8745         * method.c (make_thunk): Thunks are static.
8746         (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
8747
8748         * decl2.c (mark_vtable_entries): Emit thunks as needed.
8749         (finish_file): Don't emit them here.
8750
8751 Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
8752
8753         * rtti.c (build_dynamic_cast): Handle null pointers.
8754         (ifnonnull): New function.
8755
8756 Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
8757
8758         * call.c (build_method_call): Remember the original basetype we
8759         were called with. Give an error message instead of trying
8760         (incorrectly) to call a non-static member function through a
8761         non-inherited class.
8762
8763         * search.c (expand_upcast_fixups): Mark the new fixup as
8764         DECL_ARTIFICIAL.
8765
8766 Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8767
8768         * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
8769
8770         * class.c (set_rtti_entry): Fix for thunks.
8771
8772         * decl2.c (import_export_decl): Still emit typeinfo fns for
8773         cv-variants of builtin types.
8774
8775         * rtti.c (expand_class_desc): Set up base_info_type_node here.
8776         (init_rtti_processing): Instead of here.
8777
8778 Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
8779
8780         * rtti.c (init_rtti_processing): Do init regardless of -frtti.
8781         (build_typeid): Only complain about taking dynamic typeid without
8782         -frtti.
8783
8784         * decl2.c: flag_rtti defaults to 1.
8785
8786         * rtti.c (get_tinfo_var): The general class case is now smaller.
8787         (init_rtti_processing): Pack the latter three fields of base_info
8788         into 32 bits.
8789
8790 Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
8791
8792         * init.c (expand_member_init): Don't dump if name is NULL_TREE.
8793
8794 Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
8795
8796         * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
8797         (push_memoized_context): Split out code to undefer pop_type_level to
8798         (clear_memoized_cache): here.
8799         (pop_memoized_context): We can only handle one layer of deferral of
8800         pop_type_level so clear the cache, if there was a previous level.
8801
8802 Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8803
8804         * rtti.c (init_rtti_processing): Build up base_info_type_node.
8805         (expand_class_desc): Use one pointer to an array of base_info
8806         structs, passed using a CONSTRUCTOR.
8807
8808 Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
8809
8810         * class.c (build_vbase_path): Remove block extern for
8811         flag_assume_nonnull_objects here.
8812         (build_vfn_ref): Split out functionality into build_vtbl_ref.
8813         (build_vtbl_ref): New routine.
8814         (build_vtable): Set up rtti info here.
8815         (add_virtual_function): Note in CLASSTYPE_RTTI the best
8816         place where we can get the rtti pointers from to avoid having to
8817         search around for a place.
8818         (finish_base_struct): Likewise.
8819         (finish_struct_1): Likewise.  Never create totally new vtables
8820         with totally new vtable pointers for rtti.  Disable code to layout
8821         vtable pointers better until we want to break binary
8822         compatibility.
8823         * rtti.c (build_headof_sub): New routine to convert down to a
8824         sub-object that has an rtti pointer in the vtable.
8825         (build_headof): Use it.  Also, use build_vtbl_ref now to be more
8826         maintainable.
8827         (build_dynamic_cast): Make sure we have saved it, if we need to.
8828         * search.c (dfs_init_vbase_pointers): Disable code that deals with
8829         a more efficient vtable layout, enable later.
8830         * call.c (flag_assume_nonnull_objects): Moved declaration to
8831         * cp-tree.h: here.  Declare build_vtbl_ref.
8832         * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
8833         function calls that want a tree.
8834
8835 Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
8836
8837         * rtti.c (build_dynamic_cast): Handle downcasting to X* given
8838         other X subobjects in the most derived type.  Ack.
8839
8840         * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
8841         get_typeid will do it for us.
8842         (get_typeid_1): Break out call-building for expand_*_desc to use.
8843         (get_typeid): Call it.
8844         (expand_*_desc): Likewise.
8845         * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
8846         and void *.
8847         (init_decl_processing): Lose builtin_type_tdescs lossage.
8848         * decl2.c (finish_vtable_vardecl): Remove obsolete code.
8849
8850 Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
8851
8852         * pt.c (tsubst): When calling set_nested_typename, use
8853         TYPE_NESTED_NAME (current_class_type) instead of
8854         current_class_name.
8855
8856         * decl.c (pushdecl): Likewise.
8857         (pushdecl_class_level): Likewise.
8858         (grokdeclarator): Use NULL_TREE instead of 0 in the call to
8859         set_nested_typename.
8860
8861 Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
8862
8863         * rtti.c (synthesize_tinfo_fn): Handle arrays.
8864
8865         * cp-tree.h (DECL_REALLY_EXTERN): New macro.
8866
8867 Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
8868
8869         * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
8870         (init_rtti_processing): Lose bad_cast_type.
8871         (build_dynamic_cast): Use throw_bad_cast.
8872
8873         * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
8874
8875         * decl2.c (finish_file): Don't synthesize artificial functions
8876         that are external and not inline.
8877
8878         * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
8879
8880         * decl2.c (finish_file): Handle having new inlines added to
8881         saved_inlines by synthesis.
8882
8883         * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
8884
8885 Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8886
8887         RTTI rewrite to initialize nodes as needed, not require that
8888         users #include <typeinfo>, complete functionality and reduce wasted 
8889         space.
8890         * rtti.c (init_rtti_processing): New fn.
8891         (build_typeid): The vtable entry is now a function.
8892         (get_tinfo_var): New fn.
8893         (get_tinfo_fn): Likewise.
8894         (get_typeid): Use it.
8895         (build_dynamic_cast): Declare and use entry point __dynamic_cast.
8896         (build_*_desc): Rename to expand_*_desc and rewrite to use entry
8897         points __rtti_*.
8898         (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
8899         (synthesize_tinfo_fn): New fn.
8900         * method.c (build_t_desc_overload): Lose.
8901         (build_overload_with_type): More generic.
8902         * decl.c (init_decl_processing): Call init_rtti_processing.
8903         * class.c (set_rtti_entry): Use get_tinfo_fn.
8904         * decl2.c (mark_vtable_entries): Mark the rtti function.
8905         (finish_prevtable_vardecl): Don't build_t_desc.
8906         (import_export_decl): Handle tinfo functions.
8907         (finish_file): Likewise.
8908         * typeck.c (inline_conversion): New fn.
8909         (build_function_call_real): Use it.
8910         * cp-tree.h: Add decls.
8911
8912         * method.c (hack_identifier): Also convert component_refs from
8913         references.
8914
8915         * lex.c (cons_up_default_function): Use the type, not the name, in
8916         declspecs.
8917
8918         * decl2.c (import_export_vtable): Fix weak vtables.
8919
8920 Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
8921
8922         * search.c (get_base_distance_recursive): Fix access checks for
8923         protected bases.
8924
8925 Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8926
8927         * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
8928         cp-tree.h.
8929         (convert_harshness): Add prototypes wrapped by PROTO.
8930         * decl2.c (grok_function_init): Likewise.
8931         (do_toplevel_using_decl): Change to void return type.
8932         * class.c (build_vtable_entry): Remove decl of make_thunk.
8933         (merge_overrides): Fix order of arg definitions.
8934         (finish_vtbls): Likewise.
8935         (fixup_vtable_deltas): Likewise.
8936         (modify_all_direct_vtables): Likewise.
8937         (modify_all_indirect_vtables): Likewise.
8938         * search.c (get_base_distance_recursive): Likewise.
8939         (get_abstract_virtuals_1): Likewise.
8940         (fixup_virtual_upcast_offsets): Likewise.
8941         (lookup_fnfields_1): Add prototypes wrapped by PROTO.
8942         * init.c (perform_member_init): Fix order of arg definitions.
8943         (expand_aggr_init_1): Add prototypes wrapped by PROTO.
8944         * cp-tree.h (make_thunk): Add decl.
8945         (overload_template_name, push_template_decl): Add decls.
8946         (do_toplevel_using_decl): Change to void return type.
8947         (vec_binfo_member): Add decl.
8948
8949 Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8950
8951         * typeck.c (mark_addressable, convert_for_assignment,
8952         convert_for_initialization, pointer_int_sum, pointer_diff,
8953         unary_complex_lvalue): Add prototypes wrapped by PROTO.
8954         (convert_sequence): #if 0 fn decl, since definition also is.
8955
8956 Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
8957
8958         * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
8959         cast to pointer types for type searching.
8960
8961 Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8962
8963         * typeck.c (get_delta_difference): Use cp_error, not error, in the
8964         case where BINFO == 0.
8965
8966 Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
8967
8968         * call.c (build_method_call): Fix wording of error messages so
8969         constructors come out right.
8970
8971 Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
8972
8973         * decl.c (push_overloaded_decl): Don't warn about hidden
8974         constructors when both the type and the function are declared
8975         in a system header file.
8976
8977 Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
8978
8979         * class.c (finish_struct_1): Propagate the TYPE_PACKED
8980         flag for the type to the type's fields.
8981
8982 Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8983
8984         * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
8985
8986 Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
8987
8988         * class.c (base_info, finish_base_struct): Replace 
8989         needs_virtual_dtor with base_has_virtual.
8990
8991         (finish_struct_1): Remove the old code that tried to make default
8992         destructors virtual. Use base_has_virtual when checking if we need
8993         to add a vtable entry for the rtti code.
8994
8995 Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
8996
8997         * pt.c (push_template_decl): Complain about template decl with
8998         inappropriate declaration.
8999
9000 Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
9001
9002         * typeck.c (build_x_unary_op): Remove bogus check for taking
9003         the address of a member function.
9004
9005 Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
9006
9007         * parse.y (constructor_declarator): Only push the class if
9008         we are not already in the class.
9009
9010 Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
9011
9012         * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
9013         Add additional argument to INIT_CUMULATIVE_ARGS.
9014
9015 Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
9016
9017         * decl.c (shadow_tag): Fix error about anon union with methods.
9018
9019         * parse.y (self_reference): Only generate a self-reference if this
9020         is a non-template class.
9021         (opt.component_decl_list): Only use it if it was generated.
9022
9023         * parse.y (component_decl_1): Use constructor_declarator.
9024         (fn.def2): Likewise.
9025         (notype_component_declarator0): Likewise.
9026
9027 Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
9028
9029         * typeck.c (build_x_unary_op): Add checks for taking the address
9030         of a TARGET_EXPR or of a member function, and give appropriate
9031         warnings.
9032
9033 Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
9034
9035         * pt.c (process_template_parm): Allow template type parms to be
9036         used as types for template const parms.
9037
9038 Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
9039
9040         * init.c (expand_vec_init): Ensure the eh cleanups are on the
9041         function_obstack.
9042
9043 Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
9044
9045         * decl.c (lookup_name_real): Be even more picky about the
9046         ambiguous lookup warning.
9047         (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
9048         * parse.y (constructor_declarator): Rather than here.
9049
9050         * parse.y (constructor_declarator): New nonterminal.
9051         (fn.def1): Use it.
9052         (explicit_instantiation): Likewise.
9053
9054 Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9055
9056         Add implicit declaration of class name at class scope.
9057         * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
9058         * parse.y (self_reference): New nonterminal.
9059         (opt.component_decl_list): Use it.
9060         (fn.def1): Add nested_name_specifier type_name cases.
9061         * class.c (build_self_reference): New function.
9062         (finish_struct): Handle access_default later, move self-reference
9063         decl to the end.
9064         * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
9065         * cp-tree.h: Adjust.
9066
9067         * pt.c (do_function_instantiation): Separate handling of member
9068         functions and non-member functions properly.
9069
9070 Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
9071
9072         * pt.c (process_template_parm): Improve error for 'volatile class K'.
9073
9074         * class.c (finish_struct_1): Check the right slot for destructors.
9075
9076         * decl.c (start_enum): Complain about enum templates.
9077
9078 Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
9079
9080         * init.c (resolve_offset_ref): Offset pointers to member data by one.
9081         * typeck.c (unary_complex_lvalue): Likewise.
9082
9083 Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
9084
9085         * typeck.c (c_expand_return): Check for a returned local
9086         array name, similar to the check for an ADDR_EXPR.
9087
9088 Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
9089
9090         * decl.c (cp_finish_decl): Don't build cleanups for static
9091         variables here.
9092
9093 Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
9094
9095         * typeck.c (build_modify_expr): Fix error messages to be more
9096         accurate.
9097         * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
9098         assignment operators.
9099         * error.c (assop_as_string): Likewise.  Add support for `%Q' for
9100         assignment operators.
9101
9102 Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
9103
9104         * decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
9105         give an error if initialized.  Pedwarn about nested type with the
9106         same name as its enclosing class.
9107
9108         * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
9109
9110         * typeck.c (require_complete_type): Be sure to instantiate the
9111         MAIN_VARIANT of the type.
9112
9113         * decl2.c (finish_file): Instantiate pending templates before
9114         processing static constructors and destructors.
9115
9116         * pt.c (instantiate_decl): Don't instantiate functions at toplevel
9117         unless at_eof.
9118
9119 Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
9120
9121         * decl2.c (delete_sanity): If error_mark_node is passed
9122         in as an expression, quit while we're ahead.
9123
9124         * decl.c (grokdeclarator): Give an error message if `friend'
9125         is combined with any storage class specifiers.
9126
9127 Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
9128
9129         * parse.y (named_complex_class_head_sans_basetype): Don't crash on
9130         definition of nonexistent nested type.
9131
9132         * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
9133         not to say 'typedef'.
9134
9135 Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9136
9137         * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
9138         * search.c (dfs_walk, dfs_init_vbase_pointers,
9139         expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
9140         (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
9141
9142 Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
9143
9144         * except.c (build_throw): Support minimal parse.
9145         * pt.c (tsubst_copy): Support THROW_EXPR.
9146         * decl2.c (build_expr_from_tree): Likewise.
9147
9148         * pt.c (mangle_class_name_for_template): Always allocate
9149         scratch_firstobj.
9150
9151 Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
9152
9153         * cvt.c (cp_convert_to_pointer): Give an appropriate error
9154         when trying to cast from an incomplete type.
9155
9156 Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9157
9158         * pt.c (instantiate_class_template): Don't bother setting up
9159         CLASSTYPE_TAGS explicitly, as the nested types will add
9160         themselves.
9161
9162 Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
9163
9164         * decl.c (shadow_tag): Remove old error check for usage of
9165         an enum without a previous declaration.
9166         (xref_tag): Add error message about usage of enums without a
9167         previous declaration.
9168
9169 Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
9170
9171         * lex.c (do_identifier): Only do name consistency check if we're
9172         parsing.
9173
9174         * pt.c (push_template_decl): Don't crash if we get a member defn
9175         that doesn't match.
9176
9177         * decl.c (xref_tag_from_type): New function to do an xref without
9178         always having to figure out code_type_node.
9179         * cp-tree.h: Declare it.
9180         * pt.c (instantiate_class_template): Use it for friend classes.
9181         (lookup_template_class): Use it.
9182
9183         * typeck2.c (build_functional_cast): Pull out a single parm before
9184         passing it to build_c_cast.
9185
9186 Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
9187
9188         * expr.c (do_case): Give an error message if a pointer is
9189         given as a case value.
9190
9191 Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
9192
9193         * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
9194         an overload list.
9195
9196         * lex.c (cons_up_default_function): Really, now, interface hackery
9197         does not apply to synthesized methods.
9198
9199 Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
9200
9201         * call.c (build_method_call): Ctors and dtors now have special names
9202         with respect to lookups.
9203         * class.c (add_method): Likewise.
9204         (grow_method): Likewise.
9205         (finish_struct_methods): Likewise.
9206         (warn_hidden): Likewise.
9207         (finish_struct_1): Likewise.
9208         * cvt.c (convert_to_reference): Likewise.
9209         (convert_to_aggr): Likewise.
9210         (cp_convert): Likewise.
9211         * decl2.c (check_classfn): Likewise.
9212         * init.c (expand_member_init): Likewise.
9213         (expand_default_init): Likewise.
9214         (expand_aggr_init_1): Likewise.
9215         (build_offset_ref): Likewise.
9216         (build_new): Likewise.
9217         (build_delete): Likewise.
9218         * lex.c (do_inline_function_hair): Likewise.
9219         * search.c (lookup_field_1): Likewise.
9220         (lookup_fnfields_here): Likewise.
9221         (lookup_field): Likewise.
9222         (lookup_fnfields): Likewise.
9223         (get_virtual_destructor): Likewise.
9224         (dfs_debug_mark): Likewise.
9225         (dfs_pushdecls): Likewise.
9226         (dfs_compress_decls): Likewise.
9227         * tree.c (layout_basetypes): Likewise.
9228         * typeck.c (build_component_ref): Likewise.
9229         (build_x_function_call): Likewise.
9230         (build_modify_expr): Likewise.
9231         (convert_for_initialization): Likewise.
9232         (build_functional_cast): Likewise.
9233         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
9234         (CTOR_NAME): New.
9235         (DTOR_NAME): New.
9236         * decl.c (ctor_identifier): New.
9237         (dtor_identifier): New.
9238         (init_decl_processing): Set them.
9239
9240 Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
9241
9242         * typeck.c (build_component_ref): Don't get confused by fields whose
9243         context has no type name, like pointer to member functions.
9244
9245 Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
9246
9247         * decl.c (grokdeclarator): Handle typedef without declarator.
9248
9249         * pt.c (tsubst): Handle SCOPE_REF in declarator.
9250
9251         * parse.y (bad_parm): Catch another case of missing `typename'.
9252
9253         * lex.c (yyprint): Handle TYPE_DECLs.
9254
9255         * decl.c (start_function): Don't try to be clever.
9256
9257         * lex.c: Lose compiler_error_with_decl.
9258         * typeck2.c: Lose error_with_aggr_type.
9259         (incomplete_type_error): Use cp_* instead of old functions.
9260         (readonly_error): Likewise.
9261         * typeck.c (convert_arguments): Likewise.
9262         * search.c (lookup_nested_field): Likewise.
9263         * method.c (make_thunk): Likewise.
9264         * decl.c (grokparms): Likewise.
9265         * cp-tree.h: Update.
9266
9267         * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
9268         and value.
9269
9270 Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
9271
9272         * method.c (build_opfncall): When deleting a pointer to an
9273         array, build a new pointer to the tree past any ARRAY_TYPE
9274         nodes.
9275
9276 Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9277
9278         * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
9279
9280 Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
9281
9282         * pt.c (instantiate_decl): Only call import_export_decl if at_eof
9283         and ! DECL_INLINE.
9284
9285         * decl.c (finish_function): Don't set nested based on
9286         hack_decl_function_context.
9287         * parse.y (function_try_block): Check for nested function.
9288         (pending_inlines): Likewise.
9289
9290         * decl2.c (build_expr_from_tree): If a unary op already has a
9291         type, just return it.
9292
9293         * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
9294
9295         * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
9296         (finish_file): Check the return value of walk_vtables.
9297         (finish_prevtable_vardecl): Return int.
9298         (finish_vtable_vardecl): Likewise.
9299         (prune_vtable_vardecl): Likewise.
9300         * lex.c (set_vardecl_interface_info): Likewise.
9301         * cp-tree.h: Adjust return types.
9302
9303         * class.c (delete_duplicate_fields_1): Don't complain about
9304         duplicate nested types if they're the same type.
9305         (finish_struct): Remove check for duplicate.
9306         * decl2.c (grokfield): Don't check for typedef of anonymous type.
9307
9308 Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
9309
9310         * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
9311
9312         * decl.c (grokdeclarator): Lose special handling of class-level
9313         typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
9314         SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
9315
9316         * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
9317
9318         * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
9319
9320         * search.c (compute_access): Fix handling of anonymous union
9321         members.
9322         * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
9323         from anonymous unions to their members.
9324
9325         * typeck.c (build_x_function_call): For static member functions,
9326         hand off to build_member_call.
9327
9328 Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
9329
9330         * typeck.c (build_component_ref): Handle OFFSET_REFs.
9331
9332         * init.c (expand_vec_init): Fix init == 0 case.
9333
9334 Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
9335
9336         * init.c (build_new): Pedwarn about init and array new.
9337         (expand_vec_init): Handle lists, use convert_for_initialization.
9338
9339         * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
9340         when converting to an aggregate type.
9341         * cvt.c (cp_convert): Pass it through.
9342
9343         * typeck.c (build_conditional_expr): Handle user-defined
9344         conversions to slightly different types.
9345
9346         * decl.c (grokdeclarator): Force an array type in a parm to be
9347         permanent.
9348
9349         * decl2.c (do_using_directive): Sorry.
9350         (do_namespace_alias): Likewise.
9351         * lex.c (real_yylex): Warn about using the `namespace' keyword.
9352
9353 Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
9354
9355         * parse.y (datadef): Move call to note_list_got_semicolon up.
9356
9357 Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
9358
9359         * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
9360
9361 Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
9362
9363         * decl.c (cp_finish_decl): The exception regions have to be
9364         nested, not overlapping.  We start the exception region for a
9365         decl, after it has been fully built, and all temporaries for it
9366         have been cleaned up.
9367
9368 Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
9369
9370         * tree.c (vec_binfo_member): Don't core dump if we have no bases.
9371
9372 Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
9373
9374         * tree.def: Add RETURN_INIT.
9375         * pt.c (instantiate_decl): Handle RETURN_INIT.
9376         * decl.c (store_return_init): Handle minimal_parse_mode.
9377
9378         * tree.c (cp_build_type_variant): Just return an error_mark_node.
9379         * decl.c (make_typename_type): Don't try to get the file and line
9380         of an identifier.
9381         * typeck.c (comptypes): Handle TYPENAME_TYPE.
9382
9383 Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
9384
9385         * decl.c (poplevel): Make sure we clear out and restore old local
9386         non-VAR_DECL values by default when they go out of scope.
9387
9388 Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
9389
9390         * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
9391         referring to addresses of variables and functions.
9392
9393         * error.c (dump_expr): Support SIZEOF_EXPR.
9394
9395         * init.c (do_friend): Use the return value of check_classfn.
9396
9397         * typeck.c (convert_arguments): Call complete_type.
9398
9399         * method.c (hack_identifier): After giving an error, set value to
9400         error_mark_node.
9401
9402 Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
9403
9404         * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
9405         lossage for local classes.
9406         * cp-tree.h: Declare it.
9407         * decl.c (lookup_name_real): Evil, painful hack for local classes.
9408         (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
9409         Use hack_decl_function_context.
9410         (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
9411         (start_function): Use hack_decl_function_context.
9412         (finish_function): Likewise.
9413         * method.c (synthesize_method): Likewise.
9414         * lex.c (process_next_inline): Likewise.
9415         (do_pending_inlines): Likewise.
9416         * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
9417         done with it.
9418
9419 Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
9420
9421         * sig.c (build_signature_pointer_or_reference_type): Align
9422         signature pointers/references on 8-byte boundaries so they can be
9423         grabbed 2 words at a time on a Sparc.
9424
9425 Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
9426
9427         * method.c (hack_identifier): Requiring a static chain is now a
9428         hard error.
9429         * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
9430         functions.
9431
9432 Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9433
9434         * init.c (build_offset_ref): Call complete_type.
9435
9436         * decl.c (pop_from_top_level): Always pop previous_class_type.
9437
9438         * parse.y: Handle multiple decls in a for-init-statement.
9439         * pt.c (tsubst_expr): Likewise.
9440
9441         * pt.c (tsubst): Use tsubst_expr for the second operand of an
9442         ARRAY_REF.
9443
9444         * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
9445         (poplevel_class): Set it here.
9446         (pop_from_top_level): Pop it here if we're returning to class scope.
9447         * class.c (pushclass): Don't set it here.
9448
9449         * decl.c (maybe_push_to_top_level): Save current_template_parms,
9450         and clear it if !pseudo.
9451         (pop_from_top_level): Restore it.
9452
9453         * decl2.c (finish_file): Push the dummy each time we walk the list
9454         of vtables.
9455
9456         * error.c (dump_expr): Support LOOKUP_EXPR and actually do
9457         something for CAST_EXPR.
9458         
9459 Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
9460
9461         * cvt.c (cp_convert): Warn about implicit conversion of the
9462         address of a function to bool, as it is always true.
9463
9464 Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
9465
9466         * typeck.c (c_expand_return): Fix warning for local externs returned.
9467
9468 Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
9469
9470         * tree.c (mapcar): Propagate const and volatile properly.
9471
9472         * typeck.c (complete_type): Be sure to instantiate the
9473         MAIN_VARIANT of the type.
9474
9475         * method.c (synthesize_method): Class interface hackery does not
9476         apply to synthesized methods.
9477
9478 Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
9479
9480         * pt.c (comp_template_args): Use comptypes rather than just
9481         checking for TEMPLATE_TYPE_PARM equivalence.
9482
9483         * typeck.c (build_x_function_call): Call complete_type before
9484         checking TYPE_OVERLOADS_CALL_EXPR.
9485
9486 Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
9487
9488         * g++.c (main): Check also for new define ALT_LIBM.
9489
9490 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9491
9492         * pt.c (instantiate_class_template): If we don't have a pattern
9493         yet, that's OK.
9494         (coerce_template_parms): If we see a local class, bail.
9495
9496         * decl.c (grok_reference_init): Make sure there's a type before
9497         checking its code.
9498
9499         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
9500         (push_template_decl): Likewise.
9501
9502         * parse.y (named_class_head): Set
9503         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
9504
9505         * decl.c (xref_tag): Diagnose redeclaration of template
9506         type-parameter name.
9507
9508         * error.c (dump_type): Handle anonymous template type parms.
9509
9510         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
9511         TYPE_STUB_DECL.
9512         (coerce_template_parms): Likewise.
9513
9514 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
9515
9516         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
9517         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
9518
9519 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
9520
9521         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
9522         before trying to get its STUB_DECL.
9523         (coerce_template_parms): Likewise.
9524
9525         * parse.y (template_type_parm): If they didn't use 'class',
9526         pretend they did after giving an error.
9527
9528         * pt.c (coerce_template_parms): Diagnose use of local class.
9529
9530         * decl.c (grok_reference_init): Use instantiate_type.
9531
9532         * error.c (dump_expr): Handle TEMPLATE_DECLs.
9533
9534         * parse.y (named_class_head): Diagnose mismatching types and tags.
9535
9536         * decl.c (pushdecl): Type decls and class templates clash with
9537         artificial type decls, not hide them.
9538
9539         * decl.c (redeclaration_error_message): Diagnose redefinition of
9540         templates properly.
9541         (duplicate_decls): Diagnose disallowed overloads for template
9542         functions, too.
9543
9544         * decl.c (start_decl): Call complete_type before checking for a
9545         destructor.
9546
9547         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
9548
9549         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
9550
9551 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
9552
9553         * decl.c (grok_op_properties): Don't check for operator++(int) in
9554         a template.
9555
9556         * tree.c (perm_manip): Return a copy of variable and function
9557         decls with external linkage.
9558
9559         * tree.def: Change some of the min tree codes to type "1".
9560         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
9561         * method.c (build_overload_int): Emit something arbitrary for
9562         anything but an INTEGER_CST if we're in a template.
9563
9564         * decl.c (cp_finish_decl): Call complete_type before deciding
9565         whether or not to lay out the decl.
9566
9567         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
9568
9569 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
9570
9571         * typeck2.c (build_x_arrow): Call complete_type.
9572
9573         * pt.c (add_pending_template): Broken out.
9574         (lookup_template_class): If -fexternal-templates, call it for all
9575         the methods of implemented types.
9576         (instantiate_class_template): Instead of instantiating them here.
9577         (instantiate_decl): Handle -fexternal-templates earlier.
9578
9579 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9580
9581         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
9582         memoized lookup stuff inside GATHER_STATISTICS.
9583
9584 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
9585
9586         * decl.c (start_decl): Complain about array of incomplete type
9587         here.
9588         (grokdeclarator): Not here.
9589
9590         * parse.y (template_parm): Expand full_parm inline so we can set
9591         the rule's precedence.
9592
9593         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
9594         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
9595         * decl2.c (grokbitfield): Don't check for integer constant here.
9596         * class.c (finish_struct_1): Check here.
9597
9598         * decl.c (define_label): Make the min decl go on permanent_obstack.
9599
9600         * pt.c (unify): Don't handle CONST_DECLs.
9601         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
9602         (tsubst_copy): Likewise.
9603
9604         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
9605         CONST_DECL for a template parm.
9606
9607 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
9608
9609         * decl.c (grokdeclarator): Complain about array of incomplete type
9610         here.
9611         (start_decl_1): Not here.
9612
9613         * pt.c (tsubst): Handle pointer-to-function declarators.
9614
9615         * method.c (hack_identifier): If pedantic, diagnose local class
9616         methods that require a static chain.
9617
9618         * decl.c (grok_op_properties): No longer static.
9619         * cp-tree.h: Declare it.
9620         * pt.c (tsubst): Call it for operators.
9621         Use tsubst_copy for TREE_VECs.
9622
9623         * parse.y (template_arg): The expr has precedence like '>'.
9624
9625 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
9626
9627         * pt.c (coerce_template_parms): Don't coerce an expression using
9628         template parms.
9629         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
9630         (tsubst): Don't use build_index_2_type if the max_value uses template
9631         parms.
9632         * method.c (build_overload_int): Emit something arbitrary for an
9633         expression using template parms.
9634
9635         * parse.y (template_close_bracket): New non-terminal to catch use
9636         of '>>' instead of '> >' in template class names.
9637         (template_type): Use it.
9638         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
9639
9640         * tree.def: Add CAST_EXPR.
9641         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
9642         CONVERT_EXPR for minimal_parse_mode.
9643         * typeck.c (build_c_cast): Likewise.
9644         * pt.c (tsubst_copy): Likewise.
9645         * decl2.c (build_expr_from_tree): Likewise.
9646         * error.c (dump_expr): Likewise.
9647
9648 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9649
9650         * except.c (SetTerminate, SetUnexpected): Put back global vars.
9651         (init_exception_processing): Put back decl/init of
9652         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
9653         fns from libstdc++.
9654
9655         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
9656         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
9657         Delete unused fns.
9658         * cp-tree.h (declare_uninstantiated_type_level,
9659         uninstantiated_type_level_p): Delete prototypes.
9660
9661 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
9662
9663         * pt.c (tsubst_expr): Add default return.
9664
9665 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9666
9667         * error.c (fndecl_as_string): Delete unused arg CNAME.
9668         * sig.c (build_signature_table_constructor,
9669         build_signature_method_call): Fix calls.
9670
9671         * class.c (the_null_vtable_entry): Delete var definition.
9672         (init_class_processing): Delete tree the_null_vtable_entry init.
9673         * decl.c (no_print_{functions, builtins}): Declare as static.
9674         (__tp_desc_type_node): #if 0 var definition.
9675         (init_type_desc): #if 0 init of __tp_desc_type_node.
9676         (vb_off_identifier): Move var decl into init_decl_processing.
9677         (current_function_assigns_this): Declare as static.
9678         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
9679         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
9680         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
9681         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
9682         * init.c (BI_header_type, BI_header_size): Declare as static.
9683         * pt.c (template_classes): Delete unused var.
9684         (add_pending_template): Delete decl for non-existent fn.
9685         (lookup_template_class): Delete vars CODE and TAG_CODE.
9686         (instantiate_template): Delete unused var TARGS.
9687         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
9688         Delete decls.
9689         (__tp_desc_type_node): #if 0 var decl.
9690         (fndecl_as_string): Fix prototype.
9691
9692 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
9693
9694         * tree.def: Add GOTO_STMT.
9695         * pt.c (tsubst_expr): Support goto and labels.
9696         * decl.c (define_label): Support minimal parsing.
9697         * parse.y (simple_stmt): Likewise.
9698
9699 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9700
9701         * xref.c (GNU_xref_member): Only define/set var I if
9702         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
9703         used.
9704         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
9705         (GNU_xref_end): Fix call.
9706         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
9707         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
9708
9709         * tree.c (build_exception_variant): Delete unused vars I, A, T,
9710         T2, and CNAME.
9711         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
9712         (mapcar): Delete unused var CODE.
9713         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
9714         (break_out_cleanups): Fix call.
9715         (bot_manip): Likewise.
9716         * call.c (build_method_call): Likewise.
9717         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
9718         Likewise.
9719         * typeck.c (unary_complex_lvalue, build_modify_expr,
9720         convert_for_initialization): Likewise.
9721         * typeck2.c (build_functional_cast): Likewise.
9722         * cp-tree.h (build_cplus_new): Fix prototype.
9723
9724         * repo.c (open_repo_file): Delete unused var Q.
9725         (repo_compile_flags, repo_template_declared,
9726         repo_template_defined, repo_class_defined, repo_inline_used,
9727         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
9728         (repo_get_id, repo_vtable_used): Declare as static. 
9729         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
9730         prototypes.
9731
9732 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
9733
9734         * parse.y (pending_inlines): Add function_try_block case.
9735
9736         * pt.c (unify): Fix for template const parms.
9737
9738 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9739
9740         * lex.c (extract_interface_info): Delete forward decl.
9741         (default_copy_constructor_body, default_assign_ref_body): Delete
9742         decls for non-existent functions.
9743         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
9744         (init_lex): Delete setting them.
9745         (cons_up_default_function): Delete unused vars FUNC_BUF,
9746         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
9747         #if 0'd synth code.
9748         (toplevel, expression_obstack): Delete unused extern decls.
9749         (tree_node_kind): Delete unused enum.
9750         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
9751         GATHER_STATISTICS.
9752         (tree_node_kind_names): Delete unused extern decl.
9753         (synth_obstack): Delete unused var.
9754         (init_lex): Don't set it.
9755         (init_parse): Add decl before use.
9756         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
9757         (current_unit_{name, language}): Delete unused vars. 
9758         (check_newline): Don't bother setting them, just accept the #pragma.
9759         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
9760         (current_unit_{name, language}): Delete decls.
9761
9762         * search.c: Wrap all of the memoized functions, macros, and
9763         variables inside #ifdef GATHER_STATISTICS.
9764         (lookup_field, lookup_fnfields): Likewise.
9765         (init_search_processing): Likewise.
9766         (reinit_search_statistics): Wrap whole function.
9767         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
9768
9769         * decl.c (finish_function): Only call pop_memoized_context if
9770         GATHER_STATISTICS is defined.
9771         (start_function): Likewise for push_memoized_context.
9772         * class.c (pushclass, popclass): Likewise.
9773
9774         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
9775         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
9776
9777         * cvt.c (cp_convert): Delete unused local var FORM.
9778         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
9779         prototypes.
9780
9781 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
9782
9783         * pt.c (do_poplevel): Oops; really return what we get from
9784         poplevel this time.
9785
9786 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9787
9788         * cp-tree.h (is_aggr_type): Add prototype.
9789
9790         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
9791         * method.c ({push,pop}_cp_function_context): Delete decls.
9792         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
9793         (SetUnexpected, SetTerminate): Delete unused vars.
9794         (init_exception_processing): Don't set SetUnexpected or
9795         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
9796         (output_exception_table_entry): Delete unused array LABEL.
9797         (expand_internal_throw): Delete unused var PARAMS.
9798         (expand_start_catch_block): Delete unused var CLEANUP.
9799         (emit_exception_table): Delete unused var EH_NODE_DECL.
9800         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
9801         GOTO_UNWIND_AND_THROW.  Don't set them.
9802         (end_eh_unwinder): Add top decl.
9803         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
9804         (exception_section, push_rtl_perm, do_function_call,
9805         lang_interim_eh, push_eh_cleanup, eh_outer_context,
9806         expand_end_eh_spec, end_eh_unwinder): Declare as static.
9807         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
9808         throw_used): Likewise.
9809         * cp-tree.h (expand_end_eh_spec): Delete prototype.
9810
9811         * search.c (dfs_mark, dfs_mark_vtable_path,
9812         dfs_unmark_vtable_path, dfs_mark_new_vtable,
9813         dfs_unmark_new_vtable, dfs_clear_search_slot,
9814         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
9815         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
9816         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
9817         functions.
9818         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
9819         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
9820         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
9821         Only define #ifdef GATHER_STATISTICS.
9822         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
9823         is defined.
9824         (vbase_decl): Delete var definition.
9825         (init_search): Delete old decl.
9826         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
9827         never actually used.
9828         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
9829         (get_base_distance_recursive): Delete unused fourth arg
9830         BASETYPE_PATH.  Fix call .
9831         (get_base_distance): Fix call.
9832         (push_class_decls): Delete unused var ID.
9833         (make_memoized_table_entry): Declare as static.
9834         (breadth_first_search): Declare as static.
9835         (tree_has_any_destructor_p): Declare as static.
9836         (pop_class_decls): Delete unused arg pop_class_decls.
9837         * class.c (popclass): Fix call to pop_class_decls.
9838         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
9839         tree_has_any_destructor_p): Delete prototypes.
9840
9841         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
9842         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
9843         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
9844         (build_user_desc): Delete unused var T.
9845         (build_class_desc): Delete unused vars T and OFF.
9846         (build_t_desc): Delete unused var NAME_STRING.
9847         (build_headof): Make static.
9848         (get_bad_cast_node): Likewise.
9849         (get_def_to_follow): Likewise.
9850         * cp-tree.h (init_type_desc): Add prototype.
9851         (build_headof): Remove prototype.
9852
9853 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
9854
9855         * pt.c (tsubst): Only look for matching decls at file scope for
9856         non-member functions.
9857
9858         * call.c (build_scoped_method_call): Handle scoped destructor
9859         calls in templates.
9860
9861         * decl.c (*_top_level): Also save previous_class_values.
9862
9863         * pt.c (tsubst_expr): Support do {} while loops.
9864         * parse.y (simple_stmt): Likewise.
9865         * tree.def: Likewise.
9866
9867         * method.c (build_overload_identifier): For a class nested in a
9868         template class, don't mangle in the template parms from our
9869         context.
9870
9871         * lex.c, cp-tree.h: Remove support for template instantiations in
9872         the pending_inlines code.
9873         * pt.c: Remove dead functions and unused arguments.
9874         (uses_template_parms): TYPENAME_TYPEs always use template parms.
9875         * parse.y: Stop passing anything to end_template_decl.
9876         * tree.c (print_lang_statistics): Only print tinst info #ifdef
9877         GATHER_STATISTICS.
9878
9879 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9880
9881         * init.c (expand_recursive_init{,_1}): Delete decls. 
9882         (sort_member_init): Delete unused var INIT.
9883         (emit_base_init): Delete unused var X.
9884         (build_offset_ref): Delete unused var CNAME.
9885         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
9886         (emit_base_init): Delete unused local var BASE.  Delete extern
9887         decl of IN_CHARGE_IDENTIFIER.
9888         (build_delete): Delete unused local var VIRTUAL_SIZE.
9889
9890         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
9891         (build_delete): Fix call.
9892         * decl2.c (delete_sanity): Likewise.
9893         * cp-tree.h (build_vec_delete): Update prototype.
9894
9895         * typeck.c (common_base_type): Delete unused var TMP.
9896         (build_binary_op): Delete local var ARGS_SAVE.
9897         (build_array_ref): Delete unused var ITYPE.
9898         (c_expand_return): Delete unused var USE_TEMP.
9899
9900         * typeck.c (compexcepttypes): Delete unused arg STRICT.
9901         (comptypes): Fix calls.
9902         * decl.c (duplicate_decls): Likewise.
9903         * cp-tree.h (compexcepttypes): Delete extra arg.
9904
9905         * decl2.c (check_classfn): Delete unused second arg CNAME.
9906         * decl.c (start_decl, grokfndecl): Fix calls.
9907         * init.c (do_friend): Likewise.
9908         * cp-tree.h (check_classfn): Update prototype.
9909
9910         * cp-tree.h (signature_error, import_export_vtable,
9911         append_signature_fields, id_in_current_class, mark_used,
9912         copy_assignment_arg_p): Add decls.
9913         * decl2.c (mark_used): Delete decl.
9914
9915         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
9916
9917         * class.c (get_vtable_entry): Diable unused function.
9918         (doing_hard_virtuals): Delete unused static global var.
9919         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
9920         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
9921         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
9922         (modify_one_vtable): Delete unused var OLD_RTTI.
9923         (finish_struct_anon): Delete unused vars OFFSET and X.
9924         (finish_struct_bits): Delete unused var METHOD_VEC.
9925         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
9926         for-scope local variable METHODS.
9927
9928         * call.c (user_harshness): Delete unused/unneeded arg PARM.
9929         (ideal_candidate): Delete unused args BASETYPE and PARMS.
9930         (build_method_call): Delete unused args passed into ideal_candidate.
9931         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
9932         * cp-tree.h (synthesize_method): Add decl.
9933
9934         * decl.c (note_level_for_for): Give void return type.
9935         (pushdecl_nonclass_level): Likewise.
9936         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
9937         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
9938         (suspend_binding_level): Delete unused var LEVEL.
9939         (duplicate_decls): Delete unused var CTYPE.
9940         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
9941         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
9942         PTR_ENDLINK.
9943         (grokdeclarator): Delete unused var C.
9944         (grokdeclarator): Delete unused var SIZE_VARIES.
9945         (grokparms): Delete unused var SAW_VOID.
9946         (start_function): Delete unused var OLDDECL.
9947         (cplus_expand_expr_stmt): Delete unused var
9948         REMOVE_IMPLICIT_IMMEDIATELY. 
9949
9950         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
9951
9952         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
9953
9954 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
9955
9956         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
9957         (build_min_nt): Likewise.
9958         * pt.c (do_pushlevel): Emit line note.
9959         (do_poplevel): Return what we get from poplevel.
9960         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
9961         * parse.y: Use do_pushlevel and do_poplevel.
9962         * cp-tree.h: Declare do_poplevel.
9963         
9964         * cp-tree.h: Declare at_eof.
9965         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
9966         * decl2.c (import_export_decl): Renamed from import_export_inline.
9967         (finish_file): Call it to do interface handling for statics.
9968         * pt.c (tsubst_copy): Call mark_used on variables and functions
9969         used here.
9970
9971         * decl2.c (finish_file): Don't emit statics we can't generate.
9972         * pt.c (instantiate_decl): Don't set interface on instantiations
9973         we can't generate.
9974
9975         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
9976         * tree.c (print_lang_statistics): Print max template depth.
9977         * pt.c (push_tinst_level): Dump entire instantiation context.
9978         (instantiate_class_template): Use it and pop_tinst_level.
9979         (instantiate_decl): Likewise.
9980
9981         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
9982         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
9983
9984 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
9985
9986         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
9987         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
9988         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
9989         the new template implementation.
9990
9991 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9992
9993         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
9994
9995 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
9996
9997         * decl.c (cp_finish_decl): Delay emitting the debug information for
9998         a typedef that has been installed as the canonical typedef, if the
9999         type has not yet been defined.
10000
10001 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
10002
10003         * decl2.c (grokfield): Still call pop_nested_class for access decls.
10004
10005 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10006
10007         * decl.c (lookup_label): Call label_rtx.
10008
10009         * decl.c (make_binding_level): New function.
10010         (pushlevel, pushlevel_class): Call it instead of explicit
10011         duplicate calls to xmalloc.
10012
10013         * decl.c (init_decl_processing): Delete useless build_pointer_type
10014         call.
10015
10016         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
10017         (sizet_ftype_string): Delete variable.
10018         (init_decl_processing): Add built-in functions fabsf, fabsl,
10019         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
10020         variable strlen_ftype, used for strlen.
10021
10022 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
10023
10024         * decl.c (push_to_top_level): Start from current_binding_level
10025         again for now; the stl hacks depend on g++ being broken in this
10026         way, and it'll be fixed in the template rewrite.
10027
10028         * tree.def: Add USING_DECL.
10029         * decl2.c (do_class_using_decl): Implement.
10030         (grokfield): Pass access decls off to do_class_using_decl instead of
10031         grokdeclarator.
10032         * error.c (dump_decl): Handle USING_DECLs.
10033         * decl.c (grokdeclarator): Remove code for handling access decls.
10034         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
10035         as access decls for now.
10036         (finish_struct): Don't check USING_DECLs for other uses of the name.
10037
10038         * search.c (get_matching_virtual): Use cp_error_at.
10039
10040 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10041
10042         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
10043         match c-typeck.c.
10044         (self_promoting_args_p): Move the check that TYPE is non-nil
10045         before trying to look at its main variant.
10046         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
10047
10048         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
10049         Delete macros.
10050         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
10051         (do_friend): Delete call to xref_friend.
10052         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
10053
10054         * typeck.c (convert_sequence): #if 0 unused function.
10055
10056         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
10057         be in decl_in_memory_p.
10058         (decl_in_memory_p): Delete decl.
10059         * expr.c (decl_in_memory_p): Delete fn.
10060         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
10061
10062         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
10063
10064 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
10065
10066         * class.c (finish_struct_1): Check for a pure-specifier on a
10067         non-virtual function here.
10068
10069         * decl2.c (grok_function_init): Don't check whether the function
10070         is virtual here.
10071         (grokfield): Don't call check_for_override here.
10072
10073         * decl.c (push_to_top_level): Start from inner_binding_level,
10074         check class_shadowed in class levels.
10075
10076 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
10077
10078         * decl.c (resume_level): Ignore things that don't have names, instead
10079         of core dumping.
10080
10081 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10082
10083         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
10084
10085 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
10086
10087         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
10088         synthesized dtor.
10089
10090         * parse.y (complete_type_name): Bind global_scope earlier.
10091         (complex_type_name): Likewise.
10092         (qualified_type_name): Remove.
10093
10094 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
10095
10096         * decl.c (grokfndecl): Move code that looks for virtuals in base
10097         classes...
10098         * class.c (check_for_override): ... to a new function.
10099         (finish_struct_1): Call it.
10100
10101         * cp-tree.h: Declare warn_sign_compare.
10102
10103         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
10104         rather than extra_warnings to decide whether to warn about
10105         comparison of signed and unsigned.
10106
10107         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
10108         implies -Wsign-compare.  -Wall doesn't imply -W.
10109
10110 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
10111
10112         * typeck.c (build_component_ref): Fix to handle anon unions in base
10113         classes as well.
10114
10115 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10116
10117         * class.c (resolves_to_fixed_type_p): Delete code dealing with
10118         a WITH_CLEANUP_EXPR, since we don't generate them any more.
10119         * cvt.c (build_up_reference): Likewise.
10120         * decl.c (grok_reference_init): Likewise.
10121         (cp_finish_decl): Likewise.
10122         * error.c (dump_expr): Likewise.
10123         * tree.c (real_lvalue_p): Likewise.
10124         (lvalue_p): Likewise.
10125         (build_cplus_new): Likewise.
10126         (unsave_expr_now): Likewise.
10127         * typeck.c (unary_complex_lvalue, build_modify_expr,
10128         c_expand_return): Likewise.
10129
10130 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10131
10132         Make the C++ front-end pay attention to attributes for structures.
10133         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
10134         finish_struct_1.
10135         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
10136         Take out old round_up_size use and setting the DECL_ALIGN possibly
10137         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
10138         can override what the attribute set.
10139         * cp-tree.h (finish_struct): Update prototype.
10140         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
10141         attributes to finish_struct.
10142         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
10143         value down into finish_struct.
10144         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
10145
10146 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
10147
10148         * decl.c (poplevel):  Re-word dead for local handling.
10149         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
10150         (cp_finish_decl):  If is_for_scope, check for duplicates so
10151         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
10152
10153         * lex.c (do_identifier):  Use global binding in preference of
10154         dead for local variable.
10155
10156 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
10157
10158         * init.c (initializing_context): Handle anon union changes, the
10159         context where fields of anon unions can be initialized now has to be
10160         found by walking up the TYPE_CONTEXT chain.
10161
10162 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
10163
10164         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
10165         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
10166         (obscure_complex_init): If bss is supported, always set
10167         DECL_INITIAL to error_mark_node.
10168
10169 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10170
10171         * init.c (is_friend): Make sure there's a context before we see if
10172         it's an aggr type.
10173
10174 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
10175
10176         * init.c (is_friend): Classes are not friendly with nested classes.
10177
10178 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
10179
10180         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
10181         and record its result.
10182
10183 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
10184
10185         * class.c (finish_struct_anon): Switch around code to not move anon
10186         union elements around, nor mess up their contexts, nor offsets,
10187         instead we now build up the right number of COMPONENT_REFs for all
10188         the anon unions that may be present at build_component_ref time.
10189         * typeck.c (lookup_anon_field): New routine to handle field lookup
10190         on fields without names.  We find them, based upon their unique type
10191         instead.
10192         * typeck.c (build_component_ref): Allow FIELD_DECL components.
10193         Handle finding components in anonymous unions, and ensure that a
10194         COMPONENT_REF is built for each level as necessary.
10195
10196 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
10197
10198         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
10199         code that ensures that copy ctors are used if appropriate.
10200
10201 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10202
10203         * init.c (build_vec_delete): Only give an error if base isn't an
10204         error_mark_node.
10205
10206 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
10207
10208         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
10209         (yylex): If we see `new', keep slurping.
10210
10211 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
10212
10213         * class.c (finish_struct_1): Move code for handling anon unions...
10214         (finish_struct_anon): to here.  Fixup so that we do the offset
10215         calculations right, and so that the fields are physically moved to
10216         the containers's chain.
10217
10218 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10219
10220         * decl.c (grokdeclarator): Avoid trying to get an operand off an
10221         identifier node.
10222
10223 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
10224
10225         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
10226         POINTER_SIZE to agree with expr.c.
10227
10228 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
10229
10230         * search.c (lookup_field): Don't report ambiguities if protect is 0,
10231         instead return NULL_TREE.
10232
10233 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
10234
10235         * class.c (finish_struct_1): Call warn_hidden if we want warnings
10236         about overloaded virtual functions.
10237         (warn_hidden): New routine to warn of virtual functions that are
10238         hidden by other virtual functions, that are not overridden.
10239         (get_basefndecls): New routine, used by warn_hidden.
10240         (mark_overriders): New routine, used by warn_hidden.
10241         * search.c (get_matching_virtual): Remove old warning that just
10242         isn't very useful.
10243
10244 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10245
10246         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
10247
10248         * typeck.c (null_ptr_cst_p): Delete unused fn.
10249         (build_function_call_maybe): Delete unused fn.
10250
10251         * expr.c (extract_init): #if 0 the code after unconditional return 0
10252         for now.
10253
10254         Delete old cadillac code.
10255         * edsel.c: Remove file.
10256         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
10257         * Makefile.in (CXX_OBJS): Delete edsel.o.
10258         (edsel.o): Delete rule.
10259         * cp-tree.h (flag_cadillac): Delete var decl.
10260         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
10261         * decl2.c (flag_cadillac): Delete var definition.
10262         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
10263         (grokfield): Delete code depending on flag_cadillac.
10264         (finish_anon_union): Likewise.
10265         * class.c (finish_struct_1): Likewise.
10266         (pushclass): Likewise.
10267         (popclass): Likewise.
10268         (push_lang_context): Likewise.
10269         (pop_lang_context): Likewise.
10270         * decl.c (init_decl_processing): Likewise.
10271         (start_decl): Likewise.
10272         (cp_finish_decl): Likewise.
10273         (xref_tag): Likewise.
10274         (finish_enum): Likewise.
10275         (start_function): Likewise.
10276         (finish_function): Likewise.
10277         (finish_stmt): Likewise.
10278         * lex.c (lang_init): Likewise.
10279         (check_newline): Likewise.
10280
10281         * lex.c (do_pending_inlines): Delete synthesized method kludge.
10282
10283         Delete defunct, ancient garbage collection implementation.
10284         * rtti.c: New file with the RTTI stuff from gc.c.
10285         * gc.c: Removed file (moved the remaining stuff into rtti.c).
10286         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
10287         (rtti.o): New rule, replacing gc.o.
10288         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
10289         * cp-tree.h: Delete gc-related fn decls.
10290         (DECL_GC_OFFSET): Delete macro.
10291         (flag_gc): Delete extern decl.
10292         * decl.c (current_function_obstack_index): Delete var decl.
10293         (current_function_obstack_usage): Delete var decl.
10294         (start_function): Delete clearing of current_function_obstack_index
10295         and current_function_obstack_usage.
10296         (init_decl_processing): Delete code relying on -fgc.
10297         Delete call to init_gc_processing.
10298         (cp_finish_decl): Delete calls to build_static_gc_entry and
10299         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
10300         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
10301         and to expand_expr of a __gc_main call.
10302         (maybe_gc_cleanup): Delete var decl.
10303         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
10304         * decl2.c (flag_gc): Delete var decl.
10305         (lang_f_options): Delete offering of -fgc.
10306         (lang_decode_option): Delete -fgc and -fno-gc handling.
10307         (get_temp_regvar): Delete gc code.
10308         * init.c (build_new): Delete gc code.
10309         * lex.c (init_lex): Delete checking of flag_gc.
10310
10311         * typeck.c (convert_arguments): Delete gc code.
10312         (build_component_addr): Delete -fgc warning.
10313         (build_modify_expr): Delete gc code.
10314
10315         * decl2.c (build_push_scope): Delete fn.
10316         * cp-tree.h (build_push_scope): Delete decl.
10317
10318         * search.c (clear_search_slots): Delete fn.
10319         * cp-tree.h (clear_search_slots): Delete decl.
10320
10321         * search.c (tree_needs_constructor_p): Delete fn.
10322         * cp-tree.h (tree_needs_constructor_p): Delete decl.
10323
10324         * tree.c (id_cmp): Delete fn.
10325
10326         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
10327         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
10328
10329         * tree.c (decl_value_member): Delete fn.
10330         * cp-tree.h (decl_value_member): Delete decl.
10331
10332         * tree.c (list_hash_lookup_or_cons): Delete fn.
10333         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
10334
10335         * method.c (cplus_exception_name): Delete fn.
10336         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
10337
10338         * spew.c (shift_tokens): Delete fn.
10339
10340 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
10341
10342         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
10343         to cp_finish_decl.
10344         * parse.y: Likewise.
10345
10346 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10347
10348         * tree.c (build_cplus_staticfn_type): Delete function definition;
10349         never used.
10350         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
10351
10352         * tree.c (virtual_member): Delete function definition; never used.
10353         * cp-tree.h (virtual_member): Delete decl.
10354
10355 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
10356
10357         * typeck.c (build_component_ref): Handle getting vbase pointers
10358         out of complex multiple inheritance better.
10359
10360 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
10361
10362         * typeck.c (build_object_ref): Make sure we use the real type, not
10363         any reference type.
10364
10365 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
10366
10367         * tree.c (build_exception_variant): Don't create new types if we
10368         don't have to, also build new types on the right obstack.
10369
10370 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
10371
10372         * decl.c (store_bindings): Split out from push_to_top_level.
10373         (push_to_top_level): Call it for b->type_shadowed on class binding
10374         levels.
10375
10376 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
10377
10378         * search.c (expand_upcast_fixups): Fix so that offsets stored in
10379         vbase_offsets are always right.  Fixes a problem where virtual base
10380         upcasting and downcasting could be wrong during conversions on this
10381         during virtual function dispatch at ctor/dtor time when dynamic
10382         vtable fixups for deltas are needed.  This only sounds easier than
10383         it is.  :-)
10384         (fixup_virtual_upcast_offsets): Change to reflect new calling
10385         convention for expand_upcast_fixups.
10386
10387 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10388
10389         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
10390         check that it's usable as the bitfield width.
10391
10392 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10393
10394         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
10395         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
10396         only ever used for functions in it.
10397
10398 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
10399
10400         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
10401         (nested_type): Likewise.
10402         (nested_name_specifier): Use lastiddecl.
10403
10404         * decl.c (grokdeclarator): Adjust accordingly.
10405         * init.c (expand_member_init): Likewise.
10406         * parse.y (base_class): Likewise.
10407         * typeck2.c (build_functional_cast): Likewise.
10408
10409         * typeck2.c (build_functional_cast): Fill in name after we've
10410         checked for non-aggr type.
10411
10412 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
10413
10414         * decl2.c (warn_pointer_arith): Default to on.
10415
10416 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
10417
10418         * lex.c (is_rid): New function.
10419         * decl.c (grokdeclarator): Diagnose reserved words used as
10420         declarator-ids.
10421
10422 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
10423
10424         * tree.c (get_decl_list): Don't lose cv-quals.
10425
10426         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
10427         typespecs used as declarator-ids.
10428
10429 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
10430
10431         * decl.c (poplevel): When poping a level, don't give a warning for
10432         any subblocks that already exist.
10433
10434 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
10435
10436         * typeck.c (build_object_ref): Finish what I started.
10437
10438         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
10439
10440         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
10441
10442         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
10443         scope.
10444
10445 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
10446
10447         * decl.c (xref_tag): Handle passing a type in directly.
10448
10449         * parse.y (qualified_type_name): Pull out the type.
10450         (nested_type): Likewise.
10451         Take types directly instead of as identifiers.
10452         * call.c (build_scoped_method_call): Take types directly instead of
10453         as identifiers.
10454         * decl.c (xref_basetypes): Likewise.
10455         * init.c (expand_member_init): Likewise.
10456         (build_member_call): Likewise.
10457         (build_offset_ref): Likewise.
10458         * typeck2.c (build_scoped_ref): Likewise, remove bogus code.
10459         * method.c (do_build_assign_ref): Likewise.
10460         * decl.c (grokdeclarator): Handle a type appearing as the
10461         declarator-id for constructors.
10462         * method.c (do_build_copy_constructor): current_base_init_list now
10463         uses the types directly, not their names.
10464         * init.c (sort_base_init): Likewise.
10465         (expand_member_init): Likewise.
10466         * init.c (is_aggr_type): New function, like is_aggr_typedef.
10467
10468 Mon Jan 15 08:45:01 1996  Jeffrey A Law  <law@cygnus.com>
10469
10470         * tree.c (layout_basetypes): Call build_lang_field_decl instead
10471         of build_lang_decl if first arg is a FIELD_DECL.
10472
10473 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10474
10475         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
10476         non-empty.
10477         * except.c (expand_start_catch_block): Set TREE_USED to avoid
10478         warnings about the catch handler.
10479
10480 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
10481
10482         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
10483         expand_target_expr.
10484
10485 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10486
10487         Fix access control to use trees rather than integers.
10488         * class.c (access_{default, public, protected, private,
10489         default_virtual, public_virtual, private_virtual}_node): Add
10490         definitions.
10491         (init_class_processing): Do creation of those nodes.
10492         * cp-tree.h (access_type): Delete enum decl.
10493         (access_{default, public, protected, private, default_virtual,
10494         public_virtual, private_virtual}_node): Add decls.
10495         (compute_access): Change return type.
10496         * search.c (compute_access): Have tree return type, instead of enum.
10497         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
10498         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
10499         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
10500         * parse.y (VISSPEC): Make ttype rather than itype.
10501         (base_class_access_list): Likewise.
10502         * *.[cy]: Change all refs of `access_public' to `access_public_node',
10503         etc.
10504         * call.c (build_method_call): Make ACCESS be a tree.
10505         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
10506         * cvt.c (convert_to_aggr): Likewise.
10507         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
10508         Likewise.
10509         * method.c (hack_identifier): Likewise.
10510         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
10511
10512 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
10513
10514         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
10515         frontend, and make it more consistent with respect to
10516         warn_pointer_arith.
10517
10518 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
10519
10520         * decl.c (pushdecl): Check for duplicate parameter names.
10521
10522 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
10523
10524         * decl.c (expand_static_init): Call assemble_external for atexit.
10525
10526 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
10527
10528         * except.c (do_unwind): Remove some generated dead code.
10529         (eh_outer_context): New routine, factor out some common code from
10530         expand_builtin_throw and end_eh_unwinder.  Add code to do return
10531         address masking for the PA.
10532         (expand_builtin_throw): Use eh_outer_context instead of open coding
10533         it here.
10534         (end_eh_unwinder): Likewise.
10535
10536 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
10537
10538         * except.c (expand_throw): Call assemble_external for __empty, if we
10539         use it.
10540
10541 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
10542
10543         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
10544         NORMAL_RETURN_ADDR_OFFSET.
10545         (end_eh_unwinder): Likewise.
10546
10547 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
10548
10549         * gc.c (build_dynamic_cast): Make sure we don't cast away const
10550         when dealing with references, and make sure we handle dynamic
10551         casting to a cv qualified reference.
10552
10553 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
10554
10555         * except.c (struct eh_context): New structure top hold eh context
10556         information.
10557         (push_eh_context): New routine.
10558         (pop_eh_context): Likewise.
10559         * decl.c (push_cp_function_context): Use them.
10560         (pop_cp_function_context): Likewise.
10561
10562 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
10563
10564         * decl2.c (finish_file): Also prune uninteresting functions in the
10565         inline emission loop.
10566
10567 Wed Dec 20 02:32:07 1995  Jeffrey A Law  <law@cygnus.com>
10568
10569         * sig.c (build_signature_table_constructor): Mark functions
10570         in the signature as referenced.
10571
10572 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
10573
10574         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
10575         the inline emission stuff.
10576
10577 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
10578
10579         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
10580         weak symbols.   
10581         * lang-options.h: Add -f{no-,}weak.
10582         * decl.c (init_decl_processing): If the target does not support weak
10583         symbols, don't use them.
10584         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
10585
10586 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
10587
10588         * init.c (expand_member_init): warning for base init after members.
10589
10590 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
10591
10592         * cvt.c (build_expr_type_conversion): Don't convert to a reference
10593         type.
10594
10595 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
10596
10597         * method.c (report_type_mismatch): Improve wording for volatile
10598         mismatches.
10599
10600 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
10601
10602         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
10603         expand_assignment, as the later doesn't handle things that have
10604         copy constructors well.  The compiler would do bitwise copying,
10605         instead of ctor calling in some cases.
10606
10607 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
10608
10609         * g++.c (my_strerror): Return "cannot access" if errno is 0.
10610         (pfatal_with_name, perror_exec): Don't assume that
10611         the returned value from my_strerror contains no '%'s.
10612         (concat): Remove.
10613         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
10614
10615 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
10616
10617         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
10618         TYPE_METHODS/TREE_CHAIN mean what they used to. 
10619         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
10620         instead of TYPE_METHODS.
10621         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
10622         * tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
10623         * cp-tree.h (CLASSTYPE_METHODS): Lose.
10624         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
10625         TYPE_METHODS.
10626         (struct lang_decl): Lose next_method field.
10627         (DECL_NEXT_METHOD): Lose.
10628         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
10629         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
10630         anymore.
10631         (finish_struct_methods): Don't mess with the TREE_CHAINs in
10632         fn_fields.
10633
10634         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
10635         vector.
10636
10637         * call.c (build_method_call): Synthesize here even when not inlining.
10638         * typeck.c (build_function_call_real): Likewise.
10639
10640 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
10641
10642         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
10643         == DBX_DEBUG, call dbxout_start_new_source_file and
10644         dbxout_resume_previous_source_file when appropriate.
10645
10646 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
10647
10648         * except.c (start_anon_func): Push to the top level.
10649         (end_anon_func): Pop from the top level.
10650
10651 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
10652
10653         * cp-tree.h (build_cleanup): New routine to build cleanups.
10654         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
10655         call at ctor time and use atexit to run it later.
10656         * decl2.c (build_cleanup): New routine, taken from finish_file.
10657         (finish_file): Use build_cleanup instead, and don't put function
10658         local statics in global dtor list.
10659         
10660 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
10661
10662         * except.c (expand_throw): Ensure that we have cleanups, if we try
10663         and expand cleanups.
10664
10665 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
10666
10667         * except.c (expand_throw): Add logic to manage dynamic cleanups for
10668         the EH object.
10669         (expand_end_catch_block): Use the magic of expand_goto, instead of
10670         emit_jump so that we get the cleanup for any catch clause parameter
10671         and the cleanup for the exception object.  Update to reflect label
10672         changes.
10673         (push_eh_cleanup): New routine to register a cleanup for an
10674         exception object.
10675         (empty_fndecl): Used to default cleanup actions to
10676         nothing.
10677         (init_exception_processing): Setup empty_fndecl.  Setup
10678         saved_cleanup.
10679         (expand_start_catch_block): Update to reflect label changes.  Call
10680         push_eh_object to register the cleanup for the EH object.
10681         (start_anon_func): New routine to start building lambda expressions
10682         from trees.
10683         (end_anon_func): New routine to end them.
10684         (struct labelNode): Change so that we can use tree labels, or rtx
10685         labels.
10686         (saved_cleanup): Object to check for dynamic cleanups for the
10687         exception handling object.
10688         (push_label_entry): Change so that we can use tree labels, or rtx
10689         labels.
10690         (pop_label_entry): Likewise.
10691         (top_label_entry): Likewise.
10692         (expand_start_all_catch): Use tree label instead of rtx label, so
10693         that we can get the magic of expand_goto.
10694         (expand_end_all_catch): Update to reflect label changes.
10695
10696         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
10697         use UNSAVE_EXPRs.
10698         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
10699         building_cleanup logic, as we now use UNSAVE_EXPRs.
10700         * cp-tree.h (unsave_expr): Declare it.
10701         * decl.c (building_cleanup): Remove.
10702         (maybe_build_cleanup): Remove building_cleanup logic, and use
10703         UNSAVE_EXPR instead.
10704
10705 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
10706
10707         * gc.c (build_t_desc): Update error message to say <typeinfo>.
10708
10709 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10710
10711         * decl.c (pushdecl): Only warn about shadowing a local variable if
10712         warn_shadow is true.
10713
10714 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
10715
10716         * typeck.c (build_binary_op_nodefault): Added warning about
10717         comparisons between different enum types with -Wall, unless
10718         -fenum-int-equiv set.
10719
10720 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
10721
10722         * class.c (finish_struct_1): Skip down to the inner type in
10723         multidimensional arrays.  Ensures ctors will be made for types that
10724         need constructing.
10725
10726 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
10727
10728         * decl.c (last_dtor_insn): New to track the last compiler generated
10729         insn in a dtor.
10730         (store_parm_decls): Set it.
10731         (finish_function): Use it to see if the dtor is empty.  Avoid doing
10732         vtable setup all the time, if we can.
10733         (struct cp_function): Add last_dtor_insn.
10734         (push_cp_function_context): Save it.
10735         (pop_cp_function_context): Restore it.
10736
10737 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
10738
10739         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
10740         warnings.
10741
10742 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
10743
10744         * typeck.c (expand_target_expr): Make sure targets get put into the
10745         current temp_slot_level, so that the free_temp_slots call will reuse
10746         them.
10747
10748 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
10749
10750         * class.c (finish_struct_1): Delay delta fixups for virtual bases
10751         until after we have done the hard virtuals, to avoid a bogus `every
10752         virtual function must have a unique final overrider' for virtual
10753         functions that are only overridden by hard virtuals.
10754
10755 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
10756
10757         * pt.c (do_function_instantiation): Don't try to find a file-scope
10758         template for a member function.
10759
10760 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
10761
10762         * g++.c (main): Add handling of -nodefaultlibs.
10763
10764 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
10765
10766         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
10767         distinguish between direct bindings of reference variables, and
10768         indirect bindings of reference variables.
10769         * cvt.c (build_up_reference): Use it.
10770         * typeck.c (convert_arguments): Use it to indicate this is an
10771         indirect binding.
10772         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
10773         as they are unused.
10774         (expand_static_init): Likewise.
10775         (cplus_expand_expr_stmt): Likewise.
10776         * decl2.c (finish_file): Likewise.
10777         * init.c (perform_member_init): Likewise.
10778         (emit_base_init): Likewise.
10779         (expand_aggr_vbase_init_1): Likewise.
10780
10781 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10782
10783         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
10784         get a DECL_LANG_SPECIFIC node.
10785         * cp-tree.h (lang_decl_flags): Add new member `level'.
10786         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
10787         decl_flags level member.
10788
10789 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10790
10791         * call.c (build_method_call): Make sure instance has a
10792         TYPE_LANG_SPECIFIC node before we dive into it.  
10793
10794 Sat Nov  4 20:01:52 1995  Jason Molenda  <crash@phydeaux.cygnus.com>
10795
10796         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
10797
10798 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
10799
10800         * decl.c (duplicate_decls): When smashing decls, smash staticness in
10801         the usual way.
10802
10803 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
10804
10805         * decl.c (poplevel): Handle the merging of subblocks of cleanups
10806         when finishing blocks that have already been created (usually due to
10807         the fixup goto code).  Fixes bad debugging information.
10808
10809 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
10810
10811         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
10812         that's not a list of overloaded functions.
10813
10814 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10815
10816         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
10817         before trying to use DECL_ABSTRACT_VIRTUAL_P.
10818
10819 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
10820
10821         * decl2.c (mark_used): New function for hooking into setting of
10822         TREE_USED on decls.
10823         * call.c (build_method_call): Use it.
10824         * class.c (instantiate_type): Likewise.
10825         * init.c (build_offset_ref): Likewise.  Don't call assemble_external
10826         for all like-named functions.
10827         * method.c (hack_identifier): Likewise.
10828         (emit_thunk): Don't call assemble_external.
10829         (make_thunk): Create thunk as a FUNCTION_DECL so that it
10830         gets the right mode and ENCODE_SECTION_INFO works.
10831         
10832         * parse.y: Use mark_used.  Pass operator names to do_identifier.
10833         * lex.c (do_identifier): Handle operator names.
10834
10835         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
10836
10837 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10838
10839         * errfn.c: Include stdio.h.
10840         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
10841
10842 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
10843
10844         * typeck2.c (digest_init): Always convert initializers to the
10845         right type.
10846
10847 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
10848
10849         * init.c (member_init_ok_or_else): Don't allow member initializers
10850         for indirect members, as it is invalid.
10851
10852 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10853
10854         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
10855
10856 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
10857
10858         * parse.y (for.init.statement): Catch compound statements inside for
10859         initializations, if we're being pedantic.
10860
10861 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
10862
10863         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
10864         looking for.
10865
10866 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
10867
10868         * error.c (dump_expr): Don't core dump when a boolean expression is
10869         used as a default argument.
10870
10871 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
10872
10873         * class.c (finish_struct_bits): Check aggregate_value_p instead of
10874         RETURN_IN_MEMORY.
10875
10876 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
10877
10878         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
10879         BLKmode type that would otherwise be returned in registers.
10880
10881 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10882
10883         * g++.c (WITHLIBC): New macro.
10884         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
10885         saw_libc and pass it at the end if it was set.
10886
10887 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
10888
10889         * parse.y (fn.def1): Call split_specs_attrs in
10890         declmods notype_declarator case.