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