OSDN Git Service

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