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