]> gcc.gnu.org Git - gcc.git/blob - gcc/cp/ChangeLog
class.c (finish_struct_1): Look at the const-ness of the field's type...
[gcc.git] / gcc / cp / ChangeLog
1 1999-04-13 Mark Mitchell <mark@codesourcery.com>
2
3 * class.c (finish_struct_1): Look at the const-ness of the field's
4 type, not the TREE_READONLY-ness of the declaration.
5 * method.c (synthesize_method): Likewise.
6 * pt.c (tsubst_decl): Call c_apply_type_quals_to_decl when
7 creating new declarations.
8
9 1999-04-13 Mike Stump <mrs@wrs.com>
10
11 * decl2.c (import_export_decl): Because vtables always reference
12 virtual functions, even if they are inlined, don't allow
13 -fno-implement-inlines to not emit them, instead, emit them with
14 the vtable.
15 * decl.c (start_function): Likewise.
16
17 1999-04-12 Jason Merrill <jason@yorick.cygnus.com>
18
19 * cp-tree.h (struct lang_type): Add com_interface.
20 (CLASSTYPE_COM_INTERFACE): New macro.
21 * class.c (set_rtti_entry): COM interface classes have no RTTI
22 entries in their vtables; adjust.
23 (add_virtual_function, finish_base_struct, skip_rtti_stuff,
24 modify_one_vtable, fixup_vtable_deltas1, override_one_vtable,
25 finish_struct_1): Likewise.
26 * decl2.c (mark_vtable_entries): Likewise.
27 * rtti.c (build_headof, get_tinfo_fn_dynamic): Likewise.
28 * search.c (get_abstract_virtuals_1, get_abstract_virtuals,
29 expand_upcast_fixups): Likewise.
30 * tree.c (debug_binfo): Likewise.
31
32 * cp-tree.h (COMPARE_NO_ATTRIBUTES): New macro.
33 * typeck.c (comptypes): If we get it, ignore attributes.
34 * class.c (instantiate_type): Use BASELINK_P. Change complain
35 parameter to flags; 2 means ignore attributes.
36 * call.c (build_op_delete_call): Pass it.
37
38 * decl.c (xref_tag): Only complain once about using a typedef-name
39 with 'struct'. Downgrade to pedwarn.
40
41 * decl.c (grokdeclarator): Allow [] syntax for zero-length array.
42
43 * parse.y (absdcl_intern): New nonterminal.
44 (absdcl, direct_abstract_declarator): Use it.
45
46 * pt.c (lookup_template_class): Look through implict typename.
47
48 1999-04-11 Mark Mitchell <mark@codesourcery.com>
49
50 * friend.c (add_friend): Deal gracefully with error_mark_node.
51 * method.c (build_overload_value): Handle pointers-to-members as
52 template parameters.
53
54 * decl.c (push_binding): Fix typo in comment.
55
56 1999-04-10 Mark Mitchell <mark@codesourcery.com>
57
58 * error.c (dump_type_real): If a typename is a template-id, put
59 out the template arguments.
60 (dump_expr): Handle TEMPLATE_ID_EXPR.
61 * pt.c (lookup_template_class): Now that full arguments are
62 available everywhere, remove code that tried to guess them.
63
64 1999-04-09 Mark Mitchell <mark@codesourcery.com>
65
66 * decl.c (make_typename_type): Complain if we don't find a type
67 when trying to make a typename type for a non-template type.
68
69 1999-04-09 Jason Merrill <jason@yorick.cygnus.com>
70
71 * decl.c (start_decl): Pass attributes to grokdeclarator.
72 (grokdeclarator): Handle attributes on constructor-syntax
73 initializers.
74
75 1999-04-08 Mark Mitchell <mark@codesourcery.com>
76
77 * error.c (dump_expr): Don't crash on INDIRECT_REFs whose operands
78 don't have types.
79
80 * search.c (template_self_reference_p): Tweak.
81
82 1999-04-07 Mark Mitchell <mark@codesourcery.com>
83
84 * init.c (build_offset_ref): Don't build yet another weird data
85 structure to describe overloaded functions.
86
87 1999-04-06 Mark Mitchell <mark@codesourcery.com>
88
89 * cp-tree.h (BASELINK_P): New macro.
90 (SET_BASELINK_P): Likewise.
91 * init.c (build_member_call): Remove needless assignment in if
92 statement.
93 * search.c (lookup_field_r): Fix handling when we are looking
94 specifically for a type; these are not hidden by functions and
95 variables.
96 (lookup_member): Use SET_BASELINK_P.
97 * tree.c (is_overloaded_fn): Use BASELINK_P.
98 (really_overloaed_fn): Likewise.
99 (get_first_fn): Likewise.
100
101 1999-04-05 Mark Mitchell <mark@codesourcery.com>
102
103 * decl.c (lookup_name_current_level): Tweak, and improve
104 documentation.
105
106 * class.c (maybe_fixup_vptrs): Remove declaration.
107 (build_class_init_list): Likewise.
108 * decl.c (pushdecl_class_level): Call check_template_shadow here
109 ...
110 (push_class_level_binding): ... not here.
111 * search.c (dfs_push_type_decls): Only avoid
112 template-self-reference TYPE_DECLs if they are from base classes.
113
114 1999-04-04 Mark Mitchell <mark@codesourcery.com>
115
116 * pt.c (check_template_shadow): Don't treat OVERLOADs as _DECL
117 nodes. Tidy.
118
119 1999-04-03 Jason Merrill <jason@yorick.cygnus.com>
120
121 * class.c (maybe_fixup_vptrs, build_class_init_list): Lose.
122 (finish_struct_1): Don't call build_class_init_list.
123
124 1999-04-02 Mark Mitchell <mark@codesourcery.com>
125
126 * tinfo.h (__class_type_info): Fix illegal declaration.
127
128 * cp-tree.def (TEMPLATE_ID_EXPR): Update comment.
129 * cp-tree.h (INHERITED_VALUE_BINDING_P): New macro.
130 (IDENTIFIER_CLASS_VALUE): Improve documentation.
131 (is_properly_derived_from): Declare.
132 (invalidate_class_lookup_cache): Likewise.
133 (maybe_maybe_note_name_used_in_class): Likewise.
134 (note_name_declared_in_class): Likewise.
135 (push_using_decl): Remove duplicate declaration.
136 (id_in_current_class): Remove declaration.
137 (push_class_binding): Change prototype.
138 (clear_identitifer_class_values): Declare.
139 * call.c (is_properly_derived_from): Make it global.
140 (build_new_function_call): Be careful about updating candidates.
141 (build_new_method_call): Handle COMPONENT_REFs. Don't crash when
142 asked to make illegal calls.
143 * class.c: Include splay-tree.h.
144 (class_stack_node): Add names_used slot.
145 (check_member_decl_is_same_in_complete_scope): Remove.
146 (add_method): Fix comment. Push the declaration into class
147 scope.
148 (finish_struct_1): When popping the class, pop the bindings too.
149 Remove check for data member/function member conflict.
150 (finish_struct): Remove calls to
151 check_member_decl_is_same_in_complete_scope. Change calls to
152 popclass.
153 (pushclass): Clear names_used in the class stack entry.
154 Use invalidate_class_lookup_cache to remove cached entries, rather
155 than magic values with popclass. Clear IDENTIFIER_CLASS_VALUE
156 before entering a new class. Remove dead code. Don't mess with
157 current_function_decl when pushing declarations.
158 (invalidate_class_lookup_cache): New function, split out from ...
159 (popclass): Here. Clean up names_used on our way out.
160 (instantiate_type): Adjust.
161 (build_self_reference): Don't push the declaration here.
162 (maybe_note_name_used_in_class): New function.
163 (note_name_declared_in_class): Likewise.
164 * decl.c (add_binding): Change prototype.
165 (find_class_binding_level): New function.
166 (innermost_nonclass_level): Likewise.
167 (current_binding_level): Update documentation.
168 (inner_binding_level): Remove. Replace with current_binding_level
169 throughout.
170 (push_binding_level): Remove special handling of
171 class_binding_level.
172 (pop_binding_level): Likewise. Use find_class_binding_level.
173 (suspend_binding_level): Likewise.
174 (global_bindings_p): Use innermost_nonclass_level.
175 (toplevel_bindings_p): Likewise.
176 (namespace_bindings_p): Likewise.
177 (pseudo_global_level_p): Likewise.
178 (push_binding): Clear INHERITED_VALUE_BINDING_P.
179 (add_binding): Check for illegal multiple declarations. Return a
180 value indicating whether or not the new binding was legal.
181 (push_local_binding): Skip over class binding levels. Check
182 return value from add_binding.
183 (push_class_binding): Set INHERITED_VALUE_BINDING_P. Call
184 note_name_declared_in_class.
185 (pushlevel_class): Remove "fake out the rest of the compiler"
186 code.
187 (poplevel_class): Reset IDENTIFIER_CLASS_VALUEs.
188 (clear_identifier_class_values): New function.
189 (pop_from_top_level): Use it.
190 (pop_everything): Tweak.
191 (maybe_process_template_type_declaration): Don't push the
192 declaration for the template here.
193 (pushtag): Don't push tag declarations into class scope here.
194 (pushdecl): Apply DeMorgan's law for readability.
195 (pushdecl_class_level): Remove special-case code for
196 TYPE_BEING_DEFINED. Handle OVERLOADs and anonymous unions.
197 (push_class_level_bindng): Deal with inherited bindings.
198 (lookup_name_real): Remove special-case code for
199 TYPE_BEING_DEFINED, and some implicit typename magic.
200 (grokdeclarator): Handle COMPONENT_REF for a template function.
201 (build_enumerator): Don't call pushdecl_class_level here.
202 (id_in_current_class): Remove.
203 * decl2.c (grokfield): Don't call pushdecl_class_level or
204 check_template_shadow.
205 * errfn.c (cp_file_of): Don't declare.
206 (cp_line_of): Likewise.
207 * error.c (dump_decl): Handle an OVERLOAD.
208 (cp_file_of): Likewise.
209 (cp_line_of): Likewise.
210 * init.c (build_member_call): Handle a COMPONENT_REF.
211 * lex.c (do_identifier): Call maybe_note_name_used_in_class, not
212 pushdecl_class_level.
213 * method.c (hack_identifier): Build COMPONENT_REFs for references
214 to member templates as well as member functions. Remove dead
215 code.
216 * parse.y (left_curly): Remove.
217 (nonnested_type): Call maybe_note_name_used_in_class, not
218 pushdecl_class_level.
219 * parse.c: Regenerated.
220 (nested_name_specifier_1): Likewise.
221 * pt.c (check_explicit_specialization): Adjust, for robustness.
222 (check_template_shadow): Handle OVERLOADs.
223 (build_template_decl): Set DECL_CONSTRUCTOR_P on the
224 TEMPLATE_DECL, if appropriate.
225 * search.c (envelope_add_decl): Remove.
226 (dfs_pushdecls): Likewise.
227 (dfs_compress_decls): Likewise.
228 (dfs_push_decls): New function.
229 (dfs_push_type_decls): Likewise.
230 (setup_class_bindings): Likewise.
231 (template_self_reference_p): Likewise.
232 (lookup_field_r): Use it.
233 (looup_member): Remove old comment. Deal with ambiguity.
234 (push_class_decls): Use dfs_push_decls and dfs_push_type_decls,
235 and remove envelope processing.
236 * semantics.c (begin_class_definition): Let pushclass push
237 declarations for base classes.
238 (finish_member_declaration): Push declarations into class scope.
239 * typeck.c (build_component_ref): Just put an OVERLOAD into the
240 COMPONENT_REF, not a TREE_LIST of an OVERLOAD.
241 (build_x_function_call): Deal with OVERLOAD. Handle template-ids.
242 * Makefile.in (class.o): Depend on splay-tree.h.
243
244 Wed Mar 31 11:30:43 BST 1999 Nathan Sidwell <nathan@acm.org>
245
246 * cvt.c (convert_pointer_to_real): Use same_type_p.
247 * typeck.c (comp_target_types): Use same_type_p.
248
249 1999-03-31 Jason Merrill <jason@yorick.cygnus.com>
250
251 * semantics.c (begin_inline_definitions,
252 finish_inline_definitions): Rename from finish_default_args and
253 begin_inline_definitions, respectively, to something that isn't a
254 total lie. :)
255 * parse.y (structsp): Adjust.
256
257 * tree.c (hash_tree_cons): Remove obsolete via_* parms.
258 (list_hash_lookup): Likewise.
259 (hash_tree_chain): Adjust.
260 * pt.c (tsubst): Adjust.
261 (tsubst_arg_types): Use plain hash_tree_cons.
262 * cp-tree.h (hash_tree_cons_simple): Lose.
263 * parse.y (declmods, nonempty_cv_qualifiers): Use hash_tree_cons.
264
265 Wed Mar 31 10:48:29 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
266 <<<<<<< ChangeLog
267
268 * Makefile.in (hash.h): Generate using gperf language 'C', not
269 'KR-C', so gperf uses the `const' keyword on strings.
270
271 * gxx.gperf (resword): Const-ify a char*.
272 =======
273
274 * Makefile.in (hash.h): Generate using gperf language 'C', not
275 'KR-C', so gperf uses the `const' keyword on strings.
276 >>>>>>> 1.988
277
278 <<<<<<< ChangeLog
279 =======
280 * gxx.gperf (resword): Const-ify a char*.
281
282 >>>>>>> 1.988
283 1999-03-30 Jason Merrill <jason@yorick.cygnus.com>
284
285 * cp-tree.h (IDENTIFIER_AS_DESC, IDENTIFIER_AS_LIST,
286 CLASSTYPE_BASELINK_VEC, CLASSTYPE_N_SUPERCLASSES,
287 CLASSTYPE_N_BASECLASSES, CLASSTYPE_MAX_DEPTH,
288 CLASSTYPE_BASE_INIT_LIST, CLASSTYPE_AS_LIST, CLASSTYPE_ID_AS_LIST,
289 CLASSTYPE_BINFO_AS_LIST): Remove cruft.
290 * class.c, lex.c, parse.y, ptree.c, search.c, semantics.c,
291 tree.c: Adjust.
292
293 1999-03-29 Jason Merrill <jason@yorick.cygnus.com>
294
295 * decl2.c (lang_decode_option): Remove -Wsign-promo from -Wall.
296
297 1999-03-28 Jason Merrill <jason@yorick.cygnus.com>
298
299 * pt.c (fn_type_unification): Ignore 'this' parm from conversion ops.
300
301 1999-03-27 Mark Mitchell <mark@codesourcery.com>
302
303 * cp-tree.h (add_friend): Declare.
304 (add_friends): Likewise.
305 * friend.c (add_friend): Make it global. Don't add to
306 DECL_BEFRIENDING_CLASSES if the befriending class is a template.
307 (add_friends): Make it global.
308 (make_friend_class): Don't add to DECL_BEFRIENDING_CLASSES if the
309 befriending class is a template.
310 * parse.y (component_decl_1): Fix typo in comment.
311 * parse.c: Regenerated.
312 * pt.c (instantiate_class_template): Use add_friend and
313 add_friends rather that duplicating some of their functionality
314 here.
315
316 1999-03-27 Jason Merrill <jason@yorick.cygnus.com>
317
318 * call.c (build_field_call): Unify 'this' and non-'this' cases.
319
320 * typeck.c (build_indirect_ref): Check for 'this' sooner.
321
322 Fri Mar 26 10:20:34 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
323
324 * call.c (op_error): Const-ify a char*.
325 (add_candidate, source_type, add_warning): Add static prototype.
326 (print_z_candidates): Const-ify a char*.
327
328 * class.c (resolve_address_of_overloaded_function,
329 fixed_type_or_null, build_vtable_entry_ref): Add static prototype.
330 (get_vtable_name, finish_struct_1): Const-ify a char*.
331
332 * cvt.c (convert_to_reference): Likewise.
333
334 * decl.c (redeclaration_error_message, record_builtin_type,
335 record_unknown_type, member_function_or_else, bad_specifiers):
336 Likewise.
337 (find_binding, select_decl, unqualified_namespace_lookup,
338 lookup_flags, qualify_lookup, record_builtin_java_type, tag_name):
339 Add static prototype.
340 (warn_extern_redeclared_static, duplicate_decls, pushdecl,
341 implicitly_declare, record_builtin_java_type, define_function,
342 grok_op_properties, tag_name): Const-ify a char*.
343
344 * cp-tree.h (FORMAT_VBASE_NAME): Allow parameter `BUF' to be const.
345 (define_function, finish_builtin_type): Const-ify a char*.
346 (cp_error, cp_error_at, cp_warning, cp_warning_at, cp_pedwarn,
347 cp_pedwarn_at, cp_compiler_error, cp_sprintf): Add prototype args.
348 (file_name_nondirectory): Const-ify a char*.
349 (init_filename_times): Don't prototype.
350 (compiler_error): Prototype.
351 (yyerror, init_repo): Const-ify a char*.
352 (build_srcloc): Don't prototype.
353 (build_x_indirect_ref, build_indirect_ref, build_component_addr):
354 Const-ify a char*.
355 (warn_for_assignment): Don't prototype.
356 (convert_for_initialization, readonly_error, check_for_new_type,
357 GNU_xref_begin, GNU_xref_file, GNU_xref_ref, GNU_xref_call):
358 Const-ify a char*.
359
360 * decl2.c (acceptable_java_type, output_vtable_inherit,
361 setup_initp, start_objects, finish_objects, do_dtors, do_ctors,
362 merge_functions, decl_namespace, validate_nonmember_using_decl,
363 do_nonmember_using_decl): Add static prototype.
364 (lang_f_options): Const-ify a char*.
365 (finish_builtin_type): Likewise.
366 (add_function, arg_assoc_namespace, arg_assoc_class): Add static
367 prototype.
368
369 * errfn.c: Include cp-tree.h.
370 (cp_thing): Add static prototype.
371 (compiler_error): Don't protoptype.
372 (cp_compiler_error): Cast `compiler_error' to `errorfn' before
373 passing it to `cp_thing'.
374
375 * error.c (interesting_scope_p): Add static prototype.
376
377 * except.c (build_eh_type_type, build_eh_type_type_ref): Const-ify
378 a char*.
379
380 * init.c (compiler_error): Don't prototype.
381 (member_init_ok_or_else): Const-ify a char*.
382 (build_java_class_ref): Add static prototype.
383
384 * lex.c (compiler_error): Don't prototype.
385 (get_time_identifier, interface_strcmp, extend_token_buffer,
386 handle_cp_pragma): Const-ify a char*.
387 (is_global, init_filename_times): Add static prototype.
388 (file_name_nondirectory, cplus_tree_code_name): Const-ify a char*.
389 (compiler_error): Change from fixed args to variable args.
390 (yyerror): Const-ify a char*.
391
392 * parse.y (cond_stmt_keyword): Const-ify a char*.
393 (parse_decl): Add static prototype.
394
395 * pt.c (template_args_equal, print_template_context): Likewise.
396 (print_candidates, check_default_tmpl_args): Const-ify a char*.
397 (instantiate_class_template): Likewise.
398
399 * repo.c (get_base_filename, open_repo_file, init_repo): Likewise.
400
401 * rtti.c (call_void_fn, expand_generic_desc, expand_si_desc,
402 expand_class_desc, expand_ptr_desc, expand_attr_desc): Likewise.
403
404 * search.c (lookup_field_info, lookup_member): Likewise.
405 (lookup_member): Cast the first argument of `bzero' to a PTR.
406
407 * sig.c (compiler_error): Don't prototype.
408 (build_signature_pointer_or_reference_nam): Const-ify a char*.
409 (get_sigtable_name, build_member_function_pointer): Likewise.
410
411 * tree.c (compiler_error): Don't prototype.
412 (no_linkage_helper, build_srcloc): Add static prototype.
413 (build_vbase_pointer_fields): Const-ify a char*.
414 (__eprintf): Don't unnecessarily handle `const' when !__STDC__.
415
416 * typeck.c (compiler_error): Don't prototype.
417 (convert_for_assignment): Const-ify a char*.
418 (comp_cv_target_types): Add static prototype.
419 (build_x_indirect_ref, build_indirect_ref, convert_arguments,
420 build_component_addr, build_unary_op, convert_for_initialization):
421 Const-ify a char*.
422
423 * typeck2.c (ack): Add static prototype and change from fixed args
424 to variable args.
425 (readonly_error, check_for_new_type): Const-ify a char*.
426
427 * xref.c (_XREF_FILE, find_file, filename, fctname, declname,
428 fixname, open_xref_file, classname, GNU_xref_begin): Likewise.
429 (GNU_xref_file): Likewise. Also use `xmalloc' instead of `malloc'.
430 (GNU_xref_end_scope, GNU_xref_ref, GNU_xref_decl, GNU_xref_call,
431 gen_assign, GNU_xref_member): Const-ify a char*.
432
433 1999-03-25 Martin von Löwis <loewis@informatik.hu-berlin.de>
434
435 * gxxint.texi: Remove old discussion on copying virtual bases.
436
437 1999-03-25 Zack Weinberg <zack@rabi.columbia.edu>
438
439 * Make-lang.in: Remove all references to g++.o/g++.c.
440 Link g++ from gcc.o.
441
442 1999-03-25 Jason Merrill <jason@yorick.cygnus.com>
443
444 * decl2.c (comdat_linkage): Treat vtables like functions.
445
446 1999-03-25 Mark Mitchell <mark@codesourcery.com>
447
448 * pt.c (tsubst_decl): tsubst into DECL_BEFRIENDING_CLASSES.
449
450 1999-03-25 Nathan Sidwell <nathan@acm.org>
451
452 * decl.c (init_decl_processing): Add `signed' type as a synonym
453 for `int'.
454
455 1999-03-25 Jason Merrill <jason@yorick.cygnus.com>
456
457 * typeck.c (common_type): Handle cv-qual unification for pointers
458 to members.
459
460 * decl.c (unqualified_namespace_lookup): Return error_mark_node
461 on error.
462 (lookup_name_real): Set LOOKUP_COMPLAIN when *not* parsing.
463 * lex.c (do_identifier): If we got error_mark_node, call
464 lookup_name again.
465
466 1999-03-24 Martin von Löwis <loewis@informatik.hu-berlin.de>
467
468 * class.c (finish_struct_1): Always reset TYPE_FIELDS for empty
469 classes.
470
471 1999-03-24 Jason Merrill <jason@yorick.cygnus.com>
472
473 * decl.c (lookup_name_real): Do nested field lookup regardless of
474 TYPE_BEING_DEFINED.
475
476 1999-03-24 Mark Mitchell <mark@codesourcery.com>
477
478 * cp-tree.h (lang_type): Remove has_assignment and
479 has_real_assignment. Add befriending_classes.
480 (TYPE_HAS_ASSIGNMENT): Remove.
481 (TYPE_HAS_REAL_ASSIGNMENT): Likewise.
482 (CLASSTYPE_BEFRIENDING_CLASSES): New macro.
483 (lang_decl): Document.
484 (DECL_BEFRIENDING_CLASSES): New macro.
485 (FRIEND_NAME): Move declaration to more obvious location.
486 (FRIEND_DECLS): Likewise.
487 * class.c (finish_struct_1): Don't use TYPE_HAS_REAL_ASSIGNMENT.
488 * decl.c (duplicate_decls): Copy DECL_BEFRIENDING_CLASSES.
489 (fixup_anonymous_union): Don't use TYPE_HAS_ASSIGNMENT.
490 (grok_op_properties): Likewise.
491 * friend.c (is_friend): Use FRIEND_NAME and FRIEND_DECLS.
492 (add_friend): Likewise. Don't do weird things with assignment
493 operators. Update DECL_BEFRIENDING_CLASSES.
494 (add_friends): Don't do weird things with assignment operators.
495 (make_friend_class): Likewise. Update
496 CLASSTYPE_BEFRIENDING_CLASSES.
497 * pt.c (instantiate_class_template): Don't set
498 TYPE_HAS_ASSIGNMENT.
499 (tsubst_copy): Substitute the TREE_TYPE for more unary
500 expressions.
501 * ptree.c (print_lang_type): Don't look at TYPE_HAS_ASSIGNMENT.
502 * search.c (protected_accessible_p): New function.
503 (friend_accessible_p): Likewise.
504 (accessible_p): Use them.
505
506 1999-03-23 Mark Mitchell <mark@codesourcery.com>
507
508 * pt.c (convert_nontype_argument): Don't create things that aren't
509 PTRMEM_CSTs when applying a qualification conversion to a
510 PTRMEM_CST.
511
512 1999-03-23 Mark Mitchell <mark@codesourcery.com>
513
514 * Makefile.in (OBJS): Don't mention hash.o.
515 (OBJDEPS): Likewise.
516
517 1999-03-23 Jason Merrill <jason@yorick.cygnus.com>
518
519 * decl2.c (finish_file): Set at_eof to 2 after expanding ctors.
520 * decl.c (expand_static_init): Make sure we don't add any after
521 then.
522
523 * decl.c (cp_finish_decl): Move intelligence about handling
524 DECL_COMDAT for variables from here...
525 * decl2.c (comdat_linkage): ...to here.
526 (maybe_make_one_only): Tweak.
527 (import_export_decl): Call comdat_linkage for variables, too.
528 (finish_file): Handle template statics properly.
529
530 1999-03-22 Mark Mitchell <mark@codesourcery.com>
531
532 * cp-tree.h (TYPE_PTRMEMFUNC_P): Use TYPE_PTRMEMFUNC_FLAG.
533 Document internals of pointer-to-member-functions.
534 (DELTA2_FROM_PTRMEMFUNC): Make it call delta2_from_ptrmemfunc.
535 (PFN_FROM_PTRMEMFUNC): Likewise.
536 (build_type_conversion): Remove unused parameter.
537 (build_ptrmemfunc1): Declare.
538 (expand_ptrmemfunc_cst): New function.
539 (delta2_from_ptrmemfunc): Likewise.
540 (pfn_from_ptrmemfunc): Likewise.
541 * cvt.c (cp_convert_to_pointer): Remove unused parameter to
542 build_type_conversion. Use TYPE_PTRMEM_P for readability.
543 (convert_to_reference): Remove unused parameter to
544 build_type_conversion.
545 (ocp_convert): Likewise.
546 (build_user_type_conversion): Likewise.
547 * error.c (dump_expr): Handle NULL pointer-to-member functions.
548 * expr.c (cplus_expand_expr): Handle PTRMEM_CSTs for functions.
549 * method.c (build_overload_value): Don't go splitting CONSTRUCTORs
550 open when handling pointer-to-member functions.
551 * pt.c (convert_nontype_argument): Clean up error messages. Be
552 more stringent with pointers-to-members.
553 * typeck.c (build_ptrmemfunc1): Don't declare. Make it global.
554 (build_unary_op): Tidy ever-so-slightly.
555 (build_conditional_expr): Remove extra parameter to
556 build_type_conversion.
557 (build_ptrmemfunc): Build PTRMEM_CSTs if we know what function
558 we're using.
559 (expand_ptrmemfunc_cst): Define.
560 (delta2_from_ptrmemfunc): Likewise.
561 (pfn_from_ptrmemfunc): Likewise.
562
563 1999-03-19 Mark Mitchell <mark@codesourcery.com>
564
565 * init.c (build_member_call): Handle template-id expressions
566 correctly.
567 * typeck.c (build_x_function_call): Likewise.
568
569 1999-03-19 Chip Salzenberg <chip@perlsupport.com>
570
571 * friend.c (make_friend_class): Avoid core dump when
572 not-yet-defined friend type lacks TYPE_LANG_SPECIFIC().
573
574 1999-03-18 Jason Merrill <jason@yorick.cygnus.com>
575
576 * decl.c (start_function): Suppress normal linkage heuristics
577 for #pragma interface under MULTIPLE_SYMBOL_SPACES.
578
579 1999-03-19 Alexandre Oliva <oliva@dcc.unicamp.br>
580
581 * Make-lang.in: ($(INTL_TARGETS)): Depend on cp/parse.c.
582 ($(srcdir)/cp/parse.c): Moved from ../Makefile.in.
583
584 1999-03-17 Martin von Löwis <loewis@informatik.hu-berlin.de>
585
586 * parse.y (named_complex_class_head_sans_basetype):
587 Do not push a scope for error_mark_node.
588 (maybe_base_class_list): Likewise.
589
590 * decl.c (start_decl): Check for error_mark_node as a type.
591 Detected by g++.brendan/array-refs.C.
592 (start_decl_1): Likewise. Detected by g++.bugs/900322_01.C.
593 (maybe_build_cleanup_1): Likewise. Detected by
594 g++.jason/incomplete1.C.
595
596 * tree.c (build_dummy_object): Use void_zero_node instead of the
597 error_mark_node.
598 (is_dummy_object): Check for such a node.
599 Detected by g++.bob/inherit1.C
600
601 1999-03-16 Jason Merrill <jason@yorick.cygnus.com>
602
603 * method.c (old_backref_index): Split out...
604 (flush_repeats): From here. Rename back from try_old_backref.
605 (build_mangled_name): Put back some old-style repeat handling.
606
607 Mon Mar 15 21:57:16 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
608
609 * lex.c: Don't include setjmp.h.
610 (parse_float): New static function.
611 (pf_args): New struct.
612 (real_yylex): Use them in call to `do_float_handler'.
613
614 1999-03-15 Mark Mitchell <mark@markmitchell.com>
615
616 * decl.c (xref_basetypes): Set CLASSTYPE_VBASECLASSES here.
617 * tree.c (layout_basetypes): Not here.
618 * search.c (dfs_search): Remove; no longer used.
619
620 1999-03-12 Mark Mitchell <mark@markmitchell.com>
621
622 * decl2.c (validate_nonmember_using_decl): Issue sensible
623 error-messages on bogus qualifiers.
624
625 1999-03-14 Jason Merrill <jason@yorick.cygnus.com>
626
627 * call.c (add_function_candidate): Fix uninitialized variable.
628
629 * Makefile.in (search.o): Add dependency on varray.h.
630
631 1999-03-13 Jason Merrill <jason@yorick.cygnus.com>
632
633 * decl.c (duplicate_decls): Use same_type_p.
634 * method.c (try_old_backref): Renamed from flush_repeats. Use
635 same_type_p. Don't try to handle repeats. Return success.
636 (is_back_referenceable_type): Return 0 if TYPE_FOR_JAVA. Support
637 calls from old-style code, too.
638 (check_ktype): Use same_type_p.
639 (check_btype): Use same_type_p. Don't pull out TYPE_MAIN_VARIANT.
640 (build_qualified_name): Simplify logic.
641 (process_overload_item): Strip typedefs and quals at the top.
642 (build_mangled_name_for_type_with_Gcode): Remove call to
643 type_canonical_variant.
644 (build_mangled_name): Likewise. Remove support for old-style
645 repeats, which have been disabled since 2.7.2. Don't mess with
646 TREE_USED.
647 (build_decl_overload_real): Don't mess with TREE_USED.
648
649 1999-03-13 Nathan Sidwell <nathan@acm.org>
650
651 * error.c (cp_printers): Add 'F' escape character.
652 (dump_type_real): Remove TREE_LIST (fnargs) printing.
653 Functionality moved to dump_parameters.
654 (dump_type_suffix): Use dump_parameters and dump_exception_spec.
655 (dump_function_decl): Extend meaning of V parameter. Use
656 dump_parameters and dump_exception_spec.
657 (dump_parameters): New static function.
658 (dump_exception_spec): New static function.
659 (fndecl_as_string): Change argument semantics. Use
660 dump_function_decl directly.
661
662 * sig.c (build_signature_table_constructor): Use cp_error.
663
664 1999-03-13 Martin von Löwis <loewis@informatik.hu-berlin.de>
665
666 * semantics.c (finish_switch_cond): Handle error cases gracefully.
667 Detected by g++.law/enum5.C.
668
669 * typeck.c (build_modify_expr): Check for errors after resolving
670 offsets. Detected by g++.brendan/static1.C.
671
672 * decl.c (complete_array_type): Ignore initial_value if it is an
673 error. Detected by g++.benjamin/17930.C.
674
675 * typeck2.c (process_init_constructor): Return error if one argument
676 is in error. Detected by g++.benjamin/13478.C.
677
678 1999-03-12 Martin von Löwis <loewis@informatik.hu-berlin.de>
679
680 * decl.c (select_decl): Allow class templates when we need types.
681 * decl2.c (ambiguous_decl): Likewise.
682
683 1999-03-12 Mark Mitchell <mark@markmitchell.com>
684
685 * lex.c (do_identifier): Correct call to enforce_access.
686 * search.c (accessible_p): Tweak comment.
687
688 1999-03-10 Mark Mitchell <mark@markmitchell.com>
689
690 * semantics.c (begin_class_definition): Call build_self_reference.
691 (finish_member_declaration): Set DECL_CONTEXT for TYPE_DECLs.
692
693 * search.c (assert_canonical_unmarked): Fix typo in prototype.
694
695 * search.c (dfs_canonical_queue): New function.
696 (dfs_assert_unmarked_p): Likewise.
697 (assert_canonical_unmarked): Likewise.
698 (access_in_type): Use it.
699 (accessible_p): Likewise. Walk the whole tree when umarking.
700
701 * sig.c (build_signature_table_constructor): Use accessible_p
702 instead of compute_access.
703
704 1999-03-09 Jason Merrill <jason@yorick.cygnus.com>
705
706 * call.c (add_builtin_candidates): Handle overloaded conversion ops.
707
708 1999-03-09 Mark Mitchell <mark@markmitchell.com>
709
710 * cp-tree.h (flag_access_control): Declare.
711 (TREE_VIA_PPUBLIC): Document.
712 (DECL_NONSTATIC_MEMBER_P): New macro.
713 (enforce_access): Return an indication of whether or not access
714 was permitted.
715 (build_self_reference): Change prototype.
716 (compute_access): Replace with ...
717 (accessible_p): New function.
718 (dfs_walk): Change prototype.
719 (dfs_unmark): Likewise.
720 (markedp): Likewise.
721 * call.c (enforce_access): Use accessible_p.
722 * class.c (build_self_reference): Insert the declaration into the
723 list of members for this type, and make it public.
724 * decl.c (xref_basetypes): Avoid ill-timed recursion.
725 * init.c (build_offset_ref): Use lookup_member, not three separate
726 name-lookups. Call enforce_access rather than checking for
727 illegal accesses here.
728 (resolve_offset_ref): Likewise.
729 * lex.c (do_identifier): Likewise.
730 * method.c (hack_identifier): Likewise.
731 * parse.y (self_reference): Remove.
732 (opt_component_decl_list): Don't use it.
733 * parse.c: Regenerated.
734 * pt.c (print_candidates): Generalize to handle lists of
735 overloaded functions.
736 (instantiate_class_template): Don't rely on TREE_VIA_PRIVATE; it's
737 not set.
738 (get_template_base): Use new calling convention for dfs_walk.
739 * search.c: Include varray.h. Add prototypes.
740 (dfs_walk): Accept a data pointer to pass to the work functions.
741 All callers changed. All work functions changed.
742 (breadth_first_search): Rename to bfs_walk, and make consistent
743 with dfs_walk.
744 (dfs_walk_real): New function.
745 (canonical_binfo): New function.
746 (context_for_name_lookup): Likewise.
747 (shared_marked_p): Likewise.
748 (shared_unmarked_p): Likewise.
749 (lokup_field_queue_p): Likewise.
750 (lookup_field_r): Generalize to handle both functions and fields.
751 (lookup_field): Just call lookup_member.
752 (lookup_fnfields): Likewise.
753 (lookup_member): Move body of lookup_field here and generalize.
754 (dfs_accessible_queue_p): Likewise.
755 (dfs_accessible_p): Likewise.
756 (dfs_access_in_type): Likewise.
757 (access_in_type): Likewise.
758 (compute_access): Remove, and replace with ...
759 (accessible_p): New function.
760 (vbase_types): Remove.
761 (vbase_decl_ptr_intermediate): Likewise.
762 (vbase_decl_ptr): Likewise.
763 (vbase_init_result): Likewise.
764 (closed_envelopes): Likewise.
765 (bvtable): Likewise.
766
767 1999-03-09 Jason Merrill <jason@yorick.cygnus.com>
768
769 * call.c (add_function_candidate): Check for proper number of args
770 before checking the validity of those args.
771
772 1999-03-06 Jason Merrill <jason@yorick.cygnus.com>
773
774 * cp-tree.h (struct lang_type): Add anon_union field.
775 (ANON_UNION_TYPE_P): Use it instead of examining type.
776 (SET_ANON_UNION_TYPE_P): New macro.
777 * decl.c (check_tag_decl): Use it.
778
779 * search.c (compute_access): Handle non-type contexts earlier, and
780 handle NULL_TREE.
781
782 * tree.c (build_exception_variant): Use copy_to_permanent.
783
784 * decl2.c (setup_initp): Give statics with no priority the default
785 priority here.
786 (do_dtors, do_ctors, finish_file): Remove special handling of
787 non-prioritized statics.
788
789 1999-03-05 Mark Mitchell <mark@markmitchell.com>
790
791 * cp-tree.h (ANON_UNION_TYPE_P): Robustify.
792 * decl.c (make_typename_type): Don't issue an error if an
793 immediate lookup fails; it migt be resolved later.
794 * friend.c (is_friend): Add comment.
795 * search.c (breadth_first_search): Add POSTFN and DATA
796 parameters. Tidy. All callers changed.
797 (lookup_field_queue_p): New function.
798 (lookup_field_r): Likewise.
799 (lookup_field_post): Likewise.
800 (lookup_field): Use them, via breadth_first_search, instead of
801 duplicating logic.
802 (compute_access): Robustify.
803 (lookup_fnfield_info): New structure.
804
805 1999-03-05 Jason Merrill <jason@yorick.cygnus.com>
806
807 * pt.c (tsubst, case ARRAY_REF): Use tsubst_expr again.
808
809 1999-03-03 Jason Merrill <jason@yorick.cygnus.com>
810
811 * class.c, decl2.c, method.c, pt.c: Add 'static' to make SunOS 4
812 cc happy.
813
814 * decl2.c (import_export_class): Also return if
815 CLASSTYPE_INTERFACE_ONLY is set.
816
817 1999-03-03 Martin von Löwis <loewis@informatik.hu-berlin.de>
818
819 * decl.c (push_overloaded_decl): Only overwrite the old binding if
820 there was one.
821 * decl2.c (do_local_using_decl): Fix loop termination.
822
823 1999-03-02 Mark Mitchell <mark@markmitchell.com>
824
825 * cp-tree.h (determine_specialization): Don't declare.
826 * pt.c (determine_specialization): Make it static. Eliminate
827 complain parameter. Note that decl is always non-NULL now, and
828 simplify accordingly.
829
830 * decl.c (maybe_push_to_top_level): Always call
831 push_cp_function_context.
832 (pop_from_top_level): Always call pop_cp_function_context.
833
834 1999-02-26 Nathan Sidwell <nathan@acm.org>
835
836 * typeck.c (complete_type_or_else): Add VALUE arg, for helpful
837 diagnostics.
838 * cp-tree.h (complete_type_or_else): Added VALUE parameter.
839 * init.c (build_new_1): Extra arg to complete_type_or_else.
840 (build_delete): Likewise.
841 * typeck.c (require_complete_type): Likewise.
842 (pointer_int_sum): Likewise.
843 (pointer_diff): Likewise.
844 (build_component_ref): Likewise.
845
846 * typeck2.c (incomplete_type_error): Always use cp_error.
847 Show declaration of undefined type, if appropriate.
848 Deal with UNKNOWN_TYPE nodes.
849
850 * typeck.c (require_complete_type): Use TYPE_SIZE as
851 size_zero_node to mean incomplete type.
852 (require_complete_type_in_void): New function.
853 (build_compound_expr): Call complete_type_in_void for LHS.
854 (build_c_cast): Call complete_type_in_void for void cast.
855 * cvt.c (ocp_convert): Call complete_type_in_void for void cast.
856 * decl.c (cplus_expand_expr_stmt): Void expression checks moved to
857 require_complete_type_in_void. Call it.
858 * cp-tree.h (require_complete_type_in_void): Prototype new function.
859
860 * typeck.c (convert_arguments): Use alternative format for
861 function decls. Don't require_complete_type here. Simplify
862 diagnostic printing.
863 (convert_for_initialization): Don't require_complete_type on RHS yet.
864 * call.c (convert_arg_to_ellipsis): Call require_complete_type.
865
866 * call.c (build_over_call): Cope with qualified void return type.
867 * semantics.c (finish_call_expr): Likewise.
868 * typeck.c (build_function_call_real): Likewise.
869 (c_expand_return): Likewise.
870 * decl2.c (reparse_absdcl_as_expr): Cope with qualified void type.
871
872 * call.c (print_z_candidates): Use alternate print format, to be
873 consistent with (pt.c) print_candidates.
874 * method.c (hack_identifier): List candidate members.
875 * search.c (lookup_field): Build ambiguous list, and show it, if
876 ambiguous.
877
878 1999-02-26 Mark Mitchell <mark@markmitchell.com>
879
880 * typeck.c (decay_conversion): Don't confuse constant array
881 variables with their initializers.
882
883 * decl.c (duplicate_decls): Copy DECL_TEMPLATE_INSTANTIATED when
884 merging decls.
885 * pt.c (regenerate_decl_from_template): Tweak for clarity.
886 (instantiate_decl): Mark a decl instantiated before regenerating
887 it to avoid recursion.
888 * tree.c (mapcar): Don't call decl_constant_value unless we know
889 something is TREE_READONLY_DECL_P.
890
891 * class.c (check_for_override): Don't stop checking when we find
892 the first overridden function. Delete #if 0'd code.
893 * search.c (get_matching_virtual): Likewise.
894
895 1999-02-25 Richard Henderson <rth@cygnus.com>
896
897 * lang-specs.h: Define __FAST_MATH__ when appropriate.
898
899 1999-02-24 Mike Stump <mrs@wrs.com>
900
901 * typeck.c (convert_for_assignment): Allow boolean integral constant
902 expressions to convert to null pointer.
903
904 1999-02-24 Martin von Loewis <loewis@informatik.hu-berlin.de>
905
906 * decl.c (lookup_namespace_name): Resolve namespace aliases.
907
908 * class.c (push_nested_class): Allow namespaces.
909
910 * decl2.c (set_decl_namespace): Add friendp parameter.
911 * decl.c (grokfndecl): Pass it.
912 (grokvardecl): Likewise.
913 * cp-tree.h: Change declaration.
914
915 1999-02-24 Jason Merrill <jason@yorick.cygnus.com>
916
917 * pt.c (tsubst): Allow an array of explicit size zero.
918
919 1999-02-23 Jason Merrill <jason@yorick.cygnus.com>
920
921 * errfn.c: Change varargs code to look like toplev.c.
922
923 * method.c (process_modifiers): Don't prepend 'U' for char or
924 wchar_t.
925
926 1999-02-20 Craig Burley <craig@jcb-sc.com>
927
928 * Make-lang.in (cplib2.ready): Don't consider updating
929 cplib2 stuff if the current directory isn't writable, as
930 it won't work (such as during a `make install').
931
932 Sun Feb 21 20:38:00 1999 H.J. Lu (hjl@gnu.org)
933
934 * decl2.c (start_objects): Make file scope constructors and
935 destructors local to the file if ASM_OUTPUT_CONSTRUCTOR and
936 ASM_OUTPUT_DESTRUCTOR are defined.
937
938 1999-02-19 Mark Mitchell <mark@markmitchell.com>
939
940 * cp-tree.h (CLASSTYPE_METHOD_VEC): Adjust comment.
941 (fn_type_unification): Adjust prototype.
942 (lookup_fnfields_1): Declare.
943 * call.c (add_template_candidate_real): Adjust call to
944 fn_type_unification.
945 * class.c (add_method): Don't allow duplicate declarations of
946 constructors or destructors.
947 (resolve_address_of_overloaded_function): Remove unused variable.
948 Adjust call to fn_type_unification.
949 * decl.c (grokfndecl): Be more robust in the face of illegal
950 specializations.
951 * decl2.c (check_classfn): Remove hokey handling of member
952 templates.
953 * pt.c (determine_specialization): Improve comments. Adjust to
954 handle template argument deduction as per the standard.
955 (check_explicit_specialization): Fix comment spacing. Handle
956 type-conversion operators correctly. Improve error-recovery.
957 (fn_type_unification): Remove EXTRA_FN_ARG parameter.
958 (get_bindings_real): Simplify handling of static members.
959 * search.c (lookup_fnfields_1): Make it have external linkage.
960 * typeck.c (compparms): Fix comment.
961 (build_unary_op): Don't try to figure out which template
962 specialization is being referred to when when the address-of
963 operator is used with a template function.
964
965 Thu Feb 18 23:40:01 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
966
967 * cp-tree.h (lvalue_or_else): Qualify a char* with the `const'
968 keyword to match an analogous change at the top level.
969
970 * tree.c (lvalue_or_else): Likewise.
971
972 1999-02-17 Mark Mitchell <mark@markmitchell.com>
973
974 * decl.c (xref_basetypes): Comment.
975 * pt.c (instantiate_class_template): Use xref_basetypes.
976
977 1999-02-16 Mark Mitchell <mark@markmitchell.com>
978
979 * cp-tree.h (tsubst): Change prototype.
980 (tsubst_expr): Likewise.
981 (tsubst_copy): Likewise.
982 (type_unification): Remove prototype.
983 * call.c (convert_default_arg): Adjust call to tsubst_expr.
984 * class.c (resolve_address_of_overloaded_function): Just use
985 fn_type_unification.
986 * decl.c (grokdeclarator): Adjust call to tsubst.
987 * method.c (build_template_parm_names): Likewise.
988 * pt.c (GTB_VIA_VIRTUAL): New macro.
989 (GTB_IGNORE_TYPE): Likewise.
990 (resolve_overloaded_unification): Add `complain' parameter.
991 (try_one_overload): Likewise.
992 (tsubst_template_arg_vector): Likewise.
993 (tsubst_template_parms): Likewise.
994 (tsubst_aggr_type): Likewise.
995 (tsubst_arg_types): Likewise.
996 (tsubst_call_declarator_parms): Likewise.
997 (unify): Remove explicit_mask.
998 (type_unification_real): Likewise.
999 (get_template_base_recursive): Likewise.
1000 (coerce_template_template_parms): Provide prototype.
1001 (tsubst_function_type): Likewise.
1002 (try_class_unification): New function.
1003 All callers changed to use new complain parameter.
1004 (get_template_base): Use try_class_unification.
1005 (unify): Adjust handling of classes derived from template types.
1006 (fn_type_unification): Substitute explicit arguments before
1007 unification.
1008
1009 1999-02-16 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
1010
1011 * decl.c (pushdecl): Remove dead code.
1012
1013 1999-02-16 Jason Merrill <jason@yorick.cygnus.com>
1014
1015 * decl2.c (finish_objects): Fix code I missed in previous change.
1016
1017 1999-02-13 Jason Merrill <jason@yorick.cygnus.com>
1018
1019 * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
1020 (grokdeclarator): Don't expect error_mark_node from grokfndecl.
1021
1022 * pt.c (maybe_process_partial_specialization): Complain about
1023 'template <>' on non-specialization.
1024
1025 1999-02-10 Jason Merrill <jason@yorick.cygnus.com>
1026
1027 * decl.c (grokdeclarator): Catch wierd declarators.
1028 * decl2.c (finish_file): Don't abort because of namespace parsing
1029 failure.
1030 (check_decl_namespace): Remove.
1031
1032 1999-02-09 Mark Mitchell <mark@markmitchell.com>
1033
1034 * cp-tree.h (get_template_base): Don't declare.
1035 (dfs_walk): Declare.
1036 (dfs_unmark): Likewise.
1037 (markedp): Likewise.
1038 * pt.c (unify): Remove duplicate declaration. Pass tparms and
1039 targs to get_template_base.
1040 (get_template_base_recursive): Move here from search.c. Check to
1041 see that the base found can be instantiated to form the desired
1042 type.
1043 (get_template_base): Likewise.
1044 (get_class_bindings): Simplify.
1045 * search.c (get_template_base_recursive): Move to pt.c.
1046 (get_template_base): Likewise.
1047 (markedp): Make it global.
1048 (dfs_walk): Likewise.
1049 (dfs_unmark): Likewise.
1050
1051 1999-02-07 Jason Merrill <jason@yorick.cygnus.com>
1052
1053 * pt.c (maybe_process_partial_specialization): Complain about
1054 specialization in wrong namespace.
1055 * tree.c (decl_namespace_context): New fn.
1056
1057 1999-02-06 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
1058
1059 * decl2.c (arg_assoc_type): Handle TEMPLATE_TEMPLATE_PARM.
1060 * pt.c (coerce_template_template_parms): Handle nested
1061 template template parameters.
1062
1063 Sat Feb 6 18:08:40 1999 Jeffrey A Law (law@cygnus.com)
1064
1065 * typeck2.c: Update email addresses.
1066
1067 1999-02-04 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
1068
1069 * pt.c (unify): Call coerce_template_parms with the COMPLAIN flag
1070 turned off.
1071
1072 1999-02-04 Jason Merrill <jason@yorick.cygnus.com>
1073
1074 * lex.c (retrofit_lang_decl): Split out...
1075 (build_lang_decl): From here.
1076 * decl.c (pushdecl): Call it for functions generated by the middle
1077 end that don't have DECL_LANG_SPECIFIC.
1078 * cp-tree.h: Declare it.
1079
1080 * decl2.c: Remove flag_init_priority. Always enable initp stuff.
1081 (start_objects, finish_objects): Only use special
1082 init_priority code if the user specified a priority.
1083 (do_ctors, do_dtors): Use DEFAULT_INIT_PRIORITY for the non-initp
1084 objects.
1085
1086 Wed Feb 3 22:50:17 1999 Marc Espie <Marc.Espie@liafa.jussieu.fr>
1087
1088 * Make-lang.in (GXX_OBJS): Remove choose-temp.o, pexecute.o and
1089 mkstemp.o. Get them from libiberty now.
1090 (DEMANGLER_PROG): Simlarly, remove getopt.o getopt1.o.
1091
1092 Tue Feb 2 22:38:48 1999 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
1093
1094 * decl2.c (lang_decode_option): Use read_integral_parameter.
1095
1096 1999-02-01 Mark Mitchell <mark@markmitchell.com>
1097
1098 * pt.c (tsubst, case TYPENAME_TYPE): Check TYPE_BEING_DEFINED
1099 before calling complete_type_or_else.
1100
1101 Mon Feb 1 09:49:52 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1102
1103 * input.c (inline): Don't define, its handled by system.h.
1104
1105 Sun Jan 31 20:34:29 1999 Zack Weinberg <zack@rabi.columbia.edu>
1106
1107 * decl2.c: Don't define flag_no_ident here. Don't process
1108 -f(no-)ident here.
1109 * cp-tree.h: Don't declare flag_no_ident here.
1110 * lang-specs.h: Map -Qn to -fno-ident.
1111
1112 1999-01-28 Jason Merrill <jason@yorick.cygnus.com>
1113
1114 * cp-tree.h (struct tree_binding): Replace scope field with a union.
1115 (BINDING_SCOPE): Adjust.
1116 * decl.c (BINDING_LEVEL): Adjust.
1117
1118 1999-01-26 Jason Merrill <jason@yorick.cygnus.com>
1119
1120 * pt.c (instantiate_class_template): Set up the DECL_INITIAL of
1121 member constants.
1122
1123 * init.c (expand_member_init): Pull out TYPE_MAIN_VARIANT in
1124 a ctor initializer.
1125
1126 * tree.c (equal_functions): Fix name in prototype.
1127
1128 * decl.c (push_local_binding): Add FLAGS argument.
1129 (pushdecl, push_overloaded_decl): Pass it.
1130 * decl2.c (do_local_using_decl): Likewise.
1131 * cp-tree.h: Adjust prototype.
1132 * decl.c (poplevel): Fix logic.
1133
1134 * decl.c (push_local_binding): Also wrap used decls in a TREE_LIST.
1135 (poplevel): Handle that. Fix logic for removing TREE_LISTs.
1136 (cat_namespace_levels): Don't loop forever.
1137
1138 1999-01-25 Richard Henderson <rth@cygnus.com>
1139
1140 * typeck.c (build_reinterpret_cast): Fix typo in duplicated test.
1141
1142 1999-01-25 Jason Merrill <jason@yorick.cygnus.com>
1143
1144 * class.c (resolve_address_of_overloaded_function): Mark the
1145 chosen function used.
1146
1147 * call.c (build_call): Make sure that a function coming in has
1148 been marked used already.
1149 * decl.c (expand_static_init): Call mark_used instead of
1150 assemble_external.
1151 * except.c (call_eh_info, do_pop_exception, expand_end_eh_spec,
1152 alloc_eh_object, expand_throw): Likewise.
1153 * init.c (build_builtin_delete_call): Likewise.
1154 * rtti.c (call_void_fn, get_tinfo_fn, build_dynamic_cast_1,
1155 expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc,
1156 expand_generic_desc): Likewise.
1157
1158 1999-01-25 Martin von Löwis <loewis@informatik.hu-berlin.de>
1159
1160 * tree.c (equal_functions): New function.
1161 (ovl_member): Call it.
1162
1163 1999-01-24 Jason Merrill <jason@yorick.cygnus.com>
1164
1165 * cvt.c (cp_convert_to_pointer): Fix conversion of 0 to pmf.
1166
1167 1999-01-25 Martin von Loewis <loewis@informatik.hu-berlin.de>
1168
1169 * decl.c (decls_match): Return 1 if old and new are identical.
1170 (push_overloaded_decl): Set OVL_USED when PUSH_USING.
1171
1172 1999-01-24 Jason Merrill <jason@yorick.cygnus.com>
1173
1174 * decl.c (start_function): Make member functions one_only on windows.
1175 * decl2.c (import_export_decl): Likewise.
1176
1177 * decl.c (grokdeclarator): Don't complain about implicit int in
1178 a system header. Change same-name field check to not complain in
1179 a system header instead of within extern "C".
1180
1181 1999-01-21 Mark Mitchell <mark@markmitchell.com>
1182
1183 * cp-tree.h (PUSH_GLOBAL): New macro.
1184 (PUSH_LOCAL): Likewise.
1185 (PUSH_USING): Likewise.
1186 (namespace_bindings_p): Declare.
1187 (push_overloaded_decl): Likewise.
1188 * decl.c (push_overloaded_decl): Don't make it static. Check for
1189 illegal declarations after using declarations here.
1190 (namespace_bindings_p): Likewise.
1191 (duplicate_decls): Don't consider declarations from different
1192 namespaces to be the same.
1193 (pushdecl): Use symbolic PUSH_ constants in calls to
1194 push_overloaded_decl.
1195 (push_overloaded_decl_1): Likewise.
1196 * decl2.c (validate_nonmember_using_decl): Tweak `std' handling.
1197 (do_nonmember_using_decl): Check for illegal using declarations
1198 after ordinary declarations here.
1199 (do_local_using_decl): Call pushdecl to insert declarations.
1200
1201 1999-01-21 Jason Merrill <jason@yorick.cygnus.com>
1202
1203 * decl.c (grokdeclarator): Fix lang_c -> lang_name_c typo.
1204
1205 1999-01-21 Mark Mitchell <mark@markmitchell.com>
1206
1207 * tree.c (build_cplus_array_type_1): Don't call build_array_type
1208 for types involving template parameters.
1209
1210 * cp-tree.h (PARM_DECL_EXPR): Delete.
1211 (convert_default_arg): Change prototype.
1212 (check_default_argument): Declare.
1213 (search_tree): Likewise.
1214 * call.c (convert_default_arg): Take the function to which the
1215 default argument belongs as a parameter, and do any necessary
1216 instantiation here, instead of ...
1217 (build_over_call): Here.
1218 * decl.c (local_variable_p): New function.
1219 (check_default_argument): Likewise, split out and tidied from ...
1220 (grokparms): Here.
1221 * error.c (dump_expr): Don't set PARM_DECL_EXPR.
1222 * pt.c (tsubst_call_declarator_parms): New function.
1223 (for_each_template_parm): Handle ARRAY_REFs. Do the obvious thing
1224 with CALL_EXPRs, rather than trying to be clever.
1225 (tsubst): Use tsubst_call_declarator_parms.
1226 * tree.c (search_tree): Don't make it static.
1227 * typeck.c (convert_arguments): Use new interface to
1228 convert_default_arg.
1229
1230 1999-01-20 Mark Mitchell <mark@markmitchell.com>
1231
1232 * error.c (dump_function_decl): Don't print the argument types for
1233 a function when the verbosity level is negative.
1234
1235 * call.c (build_over_call): Check format attributes at call-time.
1236
1237 * pt.c (tsubst_copy): Fix comment.
1238 (unify): Don't allow unification with variable-sized arrays.
1239
1240 * semantics.c (finish_stmt_expr): When processing a template make
1241 the BIND_EXPR long-lived.
1242
1243 1999-01-19 Jason Merrill <jason@yorick.cygnus.com>
1244
1245 * decl2.c (finish_vtable_vardecl): Make vtables comdat here.
1246 (import_export_vtable): Not here.
1247
1248 1999-01-18 Jason Merrill <jason@yorick.cygnus.com>
1249
1250 * typeck.c (build_component_ref): Wrap an OVERLOAD around a unique
1251 non-static member function.
1252
1253 1999-01-18 Nathan Sidwell <nathan@acm.org>
1254
1255 * class.c (instantiate_type): Only diagnose illegal address of member
1256 function if complaining.
1257
1258 * decl.c (lookup_name_real): Remove duplicate code.
1259
1260 1999-01-18 Jason Merrill <jason@yorick.cygnus.com>
1261
1262 * tree.c (copy_template_template_parm): Use permanent_obstack.
1263
1264 1999-01-18 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
1265
1266 * pt.c (unify): Remove restrictions on deduction of argument
1267 of template template parameters.
1268
1269 1999-01-18 Nathan Sidwell <nathan@acm.org>
1270
1271 * rtti.c (build_dynamic_cast_1): Resolve OFFSET_REF exprs.
1272
1273 * class.c (resolve_address_of_overloaded_function): Show list of
1274 all candidates, when none of them match.
1275
1276 1999-01-18 Chip Salzenberg <chip@perlsupport.com>
1277
1278 * typeck.c (comp_ptr_ttypes_reinterpret): Per ANSI, tighten up
1279 definition of 'casting away const' in reinterpret_cast<>.
1280
1281 1999-01-18 Graham <grahams@rcp.co.uk>
1282
1283 * cvt.c: Add include for decl.h, remove extern for
1284 static_aggregates which is now provided by decl.h.
1285
1286 * Makefile.in (cvt.o): Add dependency for decl.h and missing
1287 dependencies for convert.h and flags.h.
1288
1289 1999-01-18 Nathan Sidwell <nathan@acm.org>
1290
1291 * decl2.c (do_dtors): Set current location to that of the
1292 decl, for sensible diagnostics and debugging.
1293 (check_classfn): Issue `incomplete type' error, if
1294 class is not defined.
1295
1296 1999-01-16 Jason Merrill <jason@yorick.cygnus.com>
1297
1298 * cp-tree.h: Add prototype for bound_pmf_p.
1299
1300 1999-01-16 Jason Merrill <jason@yorick.cygnus.com>
1301 Manfred Hollstein <manfred@s-direktnet.de>
1302
1303 * decl.c (grokdeclarator): Don't make 'main(){}' an error with only
1304 -Wreturn-type.
1305
1306 1999-01-16 Nathan Sidwell <nathan@acm.org>
1307
1308 * cp-tree.h (struct lang_type): Added has_mutable flag.
1309 (CLASSTYPE_HAS_MUTABLE): New macro to access it.
1310 (TYPE_HAS_MUTABLE_P): New macro to read it.
1311 (cp_has_mutable_p): Prototype for new function.
1312 * class.c (finish_struct_1): Set has_mutable from members.
1313 * decl.c (cp_finish_decl): Clear decl's TREE_READONLY flag, if
1314 it contains a mutable.
1315 * typeck.c (cp_has_mutable_p): New function.
1316
1317 1999-01-15 Mark Mitchell <mark@markmitchell.com>
1318
1319 * pt.c (process_template_parm): Ignore top-level qualifiers on
1320 non-type parameters.
1321
1322 * decl.c (start_function): Use current_function_parms in the call
1323 to require_complete_type_for_parms, not the probably empty
1324 DECL_ARGUMENTS.
1325
1326 1999-01-14 Jason Merrill <jason@yorick.cygnus.com>
1327
1328 * semantics.c (finish_asm_stmt): Don't warn about redundant volatile.
1329
1330 * decl2.c (import_export_class): MULTIPLE_SYMBOL_SPACES only means
1331 that we don't suppress the other copies.
1332 * lex.c (handle_cp_pragma): Likewise.
1333
1334 1999-01-13 Mark Mitchell <mark@markmitchell.com>
1335
1336 * decl.c (grokdeclarator): Undo 1998-12-14 change.
1337 * tree.c (build_cplus_array_type_1): Likewise.
1338 * pt.c (instantiate_class_template): Remove misleading comment.
1339 (tsubst_aggr_type): Substitute if there are template parameters,
1340 regardless of whether or not they use template arguments.
1341 (unify): Likewise, but for unification.
1342
1343 1999-01-12 Richard Henderson <rth@cygnus.com>
1344
1345 * cp-tree.h (flag_permissive): Declare extern.
1346
1347 1999-01-06 Mark Mitchell <mark@markmitchell.com>
1348
1349 * cp-tree.h (IDENTIFIER_TYPENAME_P): Use OPERATOR_TYPENAME_FORMAT
1350 here.
1351 (lang_type): Add is_partial_instantiation. Decrease width of
1352 dummy.
1353 (PARTIAL_INSTANTIATION_P): New macro.
1354 (OPERATOR_TYPENAME_P): Remove.
1355 * decl.c (unary_op_p): Use IDENTIFIER_TYPENAME_P, not
1356 OPERATOR_TYPENAME_P.
1357 (grok_op_properties): Likewise.
1358 * friend.c (do_friend): Handle friends that are member functions
1359 correctly.
1360 * lex.c (init_parse): Use OPERATOR_TYPENAME_FORMAT.
1361 * pt.c (instantiate_class_template): Rework for clarity. Avoid
1362 leaving TYPE_BEING_DEFINED set in obscure cases. Don't do
1363 any more partial instantiation than is absolutely necessary for
1364 implicit typename. Set PARTIAL_INSTANTIATION_P.
1365 (tsubst_decl): Use IDENTIFIER_TYPENAME_P.
1366 * semantics.c (begin_class_definition): Handle partial
1367 specializations of a type that was previously partially
1368 instantiated.
1369
1370 Wed Jan 6 03:18:53 1999 Mark Elbrecht <snowball3@usa.net.
1371
1372 * g++spec.c (LIBSTDCXX): Provide default definition.
1373 (lang_specific_driver): Use LIBSTDCXX instead of "-lstdc++".
1374
1375 Tue Jan 5 22:11:25 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1376
1377 * Make-lang.in (g++.o): Depend on prefix.h.
1378
1379 1999-01-04 Jason Merrill <jason@yorick.cygnus.com>
1380
1381 * tree.c (bound_pmf_p): New fn.
1382 * typeck.c (build_c_cast): Use it.
1383
1384 * decl.c (grok_op_properties): Use same_type_p.
1385
1386 Tue Dec 22 15:09:25 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1387
1388 * Makefile.in (cvt.o): Depend on toplev.h.
1389
1390 * cp-tree.h (check_template_shadow, pod_type_p): Add prototypes.
1391
1392 * cvt.c: Include toplev.h.
1393
1394 * except.c (get_eh_caught, get_eh_handlers): Hide prototypes and
1395 definitions.
1396
1397 * init.c (expand_vec_init): Initialize variable `itype'.
1398
1399 * lex.c (yyerror): Cast the argument passed to a ctype function to
1400 an unsigned char.
1401
1402 * method.c (build_mangled_C9x_name): Wrap prototype and definition
1403 in "HOST_BITS_PER_WIDE_INT >= 64".
1404
1405 * typeck.c (build_binary_op): Mark parameter `convert_p' with
1406 ATTRIBUTE_UNUSED.
1407
1408 1998-12-22 Mark Mitchell <mark@markmitchell.com>
1409
1410 * cp-tree.h (TYPE_RAISES_EXCEPTIONS): Improve documentation.
1411 * tree.c (build_exception_variant): Don't crash on empty throw
1412 specs.
1413
1414 1998-12-18 DJ Delorie <dj@cygnus.com>
1415
1416 * cvt.c (convert_to_reference): Check for both error_mark_node
1417 and NULL_NODE after call to convert_for_initialization.
1418
1419 1998-12-17 Jason Merrill <jason@yorick.cygnus.com>
1420
1421 * error.c (interesting_scope_p): New fn.
1422 (dump_simple_decl): Use it.
1423 (dump_expr, case CONSTRUCTOR): Force a & for a PMF.
1424 (dump_expr, case OFFSET_REF): Print ->* if appropriate.
1425
1426 1998-12-16 Mark Mitchell <mark@markmitchell.com>
1427
1428 * class.c (resolve_address_of_overloaded_function): Do conversion
1429 to correct type here, rather than ...
1430 (instantiate_type): Here.
1431
1432 * cp-tree.h (DECL_TEMPLATE_PARM_P): New macro.
1433 (DECL_TEMPLATE_TEMPLATE_PARM_P): Use it.
1434 (decl_template_parm_p): Remove.
1435 * decl.c (pushdecl): Don't set DECL_CONTEXT for a template
1436 parameter.
1437 * lex.c (do_identifier): Use DECL_TEMPLATE_PARM_P.
1438 * pt.c (push_inline_template_parms_recursive): Set it.
1439 (decl_template_parm_p): Remove.
1440 (check_template_shadow): Use DECL_TEMPLATE_PARM_P.
1441 (process_template_parm): Set it.
1442
1443 Wed Dec 16 16:33:58 1998 Dave Brolley <brolley@cygnus.com>
1444
1445 * lang-specs.h (default_compilers): Pass -MD, -MMD and -MG to cc1plus
1446 if configured with cpplib.
1447
1448 1998-12-15 Mark Mitchell <mark@markmitchell.com>
1449
1450 * decl.c (poplevel): Make sure ns_binding is initialized.
1451
1452 * decl.c (finish_function): Undo inadvertent change in previous
1453 patch.
1454
1455 1998-12-14 Mark Mitchell <mark@markmitchell.com>
1456
1457 * class.c (pushclass): Tweak handling of class-level bindings.
1458 (resolve_address_of_overloaded_function): Update pointer-to-member
1459 handling.
1460 (instantiate_type): Likewise.
1461 * cvt.c (cp_convert_to_pointer): Likewise.
1462 * decl.c (pop_binding): Take the DECL to pop, not just the name.
1463 Deal with `struct stat' hack.
1464 (binding_level): Add to documentation.
1465 (push_binding): Clear BINDING_TYPE.
1466 (add_binding): New function.
1467 (push_local_binding): Use it.
1468 (push_class_binding): Likewise.
1469 (poplevel): Adjust calls to pop_binding.
1470 (poplevel_class): Likewise.
1471 (pushdecl): Adjust handling of TYPE_DECLs; add bindings for hidden
1472 declarations to current binding level.
1473 (push_class_level_binding): Likewise.
1474 (push_overloaded_decl): Adjust handling of OVERLOADs in local
1475 bindings.
1476 (lookup_namespace_name): Don't crash when confronted with a
1477 TEMPLATE_DECL.
1478 (lookup_name_real): Do `struct stat' hack in local binding
1479 contexts.
1480 (build_ptrmemfunc_type): Adjust documentation.
1481 (grokdeclarator): Don't avoid building real array types when
1482 processing templates unless really necessary.
1483 (finish_method): Adjust calls to pop_binding.
1484 * decl2.c (reparse_absdcl_as_expr): Recursively call ourselves,
1485 not reparse_decl_as_expr.
1486 (build_expr_from_tree): Deal with a template-id as the function to
1487 call in a METHOD_CALL_EXPR.
1488 * pt.c (convert_nontype_argument): Tweak pointer-to-member handling.
1489 (maybe_adjust_types_For_deduction): Don't do peculiar things with
1490 METHOD_TYPEs here.
1491 (resolve_overloaded_unification): Handle COMPONENT_REFs. Build
1492 pointer-to-member types where necessary.
1493 * tree.c (build_cplus_array_type_1): Don't avoid building real
1494 array types when processing templates unless really necessary.
1495 (build_exception_variant): Compare the exception lists correctly.
1496
1497 1998-12-13 Mark Mitchell <mark@markmitchell.com>
1498
1499 * cp-tree.def (CPLUS_BINDING): Update documentation.
1500 * cp-tree.h (LOCAL_BINDING_P): New macro.
1501 (lang_identifier): Rename local_value to bindings.
1502 (tree_binding): Make `scope' of type `void*', not `tree'.
1503 (BINDING_SCOPE): Update documentation.
1504 (IDENTIFIER_LOCAL_VALUE): Remove.
1505 (IDENTIFIER_CLASS_VALUE): Document.
1506 (IDENTIFIER_BINDING): New macro.
1507 (IDENTIFIER_VALUE): Likewise.
1508 (TIME_IDENTIFIER_TIME): Likewise.
1509 (TIME_IDENTIFIER_FILEINFO): Likewise.
1510 (IMPLICIT_TYPENAME_P): Likewise.
1511 (set_identifier_local_value): Remove.
1512 (push_local_binding): New function.
1513 (push_class_binding): Likewise.
1514 * class.c (pushclass): Update comments; use push_class_binding.
1515 * decl.c (set_identifier_local_value_with_scope): Remove.
1516 (set_identifier_local_value): Likewise.
1517 (push_binding): New function.
1518 (pop_binding): Likewise.
1519 (binding_level): Update documentation. Remove shadowed.
1520 (BINDING_LEVEL): New macro.
1521 (free_binding_nodes): New variable.
1522 (poplevel): Adjust for new name-lookup scheme. Don't mess up
1523 BLOCK_VARs when doing for-scope extension. Remove effectively
1524 dead code.
1525 (pushlevel_class): Tweak formatting.
1526 (poplevel_class): Adjust for new name-lookup scheme.
1527 (print_binding_level): Likewise.
1528 (store_bindings): Likewise.
1529 (pushdecl): Likewise.
1530 (pushdecl_class_level): Likewise.
1531 (push_class_level_binding): Likewise.
1532 (push_overloaded_decl): Update comments. Adjust for new
1533 name-lookup scheme.
1534 (lookup_name_real): Likewise.
1535 (lookup_name_current_level): Likewise.
1536 (cp_finish_decl): Likewise.
1537 (require_complete_types_for_parms): Likewise. Remove misleading
1538 #if 0'd code.
1539 (grok_parms): Likewise. Don't call
1540 require_complete_types_for_parms here.
1541 (grok_ctor_properties): Don't treat templates as copy
1542 constructors.
1543 (grop_op_properties): Or as assignment operators.
1544 (start_function): Document. Adjust for new name-lookup scheme.
1545 (finish_function): Likewise.
1546 * decl2.c (do_local_using_decl): Use push_local_binding.
1547 * lex.c (begin_definition_of_inclass_inline): New function, split
1548 out from ...
1549 (do_pending_inlines): Here, and ...
1550 (process_next_inline): Here.
1551 (get_time_identifier): Use TIME_IDENTIFIER_* macros.
1552 (init_filename_times): Likewise.
1553 (extract_interface_info): Likewise.
1554 (ste_typedecl_interface_info): Likewise.
1555 (check_newline): Likewise.
1556 (dump_time_statistics): Likewise.
1557 (handle_cp_pragma): Likewise.
1558 (do_identifier): Adjust for new name-lookup scheme.
1559 * parse.y (function_try_block): Return ctor_initializer_opt value.
1560 (fndef): Use it.
1561 (fn.defpen): Pass appropriate values to start_function.
1562 (pending_inline): Use functor_try_block value, and pass
1563 appropriate values to finish_function.
1564 * pt.c (is_member_template): Update documentation; remove handling
1565 of FUNCTION_DECLs. As per name, this function should deal only in
1566 TEMPLATE_DECLs.
1567 (decl_template_parm_p): Change name of olddecl parameter to decl.
1568 (check_template_shadow): Adjust for new name-lookup scheme.
1569 (lookup_template_class): Likewise.
1570 (tsubst_decl): Tweak so as not to confuse member templates with
1571 copy constructors and assignment operators.
1572 (unify): Handle UNION_TYPEs.
1573 * ptree.c (print_lang_identifier): Adjust for new name-lookup scheme.
1574 (lang_print_xnode): Adjust for new name-lookup scheme.
1575 * typeck.c (mark_addressable): Likewise.
1576 (c_expand_return): Likewise.
1577
1578 1998-12-08 Jason Merrill <jason@yorick.cygnus.com>
1579
1580 * decl.c (grokdeclarator): Allow field with same name as class
1581 in extern "C".
1582
1583 * decl.c (lookup_name_real): Don't limit field lookup to types.
1584 * class.c (check_member_decl_is_same_in_complete_scope): No error
1585 if icv and x are the same.
1586 * lex.c (do_identifier): Tweak error message.
1587
1588 1998-12-10 Mark Mitchell <mark@markmitchell.com>
1589
1590 * decl.c (start_enum): Use push_obstacks, not
1591 end_temporary_allocation.
1592 (finish_enum): Call pop_obstacks.
1593
1594 1998-12-10 Mark Mitchell <mark@markmitchell.com>
1595
1596 * class.c (instantiate_type): Return error_mark_node rather than
1597 junk.
1598
1599 1998-12-09 Mark Mitchell <mark@markmitchell.com>
1600
1601 * cp-tree.h (most_specialized_instantiation): New function.
1602 (print_candidates): Likewise.
1603 * class.c (validate_lhs): Remove.
1604 (resolve_address_of_overloaded_function): New function, split out
1605 and then substantially reworked, from ...
1606 (instantiate_type): Use it. Simplify.
1607 * cvt.c (convert_to_reference): Complain when caller has indicated
1608 that's the right thing to do. Don't crash if instantiate_type
1609 fails.
1610 * pt.c: Substitute `parameters' for `paramters' throughout.
1611 (print_candidates): Don't make it static.
1612 (most_specialized_instantiation): Split out from ...
1613 (most_specialized): Here.
1614
1615 Wed Dec 9 15:33:01 1998 Dave Brolley <brolley@cygnus.com>
1616
1617 * lex.c (lang_init_options): Initialize cpplib.
1618 * decl2.c (parse_options,cpp_initialized): Removed.
1619 (lang_decode_option): Move initialization of cpplib to
1620 lang_init_options.
1621
1622 1998-12-09 Mark Mitchell <mark@markmitchell.com>
1623
1624 * decl.c (grokdeclarator): Update the name of the TEMPLATE_DECL, as
1625 well as the TYPE_DECL, when a typedef name is assigned to a
1626 previously anonymous type.
1627
1628 1998-12-08 Andrew MacLeod <amacleod@cygnus.com>
1629
1630 * cp/except.c (call_eh_info): Use __start_cp_handler instead of
1631 __cp_eh_info for getting the eh info pointer. Add table_index to
1632 field list.
1633 (push_eh_cleanup): Don't increment 'handlers' data field.
1634 (process_start_catch_block): Don't set the 'caught' field.
1635
1636 * cp/exception.cc (CP_EH_INFO): New macro for getting the
1637 exception info pointer within library routines.
1638 (__cp_eh_info): Use CP_EH_INFO.
1639 (__start_cp_handler): Get exception info pointer, set caught field,
1640 and increment the handlers field. Avoids this being done by handlers.
1641 (__uncatch_exception, __check_eh_spec): Use CP_EH_INFO macro.
1642 (uncaught_exception): Use CP_EH_INFO macro.
1643
1644 Tue Dec 8 10:48:21 1998 Jeffrey A Law (law@cygnus.com)
1645
1646 * Make-lang.in (cxxmain.o): Depend on $(DEMANGLE_H), not demangle.h
1647
1648 Mon Dec 7 17:56:06 1998 Mike Stump <mrs@wrs.com>
1649
1650 * lex.c (check_newline): Add support for \ as `natural'
1651 characters in file names in #line to be consistent with #include
1652 handling. We support escape processing in the # 1 "..." version of
1653 the command. See also support in cp/lex.c.
1654
1655 1998-12-07 Zack Weinberg <zack@rabi.phys.columbia.edu>
1656
1657 * cp/decl2.c: s/data/opts/ when initializing cpp_reader
1658 structure.
1659
1660 1998-12-07 Jason Merrill <jason@yorick.cygnus.com>
1661
1662 * decl.c (build_typename_type): Set DECL_ARTIFICIAL.
1663
1664 * error.c (dump_simple_decl): Also print namespace context.
1665 (dump_function_decl): Likewise.
1666
1667 * decl2.c (ambiguous_decl): Don't print old value if it's
1668 error_mark_node.
1669
1670 * decl.c (lookup_name_real): Fix handling of local types shadowed
1671 by a non-type decl. Remove obsolete code.
1672 * cp-tree.h (DECL_FUNCTION_SCOPE_P): New macro.
1673
1674 * lang-options.h: Add -fpermissive.
1675 * decl2.c: Likewise.
1676 * cp-tree.h: Add flag_permissive.
1677 * decl.c (init_decl_processing): If neither -fpermissive or -pedantic
1678 were specified, set flag_pedantic_errors.
1679 * call.c (build_over_call): Turn dropped qualifier messages
1680 back into pedwarns.
1681 * cvt.c (convert_to_reference): Likewise.
1682 * typeck.c (convert_for_assignment): Likewise.
1683
1684 1998-12-05 Jason Merrill <jason@yorick.cygnus.com>
1685
1686 * decl2.c (coerce_new_type): Use same_type_p.
1687 (coerce_delete_type): Likewise.
1688
1689 * call.c (check_dtor_name): Return 1, not error_mark_node.
1690
1691 1998-12-04 Jason Merrill <jason@yorick.cygnus.com>
1692
1693 * lex.c (handle_cp_pragma): Disable #pragma interface/implementation
1694 if MULTIPLE_SYMBOL_SPACES.
1695
1696 * pt.c (check_template_shadow): New fn.
1697 * decl2.c (grokfield): Use it.
1698 * decl.c (pushdecl): Likewise.
1699 (pushdecl_class_level): Likewise.
1700 (start_method): Likewise.
1701 (xref_tag): Don't try to use 't' if we're defining.
1702
1703 * call.c (check_dtor_name): Just return an error_mark_node.
1704 * pt.c (lookup_template_class): Complain about using non-template here.
1705 * parse.y (apparent_template_type): Not here.
1706
1707 * pt.c (check_explicit_specialization): Complain about specialization
1708 with C linkage.
1709
1710 * lang-options.h: Add -f{no-,}implicit-inline-templates.
1711
1712 * pt.c (convert_nontype_argument): Don't assume that any integer
1713 argument is intended to be a constant-expression.
1714
1715 1998-12-03 Mark Mitchell <mark@markmitchell.com>
1716
1717 * class.c (handle_using_decl): Fix comment. Don't lookup
1718 constructors in base classes.
1719 (validate_lhs): Fix typo in comment.
1720 * search.c (lookup_field_1): Don't return a USING_DECL.
1721
1722 * cp-tree.h (DECL_ACCESS): Improve documentation.
1723
1724 * decl.c (expand_static_init): Don't set the initialization-done
1725 flag until the initialization is done.
1726
1727 1998-12-02 Mark Mitchell <mark@markmitchell.com>
1728
1729 * decl2.c (validate_nonmember_using_decl): Complain about using
1730 declarations for class members.
1731
1732 1998-11-29 Jason Merrill <jason@yorick.cygnus.com>
1733
1734 * typeck2.c (process_init_constructor): Use same_type_p.
1735
1736 * decl.c (check_tag_decl): Don't warn about null decl inside a
1737 class.
1738
1739 * pt.c (unify, case OFFSET_TYPE): Pass down 'strict' rather than
1740 UNIFY_ALLOW_NONE.
1741 (convert_nontype_argument): Use TYPE_PTRMEMFUNC_FN_TYPE.
1742 (resolve_overloaded_unification): Strip baselinks.
1743
1744 Fri Nov 27 13:07:23 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1745
1746 * g++spec.c: Don't prototype xmalloc.
1747
1748 1998-11-25 Jason Merrill <jason@yorick.cygnus.com>
1749
1750 * except.c (expand_throw): Use TYPE_PTR_P to check for pointers.
1751
1752 * decl.c (check_tag_decl): Do complain about null friend decl at
1753 file scope.
1754
1755 1998-11-25 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
1756
1757 * lex.c (make_lang_type): Clear the whole struct lang_type, not
1758 only the first multiple of sizeof (int).
1759
1760 1998-11-24 Jason Merrill <jason@yorick.cygnus.com>
1761
1762 * decl.c (start_decl): An explicit specialization of a static data
1763 member is only a definition if it has an initializer.
1764
1765 * except.c (expand_throw): Use cp_finish_decl for the throw temp.
1766 * cvt.c (build_up_reference): Pass DIRECT_BIND down into
1767 cp_finish_decl.
1768 * init.c (expand_default_init): Check for DIRECT_BIND instead of
1769 DECL_ARTIFICIAL.
1770
1771 * call.c (build_over_call): Use build_decl.
1772
1773 * except.c (expand_throw): Just use convert, not
1774 build_reinterpret_cast.
1775
1776 * lex.c (handle_generic_pragma): Use token_buffer.
1777
1778 * decl.c (check_tag_decl): Don't complain about null friend decl.
1779
1780 1998-11-24 Dave Pitts <dpitts@cozx.com>
1781
1782 * Make-lang.in (DEMANGLER_PROG): Move the output arguments to the
1783 first position.
1784 * lex.c (check_newline): Use ISALPHA.
1785 (readescape): Use ISGRAPH.
1786 (yyerror): Use ISGRAPH.
1787
1788 1998-11-24 Nathan Sidwell <nathan@acm.org>
1789
1790 * search.c (get_abstract_virtuals): Do not use initial
1791 CLASSTYPE_ABSTRACT_VIRTUALS.
1792 * typeck2.c (abstract_virtuals_error): Show location of abstract
1793 declaration.
1794 * call.c (build_new_method_call): Use
1795 CLASSTYPE_ABSTRACT_VIRTUAL, rather than recalculate.
1796 * class.c (finish_struct_bits): Don't bother working out whether
1797 get_abstract_virtuals will do anything, just do it.
1798
1799 1998-11-24 Graham <grahams@rcp.co.uk>
1800
1801 * typeck.c (build_component_ref): Remove unused statement.
1802
1803 1998-11-24 Jason Merrill <jason@yorick.cygnus.com>
1804
1805 * class.c (add_method): Catch invalid overloads.
1806
1807 * class.c (add_method): Build up OVERLOADs properly for conversion ops.
1808 * search.c (lookup_conversions): Handle getting real OVERLOADs.
1809 (add_conversions): Likewise. Revert last change.
1810 * call.c (add_conv_candidate): Pass totype to add_candidate instead
1811 of fn. Don't add a new candidate if the last one was for the same
1812 type.
1813 (print_z_candidates): Handle getting a type as a function.
1814 (joust): If we got two conversion candidates to the same type,
1815 just pick one.
1816 (build_object_call): Lose 'templates'.
1817 (build_user_type_conversion_1): Handle getting real OVERLOADs.
1818
1819 1998-11-23 Jason Merrill <jason@yorick.cygnus.com>
1820
1821 * typeck2.c (process_init_constructor): If there are elements
1822 that don't have initializers and they need to have constructors
1823 run, supply them with initializers.
1824
1825 * class.c (finish_struct_1): A class with a 0-width bitfield is
1826 still empty.
1827
1828 1998-11-23 Mark Mitchell <mark@markmitchell.com>
1829
1830 * pt.c (instantiate_class_template): Don't try to figure out what
1831 specialization to use for a partial instantiation. Correct
1832 typos in a couple of comments. Avoid calling uses_template_parms
1833 multiple times.
1834
1835 1998-11-23 Benjamin Kosnik <bkoz@cygnus.com>
1836
1837 * method.c (process_overload_item): Add call to
1838 build_mangled_C9x_name for intTI_type_nodes.
1839 (build_mangled_C9x_name): Add prototype, define.
1840 * decl.c (init_decl_processing): Add names for
1841 TImode_type_node.
1842
1843 1998-11-23 Jason Merrill <jason@yorick.cygnus.com>
1844
1845 * parse.y (named_class_head): Update CLASSTYPE_DECLARED_CLASS.
1846
1847 * class.c (finish_struct_1): Set things up for 0-width bitfields
1848 like we do for others.
1849
1850 * decl.c (check_tag_decl): New fn.
1851 (shadow_tag): Split out from here.
1852 * decl2.c (grok_x_components): Call it.
1853
1854 1998-11-22 Jason Merrill <jason@yorick.cygnus.com>
1855
1856 * decl.c: Lose warn_about_return_type.
1857 (grokdeclarator): Always complain about implicit int, except for
1858 `main () { ... }'.
1859
1860 * decl.c (tag_name): New fn.
1861 (xref_tag): Complain about using typedef-name after class-key.
1862
1863 * init.c (expand_vec_init): Also keep going if from_array.
1864
1865 * tree.c (is_overloaded_fn): Also handle the output of
1866 build_offset_ref.
1867
1868 * decl.c (grokdeclarator): Use constructor_name when comparing
1869 field name against enclosing class.
1870 * class.c (finish_struct_anon): Likewise.
1871
1872 1998-11-22 Mark Mitchell <mark@markmitchell.com>
1873
1874 * decl.c (poplevel): Remove code to handle KEEP == 2.
1875 (finish_function): Don't confuse BLOCK-order when
1876 processing a destructor.
1877
1878 1998-11-21 Jason Merrill <jason@yorick.cygnus.com>
1879
1880 * decl.c (require_complete_types_for_parms): Call layout_decl
1881 after we've completed the type.
1882
1883 1998-11-21 Martin von Löwis <loewis@informatik.hu-berlin.de>
1884
1885 * decl2.c (validate_nonmember_using_decl): Allow using templates
1886 from the global namespace.
1887
1888 1998-11-21 Jason Merrill <jason@yorick.cygnus.com>
1889
1890 Handle specifying template args to member function templates.
1891 * tree.c (build_overload): Always create an OVERLOAD for a template.
1892 * search.c (add_conversions): Handle finding an OVERLOAD.
1893 * decl2.c (check_classfn): Likewise.
1894 * lex.c (identifier_type): See through a baselink.
1895 * parse.y (do_id): Don't call do_identifier if we got a baselink.
1896 * class.c (instantiate_type, case TREE_LIST): Recurse.
1897
1898 * decl.c (grokdeclarator): Allow a boolean constant for array
1899 bounds, odd as that sounds.
1900
1901 * pt.c (unify): Be more strict about non-type parms, except for
1902 array bounds.
1903 (UNIFY_ALLOW_INTEGER): New macro.
1904
1905 1998-11-19 Manfred Hollstein <manfred@s-direktnet.de>
1906
1907 * Make-lang.in (mandir): Replace all uses of $(mandir) by $(man1dir).
1908
1909 1998-11-19 Jason Merrill <jason@yorick.cygnus.com>
1910
1911 * semantics.c (begin_class_definition): Call
1912 maybe_process_partial_specialization before push_template_decl.
1913 Don't call push_template_decl for a specialization.
1914 * search.c (lookup_field): Do return a member template class.
1915 * decl2.c (handle_class_head): Handle member template classes.
1916
1917 * decl.c (grokdeclarator): A parm type need not be complete.
1918
1919 * pt.c (convert_nontype_argument): Fix thinko.
1920
1921 1998-11-18 Mark Mitchell <mark@markmitchell.com>
1922
1923 * cp-tree.h (PTRMEM_CST_CLASS): Fix typo.
1924 (global_delete_fndecl): New variable.
1925 * decl.c (global_delete_fndecl): Define it.
1926 (init_decl_processing): Set it.
1927 * init.c (build_builtin_delete_call): Use it.
1928 * tree.c (mapcar): Recursively call mapcar for the type of EXPR
1929 nodes.
1930
1931 1998-11-18 Jason Merrill <jason@yorick.cygnus.com>
1932
1933 * decl.c (cplus_expand_expr_stmt): Always complain about unresolved
1934 type.
1935
1936 * tree.c (lvalue_p_1): An INDIRECT_REF to a function is an lvalue.
1937 * call.c (build_object_call): Also support references to functions.
1938 * typeck.c (convert_for_initialization): Don't decay a function
1939 if the target is a reference to function.
1940
1941 * search.c (add_conversions): Get all the overloads from a class.
1942
1943 * decl.c (grok_ctor_properties): Complain about any constructor
1944 that will take a single arg of the class type by value.
1945
1946 * typeck2.c (build_functional_cast): Can't create objects of
1947 abstract classes this way.
1948 * cvt.c (ocp_convert): Likewise.
1949
1950 * decl.c (grokfndecl): Member functions of local classes are not
1951 public.
1952
1953 1998-11-18 Mark Mitchell <mark@markmitchell.com>
1954
1955 * Make-lang.in (cc1plus): Add dependency on hash.o.
1956
1957 1998-11-18 Jason Merrill <jason@yorick.cygnus.com>
1958
1959 * search.c (get_abstract_virtuals): Complain about virtuals with
1960 no final overrider.
1961 * typeck2.c (abstract_virtuals_error): Remove handling for virtuals
1962 with no final overrider.
1963 * class.c (override_one_vtable): Don't set DECL_ABSTRACT_VIRTUAL_P
1964 on virtuals with no final overrider.
1965
1966 * lex.c (reinit_parse_for_block): Add a space after the initial ':'.
1967
1968 * class.c (finish_struct_1): Don't remove zero-width bit-fields until
1969 after layout_type.
1970
1971 * friend.c (do_friend): Don't set_mangled_name_for_decl.
1972
1973 * class.c (finish_struct_anon): Complain about non-fields.
1974 * decl2.c (build_anon_union_vars): Likewise.
1975
1976 * decl.c (grokdeclarator): Normal data members can't have the same
1977 name as the class, either.
1978 * class.c (finish_struct_anon): Neither can members of an
1979 anonymous union.
1980
1981 1998-11-17 Mark Mitchell <mark@markmitchell.com>
1982
1983 * cp-tree.h (TYPE_ALIAS_SET): Document language-dependent uses.
1984 (TYPE_BINFO): Likewise.
1985 (IS_AGGR_TYPE): Tweak.
1986 (SET_IS_AGGR_TYPE): New macro.
1987 (CLASS_TYPE_P): Tweak.
1988 (lang_type): Group mark bitfields together. Remove linenum.
1989 (CLASSTYPE_SOURCE_LINE): Remove macro.
1990 (CLASSTYPE_MARKED_N): New macro.
1991 (SET_CLASSTYPE_MARKED_N): Likewise.
1992 (CLEAR_CLASSTYPE_MARKED_N): Likewise.
1993 (CLASS_TYPE_MARKED_*): Use them.
1994 (SET_CLASSTYPE_MARKED_*): Likewise.
1995 (CLEAR_CLASSTYPE_MARKED_*): Likewise.
1996 (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
1997 (TYPE_TEMPLATE_INFO): Handle TEMPLATE_TEMPLATE_PARMs as well.
1998 (TYPENAME_TYPE_FULLNAME): Use TYPE_BINFO rather than CLASSTYPE_SIZE.
1999 * class.c (class_cache_obstack): New variable.
2000 (class_cache_firstobj): Likewise.
2001 (finish_struct): Don't set CLASSTYPE_SOURCE_LINE.
2002 (pushclass): Free the cache, when appropriate.
2003 (popclass): Tidy.
2004 (maybe_push_cache_obstack): Use class_cache_obstack.
2005 * decl.c (include hash.h).
2006 (typename_hash): New function.
2007 (typename_compare): Likewise.
2008 (build_typename_type): Check the hash table to avoid creating
2009 duplicates.
2010 (build_ptrmemfunc_type): Use SET_IS_AGGR_TYPE.
2011 (grokdeclarator): Use CLASS_TYPE_P.
2012 (xref_basetypes): Likewise.
2013 (start_function): Likewise. Don't put current_class_ref on the
2014 permanent obstack.
2015 * error.c (dump_type_real): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO
2016 and TYPE_TI_ARGS.
2017 * lex.c (note_got_semicolon): Use CLASS_TYPE_P.
2018 (make_lang_type): Don't create TYPE_LANG_SPECIFIC and associated
2019 fields for types other than class types. Do clear TYPE_ALIAS_SET
2020 for types other than class types, though.
2021 * method.c (build_overload_identifier): Use CLASS_TYPE_P and
2022 TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
2023 * pt.c (process_template_parm): Don't set
2024 CLASSTYPE_GOT_SEMICOLON.
2025 (lookup_template_class) Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
2026 Coerce arguments on the momentary obstack.
2027 (for_each_template_parm): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
2028 (instantiate_class_template): Calculate template arguments on the
2029 momentary obstack. Tidy.
2030 (tsubst_template_arg_vector): Use make_temp_vec.
2031 (tsubst_aggr_type): Put template arguments on the momentary
2032 obstack.
2033 (tsubst_decl): Likewise.
2034 (tsubst): Copy the array bounds index to the permanent obstack
2035 before building index types. Use new macros.
2036 (unify): Use new macros.
2037 (do_type_instantiation): Likewise.
2038 * search.c (lookup_fnfields_1): Use new macros.
2039 (dfs_pushdecls): Build envelopes on the cache obstack.
2040 (dfs_compress_decls): Use new macros.
2041 (push_class_decls): Build on the cache obstack.
2042 * semantics.c (finish_typeof): Don't set CLASSTYPE_GOT_SEMICOLON.
2043 * sign.c (build_signature_pointer_or_reference_type): Use
2044 SET_IS_AGGR_TYPE.
2045 * tree.c (make_binfo): Check CLASS_TYPE_P.
2046 (copy_template_template_parm): Adjust.
2047 (make_temp_vec): Use push_expression_obstack.
2048 * typeck.c (complete_type): Use new macros.
2049 (comptypes): Likewise.
2050
2051 1998-11-17 Jason Merrill <jason@yorick.cygnus.com>
2052
2053 * pt.c (tsubst): Add diagnostics for invalid array, reference
2054 and pointer to member types.
2055
2056 1998-11-16 Jason Merrill <jason@yorick.cygnus.com>
2057
2058 * typeck2.c (my_friendly_abort): Don't fatal twice in a row.
2059
2060 * typeck.c (c_expand_start_case): Use build_expr_type_conversion.
2061 Simplify.
2062
2063 * parse.y (structsp): Fix cut-and-paste error.
2064
2065 * init.c (build_new): Complain about non-integral size.
2066
2067 * parse.y (unary_expr): Complain about defining types in sizeof.
2068
2069 * typeck.c (expr_sizeof): Complain about sizeof an overloaded fn.
2070
2071 * rtti.c (build_x_typeid): Complain about typeid without
2072 including <typeinfo>.
2073 (get_typeid): Likewise. Complain about typeid of incomplete type.
2074 (get_tinfo_fn_dynamic): Likewise.
2075 (get_typeid_1): Not static anymore.
2076 * except.c (build_eh_type_type): Use get_typeid_1.
2077
2078 * rtti.c (build_dynamic_cast_1): Give errors for dynamic_cast to
2079 ambiguous or private bases. Fix warning for reference cast.
2080
2081 1998-11-16 Mark Mitchell <mark@markmitchell.com>
2082
2083 * cp-tree.h (DECL_TEMPLATE_INSTANTIATED): New macro.
2084 * decl.c (duplicate_decls): Remove special-case code to deal with
2085 template friends, and just do the obvious thing.
2086 * pt.c (register_specialization): Tweak for clarity, and also to
2087 clear DECL_INITIAL for an instantiation before it is merged with a
2088 specialization.
2089 (check_explicit_specialization): Fix indentation.
2090 (tsubst_friend_function): Handle both definitions in friend
2091 declaration and outside friend declarations.
2092 (tsubst_decl): Don't clear DECL_INITIAL for an instantiation.
2093 (regenerate_decl_from_template): Tweak accordingly.
2094 (instantiate_decl): Likewise.
2095
2096 1998-11-16 Jason Merrill <jason@yorick.cygnus.com>
2097
2098 * decl.c (cplus_expand_expr_stmt): Promote warning about naked
2099 member function reference to error.
2100 * cvt.c (ocp_convert): Complain about converting an overloaded
2101 function to void.
2102
2103 * init.c (build_offset_ref): Just return a lone static member
2104 function.
2105
2106 * decl.c (cp_finish_decl): Only complain about real CONSTRUCTORs,
2107 not internal ones.
2108
2109 * typeck.c (build_binary_op_nodefault): Improve error handling.
2110
2111 * decl.c (grokfndecl): Complain about making 'main' a template.
2112
2113 * typeck.c (string_conv_p): Don't convert from wchar_t[] to char*.
2114
2115 * call.c (build_method_call): Handle a BIT_NOT_EXPR around a
2116 TYPE_DECL in a template.
2117
2118 1998-11-15 Jason Merrill <jason@yorick.cygnus.com>
2119
2120 * typeck2.c (my_friendly_abort): Add URL in the other case, too.
2121
2122 * decl.c (struct cp_function): Add named_label_uses.
2123 (push_cp_function_context): Save it.
2124 (pop_cp_function_context): Restore it.
2125 (define_label): Also complain about jumping into the scope of
2126 non-POD objects that don't have constructors.
2127 * tree.c (pod_type_p): New fn.
2128
2129 * pt.c (instantiate_class_template): Clear TYPE_BEING_DEFINED sooner.
2130 * rtti.c (synthesize_tinfo_fn): Call import_export_decl here.
2131 (get_tinfo_fn): Not here.
2132 * repo.c (repo_get_id): Abort if we get called for an incomplete
2133 type.
2134
2135 1998-11-13 Mark Mitchell <mark@markmitchell.com>
2136
2137 * except.c (expand_throw): Make sure first argument to
2138 __cp_push_exception is of type `void*' to avoid spurious error
2139 messages.
2140
2141 1998-11-11 Jason Merrill <jason@yorick.cygnus.com>
2142
2143 * pt.c (try_one_overload): Take orig_targs again. Only check for
2144 mismatches against them; we don't care what a previous call found.
2145 (resolve_overloaded_unification): Adjust.
2146
2147 * search.c (lookup_field): Don't return anything for a non-type
2148 field from a dependent type.
2149 * decl.c (grokdeclarator): Resolve SCOPE_REFs of the current class
2150 in an array declarator.
2151 (start_decl): Push into the class before looking for the field.
2152
2153 1998-11-08 Mark Mitchell <mark@markmitchell.com>
2154
2155 * method.c (build_overload_value): Handle REFERENCE_TYPE.
2156
2157 1998-11-08 Martin von Löwis <loewis@informatik.hu-berlin.de>
2158
2159 * decl.c (grokdeclarator): Allow namespace-scoped members if they
2160 are friends.
2161
2162 1998-11-08 Jason Merrill <jason@yorick.cygnus.com>
2163
2164 * pt.c (tsubst_decl): Don't mess with the global value of an
2165 un-mangled DECL_ASSEMBLER_NAME.
2166
2167 1998-11-03 Christopher Faylor <cgf@cygnus.com>
2168
2169 * decl.c (init_decl_processing): Remove CYGWIN conditional
2170 since CYGWIN is now able to deal with trapping signals.
2171
2172 Sat Nov 7 15:48:02 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2173
2174 * cp-tree.h: Don't include gansidecl.h.
2175 * exception.cc: Include gansidecl.h (since we don't include config.h)
2176 * g++spec.c: Don't include gansidecl.h.
2177
2178 1998-11-06 Mark Mitchell <mark@markmitchell.com>
2179
2180 * cp-tree.h (lang_decl_flags): Add defined_in_class. Decrease
2181 size of dummy.
2182 (DECL_DEFINED_IN_CLASS_P): New macro.
2183 (TEMPLATE_PARMS_FOR_INLINE): Document.
2184 (check_static_variable_definition): New function.
2185 * decl.c (cp_finish_decl): Set DECL_DEFINED_IN_CLASS_P, if
2186 appropriate.
2187 (check_static_variable_definition): Split out from ...
2188 (grokdeclarator): Here.
2189 * pt.c (check_default_tmpl_args): New function, split out from ...
2190 (push_template_decl_real): Here.
2191 (instantiate_template): Fix comment.
2192
2193 1998-11-04 Mark Mitchell <mark@markmitchell.com>
2194
2195 * cp-tree.h (CP_TYPE_CONST_P): Make {0,1}-valued.
2196 (CP_TYPE_VOLATILE_P): Likewise.
2197 (CP_TYPE_RESTRICT_P): Likewise.
2198
2199 1998-11-03 Mark Mitchell <mark@markmitchell.com>
2200
2201 * pt.c (tsubst): Use build_index_type, not build_index_2_type.
2202
2203 1998-11-02 Jason Merrill <jason@yorick.cygnus.com>
2204
2205 * class.c (instantiate_type): Be more helpful.
2206
2207 * decl2.c (import_export_decl): Call import_export_class.
2208
2209 * cp-tree.h (EMPTY_CONSTRUCTOR_P): Check !TREE_HAS_CONSTRUCTOR.
2210 * decl2.c (build_expr_from_tree): Propagate TREE_HAS_CONSTRUCTOR.
2211 * pt.c (tsubst_copy): Likewise.
2212
2213 1998-11-02 Mark Mitchell <mark@markmitchell.com>
2214
2215 * init.c (expand_vec_init): Fix off-by-one error.
2216
2217 1998-11-02 Alexandre Oliva <oliva@dcc.unicamp.br>
2218
2219 * parse.y (apparent_template_type): New type.
2220 (named_complex_class_head_sans_basetype): Use it.
2221 * Makefile.in (CONFLICTS): One new conflict.
2222 * parse.c: Regenerated.
2223
2224 1998-11-01 Mark Mitchell <mark@markmitchell.com>
2225
2226 * cp-tree.h (COMPARE_STRICT): New macro.
2227 (COMPARE_BASE): Likewise.
2228 (COMPARE_RELAXED): Likewise.
2229 (COMPARE_REDECLARATION): Likewise.
2230 (same_type_p): Likewise.
2231 (same_or_base_type_p): Likewise.
2232 * call.c (standard_conversion): Use them, in place of comptypes
2233 with numeric arguments.
2234 (reference_binding): Likewise.
2235 (convert_like): Likewise.
2236 (build_over_call): Likewise.
2237 (is_subseq): Likewise.
2238 (is_properly_derived_from): Likewise.
2239 (compare_ics): Likewise.
2240 (joust): Likewise.
2241 * class.c (delete_duplicate_fields_1): Likewise.
2242 (resolves_to_fixed_type_p): Likewise.
2243 (instantiate_type): Likewise. Remove #if 0'd code.
2244 * decl.c (decls_match): Likewise. Use COMPARE_REDECLARATION here.
2245 (pushdecl): Likewise.
2246 (lookup_name_real): Likewise.
2247 (grokdeclarator): Likewise. Check for illegal array declarations.
2248 (grokparms): Likewise.
2249 (grok_op_properties): Likewise.
2250 * decl2.c (check_classfn): Likewise.
2251 * friend.c (is_friend): Likewise.
2252 (make_friend_class): Likewise.
2253 * init.c (expand_aggr_init): Likewise.
2254 (expand_vec_init): Likewise.
2255 * pt.c (is_member_template_class): Remove declaration.
2256 (is_specialization_of): Use COMPARE_* and new macros.
2257 (comp_template_parms): Likewise.
2258 (convert_nontype_argument): Likewise.
2259 (coerce_template_template_parms): Likewise.
2260 (template_args_equal): Likewise.
2261 (lookup_template_class): Likewise.
2262 (type_unification_real): Likewise.
2263 (unify): Likewise.
2264 (get_bindings_real): Likewise.
2265 * search.c (covariant_return_p): Likewise.
2266 (get_matching_virtual): Likewise.
2267 * sig.c (match_method_types): Likewise.
2268 * tree.c (vec_binfo_member): Likewise.
2269 (cp_tree_equal): Likewise.
2270 * typeck.c (common_type): Likewise.
2271 (comp_array_types): Likewise. Get issues involving unknown array
2272 bounds right.
2273 (comptypes): Update comments. Use new flags.
2274 (comp_target_types): Use new macros.
2275 (compparms): Likewise.
2276 (comp_target_parms): Likewise.
2277 (string_conv_p): Likewise.
2278 (build_component_ref): Likewise.
2279 (build_indirect_ref): Likewise.
2280 (build_conditional_expr): Likewise.
2281 (build_static_cast): Likewise.
2282 (build_reinterpret_cast): Likewise.
2283 (build_const_cast): Likewise.
2284 (build_modify_expr): Likewise.
2285 (convert_for_assignment): Likewise.
2286 (comp_ptr_ttypes_real): Likewise.
2287 (ptr_reasonably_similar): Likewise.
2288 (comp_ptr_ttypes_const): Likewise.
2289
2290 1998-10-31 Jason Merrill <jason@yorick.cygnus.com>
2291
2292 * rtti.c (build_dynamic_cast_1): Fix cut-and-paste error.
2293
2294 1998-10-30 Mark Mitchell <mark@markmitchell.com>
2295
2296 * decl2.c (delete_sanity): Pass integer_zero_node, not
2297 integer_two_node, to build_vec_delete.
2298 * init.c (build_array_eh_cleanup): Remove.
2299 (expand_vec_init_try_block): New function.
2300 (expand_vec_init_catch_clause): Likewise.
2301 (build_vec_delete_1): Don't deal with case that auto_delete_vec
2302 might be integer_two_node anymore.
2303 (expand_vec_init): Rework for initialization-correctness and
2304 exception-correctness.
2305 * typeck2.c (process_init_constructor): Make mutual exclusivity
2306 of cases more obvious.
2307
2308 1998-10-29 Jason Merrill <jason@yorick.cygnus.com>
2309
2310 * decl.c (lookup_name_real): OK, only warn if not lexing.
2311 Simplify suggested fix.
2312
2313 * cp-tree.h (IDENTIFIER_MARKED): New macro.
2314 * search.c (lookup_conversions): Use breadth_first_search.
2315 (add_conversions): Avoid adding two conversions to the same type.
2316 (breadth_first_search): Work with base binfos, rather
2317 than binfos and base indices.
2318 (get_virtual_destructor): Adjust.
2319 (tree_has_any_destructor_p): Adjust.
2320 (get_matching_virtual): Adjust.
2321
2322 * pt.c (push_template_decl_real): Generalize check for incorrect
2323 number of template parms.
2324 (is_member_template_class): #if 0.
2325
2326 1998-10-29 Richard Henderson <rth@cygnus.com>
2327
2328 * Makefile.in (cc1plus): Put CXX_OBJS, and thence @extra_cxx_objs@,
2329 last.
2330
2331 1998-10-28 Zack Weinberg <zack@rabi.phys.columbia.edu>
2332
2333 * lex.c: Call check_newline from lang_init always. After
2334 calling cpp_start_read, set yy_cur and yy_lim to read from the
2335 cpplib token buffer.
2336
2337 1998-10-28 Jason Merrill <jason@yorick.cygnus.com>
2338
2339 * class.c (instantiate_type): Don't consider templates for a normal
2340 match.
2341
2342 * class.c (finish_struct_1): Don't complain about non-copy
2343 assignment ops in union members.
2344
2345 * class.c (build_vtable): Don't pass at_eof to import_export_vtable.
2346 (prepare_fresh_vtable): Likewise.
2347 (finish_struct_1): Don't call import_export_class.
2348 * decl2.c (finish_vtable_vardecl): Do import/export stuff.
2349 (finish_prevtable_vardecl): Lose.
2350 (finish_file): Don't call it.
2351 * pt.c (instantiate_class_template): Likewise.
2352 * cp-tree.h: Remove it.
2353
2354 * init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here.
2355 * decl.c (finish_function): Not here.
2356 (start_function): Do set DECL_INITIAL.
2357
2358 * pt.c (push_template_decl_real): Complain about default template
2359 args for enclosing classes.
2360
2361 * call.c (add_function_candidate): Treat conversion functions
2362 as coming from the argument's class.
2363 * cp-tree.h (DECL_CONV_FN_P): New fn.
2364 (DECL_DESTRUCTOR_P): Also check DECL_LANGUAGE.
2365 * class.c (add_method): Use DECL_CONV_FN_P.
2366 * decl2.c (check_classfn): Likewise.
2367 * error.c (dump_function_name): Likewise.
2368 (dump_function_decl): Likewise.
2369 * pt.c (fn_type_unification): Likewise.
2370 * search.c (add_conversions): Likewise.
2371
2372 1998-10-27 Jason Merrill <jason@yorick.cygnus.com>
2373
2374 * lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL.
2375 * method.c (hack_identifier): Also check for using RESULT_DECL
2376 from outer context.
2377
2378 1998-10-27 Mark Mitchell <mark@markmitchell.com>
2379
2380 * decl.c (grokdeclarator): Use type_quals, rather than constp,
2381 consistently.
2382
2383 1998-10-27 Jason Merrill <jason@yorick.cygnus.com>
2384
2385 * call.c (standard_conversion): instantiate_type here.
2386 (reference_binding): And here.
2387 (implicit_conversion): Not here.
2388 (build_op_delete_call): No need to cons up an OVERLOAD.
2389 * cvt.c (cp_convert_to_pointer): instantiate_type here.
2390 (convert_to_reference): And here.
2391 * decl.c (grok_reference_init): Not here.
2392 (grokparms): Or here.
2393 * typeck2.c (digest_init): Or here.
2394 * typeck.c (decay_conversion): Take the address of overloaded
2395 functions, too.
2396 (require_instantiated_type): Lose.
2397 (convert_arguments): Don't handle unknown types here.
2398 (build_c_cast): Likewise.
2399 (build_binary_op): Gut.
2400 (build_conditional_expr): Don't require_instantiated_type.
2401 (build_modify_expr): Likewise.
2402 (build_static_cast): Don't instantiate_type.
2403 (build_reinterpret_cast): Likewise.
2404 (build_const_cast): Likewise.
2405 (convert_for_initialization): Likewise.
2406 (build_ptrmemfunc): Use type_unknown_p.
2407 (convert_for_assignment): Also do default_conversion on overloaded
2408 functions. Hand them off to ocp_convert.
2409
2410 1998-10-26 Mark Mitchell <mark@markmitchell.com>
2411
2412 * error.c (dump_decl): Deal with TEMPLATE_DECLs that are
2413 VAR_DECLs. Handle vtables whose DECL_CONTEXT is not a type.
2414
2415 * class.c (finish_struct_1): Use build_cplus_array_type to build
2416 array types.
2417 * decl.c (init_decl_processing): Likewise.
2418 * except.c (expand_end_eh_spec): Likewise.
2419 * search.c (expand_upcast_fixups): Simplify very slightly.
2420
2421 1998-10-26 Jason Merrill <jason@yorick.cygnus.com>
2422
2423 * decl.c (grokdeclarator): Complain about a variable using
2424 constructor syntax coming back null from start_decl.
2425
2426 * friend.c (make_friend_class): Complain about trying to make
2427 a non-class type a friend.
2428
2429 * decl.c (grokfndecl): Set DECL_INITIAL for a defn here.
2430 (start_function): Not here.
2431
2432 1998-10-26 Brendan Kehoe <brendan@cygnus.com>
2433
2434 * decl.c (grokdeclarator): Disallow `explicit' in a friend declaration.
2435
2436 1998-10-26 Jason Merrill <jason@yorick.cygnus.com>
2437
2438 * typeck2.c (process_init_constructor): Only skip anonymous fields
2439 if they are bitfields.
2440
2441 * cp-tree.def (TYPEOF_TYPE): New code.
2442 * error.c (dump_type_real): Handle it.
2443 * pt.c (tsubst): Likewise.
2444 * tree.c (search_tree): Likewise.
2445 * semantics.c (finish_typeof): New fn.
2446 * parse.y (typespec): Use it.
2447 * cp-tree.h: Declare it.
2448
2449 1998-10-26 Manfred Hollstein <manfred@s-direktnet.de>
2450
2451 * cp-tree.h (FORMAT_VBASE_NAME): Make definition unconditional.
2452
2453 1998-10-26 Jason Merrill <jason@yorick.cygnus.com>
2454
2455 * typeck.c (convert_arguments): Don't handle pmf references
2456 specially.
2457
2458 * init.c (build_member_call): Don't try to convert to the base type
2459 if it's ambiguous or pedantic.
2460
2461 * typeck2.c (check_for_new_type): Only depend on pedantic for
2462 C-style casts.
2463
2464 1998-10-25 Mark Mitchell <mark@markmitchell.com>
2465
2466 * decl.c (grokdeclarator): Set DECL_NONCONVERTING_P for all
2467 non-converting constructors.
2468
2469 1998-10-24 Martin von Löwis <loewis@informatik.hu-berlin.de>
2470
2471 * gxxint.texi: Correct documentation for n, N, Q, and B.
2472
2473 1998-10-23 Martin von Löwis <loewis@informatik.hu-berlin.de>
2474
2475 * parse.y (condition): Convert VAR_DECL from reference to indirect
2476 reference.
2477
2478 1998-10-23 Andrew MacLeod <amacleod@cygnus.com>
2479
2480 * exception.cc (__cp_pop_exception): Free the original exception
2481 value, not the potentially coerced one.
2482
2483 1998-10-23 Mark Mitchell <mark@markmitchell.com>
2484
2485 * Makefile.in (hash.h): Run gperf when necessary.
2486
2487 * cp-tree.h (CP_TYPE_READONLY): Remove.
2488 (CP_TYPE_VOLATILE): Likewise.
2489 (CP_TYPE_QUALS): New macro.
2490 (CP_TYPE_CONST_P): Likewise.
2491 (CP_TYPE_VOLATILE_P): Likewise.
2492 (CP_TYPE_RESTRICT_P): Likewise.
2493 (CP_TYPE_CONST_NON_VOLATILE_P): Likewise.
2494 (cp_build_type_variant): Rename to ...
2495 (cp_build_qualified_type): New function.
2496 (c_apply_type_quals_to_decl): Declare.
2497 (SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'.
2498 (SIGNATURE_REFERENCE_NAME_FORMAT): Likewise.
2499 (cp_type_qual_from_rid): New function.
2500 (compparms): Remove unused parameter. All callers changed.
2501 (cp_type_quals): New function.
2502 (at_least_as_qualified_p): Likewise.
2503 (more_qualified_p): Likewise.
2504
2505 * call.c (standard_conversion): Replace calls to
2506 cp_build_type_variant with cp_build_qualified_type. Use
2507 CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to
2508 compare them. Use CP_TYPE_* macros to check qualifiers.
2509 (reference_binding): Likewise.
2510 (implicit_conversion): Likewise.
2511 (add_builtin_candidates): Likewise.
2512 (build_over_call): Likewise.
2513 * class.c (overrides): Compare all qualifiers, not just `const',
2514 on method declarations.
2515 * cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc.
2516 (convert_pointer_to_real): Likewise.
2517 (type_promotes_to): Likewise.
2518 * decl.c (check_for_uninitialized_const_var): New function.
2519 (init_decl_processing): More CP_TYPE_QUALS conversion, etc.
2520 (cp_finish_decl): Use check_for_uninitialized_const_var.
2521 (grokdeclarator): More CP_TYPE_QUALS conversion, etc. Update to
2522 handle `restrict'.
2523 (grok_ctor_properties): Likewise.
2524 (grok_op_properties): Likewise.
2525 (start_function): Likewise.
2526 (rever_static_member_fn): Likewise.
2527 * decl2.c (grok_method_quals): Likewise.
2528 (grokfield): Likewise.
2529 * error.c (dump_readonly_or_volatile): Rename to ...
2530 (dump_qualifiers): New function. Handle `restrict'.
2531 (dump_type_real): Use it.
2532 (dump_aggr_type): Likewise.
2533 (dump_type_prefix): Likewise.
2534 (dump_type_suffix): Likewise.
2535 (dump_function_decl): Likewise.
2536 (cv_as_string): Likewise.
2537 * gxx.gperf: Add __restrict and __restrict__.
2538 * gxxint.texi: Document `u' as used for `__restrict', and a few
2539 other previously undocumented codes.
2540 * hash.h: Regenerated.
2541 * init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc.
2542 (build_member_call): Likewise.
2543 (build_new_1): Likewise.
2544 * lex.c (init_parse): Add entry for RID_RESTRICT.
2545 (cons_up_default_function): More CP_TYPE_QUALS conversion, etc.
2546 (cp_type_qual_from_rid): Define.
2547 * lex.h (enum rid): Add RID_RESTRICT.
2548 * method.c (process_modifiers): Deal with `restrict'.
2549 * parse.y (primary): More CP_TYPE_QUALS conversion, etc.
2550 * parse.c: Regenerated.
2551 * pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc.
2552 (tsubst_aggr_type): Likewise.
2553 (tsubst): Likewise.
2554 (check_cv_quals_for_unify): Likewise.
2555 (unify): Likewise.
2556 * rtti.c (init_rtti_processing): Likewise.
2557 (build_headof): Likewise.
2558 (get_tinfo_var): Likewise.
2559 (buidl_dynamic_cast_1): Likewise. Fix `volatile' handling.
2560 (expand_class_desc): Likewise.
2561 (expand_attr_desc): Likewise.
2562 (synthesize_tinfo_fn): Likewise.
2563 * search.c (covariant_return_p): Likewise. Fix `volatile' handling.
2564 (get_matching_virtual): Likewise.
2565 (expand_upcast_fixups): Likewise.
2566 * sig.c (build_signature_pointer_or_reference_name): Take
2567 type_quals, not constp and volatilep.
2568 (build_signature_pointer_or_reference_type): Likewise.
2569 (match_method_types): More CP_TYPE_QUALS conversion, etc.
2570 (build_signature_pointer_constructor): Likewise.
2571 (build_signature_method_call): Likewise.
2572 * tree.c (build_cplus_array_type): Likewise.
2573 (cp_build_type_variant): Rename to ...
2574 (cp_build_qualified_type): New function. Deal with `__restrict'.
2575 (canonical_type_variant): More CP_TYPE_QUALS conversion, etc.
2576 (build_exception_variant): Likewise.
2577 (mapcar): Likewise.
2578 * typeck.c (qualif_type): Likewise.
2579 (common_type): Likewise.
2580 (comptypes): Likewise.
2581 (comp_cv_target_types): Likewise.
2582 (at_least_as_qualified_p): Define.
2583 (more_qualified_p): Likewise.
2584 (comp_cv_qualification): More CP_TYPE_QUALS conversion, etc.
2585 (compparms): Likewise.
2586 (inline_conversion): Likewise.
2587 (string_conv_p): Likewise.
2588 (build_component_ref): Likewise.
2589 (build_indirect_ref): Likewise.
2590 (build_array_ref): Likewise.
2591 (build_unary_op): Likewise.
2592 (build_conditional_expr): Likewise.
2593 (build_static_cast): Likewise.
2594 (build_c_cast): Likewise.
2595 (build_modify_expr): Likewise.
2596 (convert_For_assignment): Likewise.
2597 (comp_ptr_ttypes_real): Likewise.
2598 (cp_type_quals): New function.
2599
2600 1998-10-23 Jason Merrill <jason@yorick.cygnus.com>
2601
2602 * cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays.
2603 (CP_TYPE_VOLATILE): Likewise.
2604 * decl.c (grokdeclarator): Use them.
2605 * tree.c (canonical_type_variant): Likewise.
2606
2607 1998-10-22 Martin von Löwis <loewis@informatik.hu-berlin.de>
2608
2609 * parse.y (named_class_head): Push into class while parsing the
2610 base class list.
2611 * decl2.c (push_scope, pop_scope): New functions.
2612 * cp-tree.h: Declare them.
2613 * init.c (build_new_1): Delay cleanup until end of full expression.
2614
2615 1998-10-21 Jason Merrill <jason@yorick.cygnus.com>
2616
2617 * typeck.c (build_component_ref): Use of a type here is an error.
2618
2619 1998-10-19 Jason Merrill <jason@yorick.cygnus.com>
2620
2621 Revamp references to member functions.
2622 * method.c (hack_identifier): Call build_component_ref for a
2623 reference to a member function.
2624 * typeck.c (build_component_ref): Only return a single function
2625 if it's static. Otherwise, return a COMPONENT_REF.
2626 (build_x_function_call): Handle a COMPONENT_REF.
2627 (build_unary_op): Handle all unknown-type things.
2628 * decl2.c (arg_assoc): Handle COMPONENT_REF.
2629 * class.c (instantiate_type): Complain if the function we get is a
2630 nonstatic member function. Remove code for finding "compatible"
2631 functions.
2632 * pt.c (tsubst_copy): Handle NOP_EXPR.
2633 * tree.c (build_dummy_object): New fn.
2634 (maybe_dummy_object): New fn.
2635 (is_dummy_object): New fn.
2636 * cp-tree.h: Declare them.
2637 * cvt.c (cp_convert_to_pointer): Use maybe_dummy_object.
2638 * error.c (dump_expr, case OFFSET_REF): Use is_dummy_object.
2639 * init.c (build_member_call): Use maybe_dummy_object and
2640 is_dummy_object.
2641 (build_offset_ref): Use maybe_dummy_object.
2642 (resolve_offset_ref): Use is_dummy_object.
2643 * typeck.c (build_x_function_call): Call build_dummy_object.
2644 (unary_complex_lvalue): Call is_dummy_object.
2645
2646 * typeck.c (build_component_addr): Make sure field is a field.
2647
2648 * call.c (build_new_op): Delete obsolete code.
2649
2650 * pt.c (tsubst, TEMPLATE*PARM*): Abort if we don't have any args.
2651
2652 1998-10-18 Martin von Löwis <loewis@informatik.hu-berlin.de>
2653
2654 * decl2.c (validate_nonmember_using_decl): Fix using-directives of
2655 std if std is ignored.
2656
2657 1998-10-18 Jason Merrill <jason@yorick.cygnus.com>
2658
2659 * decl.c (grokvardecl): Fix thinko.
2660
2661 * decl.c (grokdeclarator): Embedded attrs bind to the right,
2662 not the left.
2663
2664 * parse.y (fn.def2): Fix 'attrs' format.
2665
2666 1998-10-18 Alastair J. Houghton <ajh8@doc.ic.ac.uk>
2667
2668 * Makefile.in (CONFLICTS): Update.
2669 * parse.y (expr_or_declarator_intern): New rule.
2670 (expr_or_declarator, direct_notype_declarator, primary,
2671 functional_cast): Use it.
2672 (notype_declarator_intern): New rule.
2673 (notype_declarator, complex_notype_declarator): Use it.
2674
2675 1998-10-17 Jason Merrill <jason@yorick.cygnus.com>
2676
2677 * decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
2678 (grokvardecl): Likewise.
2679
2680 Sat Oct 17 23:27:20 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2681
2682 * class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR).
2683 (add_method): Likewise for arguments 1 & 2 of `bcopy'.
2684
2685 * decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN.
2686
2687 * pt.c (process_partial_specialization): Cast 1st argument of
2688 `bzero' to (PTR).
2689
2690 * tree.c (build_base_fields): Cast `base_align' to (int) when
2691 comparing against one.
2692
2693 1998-10-16 Mark Mitchell <mark@markmitchell.com>
2694
2695 * decl.c (lookup_name_real): Handle template parameters for member
2696 templates where said parameters have the same name as the
2697 surrounding class.
2698
2699 * decl.c (expand_static_init): Build cleanups before entering the
2700 anonymous function used to do them to avoid access-checking
2701 confusion.
2702
2703 * decl.c (grokfndecl): Add back call to cplus_decl_attributes
2704 accidentally removed by previous change, and make DECL_RTL here.
2705 * class.c (add_method): Don't make DECL_RTL here.
2706
2707 * pt.c (for_each_template_parm): Don't examine uninstantiated
2708 default arguments.
2709
2710 1998-10-16 Dave Brolley <brolley@cygnus.com>
2711
2712 * lex.c (real_yylex): Fix unaligned access of wchar_t.
2713
2714 1998-10-16 Mark Mitchell <mark@markmitchell.com>
2715
2716 * class.c (add_method): Fix documentation to reflect previous
2717 changes. Check for duplicate method declarations here.
2718 * decl.c (decls_match): Handle FUNCTION_DECL vs TEMPLATE_DECL
2719 correctly; such things never match.
2720 (grokfndecl): Don't look for duplicate methods here.
2721 * decl2.c (check_classfn): Don't assume names are mangled.
2722 Don't add bogus member function declarations to a class before the
2723 class type is complete.
2724 (grokfield): Reformat error message.
2725 * method.c (set_mangled_name_for_decl): Don't mangle names while
2726 processing_template_decl.
2727
2728 1998-10-16 Jason Merrill <jason@yorick.cygnus.com>
2729
2730 * typeck.c (build_indirect_ref): Complain about a pointer to data
2731 member, too.
2732 * typeck2.c (build_m_component_ref): Don't indirect a pointer to
2733 data member.
2734 * init.c (resolve_offset_ref): Don't undo the above.
2735
2736 * cp-tree.h (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): New macros.
2737 (struct lang_decl_flags): Add `bitfield'.
2738 * class.c (finish_struct_1): Use DECL_C_BIT_FIELD instead of
2739 DECL_BIT_FIELD.
2740 * decl2.c (grokbitfield, grok_alignof): Likewise.
2741 * init.c (build_offset_ref): Likewise.
2742 * typeck.c (build_component_addr, expr_sizeof): Likewise.
2743 * cvt.c (build_up_reference): Don't crash if taking the address
2744 returns error_mark_node.
2745
2746 * decl.c (grokfndecl): Also check ctype when checking for ::main().
2747
2748 1998-10-15 Jason Merrill <jason@yorick.cygnus.com>
2749
2750 * decl.c (grokfndecl): ::main and __builtin_* get C linkage.
2751 Do mangling here.
2752 (grokdeclarator): Instead of here.
2753 * friend.c (do_friend): Lose special handling of ::main and
2754 __builtin_*.
2755 * cp-tree.h (DECL_MAIN_P): Check for C linkage.
2756
2757 * spew.c (yylex): Clear looking_for_typename if we got
2758 'enum { ... };'.
2759
2760 1998-10-15 Mark Mitchell <mark@markmitchell.com>
2761
2762 * class.c (maybe_warn_about_overly_private_class): Improve error
2763 messages for class with only private constructors.
2764
2765 * cp-tree.def (TYPENAME_TYPE): Add to documentation.
2766 * cp-tree.h (TYPENAME_TYPE_FULLNAME): Document.
2767 (build_typename_type): New function.
2768 * decl.c (build_typename_type): Broken out from ...
2769 (make_typename_type): Use it.
2770 * search.c (lookup_field): Likewise.
2771
2772 1998-10-14 Benjamin Kosnik <bkoz@rhino.cygnus.com>
2773
2774 * pt.c (convert_nontype_argument): Check against type_referred_to.
2775 * decl.c (grokvardecl): Check for declarator name before building
2776 DECL_ASSEMBLER_NAME.
2777
2778 1998-10-14 Mark Mitchell <mark@markmitchell.com>
2779
2780 * pt.c (lookup_template_class): Add comment.
2781 (instantiate_class_template): Don't mark the _TYPE node for
2782 member class templates as an instantiation.
2783
2784 1998-10-14 Jason Merrill <jason@yorick.cygnus.com>
2785
2786 * decl.c (grokfndecl): Fix my thinko.
2787
2788 1998-10-13 Jason Merrill <jason@yorick.cygnus.com>
2789
2790 * tinfo2.cc (fast_compare): Remove.
2791 (before): Just use strcmp.
2792 * tinfo.cc (operator==): Just use strcmp.
2793
2794 1998-10-13 Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
2795
2796 * decl.c (grokfndecl): Don't check for linkage in `extern "C"'
2797 declarations.
2798
2799 1998-10-13 Mark Mitchell <mark@markmitchell.com>
2800
2801 * cp-tree.h (specializations_of_same_template_p): Remove.
2802 * search.c (get_template_base): Don't use it.
2803 (get_template_base_recursive): Likewise.
2804 * pt.c (specializations_of_same_template_p): Remove.
2805 (unify): Don't use it.
2806 (lookup_template_class): Find the correct parent when setting
2807 CLASSTYPE_TI_TEMPLATE.
2808
2809 1998-10-12 Jason Merrill <jason@yorick.cygnus.com>
2810
2811 * tinfo.cc (operator==): Always compare names.
2812
2813 1998-10-12 Herman ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
2814
2815 * decl.c (start_function): Fix cut-and-paste error.
2816
2817 1998-10-12 Jason Merrill <jason@yorick.cygnus.com>
2818
2819 * inc/typeinfo: Add #pragma interface.
2820 (operator!=): Just call operator==.
2821 * tinfo.cc: Add #pragma implementation.
2822 (operator==): Move from inc/typeinfo and tinfo2.cc.
2823 Check __COMMON_UNRELIABLE instead of _WIN32.
2824
2825 * typeck2.c (my_friendly_abort): Add URL.
2826
2827 1998-10-12 Alastair J. Houghton <ajh8@doc.ic.ac.uk>
2828
2829 * decl.c (start_method): Added extra parameter for attributes.
2830 * cp-tree.h (start_method): Update prototype.
2831 * parse.y (fn.def2): Update start_method parameter list.
2832
2833 1998-10-11 Mark Mitchell <mark@markmitchell.com>
2834
2835 * cp-tree.h (specializations_of_same_template_p): Declare.
2836 * pt.c (specializations_of_same_template_p): New function.
2837 (unify): Use it.
2838 * search.c (get_template_base): Use it.
2839 (get_template_base_recursive): Likewise.
2840
2841 1998-10-10 Manfred Hollstein <manfred@s-direktnet.de>
2842
2843 * decl2.c (start_objects): Add new variable `joiner' and
2844 initialize it properly.
2845
2846 1998-10-09 Mark Mitchell <mark@markmitchell.com>
2847
2848 * search.c (expand_upcast_fixups): Tweak to match 1998-10-07
2849 change to vtable types.
2850
2851 * cvt.c (ocp_convert): Avoid infinite recursion caused by
2852 1998-10-03 change.
2853
2854 1998-10-08 Jason Merrill <jason@yorick.cygnus.com>
2855
2856 * pt.c (resolve_overloaded_unification): New fn.
2857 (try_one_overload): Likewise.
2858 (unify): Don't fail on unknown type.
2859 (type_unification_real): Likewise. Use resolve_overloaded_unification
2860 to handle an overloaded argument.
2861 (template_args_equal): Split out...
2862 (comp_template_args): From here.
2863 (determine_specialization): Also allow a template with more
2864 parms than were explicitly specified.
2865 * cp-tree.h: Add template_args_equal.
2866 * call.c (resolve_args): Remove TEMPLATE_ID_EXPR code.
2867
2868 Thu Oct 8 15:58:30 1998 Anthony Green <green@cygnus.com>
2869
2870 * semantics.c (finish_asm_stmt): Revert my 1998-09-28
2871 change.
2872
2873 Thu Oct 8 06:00:19 1998 Jeffrey A Law (law@cygnus.com)
2874
2875 * typeck.c (unsigned_type): Only return TItype nodes when
2876 HOST_BITS_PER_WIDE_INT is >= 64 bits.
2877 (signed_type): Likewise.
2878 * decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare
2879 when HOST_BITS_PER_WIDE_INT is >= 64 bits.
2880 (init_decl_processing): Only create TItype nodes when
2881 HOST_BITS_PER_WIDE_INT is >= 64 bits.
2882 * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare
2883 when HOST_BITS_PER_WIDE_INT is >= 64 bits.
2884
2885 Wed Oct 7 12:32:44 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2886
2887 * Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf.
2888 (gxx.gperf): Update comments describing invocation flags.
2889 (hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).
2890
2891 1998-10-07 Mark Mitchell <mark@markmitchell.com>
2892
2893 * class.c (finish_struct_1): Add commentary on previous change.
2894
2895 * cp-tree.h (vtbl_ptr_type_node): New variable.
2896 * class.c (build_vtbl_ref): Don't indirect through the vptr; it's
2897 already of the right type.
2898 (finish_struct_1): Make the vptr be of type vtbl_ptr_type_node.
2899 Simplify code to grow vtable.
2900 * decl.c (vtbl_ptr_type_node): Define.
2901 (init_decl_processing): Initialize it.
2902
2903 1998-10-06 Mark Mitchell <mark@markmitchell.com>
2904
2905 * cp-tree.def (PTRMEM_CST): New tree node.
2906 * cp-tree.h (ptrmem_cst): New type.
2907 (lang_type): Remove local_typedecls.
2908 (dummy): Increase to 12 bits from 11.
2909 (CLASSTYPE_LOCAL_TYPEDECLS): Remove.
2910 (PTRMEM_CST_CLASS): New macro.
2911 (PTRMEM_CST_MEMBER): Likewise.
2912 (current_access_specifier): New variable.
2913 (current_class_type): Remove duplicate declaration.
2914 (finish_struct): Change prototype.
2915 (unreverse_member_declarations): New function.
2916 (pushdecl_class_level): Change prototype.
2917 (grok_enum_decls): Remove.
2918 (fixup_anonymous_union): New function.
2919 (grok_x_components): Change prototype.
2920 (tsubst_chain): Remove.
2921 (finish_member_template_decl): Likewise.
2922 (check_explicit_specialization): Fix indentation.
2923 (finish_class_definition): Change prototype.
2924 (finish_member_class_template): Likewise.
2925 (finish_member_declaration): New function.
2926 (check_multiple_declarators): Likewise.
2927 * class.c (class_stack_node_t): New type.
2928 (current_class_base): Remove.
2929 (current_class_stack): Change type.
2930 (current_access_specifier): New variable.
2931 (grow_method): Remove.
2932 (check_member_decl_is_same_in_complete_scope): Break out from
2933 finish_struct.
2934 (make_method_vec): New function.
2935 (free_method_vec): Likewise.
2936 (add_implicitly_declared_members): Break out from finish_struct_1.
2937 (free_method_vecs): New variable.
2938 (add_method): Rework for direct use from parser.
2939 (handle_using_decl): Watch for NULL_TREE while iterating through
2940 CLASSTYPE_METHOD_VEC.
2941 (finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
2942 just do some error-checking.
2943 (warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
2944 (finish_struct_1): Simplify. Use add_implicitly_declared_members.
2945 (finish_struct): Change prototype. Simplify; fields and methods
2946 are already set up at this point.
2947 (init_class_processing): Set up current_class_stack.
2948 (pushclass): Save current_access_specifier.
2949 (popclass): Restore it.
2950 (currently_open_class): Simplify.
2951 (build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
2952 * decl.c (saved_scope): Add access_specifier.
2953 (maybe_push_to_top_level): Save it.
2954 (pop_from_top_level): Restore it.
2955 (maybe_process_template_type_declaration): Use
2956 finish_member_declaration.
2957 (pushtag): Likewise.
2958 (pushdecl_class_level): Don't return a value.
2959 (fixup_anonymous_union): Break out from grok_x_components.
2960 (shadow_tag): Use it.
2961 (xref_tag): Complain about using an elaborated type specifier to
2962 reference a template type parameter or typedef name.
2963 (xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
2964 (current_local_enum): Remove.
2965 (build_enumerator): Call finish_member_declaration.
2966 (grok_enum_decls): Remove.
2967 * decl2.c (grok_x_components): Simplify.
2968 (check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
2969 (grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
2970 (merge_functions): Add to comment.
2971 (arg_assoc_type): Prototype.
2972 (arg_assoc): Pass as many arguments as there are parameters.
2973 * error.c (dump_expr): Handle PTRMEM_CST. Improve handling of
2974 OFFSET_REF.
2975 * expr.c (cpls_expand_expr): Remove dead code. Handle
2976 PTRMEM_CST.
2977 * friend.c (do_friend): Lookup friends when in nested classes.
2978 Change comments.
2979 * init.c (build_offset_ref): Do lookup even for classes that are
2980 only partially defined.
2981 (decl_constant_value): Remove dead code.
2982 * method.c (build_overload_value): Remove hack where by TYPE was
2983 not a TYPE. Handle PTRMEM_CST.
2984 (build_template_parm_names): Don't pass a PARM_DECL where a TYPE
2985 should go.
2986 * parse.y (components, notype_components, component_decl,
2987 component_decl_1, component_declarator, component_declarator0):
2988 Now all are itype rather than ttype. Rework to add members to
2989 classes on the fly.
2990 (typesqpecqual_reserved): Use check_multiple_declarators.
2991 (structsp): Update class to finish_class_definition.
2992 (do_xref_defn): Unsplit into named_class_head.
2993 (access_specifier): Set current_access_specifier.
2994 * pt.c (set_current_access_from_decl): New function.
2995 (finish_member_template_decl): Don't take the parameters.
2996 (comp_template_args): Make more robust.
2997 (lookup_template_class): Don't use current_local_enum.
2998 (for_each_template_parm): Handle PTRMEM_CST.
2999 (instantiate_class_template): Use set_current_access_from_decl,
3000 finish_member_declaration and unreverse_member_declarations. Set
3001 lineno/input_filename before generating implicit member functions.
3002 (type_unification_real): Don't assume back-unification happens
3003 only for the last argument.
3004 (regenerate_decl_from_template): Call pushclass a bit earlier.
3005 (tsubst_chain): Remove.
3006 (tsubst_enum): Use set_current_access_from_decl.
3007 (set_mangled_name_for_template_decl): Fix indentation.
3008 * search.c (lookup_fnfields_1): Change iteration through
3009 CLASSTYPE_METHOD_VEC.
3010 (dfs_pushdecls): Likewise.
3011 (dfs_compress_decls): Likewise.
3012 (add_conversions): Likewise.
3013 * semantics.c (finish_class_definition): Don't take components.
3014 Change call to finish_struct.
3015 (finish_member_declaration): New function.
3016 (finish_member_class_template): Don't take template parameters.
3017 Change call to grok_x_components. Call finish_member_template_decl.
3018 (check_multiple_declarators): New function.
3019 * sig.c (append_signature_fields): Work from the TYPE_METHODS, not
3020 a passed in fieldlist.
3021 * tree.c (search_tree): Handle PTRMEM_CST.
3022 (mapcar): Likewise.
3023 * typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
3024 INTEGER_CSTs, for pointer-to-data members.
3025
3026 * call.c (resolve_args): Resolve template specializations, if
3027 possible.
3028
3029 Tue Oct 6 07:57:26 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3030
3031 * Makefile.in (spew.o): Depend on toplev.h.
3032
3033 * call.c (compare_ics): Initialize variables `deref_from_type2',
3034 `deref_to_type1' and `deref_to_type2'.
3035
3036 * except.c (get_eh_type): Hide prototype and definition.
3037 (process_start_catch_block_old): Remove unused static prototype.
3038
3039 * pt.c (tsubst_decl): Initialize variable `argvec'.
3040
3041 * spew.c: Include toplev.h.
3042
3043 1998-10-05 Jason Merrill <jason@yorick.cygnus.com>
3044
3045 * pt.c (instantiate_decl): Do save and restore file position.
3046
3047 1998-10-05 Martin von Löwis <loewis@informatik.hu-berlin.de>
3048
3049 * method.c (build_decl_overload_real): Clear
3050 numeric_output_need_bar after __.
3051
3052 1998-10-05 Nathan Sidwell <nathan@acm.org>
3053
3054 * call.c (build_new_method_call): Issue 'incomplete type' error,
3055 if class is not defined.
3056
3057 1998-10-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3058
3059 * call.c (build_object_call): Move declaration of variable
3060 `fn' into the scope where it is used. Don't access variable
3061 `fn' when it is uninitialized, instead use `fns'.
3062
3063 1998-10-04 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
3064
3065 * errfn.c (cp_thing): Print buf as a string not as a printf format
3066 to avoid problems with the operator%. Consequently, `%%' sequences
3067 in format are copied as `%' in buf.
3068
3069 1998-10-04 Jason Merrill <jason@yorick.cygnus.com>
3070
3071 * pt.c (pop_tinst_level): Call extract_interface_info.
3072 (instantiate_decl): Don't save and restore file position.
3073
3074 * decl.c (cp_finish_decl): Make statics in extern inlines and
3075 templates common, if possible and the target doesn't support weak
3076 symbols.
3077
3078 * decl.c (grokdeclarator): Remove redundant calls to
3079 build_type_variant and some duplicated code.
3080 * sig.c (build_signature_reference_type): Only take the type parm.
3081 (build_signature_pointer_type): Likewise.
3082 * tree.c (build_cplus_method_type): Adjust.
3083 * cp-tree.h: Update.
3084
3085 1998-10-04 Mark Mitchell <mark@markmitchell.com>
3086
3087 * call.c (build_over_call): Make pedwarns about dropped qualifiers
3088 into full-fledged errors.
3089 * cvt.c (convert_to_reference): Likewise.
3090 * typeck.c (convert_for_assignment): Likewise.
3091
3092 * search.c (expand_upcast_vtables): In addition to unsetting
3093 TREE_READONLY, remove top-level const type qualifier.
3094
3095 1998-10-03 Mark Mitchell <mark@markmitchell.com>
3096
3097 * class.c (current_class_ptr, current_class_ref): Clarify
3098 documentation.
3099 * cvt.c (ocp_convert): Don't expect fold to remove all trivial
3100 NOP type conversions.
3101 * decl.c (decls_match): Use comptypes directly; ignore
3102 qualifiers on the DECL.
3103 (duplicate_decls): Remove qualifier checks on DECL.
3104 (grokdeclarator): Make the type built up include top-level
3105 qualifiers.
3106 * decl2.c (do_dtors): Fix spelling error.
3107 * error.c (dump_simple_decl): Don't look at qualifiers on the decl
3108 when printing type information.
3109 * init.c (build_new_1): Add documentation. Deal with the fact
3110 that type of allocated memory now contains qualifiers.
3111 * lex.c (is_global): Improve error-recovery.
3112 * sig.c (build_member_function_pointer): Don't cast away const
3113 on fields of sigtable_entry_type.
3114 * tree.c (lvalue_type): Don't look at top-level qualifiers on
3115 expressions.
3116 * typeck.c (decay_conversion): Likewise.
3117 (build_component_ref): Make sure the type of the COMPONENT_REF
3118 contains top-level qualifiers, as appropriate. Improve
3119 error-handling.
3120 (build_indirect_ref): Simplify. Don't strip top-level qualifiers.
3121 (build_array_ref): Likewise.
3122 (build_unary_op): Improve error-recovery.
3123 (unary_complex_lvalue): Make taking the address a bound member
3124 function an error, not a sorry.
3125 (build_conditional_expr): Look at the type qualifiers, not the
3126 qualifiers on the expression itself.
3127
3128 1998-10-03 Jason Merrill <jason@yorick.cygnus.com>
3129
3130 * decl2.c (merge_functions): Remove duplicates.
3131
3132 * decl2.c: Add -f{no-,}implicit-inline-templates.
3133 (import_export_decl): Check it.
3134
3135 * decl.c (lookup_name_real): Template parms also take precedence
3136 over implicit typename. Only warn if yylex.
3137
3138 * typeck.c (build_conditional_expr): Only fold if ifexp is an
3139 INTEGER_CST.
3140
3141 * decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN
3142 instead of linkage.
3143
3144 1998-10-01 Jason Merrill <jason@yorick.cygnus.com>
3145
3146 * cp-tree.h (FORMAT_VBASE_NAME): New macro.
3147 * class.c (build_vbase_pointer): Use it.
3148 * rtti.c (expand_class_desc): Likewise.
3149 * tree.c (build_vbase_pointer_fields): Likewise.
3150
3151 Thu Oct 1 10:43:45 1998 Nick Clifton <nickc@cygnus.com>
3152
3153 * decl.c (start_decl): Add invocation of
3154 SET_DEFAULT_DECL_ATTRIBUTES, if defined.
3155 (start_function): Add invocation of
3156 SET_DEFAULT_DECL_ATTRIBUTES, if defined.
3157
3158 * lex.c: Replace occurrences of HANDLE_SYSV_PRAGMA with
3159 HANDLE_GENERIC_PRAGMAS.
3160
3161 1998-09-28 Anthony Green <green@cygnus.com>
3162
3163 * semantics.c (finish_asm_stmt): Always permit volatile asms.
3164
3165 1998-09-28 Mark Mitchell <mark@markmitchell.com>
3166
3167 * decl.c (grokdeclarator): Tighten checks for invalid
3168 destructors. Improve error-messages and error-recovery.
3169 * decl2.c (check_classfn): Don't assume that mangled destructor
3170 names contain type information.
3171
3172 1998-09-25 Jason Merrill <jason@yorick.cygnus.com>
3173
3174 * search.c (get_base_distance): Remove assert.
3175
3176 * decl2.c (build_anon_union_vars): Don't process a field with no
3177 name.
3178 (finish_anon_union): Also complain about local anon unions with no
3179 members.
3180
3181 1998-09-25 Martin von Löwis <loewis@informatik.hu-berlin.de>
3182
3183 * decl.c (lookup_namespace_name): If the name is a namespace,
3184 return it immediately.
3185
3186 Fri Sep 25 11:45:38 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3187
3188 * cp-tree.h (define_case_label): Remove unused parameter.
3189 (check_java_method): Likewise.
3190 (grokclassfn): Likewise.
3191 (expand_aggr_init): Likewise.
3192 (build_x_delete): Likewise.
3193 (maybe_end_member_template_processing): Likewise.
3194 (unshare_base_binfos): Add prototype.
3195 (string_conv_p): Likewise.
3196 (my_friendly_abort): Mark with ATTRIBUTE_NORETURN.
3197
3198 * cvt.c (build_up_reference): Remove unused parameter
3199 `checkconst', all callers changed.
3200 (build_type_conversion): Mark parameter `code' with
3201 ATTRIBUTE_UNUSED.
3202 (build_expr_type_conversion): Initialize variable `conv'.
3203
3204 * decl.c (push_namespace): Initialize variable `d'.
3205 (define_case_label): Remove unused parameter `decl', all callers
3206 changed.
3207
3208 * decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
3209 `argc' with ATTRIBUTE_UNUSED.
3210 (grokclassfn): Remove unused parameter `cname', all callers
3211 changed.
3212 (check_java_method): Likewise for parameter `ctype'.
3213 (copy_assignment_arg_p): Mark parameter `virtualp' with
3214 ATTRIBUTE_UNUSED.
3215 (finish_prevtable_vardecl): Likewise for parameter `prev'.
3216
3217 * expr.c (extract_init): Likewise for parameters `decl' and `init'.
3218
3219 * init.c (expand_aggr_init_1): Remove unused parameter
3220 `alias_this', all callers changed.
3221 (expand_aggr_init): Likewise.
3222 (expand_default_init): Likewise.
3223 (build_new_1): Initialize variable `susp'.
3224 (build_x_delete): Remove unused parameter `type', all callers
3225 changed.
3226
3227 * lex.c (set_typedecl_interface_info): Mark parameter `prev' with
3228 ATTRIBUTE_UNUSED.
3229 (readescape): Use (unsigned) value in shift.
3230 (real_yylex): Likewise. Likewise. Also cast `sizeof' to int when
3231 comparing to a signed quantity.
3232
3233 * pt.c (maybe_end_member_template_processing): Remove unused
3234 parameter `decl', all callers changed.
3235 (check_explicit_specialization): Add braces around empty body in
3236 an else-statement.
3237 (current_template_args): Initialize variable `args'.
3238 (lookup_template_class): Likewise for variable `prev_local_enum'.
3239 (tsubst_decl): Likewise for variable `r'.
3240 (set_mangled_name_for_template_decl): Initialize variable
3241 `context'.
3242
3243 * spew.c (scan_tokens): Change type of parameter `n' to unsigned.
3244 Likewise for variable `i'.
3245 (yylex): Initialize variable `trrr'.
3246
3247 * typeck.c (compparms): Mark variable `strict' with
3248 ATTRIBUTE_UNUSED.
3249
3250 * xref.c (simplify_type): Cast argument of ctype function to
3251 `unsigned char'.
3252
3253 1998-09-24 Mark Mitchell <mark@markmitchell.com>
3254
3255 * cp-tree.h (language_lvalue_valid): Remove.
3256 * decl.c (grokdeclarator): Don't disallow references to functions.
3257 * tree.c (lvalue_p_1): New function, combining duplicated
3258 code from ...
3259 (lvalue_p): Use it.
3260 (real_lvalue_p): Likewise.
3261 * typeck.c (language_lvalue_valid): Remove.
3262 (build_modify_expr): Treat FUNCTION_TYPEs as readonly, even though
3263 they don't have TREE_READONLY set.
3264 * typeck2.c (readonly_error): Add case for FUNCTION_DECLs.
3265
3266 1998-09-24 Benjamin Kosnik <bkoz@loony.cygnus.com>
3267
3268 * spew.c (yylex): Give diagnostic.
3269 * hash.h (is_reserved_word): Add export.
3270 * gxx.gperf: Likewise.
3271 * lex.h (rid): Add RID_EXPORT.
3272 * lex.c (init_parse): Likewise.
3273
3274 Tue Sep 22 21:01:19 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
3275
3276 * friend.c (do_friend): Make warning a full sentence.
3277
3278 1998-09-22 Mark Mitchell <mark@markmitchell.com>
3279
3280 * parse.y (component_decl_list): Improve error-recovery.
3281
3282 1998-09-22 Benjamin Kosnik <bkoz@loony.cygnus.com>
3283
3284 * decl.c (make_typename_type): Move error to point where name
3285 variable can be used by dump_type.
3286
3287 1998-09-22 Mark Mitchell <mark@markmitchell.com>
3288
3289 * decl.c (grokfndecl): Improve error-recovery.
3290 * decl2.c (grokfield): Likewise.
3291 * pt.c (finish_member_template_decl): Likewise.
3292
3293 1998-09-20 Martin von Löwis <loewis@informatik.hu-berlin.de>
3294
3295 * method.c (hack_identifier): Finding multiple members is always
3296 an error.
3297
3298 1998-09-21 Per Bothner <bothner@cygnus.com>
3299
3300 * Make-lang.in (c++-filt): Link libiberty.a after cxxmain.o.
3301
3302 Mon Sep 21 01:53:05 1998 Felix Lee <flee@cygnus.com>
3303
3304 * lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT ().
3305
3306 1998-09-20 Mark Mitchell <mark@markmitchell.com>
3307
3308 * class.c (maybe_warn_about_overly_private_class): Reformat.
3309
3310 1998-09-17 Andrew MacLeod <amacleod@cygnus.com>
3311
3312 * exception.cc (__cplus_type_matcher): Realign some code.
3313
3314 1998-09-16 Mark Mitchell <mark@markmitchell.com>
3315
3316 * Make-lang.in (tinfo.o): Use CXXFLAGS when compiling.
3317 (tinfo2.o): Likewise.
3318 (exception.o): Likewise.
3319 (new.o): Likewise.
3320 (opnew.o): Likewise.
3321 (opnewnt.o): Likewise.
3322 (opvnew.o): Likewise.
3323 (opvnewnt.o): Likewise.
3324 (opdel.o): Likewise.
3325 (opdelnt.o): Likewise.
3326 (opvdel.o): Likewise.
3327 (opvdelnt.o): Likewise.
3328
3329 1998-09-16 Richard Henderson <rth@cygnus.com>
3330
3331 * decl.c (init_decl_processing): Kill __builtin_fp and __builtin_sp.
3332
3333 1998-09-15 Alexandre Oliva <oliva@dcc.unicamp.br>
3334
3335 * call.c (build_field_call): Handle static data members too.
3336
3337 * typeck.c (comptypes): When comparing pointer types, check
3338 whether referred types match even in strictest modes.
3339
3340 1998-09-15 Mark Mitchell <mark@markmitchell.com>
3341
3342 * cp-tree.h: Revert previous change.
3343 (finish_struct_methods): Remove declaration.
3344 * class.c: Revert previous change.
3345 (maybe_warn_about_overly_private_class): New function.
3346 (finish_struct_methods): Declare here, and make static. Remove
3347 unnecessary parameters. Tidy slightly. Use
3348 maybe_warn_about_overly_private_class.
3349 (finish_struct_1): Adjust. Remove check for private constructors,
3350 now done elsewhere.
3351 (finish_struct): Adjust.
3352
3353 1998-09-15 Andrew MacLeod <amacleod@cygnus.com>
3354
3355 * except.c (expand_start_catch_block): No need to check for new
3356 exception model.
3357 (process_start_catch_block_old): Deleted.
3358 (process_start_catch_block): Add call to start_decl_1().
3359 (expand_end_catch_block): Add call to end_catch_handler().
3360 * exception.cc (__cplus_type_matcher): Only check the exception
3361 language if there is an exception table.
3362
3363 1998-09-15 Andrew MacLeod <amacleod@cygnus.com>
3364
3365 * search.c (expand_indirect_vtbls_init): Mark temporary stack slots
3366 as used to prevent conflicts with virtual function tables.
3367
3368 1998-09-14 Mark Mitchell <mark@markmitchell.com>
3369
3370 * cp-tree.h (lang_type): Add has_non_private_static_mem_fn.
3371 (CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN): New macro, to access it.
3372 * class.c (maybe_class_too_private_p): New function.
3373 (finish_struct_methods): Use it.
3374 (finish_struct_1): Likewise.
3375 (finish_struct): Set CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN if
3376 appropriate.
3377
3378 * pt.c (check_specialization_scope): Fix spelling error.
3379 (check_explicit_specialization): Remove code to handle explicit
3380 specializations in class scope; they are now correctly diagnosed
3381 as errors.
3382
3383 1998-09-10 Mark Mitchell <mark@markmitchell.com>
3384
3385 * decl.c (pushdecl): Don't copy types if the
3386 DECL_ABSTRACT_ORIGIN of the new decl matches the TYPE_NAME of the
3387 type.
3388
3389 1998-09-09 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
3390
3391 * class.c (get_enclosing_class): New function.
3392 (is_base_of_enclosing_class): Likewise.
3393 * cp-tree.h (get_enclosing_class): Declare.
3394 (is_base_of_enclosing_class): Likewise.
3395 * pt.c (coerce_template_parms): Use them.
3396
3397 1998-09-09 Jason Merrill <jason@yorick.cygnus.com>
3398
3399 * g++spec.c (lang_specific_driver): Check whether MATH_LIBRARY is
3400 null to decide whether to use it.
3401
3402 * error.c (dump_type_real): Handle NAMESPACE_DECL.
3403 * parse.y (base_class.1): Avoid crash on error.
3404
3405 1998-09-08 Martin von Löwis <loewis@informatik.hu-berlin.de>
3406
3407 * decl.c (make_typename_type): If context is a namespace, the code
3408 is in error.
3409
3410 1998-09-08 Mumit Khan <khan@xraylith.wisc.edu>
3411
3412 * parse.y (nomods_initdcl0): Set up the parser stack correctly.
3413
3414 1998-09-08 Mark Mitchell <mark@markmitchell.com>
3415
3416 * cp-tree.h (anonymous_namespace_name): Declare.
3417 * decl.c: Define it.
3418 (push_namespace): Use anonymous_namespace_name, rather than local
3419 static anon_name.
3420 * error.c (dump_decl): If a namespace is named
3421 anonymous_namespace_name, call it {anonymous}.
3422
3423 * decl.c (grokparms): Distinguish between references and pointers
3424 in error message.
3425
3426 1998-09-08 Richard Henderson <rth@cygnus.com>
3427 Mark Mitchell <mark@markmitchell.com>
3428
3429 * pt.c (process_partial_specialization): Consistently allocate
3430 and zero tpd.parms based on ntparms. Use tpd2.parms, not
3431 tpd.parms, where appropriate.
3432
3433 Sun Sep 6 00:00:51 1998 Jeffrey A Law (law@cygnus.com)
3434
3435 * Makefile.in (INCLUDES): Update after recent toplevel gcc
3436 reorganizations.
3437
3438 1998-09-05 Mark Mitchell <mark@markmitchell.com>
3439
3440 * cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove.
3441 * class.c (finish_struct): Remove hackery to deal with explicit
3442 specializations in class scope.
3443 * decl.c (grokfndecl): Improve error-recovery.
3444 * decl2.c (grokfield): Likewise.
3445 * pt.c (check_specialization_scope): New function.
3446 (begin_specialization): Call it.
3447 (process_partial_specialization): New function, split out from
3448 push_template_decl. Check partial specializations more
3449 stringently.
3450 (push_template_decl): Call it.
3451 (check_explicit_specialization): Don't attempt to handle explicit
3452 specializations in class scope.
3453 (template_parm_data): Document. Add current_arg and
3454 arg_uses_template_parms.
3455 (mark_template_parm): Set it.
3456 (tsubst_arg_types): Remove unused variable.
3457 * semantics.c (begin_class_definition): Tweak.
3458
3459 1998-09-04 Mark Mitchell <mark@markmitchell.com>
3460
3461 * inc/typeinfo (type_info::type_info(const char*)): Make
3462 `explicit'.
3463
3464 * cp-tree.h (hash_tree_cons_simple): New macro.
3465 * pt.c (tsubst_arg_types): New function. Use hash_tree_cons.
3466 (coerce_template_parms): Use make_temp_vec, instead of
3467 make_tree_vec. Document this behavior.
3468 (lookup_template_class): Likewise.
3469 (tsubst, cases METHOD_TYPE, FUNCTION_TYPE): Use tsubst_arg_types.
3470 Remove dead code (and add assertion to check its deadness). Fix
3471 bug w.r.t. exception specifications.
3472
3473 1998-09-03 Jason Merrill <jason@yorick.cygnus.com>
3474
3475 * decl2.c (import_export_vtable): Always make artificials comdat.
3476 (import_export_decl): Likewise.
3477 * pt.c (mark_decl_instantiated): Likewise.
3478
3479 1998-09-03 Mark Mitchell <mark@markmitchell.com>
3480
3481 * cp-tree.h (finish_globally_qualified_member_call_expr):
3482 Rename to ...
3483 (finish_qualified_call_expr).
3484 * semantics.c: Likewise.
3485 * parse.y (primary): Use it.
3486 * method.c (hack_identifier): Remove redundant code.
3487
3488 * init.c (resolve_offset_ref): Call convert_from_reference to
3489 handle members of reference type. Improve error recovery.
3490
3491 1998-09-03 Benjamin Kosnik <bkoz@cygnus.com>
3492
3493 * cp-tree.h: Declare warn_nontemplate_friend.
3494 * decl2.c (lang_decode_option): Set.
3495 * lang-options.h: Add -Wnon-template-friend.
3496 * friend.c (do_friend): Use to toggle non-template function warning.
3497
3498 1998-09-03 Mark Mitchell <mark@markmitchell.com>
3499
3500 * decl.c (finish_enum): Don't resolve CONST_DECLs to their
3501 corresponding INTEGER_CSTs when processing_template_decl.
3502 * pt.c (tsubst_enum): Tweak accordingly.
3503
3504 1998-09-03 Benjamin Kosnik <bkoz@rhino.cygnus.com>
3505
3506 * decl.c (pushdecl_class_level): Add warning here.
3507 (pushdecl): Tweak.
3508
3509 1998-09-02 Jason Merrill <jason@yorick.cygnus.com>
3510
3511 * cvt.c (convert_pointer_to_real): Tidy.
3512 * search.c (get_base_distance_recursive): Simplify.
3513 (get_base_distance): Likewise.
3514
3515 * pt.c (unify): Only special-case INTEGER_TYPE if it uses template
3516 parms.
3517
3518 Wed Sep 02 09:25:29 1998 Nick Clifton <nickc@cygnus.com>
3519
3520 * lex.c (check_newline): Call HANDLE_PRAGMA before
3521 HANDLE_SYSV_PRAGMA if both are defined. Generate warning messages
3522 if unknown pragmas are encountered.
3523 (handle_sysv_pragma): Interpret return code from
3524 handle_pragma_token (). Return success/failure indication rather
3525 than next unprocessed character.
3526 (pragma_getc): New function: retrieves characters from the
3527 input stream. Defined when HANDLE_PRAGMA is defined.
3528 (pragma_ungetc): New function: replaces characters back into the
3529 input stream. Defined when HANDLE_PRAGMA is defined.
3530
3531 1998-09-01 Jason Merrill <jason@yorick.cygnus.com>
3532
3533 * decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
3534 * class.c (build_vtable_entry_ref): Likewise.
3535
3536 1998-09-01 Mark Mitchell <mark@markmitchell.com>
3537
3538 * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): New macro.
3539 * decl2.c (import_export_decl): Likewise.
3540 * pt.c (instantiate_decl): Use it.
3541
3542 1998-09-01 Jason Merrill <jason@yorick.cygnus.com>
3543
3544 * decl.c (lookup_name_real): Also do implicit typename thing for
3545 artificial TYPE_DECLs.
3546 * search.c (lookup_field): Likewise.
3547 (lookup_fnfields, lookup_field): Adjust for implicit typename kludge.
3548 * semantics.c (begin_constructor_declarator): Use enter_scope_of.
3549 (enter_scope_of): Extract type from implicit typename.
3550 (begin_class_definition): Likewise.
3551 * lex.c (identifier_type): Handle implicit typename when checking
3552 for SELFNAME.
3553
3554 * cp-tree.h: Declare flag_strict_prototype.
3555 * lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if
3556 -fstrict-prototype.
3557 * decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't
3558 specified, set it to the value of pedantic.
3559
3560 1998-09-01 Mark Mitchell <mark@markmitchell.com>
3561
3562 * decl2.c (arg_assoc): Handle template-id expressions as arguments.
3563
3564 1998-08-31 Mark Mitchell <mark@markmitchell.com>
3565
3566 * decl.c (finish_enum): Handle member enums of classes declared in
3567 template functions.
3568
3569 * decl2.c (grok_x_components): Strip attributes before calling
3570 groktypename.
3571
3572 1998-08-31 Jason Merrill <jason@yorick.cygnus.com>
3573
3574 * cp-tree.h, decl2.c: Remove support for -fall-virtual,
3575 -fenum-int-equivalence and -fno-nonnull-objects.
3576 * class.c (check_for_override): Remove support for -fall-virtual.
3577 (finish_struct_1): Likewise.
3578 * call.c (build_new_op): Remove support for -fenum-int-equivalence.
3579 * typeck.c (build_binary_op_nodefault): Likewise.
3580 * cvt.c (ocp_convert): Likewise.
3581 * call.c (build_vfield_ref): Remove support for -fno-nonnull-objects.
3582 * class.c (build_vbase_path): Likewise.
3583
3584 Sun Aug 30 22:16:31 1998 H.J. Lu (hjl@gnu.org)
3585
3586 * Makefile.in (INTERFACE): New, set to 1.
3587
3588 1998-08-30 Mark Mitchell <mark@markmitchell.com>
3589
3590 * error.c (dump_decl): Use CP_DECL_CONTEXT, not DECL_CONTEXT, when
3591 comparing with global_namespace.
3592 (dump_aggr_type): Likewise.
3593
3594 * decl.c (grokfndecl): Issue error on declaration of friend
3595 templates with explicit template arguments.
3596
3597 * pt.c (convert_template_argument): New function, split out
3598 from...
3599 (coerce_template_parms): Here.
3600 (tsubst): Attempt better error-recovery.
3601
3602 1998-08-28 Benjamin Kosnik <bkoz@loony.cygnus.com>
3603
3604 * pt.c (decl_template_parm_p): Add checks for
3605 TEMPLATE_TEMPLATE_PARM.
3606
3607 1998-08-28 Mark Mitchell <mark@markmitchell.com>
3608
3609 * lex.c (do_identifier): Fix thinko in previous change.
3610
3611 1998-08-28 Jason Merrill <jason@yorick.cygnus.com>
3612
3613 * search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
3614 * decl2.c (output_vtable_inherit): Call binfo_for_vtable.
3615
3616 1998-08-28 Richard Henderson <rth@cygnus.com>
3617
3618 Add support for discarding unused virtual functions.
3619 * lang-options.h: Add -fvtable-gc.
3620 * cp-tree.h: Add flag_vtable_gc.
3621 * decl2.c (output_vtable_inherit): New fn.
3622 (finish_vtable_vardecl): Call it.
3623 * class.c (build_vtable_entry_ref): New fn.
3624 (build_vtbl_ref): Call it.
3625
3626 1998-08-28 Mark Mitchell <mark@markmitchell.com>
3627
3628 * cp-tree.h (build_enumerator): Take the enumeration type as a
3629 parameter.
3630 * decl.c (finish_enum): Don't set the TREE_TYPE for the
3631 enumeration constant values if we're processing_template_decls.
3632 Don't set the type for the CONST_DECLs either; that's done in
3633 build_enumerator.
3634 (build_enumerator): Take the enumeration type as a
3635 parameter.
3636 * lex.c (do_identifier): Don't resolve enumeration constants while
3637 processing template declarations, even if they happen to be
3638 TEMPLATE_PARM_INDEXs.
3639
3640 * parse.y (current_enum_type): New variable.
3641 (primary): Don't allow statement-expression in local classes just
3642 as we don't in global classes.
3643 (structsp): Use current_enum_type.
3644 (enum_list): Likewise.
3645 * pt.c (tsubst_enum): Don't check for NOP_EXPRs introduced by
3646 finish_enum; they no longer occur.
3647
3648 * cp-tree.h (finish_base_specifier): New function.
3649 * parse.y (base_class): Use it.
3650 * semantics.c (finish_base_specifier): Define it.
3651
3652 * parse.y (structsp): Warn on use of typename outside of template
3653 declarations.
3654
3655 1998-08-27 Jason Merrill <jason@yorick.cygnus.com>
3656
3657 * lex.c (handle_cp_pragma): Remove #pragma vtable.
3658 * lang-options.h: Remove +e options.
3659 * decl2.c (lang_decode_option): Likewise.
3660 (import_export_vtable): Don't check write_virtuals.
3661 (finish_vtable_vardecl, finish_file): Likewise.
3662 * search.c (dfs_debug_mark): Likewise.
3663 * semantics.c (begin_class_definition): Likewise.
3664 * class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise.
3665
3666 * call.c (build_over_call): Check flag_elide_constructors.
3667 * decl2.c: flag_elide_constructors defaults to 1.
3668 * typeck.c (convert_arguments): Remove return_loc parm.
3669 (build_function_call_real): Adjust.
3670
3671 * search.c: Tear out all mi_matrix and memoize code.
3672 (lookup_field, lookup_fnfields): Use scratch_tree_cons.
3673 * lang-options.h: Remove documentation for -fhandle-exceptions,
3674 -fmemoize-lookups and -fsave-memoized.
3675 * cp-tree.h: Lose mi_matrix and memoize support.
3676 * decl2.c: Ignore -fmemoize-lookups and -fsave-memoized.
3677 * class.c: Lose struct class_level.
3678 (pushclass, popclass): Lose memoize support.
3679 * init.c (build_offset_ref): Likewise.
3680
3681 Never change BINFO_INHERITANCE_CHAIN.
3682 * init.c (emit_base_init): Change modification of
3683 BINFO_INHERITANCE_CHAIN to an assert.
3684 * search.c (get_base_distance_recursive): Likewise.
3685 (get_base_distance): Likewise.
3686 (lookup_member): Likewise.
3687 (convert_pointer_to_single_level): Likewise.
3688 (lookup_field): Likewise. Lose setting TREE_VIA_* on TREE_LISTs.
3689 (lookup_fnfields): Likewise.
3690 * tree.c (propagate_binfo_offsets): Don't call unshare_base_binfos.
3691 (unshare_base_binfos): Don't call propagate_binfo_offsets.
3692 (layout_basetypes): Call propagate_binfo_offsets instead of
3693 unshare_base_binfos.
3694 * decl.c (xref_basetypes): Call unshare_base_binfos.
3695 * pt.c (instantiate_class_template): Likewise.
3696 * tree.c (reverse_path): Remove 'copy' parm; always make a
3697 temporary copy.
3698 * class.c (build_vbase_path): Just call it.
3699 * search.c (compute_access): Likewise. Don't re-reverse.
3700
3701 1998-08-27 Mark Mitchell <mark@markmitchell.com>
3702
3703 * class.c (build_vbase_path): Use reverse_path.
3704 (finish_base_struct): Move warnings for inaccessible bases to
3705 layout_basetypes.
3706 (modify_one_vtable): Remove check of TREE_USED (binfo).
3707 (fixup_vtable_deltas1): Likewise.
3708 * cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here.
3709 (xref_tag): Remove binfos parameter.
3710 (make_binfo): Remove chain parameter.
3711 (reverse_path): Add copy parameter.
3712 * decl.c (init_decl_processing): Change calls to xref_tag.
3713 (xref_tag): Remove binfos parameter.
3714 (xref_basetypes): Change calls to make_binfo.
3715 * decl2.c (grok_x_components): Change calls to xref_tag.
3716 (handle_class_head): Likewise.
3717 * friend.c (do_friend): Likewise.
3718 * lex.c (make_lang_type): Change calls to make_binfo.
3719 * parse.y (structsp): Change calls to xref_tag.
3720 (named_complex_class_head_sans_basetype): Likewise.
3721 (named_class_head): Likewise.
3722 * rtti.c (init_rtti_processing): Likewise.
3723 * search.c (compute_access): Change calls to reverse_path.
3724 (dfs_get_vbase_types): Change calls to make_binfo.
3725 (get_vbase_types): Remove dead code.
3726 * tree.c (unshare_base_binfos): Change calls to make_binfo.
3727 (layout_basetypes): Warn here about inaccessible bases.
3728 (make_binfo): Remove chain parameter.
3729 (reverse_path): Add copy parameter.
3730
3731 1998-08-27 Jason Merrill <jason@yorick.cygnus.com>
3732
3733 * class.c: #if 0 complete_type_p.
3734 * init.c (build_java_class_ref, build_new_1): Remove unused locals.
3735 * method.c (process_overload_item): Likewise.
3736 * typeck.c (comp_target_types): Likewise.
3737
3738 Stop sharing binfos for indirect virtual bases.
3739 * tree.c (propagate_binfo_offsets): Unshare vbases, too.
3740 (layout_basetypes): Likewise.
3741 (unshare_base_binfos): Copy vbases, too.
3742 * cp-tree.h (BINFO_VIA_PUBLIC, BINFO_BASEINIT_MARKED,
3743 BINFO_VBASE_INIT_MARKED): Remove obsolete macros.
3744 (BINFO_PUSHDECLS_MARKED, SET_BINFO_PUSHDECLS_MARKED,
3745 CLEAR_BINFO_PUSHDECLS_MARKED): New macros.
3746 * search.c (lookup_field, lookup_fnfields, lookup_member): Remove
3747 reference to BINFO_VIA_PUBLIC.
3748 (marked_pushdecls_p, unmarked_pushdecls_p): New fns.
3749 (push_class_decls): Use them.
3750 (dfs_pushdecls): Use SET_BINFO_PUSHDECLS_MARKED.
3751 (dfs_compress_decls): Use CLEAR_BINFO_PUSHDECLS_MARKED.
3752
3753 1998-08-27 Mark Mitchell <mark@markmitchell.com>
3754
3755 * decl.c (build_enumerator): Set DECL_CONTEXT for the
3756 CONST_DECLs.
3757
3758 1998-08-26 Mark Mitchell <mark@markmitchell.com>
3759
3760 * cp-tree.h (finish_enum): Change prototype.
3761 * decl.c (finish_enum): Use TYPE_VALUES, rather than taking a
3762 VALUES parameter. Don't try to compute mins/maxs if
3763 processing_template_decl.
3764 * parse.y (structsp): Use new calling sequence for finish_enum.
3765 * pt.c (tsubst_enum): Likewise. Take the new type as input.
3766 (lookup_template_class): Remove unused variables. Tweak.
3767 Register enums on instantiation list before substituting
3768 enumeration constants.
3769 (tsubst_decl): Remove unused variables.
3770 (regenerate_decl_from_template): Likewise.
3771
3772 * decl.c (duplicate_decls): Don't obliterate the
3773 DECL_TEMPLATE_INFO for a template if we're not replacing it with
3774 anything.
3775
3776 * lex.c (do_identifier): Fix typo in comment.
3777
3778 Wed Aug 26 10:54:51 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3779
3780 * errfn.c: Remove stdarg.h/varargs.h.
3781 * tree.c: Likewise.
3782
3783 1998-08-25 Brendan Kehoe <brendan@cygnus.com>
3784
3785 * pt.c (tsubst_copy): Only do typename overloading on an
3786 IDENTIFIER_NODE that happens to look like a typename if it actually
3787 has a type for us to use.
3788
3789 1998-08-25 Jason Merrill <jason@yorick.cygnus.com>
3790
3791 * typeck.c (comp_cv_target_types): Split out...
3792 (comp_target_types): From here. Don't allow cv-qual changes under
3793 a pointer if nptrs == 0. Fix OFFSET_TYPE handling.
3794 (build_ptrmemfunc): Pass 1 to nptrs.
3795 * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
3796
3797 1998-08-25 Mark Mitchell <mark@markmitchell.com>
3798
3799 * search.c (dependent_base_p): Don't compare a binfo to
3800 current_class_type; use the TREE_TYPE of the binfo instead.
3801
3802 * cp-tree.h (CLASS_TYPE_P): Revise definition.
3803
3804 1998-08-25 Jason Merrill <jason@yorick.cygnus.com>
3805
3806 * decl.c (duplicate_decls): Don't complain about different
3807 exceptions from an internal decl even if pedantic.
3808
3809 * typeck.c (convert_for_assignment): Converting from pm of vbase
3810 to derived is an error, not a sorry.
3811
3812 * call.c (build_over_call): Use convert_pointer_to_real for 'this'.
3813 * class.c (fixed_type_or_null): Rename from
3814 resolves_to_fixed_type_p. Return the dynamic type of the
3815 expression, if fixed, or null.
3816 (resolves_to_fixed_type_p): Use it. Return 0 if the dynamic type
3817 does not match the static type.
3818 (build_vbase_path): Rename 'alias_this' to 'nonnull'. Use
3819 resolves_to_fixed_type_p again.
3820
3821 1998-08-24 Mark Mitchell <mark@markmitchell.com>
3822
3823 * pt.c (tsubst_decl): Move special case code for dealing with
3824 tricky friend templates here from ...
3825 (regenerate_decl_from_template): Here.
3826
3827 1998-08-24 Jason Merrill <jason@yorick.cygnus.com>
3828
3829 * decl.c (start_decl): Remove redundant linkage check.
3830
3831 1998-08-24 Gavin Romig-Koch <gavin@cygnus.com>
3832
3833 * typeck.c (c_expand_return): Handle the case that valtype
3834 is wider than the functions return type.
3835
3836 1998-08-24 Mark Mitchell <mark@markmitchell.com>
3837
3838 * cp-tree.h (CLASS_TYPE_P): New macro.
3839 * decl.c (grokdeclarator): Use it instead of IS_AGGR_TYPE.
3840 * pt.c (process_template_parm): Undo previous change.
3841
3842 1998-08-24 Benjamin Kosnik <bkoz@cygnus.com>
3843
3844 * cp-tree.h: Declare.
3845 * pt.c (decl_template_parm_p): New function.
3846 * decl.c (pushdecl): Check decls for redeclaring template parms.
3847 (xref_tag): Make redeclaration an error, print decl.
3848 * decl2.c (grokfield): Check field_decls for redeclaration as well.
3849
3850 1998-08-24 Jason Merrill <jason@yorick.cygnus.com>
3851
3852 * parse.y (primary): Fix up the type of string constants.
3853
3854 1998-08-24 Mark Mitchell <mark@markmitchell.com>
3855
3856 * typeck.c (convert_for_initialization): Move check for odd uses
3857 of NULL to avoid duplicate warnings.
3858
3859 1998-08-24 Jason Merrill <jason@yorick.cygnus.com>
3860
3861 * tree.c (lvalue_type): Fix for arrays.
3862 * typeck.c (string_conv_p): New fn.
3863 (convert_for_assignment): Use it.
3864 (build_unary_op): Use lvalue_type.
3865 * call.c (standard_conversion, convert_like): Use string_conv_p.
3866 (add_function_candidate): Use lvalue_type.
3867 * cvt.c (convert_to_reference): Likewise.
3868 * decl2.c (lang_decode_option): Ignore -traditional.
3869 * decl.c (init_decl_processing): flag_writable_strings inhibits
3870 flag_const_strings.
3871
3872 1998-08-24 Andrew MacLeod <amacleod@cygnus.com>
3873
3874 * lang-options.h (lang_options): Add fconst-strings to the list
3875 of valid options.
3876 * decl2.c (lang_f_options, lang_decode_option): Likewise.
3877
3878 1998-08-24 Nathan Sidwell <nathan@acm.org>
3879
3880 * lex.c (real_yylex): Don't warn about long long constants if
3881 we're allowing long long.
3882
3883 1998-08-24 Martin von Löwis <loewis@informatik.hu-berlin.de>
3884
3885 * decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of
3886 accessing bindings directly.
3887
3888 * search.c (my_tree_cons): Reimplement.
3889
3890 * lang-specs.h: Remove __HONOR_STD.
3891 * inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise.
3892
3893 1998-08-23 Mark Mitchell <mark@markmitchell.com>
3894
3895 * decl.c (grokdeclarator): Complain about in-class initialization
3896 of aggregates and/or references.
3897 * pt.c (process_template_parm): Clear IS_AGGR_TYPE for
3898 TEMPLATE_TYPE_PARMs.
3899
3900 * decl2.c (grok_array_decl): Add comment.
3901 (mark_used): Don't instantiate an explicit instantiation.
3902 * friend.c (make_friend_class): Remove bogus comment. Fix check
3903 for partial specializations.
3904 * pt.c (check_explicit_specialization): Don't
3905 SET_DECL_EXPLICIT_INSTANTIATION here.
3906 (mark_decl_instantiated): Or here.
3907 (do_decl_instantiation): Do it here, instead. Add checks for
3908 duplicate explicit instantiations, etc. Tidy.
3909 (do_type_instantiation): Likewise.
3910 (instantiate_decl): Improve comments. Complain about explicit
3911 instantiations where no definition is available.
3912
3913 * cp-tree.h (ansi_null_node): Remove.
3914 * call.c (build_over_call): Warn about converting NULL to an
3915 arithmetic type.
3916 * cvt.c (build_expr_type_conversion): Likewise. Use
3917 null_ptr_cst_p instead of expanding it inline.
3918 * decl.c (ansi_null_node): Remove.
3919 (init_decl_processing): Make null_node always have integral type.
3920 * except.c (build_throw): Warn about converting NULL to an
3921 arithmetic type.
3922 * lex.c (init_parse): Remove handling of ansi_null_node.
3923 * pt.c (type_unification_real): Don't convert NULL to void* type.
3924 * typeck.c (build_binary_op_nodefault): Fix NULL warnings.
3925 (convert_for_assignment): Warn about converting NULL to an
3926 arithmetic type.
3927 (convert_for_initialization): Likewise.
3928
3929 1998-08-20 Jason Merrill <jason@yorick.cygnus.com>
3930
3931 * tree.c (search_tree, no_linkage_helper, no_linkage_check): New fn.
3932 * pt.c (coerce_template_parms): Use no_linkage_check.
3933 * decl.c (grokvardecl): Likewise.
3934 (grokfndecl): Likewise. Members of anonymous types have no linkage.
3935
3936 * method.c (process_overload_item): Remove useless code.
3937
3938 1998-08-20 Per Bothner <bothner@cygnus.com>
3939
3940 Handle new'ing of Java classes.
3941 * init.c (build_class_classref): New function.
3942 (build_new_1): If type is TYPE_FOR_JAVA: Call _Jv_AllocObject;
3943 constructor does not return this; don't need to exception-protect.
3944
3945 * pt.c (lookup_template_class): Copy TYPE_FOR_JAVA flag.
3946 * decl2.c (acceptable_java_type): Handle template-derived types.
3947
3948 1998-08-20 Per Bothner <bothner@cygnus.com>
3949
3950 * decl2.c (import_export_vtable): Suppress vtables for Java classes.
3951
3952 1998-08-20 Mark Mitchell <mark@markmitchell.com>
3953
3954 * decl.c (duplicate_decls): Always merge the old and new patterns
3955 for templates, regardless of whether or not the new one has
3956 DECL_INITIAL. Don't throw away specializations. Merge
3957 DECL_SAVED_TREE.
3958 * pt.c (tsubst_decl): Use the right pattern when calculating the
3959 complete args for a new template instance.
3960 (do_decl_instantiation): Fix typo in comment.
3961 (regenerate_decl_from_template): Deal with tricky friend template
3962 case.
3963 (instantiate_decl): Likewise.
3964
3965 Thu Aug 20 09:09:45 1998 Jeffrey A Law (law@cygnus.com)
3966
3967 * init.c (build_builtin_delete_call): Add missing assemble_external
3968 call.
3969
3970 1998-08-20 Jason Merrill <jason@yorick.cygnus.com>
3971
3972 * parse.y (notype_unqualified_id): Also accept ~A<int>.
3973
3974 1998-08-19 Mark Mitchell <mark@markmitchell.com>
3975
3976 * typeck.c (build_binary_op_nodefault): Warn on use of NULL in
3977 arithmetic.
3978 * except.c (build_throw): Warn when NULL is thrown, even with
3979 -ansi. Use ansi_null_node, rather than integer_zero_node, in the
3980 thrown expression.
3981
3982 * cp-tree.h (ansi_null_node): New variable.
3983 * decl.c (ansi_null_node): New variable.
3984 (init_decl_processing): Initialize its type.
3985 * lex.c (init_parse): Initialize its value. Use ansi_null_node
3986 for null_node in non-ANSI mode.
3987 * typeck.c (build_binary_op_nodefault): Use ansi_null_node in
3988 place of null_node to avoid spurious errors.
3989
3990 1998-08-17 Mark Mitchell <mark@markmitchell.com>
3991
3992 * cp-tree.h (enter_scope_of): New function.
3993 * parse.y (complex_direct_notype_declarator): Use it.
3994 * semantics.c (enter_scope_of): New function.
3995
3996 1998-08-17 Jason Merrill <jason@yorick.cygnus.com>
3997
3998 * decl.c (grokparms): No, here.
3999
4000 * decl.c (grokdeclarator): Catch parm with pointer to array of
4001 unknown bound here...
4002 * method.c (process_overload_item): ...not here.
4003
4004 * gxxint.texi: Remove obsolete documentation of overloading code.
4005
4006 * decl.c (finish_enum): Also set TYPE_SIZE_UNIT.
4007 * class.c (finish_struct_bits): Likewise.
4008
4009 * tree.c (lvalue_type): Fix for arrays.
4010 * typeck.c (build_unary_op): Use lvalue_type.
4011 * call.c (add_function_candidate): Likewise.
4012 * cvt.c (convert_to_reference): Likewise.
4013
4014 * decl2.c (lang_decode_option): Ignore -traditional.
4015
4016 * init.c (build_offset_ref): Don't mess with error_mark_node.
4017 * lex.c (do_scoped_id): Use cp_error.
4018
4019 * rtti.c (get_tinfo_fn): Don't mess with the context for now.
4020
4021 1998-08-17 Benjamin Kosnik <bkoz@loony.cygnus.com>
4022
4023 * decl.c (grokdeclarator): Allow anonymous types to be cv-qualified.
4024
4025 Mon Aug 17 10:40:18 1998 Jeffrey A Law (law@cygnus.com)
4026
4027 * cp-tree.h (set_identifier_local_value): Provide prototype.
4028
4029 * decl2.c (do_namespace_alias): Remove unused variables `binding'
4030 and `old'.
4031
4032 Fri Aug 14 16:42:27 1998 Nick Clifton <nickc@cygnus.com>
4033
4034 * Makefile.in: Rename BBISON to BISON so that it can be properly
4035 inherited from the parent makefile.
4036
4037 1998-08-13 Jason Merrill <jason@yorick.cygnus.com>
4038
4039 * lang-options.h: Add -finit-priority.
4040 * decl2.c: Likewise. Check flag_init_priority instead of
4041 USE_INIT_PRIORITY.
4042
4043 * decl2.c (setup_initp): New fn.
4044 (start_objects, finish_objects, do_ctors): Handle init_priority.
4045 (do_dtors, finish_file): Likewise.
4046
4047 1998-08-13 Jason Merrill <jason@yorick.cygnus.com>
4048
4049 * pt.c (tsubst_copy): Hush warning.
4050
4051 * rtti.c (get_tinfo_fn): Also set DECL_IGNORED_P.
4052
4053 1998-08-12 Mark Mitchell <mark@markmitchell.com>
4054
4055 * pt.c (print_template_context): Don't abort when instantiating a
4056 synthesized method.
4057
4058 * decl.c (grokdeclarator): Issue errors on namespace qualified
4059 declarators in parameter lists or in class scope.
4060
4061 1998-08-09 Mark Mitchell <mark@markmitchell.com>
4062
4063 * pt.c (check_explicit_specialization): Don't abort on bogus
4064 explicit instantiations.
4065
4066 1998-08-07 Mark Mitchell <mark@markmitchell.com>
4067
4068 * typeck.c (require_complete_type): Use complete_type_or_else.
4069 (complete_type_or_else): Always return NULL_TREE on failure, as
4070 documented.
4071
4072 * pt.c (tsubst_aggr_type): Prototype.
4073 (tsubst_decl): New function, split out from tsubst. Set
4074 input_filename and lineno as appropriate.
4075 (pop_tinst_level): Restore the file and line number saved in
4076 push_tinst_level.
4077 (instantiate_class_template): Set input_filename and lineno as
4078 appropriate.
4079 (tsubst): Move _DECL processing to tsubst_decl. Make sure the
4080 context for a TYPENAME_TYPE is complete.
4081
4082 * decl2.c (grokbitfield): Issue errors on bitfields declared with
4083 function type.
4084 (do_dtors): As in do_ctors, pretend to be a member of the same
4085 class as a static data member while generating a call to its
4086 destructor.
4087
4088 * cvt.c (cp_convert_to_pointer): Handle NULL pointer
4089 conversions, even in complex virtual base class hierarchies.
4090
4091 1998-08-06 Mark Mitchell <mark@markmitchell.com>
4092
4093 * cp-tree.h (ENUM_TEMPLATE_INFO): New macro.
4094 (TYPE_TEMPLATE_INFO): Likewise.
4095 (SET_TYPE_TEMPLATE_INFO): Likewise.
4096 (ENUM_TI_TEMPLATE): Likewise.
4097 (ENUM_TI_ARGS): Likewise.
4098 (lookup_nested_type_by_name): Remove.
4099 * decl.c (maybe_process_template_type_declaration): Handle enums.
4100 (start_enum): Don't check for primary-template enum declarations
4101 here.
4102 (finish_enum): Clean up, document. Make sure template enum
4103 constants get the correct type.
4104 (build_enumerator): Copy initializers for template enumerations,
4105 too.
4106 (grok_enum_decls): Document.
4107 * lex.c (do_identifier): Document use of LOOKUP_EXPR a bit
4108 better. Build LOOKUP_EXPRs for local variables, even if they are
4109 TREE_PERMANENT.
4110 * pt.c (tsubst_enum): Remove field_chain parameter.
4111 (template_class_depth): Include the depth of surrounding function
4112 contexts.
4113 (push_template_decl): Check for primary-template enum declarations
4114 here. Deal with enumeration templates.
4115 (lookup_template_class): Likewise.
4116 (for_each_template_parm): Likewise.
4117 (instantiate_class_template): Don't call tsubst_enum directly,
4118 call tsubst instead, to instantiate enums. Deal with all
4119 field_chain issues here, not in tsubst_enum.
4120 (lookup_nested_type_by_name): Remove.
4121 (tsubst_aggr_type): Revise handling of enumeration types.
4122 (tsubst): Likewise.
4123 (tsubst_copy): Likewise.
4124 (tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs.
4125
4126 1998-08-04 Mark Mitchell <mark@markmitchell.com>
4127
4128 * decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it
4129 uses template parameters.
4130 * method.c (build_template_parm_names): Use the full set of
4131 template arguments for tsubst'ing.
4132 (build_overload_identifier): Pass the full set of template
4133 arguments to build_template_parm_names, not just the
4134 innermost_args.
4135 * pt.c (TMPL_ARGS_DEPTH): Define using
4136 TMPL_ARGS_HAVE_MULTIPLE_LEVELS, for clarity.
4137 (NUM_TMPL_ARGS): New macro.
4138 (add_outermost_template_args): Deal with the case where the outer
4139 args will be completely discarded.
4140 (coerce_template_parms): Use the full set of template arguments
4141 for tsubst'ing. Simplify. Add some asserts. Improve
4142 error messages.
4143 (lookup_template_class): Pass the full set of template arguments
4144 to coerce_template_parms.
4145 (tsubst): Add assertion.
4146 (do_type_instantiation): Don't instantiate member template
4147 classes.
4148
4149 * init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose
4150 name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE.
4151
4152 1998-08-03 Jason Merrill <jason@yorick.cygnus.com>
4153
4154 * method.c (set_mangled_name_for_decl): Change return type to void.
4155
4156 * decl.c (lookup_name_real): A namespace-level decl takes priority
4157 over implicit typename. Avoid doing the same lookup twice.
4158
4159 * search.c (dependent_base_p): New fn.
4160 (dfs_pushdecls, dfs_compress_decls): Use it.
4161
4162 * typeck.c (get_member_function_from_ptrfunc): Don't try to handle
4163 virtual functions if the type doesn't have any.
4164
4165 1998-08-03 Mark Mitchell <mark@markmitchell.com>
4166
4167 * decl2.c (grokfield): Don't mangle the name of a TYPE_DECL if it
4168 uses template parameters.
4169
4170 1998-08-02 Mark Mitchell <mark@markmitchell.com>
4171
4172 * cp-tree.def (LOOKUP_EXPR): Document. Remove second argument.
4173 * cp-tree.h (DECL_TI_TEMPLATE): Improve documentation.
4174 * lex.c (do_identifier): Don't use a second argument, or a type,
4175 when building LOOKUP_EXPRs.
4176 (do_identifier): Likewise.
4177 (do_scoped_id): Likewise.
4178 * method.c (hack_identifier): Improve error message.
4179 * pt.c (lookup_template_function): Don't needlessly call
4180 copy_to_permanent or build_min.
4181 (tsubst_copy): Remove #if 0'd code. tsubst into LOOKUP_EXPRs if
4182 necessary.
4183 (do_decl_instantiation): Improve error message.
4184 * tree.c (mapcar, case LOOKUP_EXPR): Don't be sorry; make a copy.
4185 (build_min): Copy the type to the permanent obstack, too.
4186
4187 1998-08-01 Jason Merrill <jason@yorick.cygnus.com>
4188
4189 * init.c (init_init_processing): Remove BI* handling.
4190 (build_builtin_call): Remove.
4191 (build_builtin_delete_call): New fn.
4192 (build_delete): Use it.
4193
4194 1998-07-31 Mark Mitchell <mark@markmitchell.com>
4195
4196 * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): New macro.
4197 (maybe_check_template_type): New function.
4198 * decl.c (maybe_process_template_type_declaration): New function,
4199 split out from pushtag Call maybe_check_template_type.
4200 (pushtag): Use it. Use PROCESSING_REAL_TEMPLATE_DECL_P.
4201 (xref_tag): Use PROCESSING_REAL_TEMPLATE_DECL_P.
4202 * friend.c (do_friend): Use PROCESSING_REAL_TEMPLATE_DECL_P.
4203 * pt.c (template_class_depth_real): Generalization of ...
4204 (template_class_depth): Use it.
4205 (register_specialization): Use duplicate_decls for duplicate
4206 declarations of specializations.
4207 (maybe_check_template_type): New function.
4208 (push_template_decl_real): Fix comment.
4209 (convert_nontype_argument): Likewise.
4210 (lookup_template_class): Likewise. Avoid an infinite loop on
4211 erroneous code.
4212 (tsubst_friend_function): Fix comment.
4213 (tsubst, case FUNCTION_DECL): Deal with a DECL_TI_TEMPLATE that is
4214 an IDENTIFIER_NODE.
4215 * semantics.c (begin_function_definition): Use
4216 reset_specialization to note that template headers don't apply
4217 directly to declarations after the opening curly for a function.
4218
4219 1998-07-29 Jason Merrill <jason@yorick.cygnus.com>
4220
4221 * decl.c (push_overloaded_decl): Use current_namespace instead of
4222 DECL_CONTEXT (decl) to determine where we go.
4223
4224 * decl.c (lookup_name_real): Fix typo.
4225
4226 1998-07-28 Mark Mitchell <mark@markmitchell.com>
4227
4228 * friend.c (is_friend): Be lenient with member functions to deal
4229 with nested friends.
4230
4231 1998-07-28 Jason Merrill <jason@yorick.cygnus.com>
4232
4233 * class.c (finish_struct_1): Convert integer_zero_node to
4234 ssizetype before passing it to set_rtti_entry.
4235 * typeck2.c (initializer_constant_valid_p): Allow conversion of 0
4236 of any size to a pointer.
4237
4238 1998-07-27 Mark Mitchell <mark@markmitchell.com>
4239
4240 * cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove.
4241 (build_template_decl_overload): Remove.
4242 (set_mangled_name_for_decl): New function.
4243 (innermost_args): Remove is_spec parameter.
4244 (most_specialized, most_specialized_class): Remove declarations.
4245 (lookup_template_class): Add entering_scope parameter.
4246 (maybe_process_partial_specialization): New function.
4247 (finish_template_decl): Likewise.
4248 (finish_template_type): Likewise.
4249 * class.c (finish_struct): Clean up processing of member template
4250 specializations.
4251 * decl.c (pushtag): Fix formatting.
4252 (lookup_tag): Improve handling of pseudo-global levels.
4253 (make_typename_type): Adjust call to lookup_template_class.
4254 (shadow_tag): Use maybe_process_partial_specialization.
4255 (xref_tag): Improve handling of member friends.
4256 (start_function): Call push_nested_class before
4257 push_template_decl. Don't call push_template_decl for
4258 specializations.
4259 * decl2.c (grok_x_components): Don't call xref_tag for
4260 template instantiations. Handle UNION_TYPEs like RECORD_TYPEs.
4261 (grokclassfn): Use set_mangled_name_for_decl.
4262 (arg_assoc_class): Adjust call to innermost_args.
4263 (mark_used): Don't call instantiate_decl for a TEMPLATE_DECL.
4264 * error.c (dump_function_name): Improve printing of template
4265 function names.
4266 * friend.c (is_friend): Don't compare types of decls to determine
4267 friendship, unless flag_guiding_decls.
4268 (make_friend_class): Partial specializations cannot be friends.
4269 (do_friend): Use set_mangled_name_for_decl. Call
4270 push_template_decl_real instead of push_template_decl.
4271 * method.c (build_decl_overload_real): Remove prototype. Give it
4272 external linkage.
4273 (build_overload_identififer): Adjust call to innermost_args.
4274 (build_template_decl_overload): Remove.
4275 (set_mangled_name_for_decl): New function.
4276 * parse.y (.finish_template_type): New non-terminal.
4277 (template_def): Use finish_template_decl. Use template_extdef
4278 instead of extdef.
4279 (template_extdef, template_datadef): New non-terminals, containing
4280 only those rules for things which can be templates.
4281 (datadef): Tidy.
4282 (template_type, self_template_type): Use .finish_template_type.
4283 (named_class_head): Use maybe_process_partial_specialization.
4284 * pt.c (mangle_class_name_for_template): Remove context parameter.
4285 (get_class_bindings): Remove outer_args parameter.
4286 (complete_template_args): Remove.
4287 (add_outermost_template_args): New function.
4288 (register_specialization): Return the specialization.
4289 (unregister_specialization): New function.
4290 (tsubst_template_parms): Likewise.
4291 (most_specialized, most_specialized_class): Prototype here as
4292 static.
4293 (original_template): Rename to most_general_template.
4294 (tsubst_template_parms): New function.
4295 (set_mangled_name_for_template_decl): Likewise.
4296 (TMPL_ARGS_DEPTH): New macro.
4297 (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Adjust.
4298 (TMPL_ARGS_LEVEL): New macro.
4299 (SET_TMPL_ARGS_LEVEL): Likewise.
4300 (TMPL_ARG): Likewise.
4301 (SET_TMPL_ARG): Likewise.
4302 (TMPL_ARGS_DEPTH): Likewise.
4303 (finish_member_template_decl): Use finish_template_decl.
4304 (maybe_process_partial_specialization): New function, split out
4305 from tsubst.
4306 (inline_needs_template_parms): Use TMPL_PARMS_DEPTH.
4307 (maybe_begin_member_template_processing): Use new macros.
4308 (is_member_template): Likewise.
4309 (is_member_template_class): Likewise.
4310 (add_to_template_args): Likewise. Deal with multiple levels of
4311 args.
4312 (maybe_process_partial_specialization): New function.
4313 (retrieve_specialization): Add consistency check.
4314 (determine_specialization): Return full argument list.
4315 (check_explicit_specialization): Tweak friend handling. Use full
4316 argument lists. Simplify.
4317 (current_template_args): Use new macros.
4318 (push_template_decl_real): Change ill-named mainargs to specargs.
4319 Check that a partial specialization actually specializes at least
4320 one parameter. Improve friend handling. Modify for full
4321 template arguments.
4322 (classtype_mangled_name): Don't mangle the names of
4323 specializations.
4324 (lookup_template_class): Add entering_scope parameter. Use it to
4325 avoid finding a template type when an instantiation is required.
4326 Simplify. Use full template arguments.
4327 (tsubst_friend_function): Use unregister_specialization. Use new
4328 macros. Use full template arguments.
4329 (tsubst_friend_class): Substitute, using tsubst_template_parms,
4330 into the template parameters before passing them to
4331 redeclare_class_template.
4332 (instantiate_class_template): Simplify. Use full template
4333 arguments. Adjust calls to get_class_bindings. Use
4334 SET_IDENTIFIER_TYPE_VALUE where needed. Improve friend handling.
4335 (innermost_args): Use new macros.
4336 (tsubst_aggr_type): New function, split out from tsubst.
4337 (tsubst): Use tsubst_aggr_type, tsubst_template_parms, new calling
4338 conventions for lookup_template_class. Refine handling of partial
4339 instantiations. Remove calls to complete_template_args.
4340 Simplify. Add consistency checks. Use set_mangled_name_for_decl
4341 and set_mangled_name_for_template_decl.
4342 (tsubst_copy): Use tsubst_aggr_type.
4343 (instantiate_template): Use full template arguments.
4344 (more_specialized): Improve formatting.
4345 (more_specialized_class): Adjust calls to get_class_bindings.
4346 (get_bindings_real): Don't call complete_template_args.
4347 (most_specialized): Don't overwrite input; create a new list.
4348 (most_specialized_class): Use most_general_template.
4349 (regenerate_decl_from_template): Use unregister_specialization.
4350 Use full template arguments.
4351 (instantiate_decl): Use full template arguments.
4352 (set_mangled_name_for_template_decl): New function.
4353 * semantics.c (begin_class_definition): Use
4354 maybe_process_partial_specialization.
4355 (finish_member_class_template): New function.
4356 (finish_template_decl): Likewise.
4357 (finish_template_type): Likewise.
4358 (typeck.c): Don't crash after issuing a compiler_error.
4359 * Makefile.in (CONFLICTS): Adjust; we removed a s/r conflict.
4360
4361 1998-07-27 Jason Merrill <jason@yorick.cygnus.com>
4362
4363 * typeck2.c (build_functional_cast): Handle default-initialization.
4364
4365 * call.c (build_over_call): Pass 1 to popclass.
4366
4367 * parse.y (direct_notype_declarator): Add precedence declaration
4368 to notype_unqualified_id case.
4369 * Makefile.in (EXPECT): Adjust.
4370
4371 * tree.c (ovl_member): Fix for single function in OVL.
4372
4373 1998-07-27 Dave Brolley <brolley@cygnus.com>
4374
4375 * c-lex.c (yylex): Fix boundary conditions in character literal and
4376 string literal loops.
4377
4378 1998-07-24 Jason Merrill <jason@yorick.cygnus.com>
4379
4380 * decl.c (lookup_name_real): OK, do return the from_obj value
4381 unless got_object depends on template parms.
4382
4383 * parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.
4384
4385 * pt.c (coerce_template_parms): Also complain about local enums.
4386
4387 * cp-tree.h: Add prototype for set_identifier_local_value.
4388 * decl.c (set_identifier_local_value_with_scope): Make static,
4389 prototype.
4390 * search.c (covariant_return_p): Likewise.
4391 * except.c (build_terminate_handler, alloc_eh_object): Likewise.
4392
4393 * call.c (build_method_call): Only pull out the type of a destructor
4394 if it's a template type parm.
4395 * decl.c (lookup_name_real): Never return the from_obj value.
4396
4397 1998-07-23 Jason Merrill <jason@yorick.cygnus.com>
4398
4399 * except.c (process_start_catch_block_old): Call start_decl_1 for
4400 catch parm.
4401 * decl.c (start_decl_1): Avoid duplicate error.
4402
4403 * init.c (expand_default_init): Only perform the initialization if
4404 it will do something.
4405
4406 1998-07-23 H.J. Lu (hjl@gnu.org)
4407
4408 * parse.y (base_class): Check for invalid base class.
4409
4410 1998-07-23 Jason Merrill <jason@yorick.cygnus.com>
4411
4412 * decl2.c (import_export_template): Fold in...
4413 (import_export_class): ...to here. Handle dllimport/export.
4414
4415 * class.c (build_vtable): Pass at_eof to import_export_vtable.
4416 (prepare_fresh_vtable): Likewise.
4417 * decl2.c (import_export_class): Split out...
4418 (finish_prevtable_vardecl): From here.
4419 * class.c (finish_struct_1): Call import_export_class if at_eof.
4420
4421 * decl.c (start_function): #if 0 mysterious code I wrote and have
4422 forgotten why.
4423 * rtti.c (get_tinfo_fn): If this is for a class type, set
4424 DECL_CONTEXT.
4425
4426 1998-07-22 Jason Merrill <jason@yorick.cygnus.com>
4427
4428 * inc/exception: Change terminate and unexpected to ().
4429
4430 * parse.y (named_class_head_sans_basetype_defn): A
4431 named_class_head_sans_basetype followed by '{' or ':' is a defn.
4432
4433 1998-07-21 Jason Merrill <jason@yorick.cygnus.com>
4434
4435 * tree.c (canonical_type_variant): New fn to handle arrays.
4436 * cp-tree.h (CANONICAL_TYPE_VARIANT): Remove.
4437 * pt.c (unify, default case): Also fold arg. Fix array bounds case.
4438 * method.c (process_overload_item): Use build_overload_value for
4439 arrays.
4440
4441 1998-07-20 Dave Brolley <brolley@cygnus.com>
4442
4443 * lex.c (mbchar.h): #include it.
4444 (GET_ENVIRONMENT): New macro.
4445 (init_parse): Set character set based on LANG environment variable.
4446 (real_yylex): Handle multibyte characters in character literals.
4447 (real_yylex): Handle multibyte characters in string literals.
4448
4449 1998-07-19 Jason Merrill <jason@yorick.cygnus.com>
4450
4451 * lex.c (do_identifier): Look for class value even if we don't
4452 have a global value. Do implicit declaration if parsing is 2.
4453 * semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
4454 lookup.
4455
4456 1998-07-19 Mark Mitchell <mark@markmitchell.com>
4457
4458 * decl.c (pushtag): Revert previous change.
4459 * pt.c (lookup_template_class): Don't put out debugging
4460 information for types that use template parameters.
4461
4462 * decl.c (pushtag): Don't put out debugging information for
4463 compiler-generated typedefs.
4464
4465 * error.c (dump_type_real): Don't crash when presented with
4466 intQI_type_node or the like.
4467
4468 * semantics.c (finish_translation_unit): Fix spelling error in
4469 comment.
4470
4471 1998-07-17 Jason Merrill <jason@yorick.cygnus.com>
4472
4473 * decl.c (lookup_name_real): Pull out single function here.
4474 (select_decl): Not here.
4475 (unqualified_namespace_lookup): Use CP_DECL_CONTEXT.
4476
4477 * decl.c (qualify_lookup): Tweak again.
4478
4479 * pt.c (lookup_template_class): Don't mess with the context of the
4480 instantiation.
4481 * decl2.c (current_decl_namespace): Remove special handling for
4482 templates.
4483
4484 * pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
4485 a member template specialization.
4486
4487 * tree.c (ovl_member): Use decls_match to compare functions.
4488 * decl.c (decls_match): Check the context of a function.
4489
4490 * parse.y (primary): Use notype_unqualified_id instead of IDENTIFIER
4491 in Koenig lookup support rules.
4492 * semantics.c (finish_call_expr): Handle the new cases.
4493
4494 * typeck.c (build_x_function_call): Handle overloaded methods.
4495
4496 * decl.c (grokvardecl): Don't call build_static_name for extern "C".
4497
4498 1998-07-16 Mark Mitchell <mark@markmitchell.com>
4499
4500 * semantics.c (finish_object_call_expr): Revert previous change.
4501 * call.c (build_new_method_call): Likewise. Instead, convert
4502 TYPE_DECLs to IDENTIFIERs here, in the presence of templates.
4503
4504 1998-07-16 Jason Merrill <jason@yorick.cygnus.com>
4505
4506 * decl.c (qualify_lookup): Handle templates.
4507
4508 * decl2.c (do_using_directive): Don't pass ancestor.
4509 * decl.c (push_using_directive): Calculate ancestor.
4510
4511 * decl2.c (do_nonmember_using_decl): Allow for type shadowing.
4512 * decl.c (pushdecl): Move type shadowing handling from here...
4513 (duplicate_decls): ...to here.
4514 * decl.c (set_identifier_local_value_with_scope): New fn.
4515 (pushdecl): Use it.
4516 (set_identifier_local_value, lookup_type_current_level): New fns.
4517 * decl2.c (do_local_using_decl): Handle types and binding level
4518 stuff properly.
4519
4520 * init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
4521 * decl.c (select_decl): Extract a lone function from an OVERLOAD.
4522 (lookup_namespace_name): Likewise.
4523 * typeck.c (build_unary_op): Not here anymore.
4524
4525 * decl2.c (do_class_using_decl): Make sure we get an identifier.
4526 * class.c (handle_using_decl): Ignore TYPE_DECLs.
4527
4528 * decl.c (qualify_lookup): New fn.
4529 (lookup_name_real): Use it.
4530
4531 1998-07-16 Martin v. Loewis <loewis@informatik.hu-berlin.de>
4532
4533 * decl2.c (add_using_namespace): When directly using a namespace
4534 that was indirect before, promote it.
4535
4536 * cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
4537 LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
4538 LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
4539 * decl.c (select_decl): Replace two flag parameters by one.
4540 (unqualified_namespace_lookup): Likewise, pass flag.
4541 (lookup_flags): New function.
4542 (lookup_name_real): Compute flags, pass them.
4543 (lookup_namespace_name): Call with zero-flag.
4544 * decl2.c (ambiguous_decl): Add flag parameter, complain only
4545 according to flags.
4546 (lookup_using_namespace, qualified_lookup_using_namespace):
4547 Add flag parameter, pass them through.
4548 * lex.c (do_scoped_id): Call with zero-flag.
4549
4550 1998-07-16 Jason Merrill <jason@yorick.cygnus.com>
4551
4552 * typeck.c (convert_for_assignment): Use comptypes.
4553
4554 1998-07-16 Mark Mitchell <mark@markmitchell.com>
4555
4556 * semantics.c (finish_object_call_expr): Move test for the
4557 function called being a TYPE_DECL to ...
4558 * call.c (build_new_method_call): Here.
4559
4560 1998-07-15 Jason Merrill <jason@yorick.cygnus.com>
4561
4562 * decl2.c (arg_assoc_class): Also look at template arguments, if any.
4563 (arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.
4564
4565 * lex.c (looking_for_typename): Don't initialize.
4566
4567 * decl2.c (ambiguous_decl): Clarify error message.
4568
4569 * decl.c (push_using_directive): Iterate over namespaces used
4570 indirectly.
4571
4572 1998-07-15 Martin v. Löwis <loewis@informatik.hu-berlin.de>
4573
4574 * decl2.c (add_using_namespace): Iterate over namespaces used
4575 indirectly.
4576
4577 * decl.c (lookup_name_real): Accept namespace aliases as locals.
4578 (cat_namespace_levels): Ignore aliases.
4579 (duplicate_decls): Ignore duplicate aliases.
4580 * decl2.c (do_namespace_alias): Process block level namespace
4581 aliases. Store alias with pushdecl. Remove odr errors.
4582 * parse.y (namespace_alias): New non-terminal.
4583 (extdef): Use it.
4584
4585 1998-07-15 Jason Merrill <jason@yorick.cygnus.com>
4586
4587 * decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
4588 Handle TEMPLATE_TYPE_PARM.
4589 (arg_assoc): Rewrite.
4590
4591 * pt.c (complete_template_args): Don't look at the context unless
4592 we have to.
4593
4594 * method.c (build_decl_overload_real): Fix namespace handling.
4595
4596 * typeck.c (build_unary_op): Extract a lone function from an
4597 OVERLOAD.
4598
4599 * call.c (build_scoped_method_call): Handle getting a namespace
4600 for basetype in a destructor call.
4601 (check_dtor_name): Handle enums.
4602
4603 * parse.y (using_directive): New nonterminal.
4604 (extdef, simple_stmt): Use it.
4605
4606 1998-07-14 Martin von Löwis <loewis@informatik.hu-berlin.de>
4607
4608 * decl2.c (add_function): Move error message ...
4609 (arg_assoc_namespace): ... from here.
4610
4611 1998-07-14 Jason Merrill <jason@yorick.cygnus.com>
4612
4613 * parse.y (namespace_qualifier): Fix multiple level handling.
4614 * decl2.c (namespace_ancestor): Use CP_DECL_CONTEXT.
4615 (arg_assoc): Don't skip the first argument of a function.
4616
4617 Tue Jul 14 20:09:22 1998 Jeffrey A Law (law@cygnus.com)
4618
4619 * search.c (my_tree_cons): Clean up.
4620
4621 1998-07-14 Jason Merrill <jason@yorick.cygnus.com>
4622
4623 * call.c (joust): Don't warn about "confusing" conversions to the
4624 same type.
4625
4626 1998-07-14 Martin von Löwis <loewis@informatik.hu-berlin.de>
4627
4628 * class.c (push_nested_class): Complain about namespaces.
4629 * decl.c (start_decl): Enter the object's namespace.
4630 (cp_finish_decl): Leave it.
4631 (grokdeclarator): Likewise.
4632 * decl2.c (check_decl_namespace): New function.
4633 (finish_file): Call it.
4634 * parse.y (complex_direct_notype_declarator): Set complexity
4635 of namespace-qualified ids to -1, enter the namespace.
4636
4637 * method.c (build_template_decl_overload): Expect _DECL as first
4638 parameter. Put context temporarily into current_namespace.
4639 * pt.c (check_explicit_specialization): Change caller.
4640 (tsubst): Likewise.
4641
4642 * init.c (build_offset_ref): Call mark_used and
4643 convert_from_reference for namespace members.
4644
4645 Mon Jul 13 23:25:28 1998 Martin von Löwis <loewis@informatik.hu-berlin.de>
4646
4647 * search.c (my_tree_cons): The bitfield is at index 2.
4648
4649 Mon Jul 13 17:21:01 1998 Nick Clifton <nickc@cygnus.com>
4650
4651 * lang-options.h: Format changed to work with new --help support
4652 in gcc/toplev.c
4653
4654 1998-07-12 Martin von Löwis <loewis@informatik.hu-berlin.de>
4655
4656 * decl2.c (build_expr_from_tree): Change calls of do_identifier.
4657 Do Koenig lookup in CALL_EXPR.
4658 (arg_assoc): Handle error_mark.
4659 * lex.c (is_global): New function.
4660 (do_identifier): Expect arguments for Koenig lookup.
4661 * parse.y (primary): Add rules for calls of unqualified function calls.
4662 (do_id): Change call of do_identifier.
4663 * pt.c (finish_stmt_expr): Likewise.
4664 * semantics.c (finish_id_expr): Likewise.
4665 (finish_call_expr): Add integer parameter to indicate
4666 argument-dependent lookup.
4667
4668 * decl.c (struct binding_level): New field using_directives.
4669 (push_using_decl): Not sorry anymore.
4670 (push_using_directive): New function.
4671 (lookup_tag): Use CP_DECL_CONTEXT to iterate.
4672 (unqualified_namespace_lookup): New function, code from ...
4673 (lookup_name_real): ... here.
4674 * decl2.c (lookup_using_namespace): Pass using list instead of
4675 initial scope.
4676 (validate_nonmember_using_decl): New function.
4677 (do_nonmember_using_decl): New function.
4678 (do_toplevel_using_decl): Use them.
4679 (do_local_using_decl): New function.
4680 (do_using_directive): Support block-level directives.
4681 * parse.y (simple_stmt): Support using declarations and
4682 directives.
4683 (namespace_qualifier, namespace_using_decl): New non-terminals.
4684
4685 * xref.c (classname): New function.
4686 (GNU_xref_hier): Change class and base parameters to tree.
4687 * decl.c (xref_baseypes): Change caller.
4688 * friend.c (make_friend_class): Likewise.
4689
4690 1998-07-12 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
4691
4692 * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter
4693 comparison.
4694
4695 * pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a
4696 template template parameter, record its use.
4697 (for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse
4698 its template arguments if exists.
4699
4700 * pt.c (coerce_template_template_parms): New function equivalent
4701 to coerce_template_parms when IS_TMPL_PARM is true.
4702 (coerce_template_parms): Use it. Remove the IS_TMPL_PARM parameter,
4703 all callers changed.
4704
4705 (coerce_template_parms): Access ARGLIST properly when creating a
4706 new vector. Only accept implicit TYPE_DECL as valid argument for
4707 a template template parameter when it is a base class of
4708 current_class_type. Don't display error message when COMPLAIN is
4709 false.
4710
4711 1998-07-12 Klaus Kaempf (kkaempf@progis.de)
4712
4713 * repo.c (get_base_filename): Use file_name_nondirectory.
4714 (open_repo_file): Likewise.
4715 * cp-tree.h (file_name_nondirectory): Add prototype.
4716
4717 1998-07-12 Jason Merrill <jason@yorick.cygnus.com>
4718
4719 * friend.c (do_friend): Pull the identifier out of declarator.
4720 Use cp_error and friends.
4721 * decl2.c (qualified_lookup_using_namespace): Fix call to
4722 purpose_member.
4723 * decl.c (lookup_name_real): Don't call complete_type on a namespace.
4724 (grokvardecl): Use DECL_CLASS_SCOPE_P.
4725 * cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
4726 * class.c (warn_hidden): Fix for OVERLOAD.
4727 From grahams@rcp.co.uk:
4728 * cp-tree.h (DEFARG_NODE_CHECK): New macro.
4729 (DEFARG_LENGTH, DEFARG_POINTER): Use it.
4730
4731 Sun Jul 12 01:20:57 1998 Jeffrey A Law (law@cygnus.com)
4732
4733 * g++.1 (-traditional): Remove duplicated documentation.
4734
4735 1998-07-11 Mark Mitchell <mark@markmitchell.com>
4736
4737 * method.c (flush_repeats): Add nrepeats parameter.
4738 (issue_nrepeats): Likewise.
4739 (is_back_referenceable_type): New function. Don't back-reference
4740 TEMPLATE_TYPE_PARMs as well as simple types like integers.
4741 (build_mangled_name_for_type): Likewise.
4742 (build_mangled_name_for_type_with_Gcode): Likewise.
4743 (lasttype): Remove.
4744 (nrepeats): Likewise.
4745 (Nrepeats): Likewise.
4746 (start_squangling): Don't clear the variables removed above.
4747 (end_squangling): Likewise.
4748 (flush_repeats): Tidy. Use nrepeats parameter rather than
4749 Nrepeats global.
4750 (issue_nrepeats): Likewise, but with nrepeats global. Use
4751 is_backreferenceable_type.
4752 (build_overload_nested_name): Tidy. Add comment. Use
4753 build_mangled_name_for_type.
4754 (build_underscore_int): Comment.
4755 (build_overload_scope_ref): Use build_mangled_name_for_type.
4756 (build_overload_int): Likewise.
4757 (build_template_template_parm_names): Tidy.
4758 (build_template_parm_names): Use build_mangled_name_for_type.
4759 (build_overload_identifier): Add comments.
4760 (build_mangled_name_for_type_with_Gcode): Split out from
4761 build_mangled_name.
4762 (build_mangled_name_for_type): Use it.
4763 (build_mangled_name): Rework to use build_mangled_name_for_type
4764 and to not use global nrepeats/Nrepeats. Tidy.
4765 (process_modifiers): Tidy.
4766 (check_btype): Use is_backreferenceable_type. Add comment.
4767 Rename `node' to `type'.
4768 (process_overload_item): Set numeric_output_need_bar here.
4769 Use build_mangled_name_for_type. Tidy.
4770 (build_decl_overload_real): Tidy. Don't use Nrepeats. Use
4771 build_mangled_name_for_type.
4772
4773 * pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
4774 for TYPE_DECLs.
4775
4776 1998-07-08 Vladimir N. Makarov <vmakarov@cygnus.com>
4777
4778 * cp-tree.h (warn_long_long): Define.
4779 * decl.c (grokdeclarator): Add flag `warn_long_long' as guard for
4780 warning "ANSI C++ does not support `long long'".
4781 * decl2.c (warn_long_long): Define.
4782 (lang_decode_option): Parse -Wlong-long, -Wno-long-long options.
4783
4784 1998-07-07 Jason Merrill <jason@yorick.cygnus.com>
4785
4786 * decl.c (xref_tag): Handle attributes between 'class' and name.
4787 * parse.y (aggr): Likewise.
4788 * semantics.c (finish_class_definition): Likewise.
4789 * Makefile.in (EXPECTED): Adjust.
4790
4791 * cp-tree.h: Declare flag_optional_diags and warn_multichar.
4792 * decl2.c: Define them.
4793 (lang_decode_option): Handle them.
4794 * lang-options.h: Add -foptional-diags.
4795 * class.c (finish_struct): Don't complain about multiple meanings of
4796 name if -fno-optional-diags.
4797 * decl.c (pushdecl_class_level): Likewise.
4798 * lex.c (real_yylex): Check warn_multichar.
4799
4800 1998-07-06 Jason Merrill <jason@yorick.cygnus.com>
4801
4802 * decl.c (lookup_tag): Use CP_DECL_CONTEXT.
4803
4804 * tree.c (make_binfo): Fix length.
4805
4806 1998-06-30 Benjamin Kosnik <bkoz@bliss.nabi.net>
4807
4808 * decl2.c (lang_decode_option): Remove warn_template_debugging.
4809 * lang-options.h: Likewise.
4810
4811 Mon Jun 29 20:17:40 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4812
4813 * except.c (build_eh_type_type_ref): Remove unused variable `susp'.
4814 (process_start_catch_block): Likewise for variables
4815 `false_label_rtx', `call_rtx' and `return_value_rtx'.
4816
4817 1998-06-29 Brendan Kehoe <brendan@cygnus.com>
4818
4819 * tree.c (build_srcloc): Make sure we allocate this node on the
4820 permanent obstack.
4821
4822 Sat Jun 27 23:34:18 1998 Fred Fish <fnf@ninemoons.com>
4823
4824 * g++spec.c (NEED_MATH_LIBRARY): Define to 1 if not already defined.
4825 (lang_specific_driver): Initialize need_math with NEED_MATH_LIBRARY.
4826 (lang_specific_driver): Only add -lm automatically if need_math is
4827 nonzero.
4828
4829 Sat Jun 27 12:22:56 1998 Jeffrey A Law (law@cygnus.com)
4830
4831 * Make-lang.in (g++): Depend on mkstemp.o. Link in mkstemp.o
4832
4833 Sat Jun 27 07:36:09 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4834
4835 * Makefile.in (EXPR_H): New dependency variable.
4836 (decl2.o): Depend on $(EXPR_H).
4837 (typeck.o): Likewise.
4838 (init.o): Likewise.
4839 (expr.o): Likewise.
4840
4841 1998-06-25 Benjamin Kosnik <bkoz@lisa.cygnus.com>
4842
4843 * decl.c (start_enum): Put local enums on permanent_obstack.
4844
4845 1998-06-25 Mark Mitchell <mark@markmitchell.com>
4846
4847 * cp-tree.h (c_get_alias_set): Declare.
4848 * decl.c (init_decl_processing): Set lang_get_alias_set.
4849
4850 1998-06-25 Andrew MacLeod <amacleod@cygnus.com>
4851
4852 * cp-tree.h (mark_all_runtime_matches): Add function prototype.
4853 * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED
4854 flag for all function decls which are in the exception table.
4855 * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match.
4856 * decl2.c (finish_file): Call mark_all_runtime_matches to make sure
4857 code is emitted for any referenced rtti function.
4858
4859 1998-06-25 Dave Brolley <brolley@cygnus.com>
4860
4861 * lang-specs.h: Use new | syntax to eliminate
4862 string concatenation.
4863
4864 1998-06-25 Jason Merrill <jason@yorick.cygnus.com>
4865
4866 * cp-tree.h (CP_DECL_CONTEXT): New macro.
4867 * decl2.c (is_namespace_ancestor, lookup_using_namespace): Use it.
4868 * method.c (build_overload_nested_name): Likewise.
4869 * sig.c (build_signature_pointer_or_reference_type): Don't set
4870 DECL_CONTEXT.
4871
4872 1998-06-24 Martin v. Löwis <loewis@informatik.hu-berlin.de>
4873
4874 Set DECL_CONTEXT for globals to NULL_TREE instead of global_namespace.
4875 * cp-tree.h (FROB_CONTEXT): New macro.
4876 (DECL_MAIN_P): ::main should have a DECL_CONTEXT of NULL_TREE.
4877 * decl.c (namespace_binding): Replace NULL_TREE with
4878 global_namespace.
4879 (set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
4880 * decl2.c (is_namespace_ancestor, lookup_using_namespace):
4881 Likewise.
4882 * decl.c (pushtag): Use FROB_CONTEXT.
4883 (pushdecl, make_typename_type, define_function, grokdeclarator):
4884 Likewise.
4885 * decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
4886 * pt.c (push_template_decl_real, lookup_template_class, tsubst):
4887 Likewise.
4888 * decl2.c (decl_namespace): Return global_namespace if no context.
4889 * method.c (build_overload_nested_name): Expect null as context.
4890 * pt.c (mangle_class_name_for_template): Do nothing for null
4891 contexts.
4892 (lookup_template_class): Allow for null id_context.
4893
4894 1998-06-25 Richard Henderson <rth@cygnus.com>
4895
4896 * method.c (emit_thunk): Set current_function_is_thunk for the
4897 ASM_OUTPUT_MI_THUNK case as well.
4898
4899 1998-06-23 Andrew MacLeod <amacleod@cygnus.com>
4900
4901 * exception.cc (__cplus_type_matcher): Get a match_info pointer
4902 instead of an exception table entry as a parameter.
4903
4904 1998-06-23 Andrew MacLeod <amacleod@cygnus.com>
4905
4906 * parse.y (function_try_block): Don't call start_catch_handler.
4907 * except.c (call_eh_info): Remove coerced field from declaration.
4908 (build_eh_type_type_ref): New function to create an address of a
4909 rtti function for the new style exception tables.
4910 (expand_start_catch_block): Split function, this contains the
4911 common part.
4912 (process_start_catch_block_old): New function to perform the rest
4913 of expand_start_catch_block under old style exceptions.
4914 (process_start_catch_block_old): New function to perform the rest
4915 of expand_start_catch_block under new style exceptions.
4916 (expand_end_catch_block): Only pop the false label off the stack under
4917 the old style of exceptions.
4918 * semantics.c (finish_try_block): Don't call start_catch_handler.
4919 * exception.cc (struct cp_eh_info): Add original_value field.
4920 (__cplus_type_matcher): Perform type matching on the original exception
4921 value, and if we have a match, set the current value.
4922 (__cp_push_exception): Set the original exception value.
4923
4924 1998-06-23 Jason Merrill <jason@yorick.cygnus.com>
4925
4926 * call.c (joust): Fix confusing conversion warning.
4927
4928 * call.c (build_op_delete_call): Add placement parm. Check
4929 LOOKUP_SPECULATIVELY.
4930 * cp-tree.h, decl2.c, init.c: Adjust.
4931 * decl.c (finish_function): Use it.
4932
4933 * pt.c (tsubst): Diagnose creating void fields or variables.
4934
4935 Mon Jun 22 08:50:26 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4936
4937 * call.c (build_scoped_method_call): Remove unused variable `tmp'.
4938
4939 * cp-tree.h (check_dtor_name): Add prototype.
4940
4941 * init.c (expand_member_init): Remove unused variables
4942 `ptr_type_node', `parm' and `rval'.
4943
4944 * ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
4945 in call to fprintf.
4946 (lang_print_xnode): Likewise.
4947
4948 * typeck2.c (enum_name_string): Cast argument to sprintf to long
4949 and use %ld specifier.
4950
4951 * xref.c (GNU_xref_end_scope): Use HOST_WIDE_INT_PRINT_DEC
4952 specifier in call to fprintf.
4953 (GNU_xref_member): Cast argument to sprintf to int.
4954
4955 Fri Jun 19 23:22:42 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
4956
4957 * typeck2.c (pop_init_level): Warn about implicit zero initialization
4958 of struct members.
4959
4960 Thu Jun 18 09:32:32 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4961
4962 * cp-tree.h: Prototype function `check_java_method'.
4963
4964 1998-06-17 Jason Merrill <jason@yorick.cygnus.com>
4965
4966 * class.c (finish_struct): Make conflicting use of id a pedwarn.
4967 * decl.c (pushdecl_class_level): Likewise.
4968
4969 1998-06-17 Mark Mitchell <mark@markmitchell.com>
4970
4971 * pt.c (convert_nontype_argument): Issue an error when presented
4972 with an integer (real) constant that cannot be simplified to an
4973 INT_CST (REAL_CST).
4974
4975 * cp-tree.h (c_get_alias_set): Remove declaration added in
4976 1998-06-13 change that should never have been checked in.
4977
4978 1998-06-17 Jason Merrill <jason@yorick.cygnus.com>
4979
4980 * typeck.c (build_binary_op_nodefault): Change % in format strings
4981 to %%.
4982
4983 * decl.c (grokvardecl): Don't build_static_name for decls that
4984 aren't at namespace scope.
4985
4986 * init.c (perform_member_init): Catch default-initialization of
4987 references.
4988
4989 1998-06-17 Mark Mitchell <mark@markmitchell.com>
4990
4991 * errfn.c (cp_thing): Handle the `%%' formatting sequence.
4992
4993 1998-06-17 Jason Merrill <jason@yorick.cygnus.com>
4994
4995 * method.c (hack_identifier): Complain about getting a namespace
4996 or class template.
4997 * typeck.c (decay_conversion): Remove check for namespaces.
4998 * typeck2.c (incomplete_type_error): Likewise.
4999 * parse.y (template_arg): Add PTYPENAME expansion.
5000
5001 1998-06-16 Andrew MacLeod <amacleod@cygnus.com>
5002
5003 * decl.c (grokvardecl): Don't build external assembler names for
5004 TYPENAMEs in other namespaces as there is no declarator.
5005 * error.c (cp_file_of, cp_line_of): Don't extract file or line number
5006 info from DECL_CONTEXT if it is NULL.
5007
5008 1998-06-16 Jason Merrill <jason@yorick.cygnus.com>
5009
5010 * call.c (check_dtor_name): Split out.
5011 (build_scoped_method_call): Use it.
5012 (build_method_call): Use it.
5013 * init.c (build_offset_ref): Use it.
5014
5015 * typeck.c (build_static_cast): Fix handling of pointers to members.
5016
5017 * decl.c (finish_function): Just return nothing from a constructor.
5018 * typeck.c (c_expand_return): Complain about returning a void
5019 expression from a destructor.
5020
5021 1998-06-13 Mark Mitchell <mark@markmitchell.com>
5022
5023 * class.c (alter_access): Accept a BINFO explaining how to get
5024 from the entity whose accessed is being altered to the type doing
5025 the altering.
5026 (handle_using_decl): New function containing code split out from ...
5027 (finish_struct_1): Here.
5028
5029 * cp-tree.h (complete_type_or_else): Declare.
5030 * init.c (build_new_1, build_delete): Use it.
5031 * typeck.c (require_complete_type): Use complete_type, rather than
5032 expanding it inline.
5033 (complete_type_or_else): New function.
5034 (build_component_ref): Use it.
5035 (pointer_int_sum): Make sure the type pointed to is complete.
5036 (pointer_diff): Likewise.
5037
5038 * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
5039 types.
5040
5041 * search.c (get_matching_virtual): Note that member templates
5042 cannot override virtual functions.
5043
5044 1998-06-12 Brendan Kehoe <brendan@cygnus.com>
5045
5046 * pt.c (check_explicit_specialization): If DECLARATOR turned into
5047 an error_mark_node from lookup_template_function, return the same.
5048 (determine_specialization): Also make sure TEMPLATE_ID isn't an
5049 error_mark_node, before we try to read its operands.
5050 * decl.c (grokdeclarator): If we got an error_mark_node from
5051 check_explicit_specialization, just return it right back.
5052
5053 1998-06-12 Mark Mitchell <mark@markmitchell.com>
5054
5055 * class.c (instantiate_type): Don't treat template-ids that don't
5056 specify any template arguments as equivalent to ordinary
5057 identifiers. Use OFFSET_REF instead of SCOPE_REF to refer to
5058 pointer-to-members for member templates. Tidy slightly.
5059 * cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
5060 * init.c (build_offset_ref): Handle template-ids like ordinary
5061 identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
5062 offset part of the OFFSET_REF.
5063 * typeck.c (build_unary_op): Change check for unknown types to
5064 look for OFFSET_REFs, not SCOPE_REFs.
5065
5066 1998-06-11 Mark Mitchell <mark@markmitchell.com>
5067
5068 * pt.c (is_member_template_class): New function.
5069 (push_template_decl_real): Use it.
5070
5071 1998-06-11 Benjamin Kosnik <bkoz@elmo.cygnus.com>
5072
5073 * friend.c (do_friend): Add support for nested classes using
5074 member functions of the enclosing class as friends.
5075
5076 1998-06-10 Mark Mitchell <mark@markmitchell.com>
5077
5078 * call.c (convert_default_arg): Make global, not static.
5079 (convert_arg_for_ellipsis): Split out from ...
5080 (build_over_call): Here.
5081 * cp-tree.h (convert_default_arg); Declare.
5082 (convert_arg_to_ellipsis): Likewise.
5083 (do_member_init): Remove.
5084 * init.c (do_member_init): Remove; this code is dead.
5085 (expand_member_init): Remove much of this code; it is dead.
5086 * typeck.c (convert_arguments): Use convert_default_arg and
5087 convert_arg_for_ellipsis, rather than duplicating here.
5088
5089 * call.c (convert_like): Don't fail silently if
5090 build_user_type_conversion fails. Always return error_mark_node
5091 for failure.
5092
5093 1998-06-10 Jason Merrill <jason@yorick.cygnus.com>
5094
5095 * search.c (covariant_return_p): Complain about ambiguous base.
5096
5097 * typeck.c (build_component_ref): Diagnose ref to nested type.
5098
5099 1998-06-10 Brendan Kehoe <brendan@cygnus.com>
5100
5101 * decl.c (grokparms): Check that INIT isn't an error_mark_node
5102 before giving error about invalid type for default arg.
5103
5104 1998-06-10 Jason Merrill <jason@yorick.cygnus.com>
5105
5106 * call.c (build_method_call): Fix thinko.
5107
5108 1998-06-10 Dave Brolley <brolley@cygnus.com>
5109
5110 * decl2.c (lang_decode_option): New argc/argv interface.
5111 * cp-tree.h (lang_decode_option): New argc/argv interface.
5112 * lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
5113 specified for cpplib-enabled compilers.
5114 * lex.c (lang_init): Don't check_newline for cpplib.
5115 (init_parse): Don't initialize cpplib here.
5116
5117 1998-06-10 Brendan Kehoe <brendan@cygnus.com>
5118
5119 * typeck.c (build_component_ref): Make sure FIELD has a lang_specific
5120 piece before checking DECL_MUTABLE_P.
5121
5122 1998-06-10 John Carr <jfc@mit.edu>
5123
5124 * tree.c (debug_binfo): Make printf format match arguments.
5125
5126 * error.c (OB_PUTI): Make printf format match arguments.
5127
5128 1998-06-10 Jason Merrill <jason@yorick.cygnus.com>
5129
5130 * init.c (perform_member_init): Handle default-initialization.
5131
5132 * except.c (build_throw): Handle throwing NULL.
5133
5134 * typeck.c (build_x_function_call): Use resolve_offset_ref.
5135
5136 * search.c (compute_access): Only strip an anonymous union
5137 for a FIELD_DECL.
5138
5139 * call.c (add_builtin_candidates): Tweak.
5140
5141 * cvt.c (build_expr_type_conversion): Restore code for conversion
5142 from class types.
5143 * decl2.c (delete_sanity): Use it. Clean up.
5144
5145 * typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.
5146
5147 1998-06-10 Branko Cibej <branko.cibej@hermes.si>
5148
5149 * typeck.c (c_expand_return): Don't warn about void expressions on
5150 return statements in functions returning void.
5151
5152 1998-06-09 Mark Mitchell <mark@markmitchell.com>
5153
5154 * pt.c (fn_type_unification): Revise documentation. Tidy.
5155 (type_unification): Likewise.
5156
5157 1998-06-09 Andrew MacLeod <amacleod@cygnus.com>
5158
5159 * semantics.c (finish_try_block): Rename expand_start_catch, and delete
5160 expand_end_catch.
5161 * parse.y (function_try_block): Rename expand_start_catch, and delete
5162 expand_end_catch.
5163 * except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
5164 expand_end_catch.
5165
5166 1998-06-09 Jason Merrill <jason@yorick.cygnus.com>
5167
5168 * search.c (lookup_member): New fn.
5169 * class.c (finish_struct_1): Use it.
5170 * decl.c (lookup_name_real): Use it.
5171
5172 Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5173
5174 * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
5175
5176 * cp-tree.h: Add prototype for `maybe_print_template_context' and
5177 `maybe_make_one_only'.
5178
5179 * decl.c (auto_function): Remove unused variable `decl'.
5180
5181 * decl2.c: Include dwarf2out.h and dwarfout.h.
5182
5183 * lex.c: Remove redundant declarations of `set_float_handler' and
5184 `asm_out_file'.
5185
5186 1998-06-08 Andrew MacLeod <amacleod@cygnus.com>
5187
5188 * except.c (init_exception_processing): Remove NEW_EH_MODEL compile
5189 time flag. Call __cp_eh_info instead of __cp_exception_info.
5190 * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
5191 (__cp_exception_info): Return offset into cp_eh_info structure to
5192 match what use to be the start of this structure.
5193 (__cp_eh_info): New function to return a pointer to cp_eh_info struct.
5194 (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
5195 compile time flag.
5196 (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call
5197 __cp_eh_info instead of __cp_exception_info.
5198
5199 1998-06-08 Jason Merrill <jason@yorick.cygnus.com>
5200
5201 * decl.c (cp_finish_decl): Disable inlining of extern inlines
5202 with static variables.
5203
5204 1998-06-08 Mark Mitchell <mark@markmitchell.com>
5205
5206 * init.c (build_offset_ref): Correct previous change to use build,
5207 not build_min.
5208
5209 1998-06-07 Mark Mitchell <mark@markmitchell.com>
5210
5211 * class.c (instantiate_type): Handle pointer-to-members where the
5212 member is a template.
5213 * init.c (build_offset_ref): Likewise.
5214 * typeck.c (build_unary_op): Likewise.
5215
5216 1998-06-07 Richard Henderson <rth@cygnus.com>
5217
5218 * lex.c (lang_init_options): New function.
5219 (lang_init): Remove flag_exceptions == 2 hack.
5220
5221 1998-06-05 Jason Merrill <jason@yorick.cygnus.com>
5222
5223 * search.c (envelope_add_decl): Tweak for implicit typename.
5224
5225 * call.c (joust): Also warn about confusing conversion op/constructor
5226 overload resolution.
5227
5228 * spew.c (yylex): Also return the TYPE_DECL if got_object.
5229 Don't clear got_object after '~'.
5230 * call.c (build_scoped_method_call): Tweak destructor handling.
5231 (build_method_call): Likewise.
5232 * pt.c (tsubst_copy, case METHOD_CALL_EXPR): Don't mess with
5233 TYPE_MAIN_VARIANT for destructors.
5234 * semantics.c (finish_object_call_expr): Complain about calling a
5235 TYPE_DECL.
5236
5237 1998-06-05 Per Bothner <bothner@cygnus.com>
5238
5239 * g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
5240 Define - update needed by gcc.c change.
5241
5242 1998-06-05 Jason Merrill <jason@yorick.cygnus.com>
5243
5244 * error.c (cp_printers): Use 'o' instead of '_' for the null entry.
5245
5246 1998-06-05 Martin v. Loewis <loewis@informatik.hu-berlin.de>
5247
5248 * cp-tree.h (DECL_NAMESPACE_ALIAS, ORIGINAL_NAMESPACE): Declare.
5249 * decl.c (lookup_name_real): Add namespaces_only parameter.
5250 If set, return only NAMESPACE_DECLs.
5251 (select_decl): Likewise.
5252 (identifier_type_value): Give additional parameter.
5253 (lookup_name_nonclass): Likewise.
5254 (lookup_name): Likewise.
5255 (find_binding): Skip namespace aliases.
5256 (binding_for_name): Likewise.
5257 (push_namespace): Check for namespace aliases.
5258 (lookup_name_namespace_only): New function.
5259 (begin_only_namespace_names, end_only_namespace_names): New functions.
5260 * decl2.c (set_decl_namespace): Skip namespace aliases.
5261 (do_using_directive): Likewise.
5262 (do_namespace_alias): Produce namespace aliases, fix alias
5263 redeclaration.
5264 * error.c (dump_decl): Support SCOPE_REF.
5265 * parse.y (extdef): Wrap lookup with namespace_only for namespace
5266 aliases and using declarations.
5267
5268 1998-06-04 Jason Merrill <jason@yorick.cygnus.com>
5269
5270 * tree.c (really_overloaded_fn): Only see through one TREE_LIST.
5271
5272 * error.c (dump_expr): Clean up NEW_EXPR case.
5273
5274 1998-06-04 Martin von Löwis <loewis@informatik.hu-berlin.de>
5275
5276 Suggested by Brendan Kehoe
5277 * decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
5278 treat it as using ::decl.
5279
5280 * decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.
5281
5282 * tree.c (mapcar): Support NEW_EXPR.
5283
5284 * error.c (dump_expr): Support NEW_EXPR.
5285
5286 1998-06-03 Jason Merrill <jason@yorick.cygnus.com>
5287
5288 * method.c (make_thunk): Use overload machinery to make name.
5289 * search.c (covariant_return_p): New fn.
5290 (get_matching_virtual): Use it.
5291
5292 * init.c (build_new_1): Fix check for void.
5293
5294 1998-06-01 Per Bothner <bothner@cygnus.com>
5295
5296 * cp-tree.h (TYPE_FOR_JAVA): New macro.
5297 * decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
5298 java_int_type_node, java_long_type_node, java_float_type_node,
5299 java_double_type_node, java_char_type_node, java_boolean_type_node):
5300 New "primitive" types, with predefined names __java_byte etc.
5301 (record_builtin_java_type): New function.
5302 (init_decl_processing): Make Java types with record_builtin_java_type.
5303 (pushtag, grokdeclarator): Set TYPE_FOR_JAVA if in extern "JAVA".
5304 (xref_baseypes): If base class was TYPE_FOR_JAVA, so is this class.
5305 (grokfndecl): Call check_java_method for Java classes.
5306 * method.c (is_java_type): Removed. Replaced with TYPE_FOR_JAVA.
5307 (process_overload_item): Match types against specific
5308 java_XX_type_node types, rather than using is_java_type.
5309 * class.c (finish_struct_1): Don't add default copy constructor
5310 or operator= if TYPE_FOR_JAVA.
5311 (pop_lang_conext): Restore strict_prototyp proper if Java.
5312 * decl2.c (acceptable_java_type, check_java_method): New functions.
5313 * pt.c (instantiate_class_template): Copy TYPE_FOR_JAVA from pattern.
5314 (tsubst): Move common statement after if statement.
5315 * typeck.c (comptypes): If strict, TYPE_FOR_JAVA must match.
5316
5317 1998-06-01 Jason Merrill <jason@yorick.cygnus.com>
5318
5319 * pt.c (for_each_template_parm): Use first_rtl_op.
5320
5321 * tree.c (build_cplus_array_type_1): Also check index_type for
5322 template parms.
5323
5324 1998-05-31 Jason Merrill <jason@yorick.cygnus.com>
5325
5326 * pt.c (tsubst): Always copy BINFO_BASETYPES.
5327
5328 1998-05-29 scott snyder <snyder@d0sgif.fnal.gov>
5329
5330 * tree.c (layout_basetypes): If we change TYPE_SIZE, change
5331 TYPE_SIZE_UNIT too.
5332
5333 1998-05-29 Mark Mitchell <mark@markmitchell.com>
5334
5335 * decl.c (grokdeclarator): Don't complain about in-class
5336 initialization of static consts if we don't really know the type
5337 of the variable.
5338
5339 1998-05-29 Jason Merrill <jason@yorick.cygnus.com>
5340
5341 * cp-tree.h (DECL_DESTRUCTOR_P): New macro.
5342 * method.c (build_destructor_name): New fn.
5343 * decl2.c (maybe_retrofit_in_chrg): Split out...
5344 (grokclassfn): From here. Reorganize.
5345 * decl.c (grok_ctor_properties): Make sure ctors for types with
5346 vbases have the in_chrg parm.
5347 * pt.c (instantiate_class_template): Update
5348 TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases. Don't call
5349 grok_*_properties.
5350 (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.
5351
5352 1998-05-28 Mark Mitchell <mark@markmitchell.com>
5353
5354 * pt.c (instantiate_decl): Make test for whether or not static
5355 variables should be instantiated early match its comment.
5356
5357 1998-05-28 Jason Merrill <jason@yorick.cygnus.com>
5358
5359 * decl.c (start_decl): Always pedwarn about vacuously redeclaring
5360 a member.
5361 (start_function): Call check_default_args.
5362 * decl2.c (grokfield): Don't call check_default_args.
5363 (check_default_args): Use cp_error_at.
5364 * lex.c (do_pending_defargs): Call check_default_args.
5365
5366 1998-05-27 Brendan Kehoe <brendan@cygnus.com>
5367
5368 * call.c (build_method_call): Make sure get_type_value returns
5369 something before we try to use its TYPE_MAIN_VARIANT.
5370 (build_scoped_method_call): Likewise.
5371
5372 1998-05-27 Jason Merrill <jason@yorick.cygnus.com>
5373
5374 * typeck2.c (digest_init): Complain about getting a TREE_LIST to
5375 initialize an array.
5376
5377 * search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
5378 DECL_VIRTUAL_P.
5379
5380 * friend.c (do_friend): Clarify template warning.
5381
5382 1998-05-27 Mark Mitchell <mark@markmitchell.com>
5383
5384 * decl.c (shadow_label): Don't treat decls as identifiers.
5385 (maybe_push_to_top_level): Clear shadowed_labels.
5386
5387 * pt.c (instantiate_decl): Reset lineno and filename after calling
5388 regenerate_decl_from_template.
5389
5390 * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
5391 error_mark_node.
5392
5393 1998-05-27 Kevin Buhr <buhr@stat.wisc.edu>
5394
5395 * parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.
5396
5397 1998-05-26 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
5398
5399 * pt.c (process_template_parm): Accept TYPENAME_TYPE nodes.
5400 (convert_nontype_argument): Handle cases when nontype template
5401 parameters become classes after substitution.
5402
5403 1998-05-26 Mark Mitchell <mark@markmitchell.com>
5404
5405 * friend.c (is_friend): Use comptypes, rather than == to compare
5406 types. Modify for new representation of template friends.
5407 (make_friend_class): Likewise.
5408 * pt.c (tsubst_friend_class): Undo 1998-05-21 change. Tweak.
5409 (instantiate_class_template): Deal with template friends.
5410
5411 * decl.c (store_parm_decls): Remove redundant call to
5412 expand_main_function.
5413
5414 1998-05-26 Benjamin Kosnik <bkoz@loony.cygnus.com>
5415
5416 * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
5417 DECL_USE_TEMPLATE.
5418
5419 1998-05-26 Per Bothner <bothner@cygnus.com>
5420
5421 * language_as_string: Handle lang_java.
5422
5423 1998-05-26 Jason Merrill <jason@yorick.cygnus.com>
5424
5425 * decl.c (pushdecl): Don't copy the type_decl.
5426
5427 1998-05-26 Martin v. Löwis <loewis@informatik.hu-berlin.de>
5428
5429 * class.c (pushclass): Always store TYPE_MAIN_VARIANT in
5430 current_class_type.
5431 * decl.c (grokdeclarator): Put typedefs on the type's obstack.
5432
5433 * parse.y (complex_direct_notype_declarator): Use $1 to access
5434 scope of notype_qualified_id.
5435
5436 1998-05-26 Dave Brolley <brolley@cygnus.com>
5437
5438 * lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
5439 (init_parse): Initialize cpplib interface.
5440
5441 * Makefile.in (CXX_OBJS): Make sure dependencies never end with an
5442 empty continuation.
5443
5444 1998-05-26 Mark Mitchell <mark@markmitchell.com>
5445
5446 * decl.c (pushtag): Avoid crashing on erroneous input.
5447
5448 1998-05-25 Martin v. Löwis <loewis@informatik.hu-berlin.de>
5449
5450 * decl.c (push_namespace): Only produce one unique name for
5451 anonymous namespaces.
5452 (get_unique_name): Remove.
5453
5454 1998-05-25 Mark Mitchell <mark@markmitchell.com>
5455
5456 * call.c (tourney): Don't do any extra comparisons.
5457
5458 * decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.
5459
5460 * cp-tree.h (processing_template_parmlist): Declare.
5461 * decl.c (pushtag): Don't call push_template_decl when we
5462 shouldn't.
5463 * pt.c (processing_template_parmlist): New variable.
5464 (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro.
5465 (complete_template_args): Use it.
5466 (add_to_template_args): Likewise.
5467 (innermost_args): Likewise.
5468 (tsubst): Likewise.
5469 (begin_template_parm_list): Use processing_template_parmlist.
5470 (end_template_parm_list): Likewise.
5471
5472 * cp-tree.h (ANON_UNION_TYPE_P): New macro.
5473 * decl.c (grokdeclarator): Use it.
5474 * decl2.c (grok_x_components): Likewise.
5475 * init.c (initializing_context): Likewise.
5476 * method.c (do_build_copy_constructor): Likewise.
5477 (do_build_assign_ref): Likewise.
5478 * search.c (compute_access): Likewise.
5479 * typeck.c (build_component_ref): Likewise.
5480
5481 * decl.c (grokdeclarator): Don't give a cv-qualified version of an
5482 unnamed type a typedef name "for linkage purposes".
5483
5484 * pt.c (lookup_template_class): Don't look at
5485 IDENTIFIER_CLASS_VALUE when there's no current_class_type.
5486
5487 * method.c (build_overload_int): Handle error cases gracefully.
5488
5489 * pt.c (instantiate_decl): Handle static member variables
5490 correctly.
5491
5492 * pt.c (tsubst): Use the tsubst'd type when producing new
5493 TEMPLATE_PARM_INDEX nodes.
5494
5495 1998-05-24 Mark Mitchell <mark@markmitchell.com>
5496
5497 * tree.c (cp_tree_equal): Handle pointers to member functions.
5498
5499 * call.c (maybe_handle_implicit_object): Handle QUAL_CONVs. Make
5500 sure the type of the REF_BIND is a reference type.
5501 (maybe_handle_ref_bind, compare_ics): Rename reference_type to
5502 target_type for clarity.
5503
5504 * parse.y (xcond): Move call to condition_conversion ...
5505 * semantics.c (finish_for_cond): Here.
5506 * parse.c: Regenerated.
5507
5508 1998-05-24 Jason Merrill <jason@yorick.cygnus.com>
5509
5510 * decl.c (push_namespace): Namespaces have type void.
5511 * typeck2.c (incomplete_type_error): Complain about namespace
5512 used as expression.
5513 * typeck.c (decay_conversion): Likewise.
5514
5515 1998-05-24 Martin von Löwis <loewis@informatik.hu-berlin.de>
5516
5517 * error.c (dump_expr): Support namespaces.
5518
5519 1998-05-23 Jason Merrill <jason@yorick.cygnus.com>
5520
5521 * cp-tree.def: Add SRCLOC.
5522 * cp-tree.h: Add struct tree_srcloc and accessor macros.
5523 * tree.c (build_srcloc, build_srcloc_here): New fns.
5524 * pt.c (add_pending_template): Use build_srcloc_here.
5525 (push_tinst_level): Update last_template_error_tick before erroring.
5526 (instantiate_decl): Restore lineno and input_filename before
5527 calling add_pending_template.
5528 * decl2.c (finish_file): Set up lineno and input_filename for
5529 pending templates.
5530
5531 1998-05-22 Jason Merrill <jason@yorick.cygnus.com>
5532
5533 * decl.c (lang_print_error_function): New fn.
5534 (init_decl_processing): Set print_error_function to use it.
5535 * errfn.c (cp_thing): Don't call maybe_print_template_context here.
5536
5537 * call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
5538 ICS_BAD_FLAG.
5539
5540 * cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
5541 copy-initialization.
5542
5543 * class.c (build_vtable_entry): Use int_fits_type_p.
5544 (build_vtable): Pass a signed offset to build_vtable_entry.
5545 (prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
5546 set_rtti_entry): Likewise.
5547
5548 1998-05-22 Per Bothner <bothner@cygnus.com>
5549
5550 * cp-tree.h: Add comments documenting which LANG_FLAGS are used.
5551 (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE): Removed, not used.
5552
5553 1998-05-22 Jason Merrill <jason@yorick.cygnus.com>
5554
5555 * pt.c (print_template_context): Use fprintf instead of cp_error.
5556
5557 * pt.c (determine_specialization): Just return an error_mark_node.
5558 Also print the decl we want in error messages. If we complain,
5559 return error_mark_node.
5560 (tsubst_friend_function): Set lineno and input_filename so
5561 error messages will be useful.
5562 (instantiate_template): Just return an error_mark_node.
5563 (check_explicit_specialization): Don't mess with a returned
5564 error_mark_node.
5565
5566 * pt.c (print_template_context): Add new argument.
5567 (maybe_print_template_context): New fn.
5568 (push_tinst_level): Increment tinst_level_tick.
5569 (pop_tinst_level): Likewise.
5570 * errfn.c (cp_thing): Call maybe_print_template_context. Use
5571 xrealloc instead of xmalloc.
5572
5573 * typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.
5574
5575 1998-05-21 Jason Merrill <jason@yorick.cygnus.com>
5576
5577 * pt.c (tsubst_friend_class): Don't call redeclare_class_template
5578 if the template we looked up is the same as the one we already
5579 have.
5580
5581 Thu May 21 11:54:44 1998 Dave Brolley <brolley@cygnus.com>
5582
5583 * lex.c: (handle_sysv_pragma): FILE* parameter not used.
5584 (cpp_reader,parse_in): Add for cpplib.
5585 (check_newline): Call handle_sysv_pragma with new interface.
5586 (check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.
5587
5588 * input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
5589 (sub_getch): Call GETC for cpplib.
5590
5591 * cp-tree.h: (get_directive_line): Different prototype for cpplib.
5592 (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
5593
5594 * Makefile.in (CXX_OBJS): Add @extra_cxx_objs@ for cpplib.
5595
5596 1998-05-21 Jason Merrill <jason@yorick.cygnus.com>
5597
5598 * decl2.c (maybe_make_one_only): New fn.
5599 (import_export_vtable): Use it.
5600 (import_export_decl): Likewise.
5601 * pt.c (mark_decl_instantiated): Likewise.
5602
5603 1998-05-21 Mark Mitchell <mmitchell@usa.net>
5604
5605 * decl2.c (find_representative_member): Rename to ...
5606 (build_anon_union_vars): New function.
5607 (finish_anon_union): Fix stupidity of previous change.
5608
5609 1998-05-20 Jason Merrill <jason@yorick.cygnus.com>
5610
5611 * decl.c (grokfndecl): Handle definition of specialization in
5612 friend declaration.
5613
5614 * error.c (dump_decl): Fix LOOKUP_EXPR handling.
5615
5616 1998-05-20 Mark Mitchell <mmitchell@usa.net>
5617
5618 * class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
5619 to look for type declarations.
5620 (finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
5621 * cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
5622 (finish_member_class_template): Declare.
5623 * decl.c (pushtag): Put member class templates on the
5624 CLASSTYPE_TAGS list, just as for ordinary member classes.
5625 (pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
5626 (lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
5627 IDENTIFIER_NAMESPACE_VALUEs.
5628 * parse.y (component_decl): Move code to ...
5629 * semantics.c (finish_member_class_template): New function.
5630 Don't put member class templates on the list of components for a
5631 class.
5632 * parse.c: Regenerated.
5633 * pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
5634 In fact, don't use DECL_CONTEXT at all here.
5635
5636 1998-05-20 Martin von Loewis <loewis@informatik.hu-berlin.de>
5637
5638 * decl.c (record_unknown_type): New function.
5639 (init_decl_processing): Call it for the unknown and global type
5640 nodes.
5641
5642 1998-05-20 Mark Mitchell <mmitchell@usa.net>
5643
5644 * decl2.c (find_representative_member): New function.
5645 (finish_anon_union): Use it.
5646
5647 * cp-tree.h (MAIN_NAME_P): New macro.
5648 (DECL_MAIN_P): Likwise.
5649 * decl.c (pushdecl): Avoid crashing on redefinitions of `main'.
5650 (grokfndecl): Use the new macros.
5651 (grokdeclarator): Likewise.
5652 (start_function): Likewise.
5653 (store_parm_decls): Likewise.
5654 (finsh_function): Likewise.
5655 * friend.c (do_friend): Likewise.
5656 * typeck.c (build_function_call_real): Likewise.
5657 (build_unary_op): Likewise.
5658
5659 Wed May 20 02:16:01 1998 Jason Merrill <jason@yorick.cygnus.com>
5660
5661 * decl2.c (start_objects, finish_objects, do_dtors,
5662 do_ctors): Split out from...
5663 (finish_file): ...here.
5664
5665 Tue May 19 20:36:23 1998 Jason Merrill <jason@yorick.cygnus.com>
5666
5667 * tree.c (is_overloaded_fn): Don't abort on placeholders from
5668 push_class_decls.
5669
5670 Tue May 19 15:16:22 1998 Brendan Kehoe <brendan@cygnus.com>
5671
5672 * class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
5673
5674 * error.c (dump_expr): Handle an ARROW_EXPR.
5675
5676 Tue May 19 15:13:39 1998 Mark Mitchell <mmitchell@usa.net>
5677
5678 * decl.c (saveable_obstack): Declare.
5679 (pushdecl): Copy TYPE_DECLs to the same obstack as the type they
5680 declare, if necessary.
5681
5682 Tue May 19 14:50:27 1998 Mark Mitchell <mmitchell@usa.net>
5683
5684 * call.c (compare_qual): Remove.
5685 (is_subseq): Tweak.
5686 (is_properly_derived_from): New function.
5687 (maybe_handle_ref_bind): Likewise.
5688 (maybe_handle_implicit_object): Likewise.
5689 (compare_ics): Modify substantially to bring into conformance with
5690 the standard.
5691 * cp-tree.h (TYPE_PTRMEMFUNC_OBJECT_TYPE): New macro.
5692 (comp_cv_qualification): Declare.
5693 (comp_cv_qual_signature): Likewise.
5694 * typeck.c (comp_cv_qualification): Likewise.
5695 (comp_cv_qual_signature): Likewise.
5696
5697 Tue May 19 10:05:02 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5698
5699 * Makefile.in (parse.o): Depend on toplev.h.
5700
5701 * class.c (typecode_p): Remove prototype and definition.
5702
5703 * cp-tree.h (currently_open_class, is_empty_class, member_p):
5704 Add prototype.
5705
5706 * decl.c (push_overloaded_decl_top_level): Remove prototype and
5707 definition.
5708
5709 * errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
5710 in call to `cp_thing'.
5711 (cp_warning): Likewise for function pointer `warning'.
5712
5713 * except.c (do_function_call): Remove prototype and definition.
5714 (call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
5715
5716 * method.c (is_java_type): Add prototype and make it static.
5717
5718 * parse.y: Include toplev.h.
5719
5720 * pt.c (type_unification): Remove unused variable `arg'.
5721 (instantiate_decl): Likewise for `save_ti'.
5722
5723 * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.
5724
5725 Tue May 19 02:43:25 1998 Jason Merrill <jason@yorick.cygnus.com>
5726
5727 * init.c (build_member_call): Handle template_ids.
5728 * parse.y (primary): Add global_scope template_id.
5729
5730 Mon May 18 23:22:52 1998 Jason Merrill <jason@yorick.cygnus.com>
5731
5732 * decl2.c (get_sentry): Use end_temporary_allocation.
5733 Don't declare permanent_obstack.
5734
5735 Mon May 18 12:28:44 1998 Mark Mitchell <mmitchell@usa.net>
5736
5737 * parse.y (.finish_new_placement): New non-terminal.
5738 (unary_expr, new_type_id): Use it.
5739 * parse.c: Regenerated.
5740
5741 Mon May 18 12:20:27 1998 Brendan Kehoe <brendan@cygnus.com>
5742
5743 * pt.c (redeclare_class_template): Say where the original definition
5744 of the template-parameter's default argument appeared.
5745
5746 Mon May 18 03:00:57 1998 Jason Merrill <jason@yorick.cygnus.com>
5747
5748 * call.c (build_over_call): Tweak empty class handling.
5749
5750 * decl.c (make_typename_type): Use currently_open_class.
5751
5752 * class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
5753
5754 Mon May 18 01:43:01 1998 Martin v. Loewis <loewis@informatik.hu-berlin.de>
5755
5756 * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE
5757 for a type unless it is one.
5758
5759 * class.c (finish_struct_1): Use OVL_CURRENT in error message.
5760
5761 Mon May 18 01:24:08 1998 Jeffrey A Law (law@cygnus.com)
5762
5763 * Makefile.in (program_transform_name, objdir): Define.
5764
5765 * Makefile.in (BISON): Use bison from the build tree if it exists.
5766 (FLEX): Likewise.
5767
5768 Sun May 17 14:52:08 1998 Martin v. Loewis <loewis@informatik.hu-berlin.de>
5769
5770 * typeck.c (type_unknown_p): Return true for TREE_LIST also.
5771
5772 * call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
5773
5774 Sun May 17 14:51:41 1998 Jason Merrill <jason@yorick.cygnus.com>
5775
5776 * call.c (build_scoped_method_call): Likewise.
5777
5778 Sun May 17 13:53:48 1998 Mark Mitchell <mmitchell@usa.net>
5779
5780 * init.c (build_new_1): Call suspend_momentary around the creation
5781 of values that must be saved for exception handling.
5782 * parse.y (.build_new_placement): New non-terminal.
5783 (unary_expr, new_placement): Use it.
5784 * parse.c: Regenerated.
5785
5786 Sun May 17 12:32:08 1998 Jason Merrill <jason@yorick.cygnus.com>
5787
5788 * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
5789 old and new types.
5790
5791 * pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
5792 canonical type.
5793
5794 * call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
5795
5796 Fri May 15 20:28:00 1998 Jason Merrill <jason@yorick.cygnus.com>
5797
5798 * decl.c (start_decl): Revert problem change.
5799
5800 * Makefile.in (CONFLICTS): Fix.
5801
5802 Fri May 15 15:34:02 1998 Benjamin Kosnik <bkoz@rhino.cygnus.com>
5803
5804 * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
5805
5806 Fri May 15 00:46:05 1998 Jason Merrill <jason@yorick.cygnus.com>
5807
5808 * class.c (finish_struct_1): Use BINFO_SIZE.
5809
5810 * decl.c (start_decl): Use 'tem'.
5811
5812 Thu May 14 16:30:47 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
5813
5814 * exception.cc: Include eh-common.h.
5815 (struct cp_eh_info): Add eh_info struct with NEW_EH_MODEL.
5816 (__cplus_type_matcher): First stab at new C++ runtime type matcher.
5817 (__cp_push_exception): Initialize eh_info struct as well.
5818 * except.c: Remove local structs and include eh-common.h.
5819 (init_exception_processing): Set language and version codes.
5820 (call_eh_info): Add presence of eh_info to runtime description of
5821 struct cp_eh_info.
5822 (expand_end_eh_spec): Call start_catch_block() and end_catch_block().
5823 * semantics.c (finish_try_block): Call start_catch_block() and
5824 end_catch_block().
5825 * parse.y (function_try_block): Call start_catch_block() and
5826 end_catch_block().
5827
5828 Thu May 14 12:27:34 1998 Brendan Kehoe <brendan@cygnus.com>
5829
5830 * typeck.c (original_type): New function.
5831 (common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
5832 to see if they're actually the same.
5833 * cp-tree.h (original_type): Declare.
5834
5835 Wed May 13 12:54:30 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5836
5837 * Makefile.in (lex.o): Depend on output.h.
5838
5839 * call.c (add_function_candidate): Remove unused variable `cand'.
5840 (add_conv_candidate): Likewise.
5841 (build_builtin_candidate): Likewise.
5842
5843 * cp-tree.h: Add prototype for `types_overlap_p'.
5844
5845 * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
5846
5847 * decl2.c (merge_functions): Remove unused variables `tmp' and
5848 `tempn'.
5849
5850 * error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
5851 (code_as_string): Likewise.
5852 (language_as_string): Likewise.
5853 (parm_as_string): Likewise.
5854 (op_as_string): Likewise.
5855 (assop_as_string): Likewise.
5856 (cv_as_string): Likewise.
5857
5858 * lex.c: Include output.h.
5859
5860 * pt.c (type_unification): Cast first argument of `bzero' to a char*.
5861
5862 * search.c (dfs_no_overlap_yet): Mark parameter `t' with
5863 ATTRIBUTE_UNUSED.
5864
5865 * tinfo.cc (__class_type_info::dcast): Change the type of variable
5866 `i' from int to size_t.
5867
5868 * typeck.c (language_lvalue_valid): Mark parameter `exp' with
5869 ATTRIBUTE_UNUSED.
5870
5871 Tue May 12 21:37:49 1998 Jason Merrill <jason@yorick.cygnus.com>
5872
5873 * error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
5874 DECL_NAMESPACE_SCOPE_P.
5875 (lang_decl_name): Likewise.
5876 * pt.c (tsubst_friend_function, tsubst): Likewise.
5877 * decl.c (pushdecl, redeclaration_error_message, start_decl,
5878 cp_finish_decl, start_function): Likewise.
5879 * class.c (finish_struct_1): Likewise.
5880 * call.c (build_over_call): Likewise.
5881 (compare_ics): Use DERIVED_FROM_P.
5882
5883 Tue May 12 07:24:18 1998 Mark Mitchell <mmitchell@usa.net>
5884
5885 * cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
5886 * method.c (build_mangled_name): Use it.
5887 (build_decl_overload_real): Likewise.
5888
5889 * error.c (dump_simple_decl): New function, broken out from ...
5890 (dump_decl): Use it.
5891
5892 Mon May 11 11:38:07 1998 Mark Mitchell <mmitchell@usa.net>
5893
5894 * ptree.c (lang_print_xnode): Add missing `break'.
5895
5896 * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
5897
5898 * call.c (add_template_candidate): Adjust for changes to
5899 fn_type_unification.
5900 (add_template_candidate_real): Likewise.
5901 (add_template_conv_candidate): Likewise.
5902 (build_user_type_conversion_1): Likewise.
5903 (build_new_function_call): Likewise.
5904 (build_object_call): Likewise.
5905 (build_new_op): Likewise.
5906 (build_new_method_call): Likewise.
5907 * class.c (instantiate_type): Likewise.
5908 * cp-tree.h (unification_kind_t): New type.
5909 (fn_type_unification): Adjust prototype.
5910 (type_unificaiton): Likewise.
5911 * pt.c (UNIFY_ALLOW_NONE): New macro.
5912 (UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
5913 (UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
5914 (UNIFY_ALLOW_DERIVED): Likewise.
5915 (unify): Change prototype.
5916 (maybe_adjust_types_for_deduction): New function.
5917 (check_cv_quals_for_unify): Likewise.
5918 (determine_specialization): Adjust.
5919 (fn_type_unification): Likewise.
5920 (type_unification): Likewise.
5921 (type_unification_real): Likewise. Use
5922 maybe_adjust_types_for_deduction. Fix mishandling of
5923 back-unification of template functions passed as arguments. Pass
5924 appropriate combination of UNIFY_ALLOW_* to unify.
5925 (unify): Remove unused NTPARMS parameter. Use
5926 check_cv_quals_for_unify. Remove bogus code that allowed
5927 too-generous unification in order to adhere more closely to standard.
5928 (get_bindings_real): Adjust.
5929 (get_class_bindings): Likewise.
5930
5931 * method.c (build_overload_identifier): Only use the innermost
5932 template arguments when mangling.
5933 * pt.c (tsubst_template_argument_vector): New function.
5934 (complete_template_args): Deal with the situation where the
5935 extra_args contain more than one level of arguments.
5936 (lookup_template_class): Deal with member template classes, which
5937 may have more than one level of arguments.
5938 (tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
5939 Improve handling of member template classes. Use
5940 DECL_PRIMARY_TEMPLATE instead of inline expansion. Use
5941 tsubst_template_argument_vector where appropriate.
5942 (regenerate_decl_from_template): Break out from ...
5943 (instantiate_decl): Here.
5944
5945 * lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
5946 * parse.h: Regenerated.
5947 * parse.c: Really regenerated.
5948
5949 * cp-tree.h (finish_unary_op_expr): New function.
5950 (finish_id_expr): Likewise.
5951 (begin_new_placement): Likewise.
5952 (finish_new_placement): Likewise.
5953 (finish_declarator): Likewise.
5954 (finish_translation_unit): Likewise.
5955 (finish_parmlist): Likewise.
5956 (begin_class_definition): Likewise.
5957 (finish_class_definition): Likewise.
5958 (finish_default_args): Likewise.
5959 (finish_inline_definitions): Likewise.
5960 * parse.y (GCC_ASM_KEYWORD): Remove.
5961 (TYPENAME_ELLIPSIS): Likewise.
5962 * parse.c: Regenerated.
5963 Use new functions in semantics.c in the actions for many rules.
5964 * gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
5965 * hash.h: Regenerated.
5966 * semantics.c (finish_expr_stmt): Allow NULL expr.
5967 (finish_unary_op_expr): New function, containing
5968 code previously in parse.y.
5969 (finish_id_expr): Likewise.
5970 (begin_new_placement): Likewise.
5971 (finish_new_placement): Likewise.
5972 (finish_declarator): Likewise.
5973 (finish_translation_unit): Likewise.
5974 (finish_parmlist): Likewise.
5975 (begin_class_definition): Likewise.
5976 (finish_class_definition): Likewise.
5977 (finish_default_args): Likewise.
5978 (finish_inline_definitions): Likewise.
5979
5980 Sun May 10 23:43:13 1998 Mark Mitchell <mmitchell@usa.net>
5981
5982 * typeck.c (build_c_cast): Don't decay arrays and functions to
5983 pointer type when converting to a class type.
5984
5985 Sun May 10 22:53:56 1998 Jason Merrill <jason@yorick.cygnus.com>
5986
5987 * cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
5988 (DECL_CLASS_SCOPE_P): Likewise.
5989
5990 Sun May 10 22:48:22 1998 H.J. Lu (hjl@gnu.org)
5991
5992 * class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
5993 * decl2.c (constructor_name_full): Likewise.
5994
5995 Sun May 10 22:48:12 1998 Mike Stump <mrs@wrs.com>
5996
5997 * tree.c (mapcar): Add OVERLOAD support.
5998
5999 * init.c (resolve_offset_ref): We must use basetype_path before we
6000 destroy it with a call to convert_pointer_to.
6001
6002 Sat May 9 14:44:37 1998 Jason Merrill <jason@yorick.cygnus.com>
6003
6004 * class.c (currently_open_class): New fn.
6005 * decl.c (lookup_name_real): Use it.
6006 * search.c (lookup_field): Likewise.
6007
6008 Fri May 8 23:32:42 1998 Martin von Loewis <loewis@informatik.hu-berlin.de>
6009
6010 * cp-tree.def (OVERLOAD): New node.
6011 * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
6012 SET_IDENTIFIER_NAMESPACE_VALUE): Define.
6013 (NAMESPACE_BINDING): Remove.
6014 (IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
6015 namespace_binding.
6016 (OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
6017 Define.
6018 (tree_overload): New struct.
6019 (IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
6020 (REAL_IDENTIFIER_TYPE_VALUE): Define.
6021 (IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
6022 (lang_decl_flags): Remove in_namespace.
6023 (lang_decl): Remove chain.
6024 (DECL_CHAIN, DECL_NAMESPACE): Remove.
6025 (flag_honor_std): Declare extern.
6026 (identifier_type_value, pushdecl_namespace_level, push_using_decl,
6027 namespace_binding, set_namespace_binding,
6028 lookup_function_nonclass, cat_namespace_levels,
6029 set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
6030 scratch_ovl_cons, ovl_member, build_overload): Declare.
6031 (decl_list_length, get_namespace_id, current_namespace_id,
6032 overloaded_globals_p): Remove.
6033 (lookup_using_namespace, qualified_lookup_using_namespace): Change
6034 return type.
6035 (push_scratch_obstack): New macro.
6036 * call.c (add_function_candidate): Special-case type of OVERLOAD node.
6037 (build_user_conversions_1): Iterate using OVL_NEXT for ctors,
6038 convs, fns.
6039 (build_new_function_call): Iterate using OVL_CHAIN.
6040 Print DECL_NAME in when reporting ambiguities.
6041 (build_object_call): Iterate using OVL_NEXT for fns, convs.
6042 (build_new_op): Call lookup_function_nonclass.
6043 Iterate using OVL_NEXT.
6044 (build_op_delete_call): Change detection of members.
6045 Do not wrap TREE_LIST around fields and single global functions.
6046 (build_over_call): Don't push a class level if the context is a
6047 namespace.
6048 (build_new_method_call): Iterate using OVL_NEXT.
6049 * class.c (add_method): Chain overloaded members using
6050 build_overload. Remove copying of method.
6051 (grow_method): When iterating through the obstack, expect OVERLOAD
6052 nodes. Chain overload members.
6053 (finish_struct_methods): Chain overload members. Unpack OVERLOAD
6054 nodes in call to get_baselinks.
6055 (duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
6056 (finish_struct_1): Iterate over ctor using OVL_NEXT. Handle
6057 fdecls that are OVERLOAD nodes.
6058 (validate_lhs): New function.
6059 (instantiate_type): Do not copy OVERLOAD nodes. Remove dead
6060 code. Use DECL_NAME in error messages. Split code between global
6061 and member function processing.
6062 * decl.c (global_type_node): New static variable.
6063 (in_std): New global.
6064 (struct binding_level): New field usings.
6065 (resume_binding_level): Assert that we are not in a class.
6066 (toplevel_bindings_p): Just check for namespace_p or
6067 pseudo_global.
6068 (resume_level): Remove.
6069 (find_binding): New function.
6070 (binding_for_name): Call it.
6071 (namespace_binding, set_namespace_binding): New functions.
6072 (push_namespace): Associate binding level with new namespace,
6073 resume_binding_level for existing namespace. Remove old code.
6074 Fake std by counting.
6075 (store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
6076 (maybe_push_to_top_level): Save current namespace.
6077 (pop_from_top_level): Restore saved namespace.
6078 (pop_namespace): Call suspend_binding_level. Remove old code.
6079 (cat_namespace_levels): New function.
6080 (set_identifier_type_value_with_scope): For namespace bindings,
6081 set BINDING_TYPE, and use global_type_node.
6082 Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
6083 (identifier_type_value): New function.
6084 (pushtag): If no context, use current_namespace.
6085 (duplicate_decls): Don't process DECL_CHAIN.
6086 (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
6087 already set. Never reset it to NULL_TREE. Lookup global variables
6088 in their namespace. Push overloaded templates if they are on
6089 namespace level.
6090 (pushdecl_namespace_level): New function.
6091 (pushdecl_top_level): Implement using pushdecl_namespace_level.
6092 (pushdecl_using_decl): New function.
6093 (overloaded_globals_p): Remove.
6094 (push_overloaded_decl): Create OVERLOAD nodes, and iterate through
6095 them. Use namespace_binding and set_namespace_value.
6096 (redeclaration_error_message): Complain if the declarations come
6097 from different namespaces.
6098 (lookup_tag): On namespace level, look in the BINDING_TYPE.
6099 (lookup_namespace_name): Pass tree_bindings from stack. Remove
6100 old code.
6101 (select_decl): New function.
6102 (lookup_name_real): Call it for qualified and unqualified lookup.
6103 Pass tree_bindings from the stack.
6104 If prefer_type is 1, also accept namespaces.
6105 (lookup_function_nonclass): New function.
6106 (init_decl_processing): Set the binding level of the global
6107 namespace to global_binding_level.
6108 Build a proper type list for __builtin_apply.
6109 Initialize std_node to "fake std" if flag_honor_std is set.
6110 Initialize global_type_node.
6111 Allocated bad_alloc in namespace std if flag_honor_std.
6112 (define_function): Set the DECL_CONTEXT to the current_namespace.
6113 (start_decl): A namespace is not considered as a context here. If
6114 the DECL_CONTEXT is a namespace, push the decl.
6115 (cp_finish_decl): Check for namespaces used as initializers.
6116 (grokfndecl): Add namespace parameter. Remove processing of
6117 DECL_CHAIN.
6118 (grokvardecl): Add namespace parameter.
6119 (grokdeclarator): Process SCOPEs that are namespaces. For
6120 mangling, temporarily set the DECL_CONTEXT on anonymous structs.
6121 (start_function): Check for contexts that are namespaces.
6122 Set context for declarations that have not been pushed.
6123 (store_parm_decls): Check for ::main only.
6124 (finish_function): Likewise.
6125 (start_method): Check for contexts that are namespaces.
6126 (start_method): Remove DECL_CHAIN processing.
6127 * decl2.c (flag_honor_std): Declare.
6128 (lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
6129 (decl_namespace_list): New static global.
6130 (grok_x_components): Ignore namespaces as type contexts.
6131 (check_classfn): Expect OVERLOAD nodes.
6132 (grokfield): Remove DECL_CHAIN processing.
6133 (finish_file): Call cat_namespace_levels.
6134 (merge_functions): New function.
6135 (ambiguous_decl): Rewrite.
6136 (lookup_using_namespace): Produce tree_bindings.
6137 (qualified_lookup_using_namespace): Likewise.
6138 (set_decl_namespace, decl_namespace, current_decl_namespace,
6139 push_decl_namespace, pop_decl_namespace): New functions.
6140 (arg_lookup): New struct.
6141 (add_function, arg_assoc_namespace, arg_assoc_class,
6142 arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
6143 New functions.
6144 (get_namespace_id, current_namespace_id): Remove.
6145 (do_toplevel_using_decl): Rewrite.
6146 (do_class_using_decl): Complain about namespace qualifiers.
6147 (do_using_directive): Sorry if not on namespace level. Complain
6148 about unknown namespaces.
6149 * error.c (dump_aggr_type): Check for namespace contexts.
6150 * except.c (init_exception_processing): Push terminate into std.
6151 * friend.c (is_friend): A namespace is not a context, here.
6152 * init.c (expand_member_init): Remove DECL_CHAIN processing.
6153 (build_offset_ref): Process OVERLOAD nodes.
6154 * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
6155 * lex.c (identifier_type): Loop using OVL_CHAIN.
6156 (see_typename): Set looking_for_typename to 2.
6157 (real_yylex): Likewise.
6158 (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
6159 (do_scoped_id): Expect OVERLOAD nodes.
6160 Change calling convention for qualified_lookup_using_namespace.
6161 (build_lang_decl): Don't set in_namespace anymore.
6162 * method.c (typevec_size): New global.
6163 (build_overload_nested_name): Return if global_namespace.
6164 Otherwise, always expect a declaration context.
6165 (build_qualified_name): Likewise.
6166 Make sure we don't write beyond typevec_size.
6167 (build_decl_overload_real): Likewise.
6168 Allocate one extra slot for the namespace.
6169 (hack_identifier): Mark code dead.
6170 Process OVERLOAD and NAMESPACE_DECL nodes.
6171 * parse.y (program): Pop namespaces until in global namespace.
6172 (extdef): In a using-declaration, don't discard the identifier if
6173 there is no declaration.
6174 (left_curly): Ignore type contexts which are namespaces.
6175 (typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
6176 used as scope.
6177 * pt.c (template_class_depth): Expect types to be namespaces.
6178 (determine_specialization): Simplify by expecting OVERLOAD nodes.
6179 (push_template_decl): Push into namespace level.
6180 Reset ctx if it is a namespace.
6181 Set DECL_CONTEXT to current_namespace if not set already.
6182 Ignore real contexts that are namespaces.
6183 (mangle_class_name_for_template): Skip global_namespace.
6184 Mangle other namespaces as declarations.
6185 (lookup_template_function): Set type of OVERLOAD nodes to unknown.
6186 (lookup_template_class): Push into namespace of context.
6187 If the context is a namespace, set it to global_namespace.
6188 Use id_context for mangling.
6189 (for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
6190 (tsubst_friend_function): Ignore namespace contexts.
6191 Push into namespace level.
6192 (tsubst): Handle NAMESPACE_DECL nodes.
6193 Remove DECL_CHAIN processing.
6194 (type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
6195 * ptree.c (print_lang_identifier): Print bindings.
6196 (lang_print_xnode): Print OVERLOAD nodes.
6197 * rtti.c (init_rtti_processing): Push type_info into std.
6198 * search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
6199 (lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
6200 dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
6201 lookup_fnfields_here): Likewise.
6202 Process all nodes, instead of going through TREE_CHAIN.
6203 * sig.c (build_signature_pointer_or_reference_type): Set context
6204 to global_namespace.
6205 (build_signature_table_constructor): Expect OVERLOAD nodes.
6206 * spew.c (yylex): Save old setting of looking_for_typename.
6207 * tree.c (decl_list_length): Remove.
6208 (binding_init): New function.
6209 (count_functions): Rewrite.
6210 (is_overloaded_fn): Expect OVERLOAD nodes.
6211 (really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
6212 (ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
6213 ovl_member): New functions.
6214 * typeck.c (require_complete_type): Expect OVERLOAD nodes.
6215 (type_unknown_p): Likewise.
6216 (require_instantiated_type): Likewise.
6217 (build_component_ref): Declare code dead.
6218 (build_x_function_call): Create and expect OVERLOAD nodes.
6219 (build_function_call_real): Check for ::main only.
6220 (build_unary_op): Likewise. Expect OVERLOAD nodes.
6221 (convert_for_assignment): Check for TREE_LIST before accessing
6222 TREE_VALUE.
6223 * decl.c (duplicate_decls): Check for namespace bindings instead
6224 of global bindings.
6225 (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
6226 lookup_name_current_level, start_decl, xref_tag,
6227 finish_enum): Likewise.
6228 * init.c (build_offset_ref): Likewise.
6229 * search.c (lookup_field): Likewise.
6230 (lookup_fnfields): Likewise.
6231 (dfs_debug_mark): Likewise.
6232 * decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
6233 (poplevel_class, pop_from_top_level): Likewise.
6234 * decl2.c (finish_method): Likewise.
6235 * class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
6236 * decl.c (record_builtin_type): Likewise.
6237 (init_decl_processing, grokfndecl): Likewise.
6238 * lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
6239 (make_lang_type): Likewise.
6240 * parse.y (make_thunk): Likewise.
6241 * pt.c (tsubst): Likewise.
6242 * tree.c (debug_binfo): Likewise.
6243 * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h,
6244 tinfo2.cc, inc/new.h: Add std qualifications.
6245 * inc/new: Wrap with namespace std if __HONOR_STD.
6246 * inc/typeinfo: Likewise.
6247
6248 Fri May 8 00:43:50 1998 Jason Merrill <jason@yorick.cygnus.com>
6249
6250 * call.c (build_user_type_conversion_1): Handle second_conv
6251 properly for templates.
6252
6253 Thu May 7 17:09:25 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
6254
6255 * method.c (build_decl_overload_real): Set TREE_USED flag to
6256 zero for build_type_variants nodes as well.
6257
6258 Wed May 6 19:27:09 1998 Jason Merrill <jason@yorick.cygnus.com>
6259
6260 * pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
6261
6262 Wed May 6 16:49:48 1998 Jim Wilson <wilson@cygnus.com>
6263
6264 * Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
6265 except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
6266 rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o,
6267 xref.o): Add toplev.h dependencies.
6268
6269 Wed May 6 16:44:58 1998 Jeffrey A Law (law@cygnus.com)
6270
6271 * errfn.c (cp_error, cp_warning): Remove declarations for
6272 error and warning respectively.
6273
6274 Wed May 6 14:28:18 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
6275
6276 * error.c: Convert to using ctype macros defined in system.h.
6277 * method.c: Likewise.
6278 * xref.c: Likewise.
6279 * lex.c: Likewise. Also remove redundant system header stuff.
6280
6281 Wed May 6 06:36:41 1998 Robert Lipe <robertl@dgii.com>
6282
6283 * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c,
6284 expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c,
6285 search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c,
6286 xref.c: Add include of toplev.h.
6287
6288 Wed May 6 02:33:39 1998 Jason Merrill <jason@yorick.cygnus.com>
6289
6290 * tree.c (perm_manip): Also regenerate the RTL of an extern.
6291 (copy_to_permanent): Use end_temporary_allocation.
6292
6293 Tue May 5 23:54:04 1998 Jason Merrill <jason@yorick.cygnus.com>
6294
6295 * init.c (expand_vec_init): The initialization of each array
6296 element is a full-expression.
6297
6298 Tue May 5 18:24:13 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
6299
6300 * method.c (build_mangled_name): Add a call to build_type_variant
6301 to get the right type.
6302
6303 Tue May 5 01:25:03 1998 Jason Merrill <jason@yorick.cygnus.com>
6304
6305 * Makefile.in: Add .SUFFIXES.
6306
6307 * cp-tree.def: Remove NAMESPACE_DECL.
6308
6309 Sun May 3 01:32:14 1998 Jason Merrill <jason@yorick.cygnus.com>
6310
6311 * call.c (build_over_call): Do evaluate arg even if it has empty
6312 class type.
6313 * decl.c (start_function): Don't push a member function.
6314
6315 Thu Apr 30 18:59:23 1998 Jim Wilson <wilson@cygnus.com>
6316
6317 * Makefile.in (g++FAQ.info): Put -o option before input file.
6318
6319 Thu Apr 30 13:05:33 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
6320
6321 * gxxint.texi: Add info for squangling codes K and B.
6322
6323 Tue Apr 28 13:22:01 1998 Mark Mitchell <mmitchell@usa.net>
6324
6325 * semantics.c (begin_stmt_expr): Avoid duplicating the effect of
6326 the expression in templates.
6327 (finish_stmt_expr): Likewise.
6328
6329 1998-04-28 Brendan Kehoe <brendan@cygnus.com>
6330
6331 * decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
6332
6333 Mon Apr 27 13:58:10 1998 Mark Mitchell <mmitchell@usa.net>
6334
6335 * decl.c (maybe_push_to_top_level): Always clear
6336 current_template_parms and processing_template_decl.
6337 (pushtag): Remove check of current_class_type and some comments,
6338 since maybe_push_to_top_level no longer creates confusion.
6339
6340 Sun Apr 26 12:10:18 1998 Mark Mitchell <mmitchell@usa.net>
6341
6342 * cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
6343 (DECL_CLASS_TEMPLATE_P): Likewise.
6344 (DECL_PRIMARY_TEMPLATE): Likewise.
6345 (PRIMARY_TEMPLATE_P): Use it.
6346 (push_template_decl_real): New function.
6347 (redeclare_class_template): Take new template parameters as
6348 input.
6349 (is_specialization_of): New function.
6350 (comp_template_args): Declare.
6351 * decl.c (pushtag): Handle friend template classes.
6352 (xref_tag): Likewise. Use new calling convention for
6353 redeclare_class_template.
6354 * decl2.c (grok_x_components): Handle friend templates.
6355 * friend.c (is_friend): Use is_specialization_of where
6356 appropriate. Deal with friend class templates.
6357 (make_friend_class): Let a class template be friends with itself.
6358 * pt.c (comp_template_args): Remove declaration.
6359 (tsubst_friend_class): New function.
6360 (push_template_decl_real): New function.
6361 (push_template_decl): Use it.
6362 (redeclare_class_template): Adjust for new calling convention.
6363 (comp_template_args): Give it external linkage.
6364 (instantiate_class_type): Use tsubst_friend_class to deal
6365 with friend templates.
6366 * typeck.c (comptypes): Use comp_template_args, rather than
6367 expanding it inline.
6368 * parse.y (component_decl): Handle a nested template type
6369 like other component type declarations.
6370
6371 * pt.c (check_explicit_specialization): Handle overloaded
6372 constructors correctly.
6373
6374 * pt.c (mabybe_get_template_decl_from_type_decl): New function.
6375 (lookup_template_class): Use it.
6376
6377 Thu Apr 23 21:19:06 1998 Jason Merrill <jason@yorick.cygnus.com>
6378
6379 * cp-tree.def: Add WRAPPER. USER_CONV now only has two ops.
6380 * cp-tree.h: Add WRAPPER support.
6381 * call.c (add_candidate): Split out from add_*_candidate fns.
6382 (build_over_call): Take the candidate instead of function and args.
6383 Enforce access control here. Emit overload warnings here.
6384 (add_warning): New fn.
6385 (joust): Add WARN parm. If not set, call add_warning instead of
6386 printing a warning. Re-enable some warnings.
6387 (tourney): Pass it.
6388 (convert_like): Adjust.
6389 (build_new_op): Adjust.
6390 (build_new_function_call): Adjust.
6391 (build_user_type_conversion_1): Adjust.
6392 (USER_CONV_FN): Adjust.
6393 * tree.c (build_expr_wrapper, build_expr_ptr_wrapper,
6394 build_int_wrapper): New fns.
6395
6396 Thu Apr 23 18:27:53 1998 Mark P. Mitchell <mmitchell@usa.net>
6397
6398 * pt.c (unify): Fix typo in previous change.
6399
6400 Thu Apr 23 09:32:58 1998 Jason Merrill <jason@yorick.cygnus.com>
6401
6402 * error.c (dump_type_real): Declare canonical_name.
6403
6404 * typeck.c (comp_target_types): Fix PMFs.
6405
6406 Wed Apr 22 13:24:48 1998 Mark Mitchell <mmitchell@usa.net>
6407
6408 * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
6409 the DECL_RESULTs of a member TEMPLATE_DECL, not just the
6410 TEMPLATE_DECL.
6411
6412 * pt.c (tsubst): Decrease the template-level of
6413 TEMPLATE_TEMPLATE_PARMS. Likewise for the DECL_INITIAL of a
6414 TEMPLATE_PARM_INDEX.
6415 (template_decl_level): New function.
6416 (unify): Make sure to record unifications for template
6417 parameters, even when the parameters exactly match the arguments.
6418 Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
6419 TEMPLATE_TYPE_PARMS. Don't try to unify template parameters that
6420 aren't from the level we're currently working on.
6421
6422 Tue Apr 21 22:00:04 1998 Mark Mitchell <mmitchell@usa.net>
6423
6424 * errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
6425
6426 * decl2.c (check_member_template): Set DECL_IGNORED for member
6427 class templates, too.
6428
6429 * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
6430
6431 Tue Apr 21 18:59:11 1998 Benjamin Kosnik <bkoz@rhino.cygnus.com>
6432
6433 * decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
6434
6435 Tue Apr 21 14:22:00 1998 Jeffrey A Law (law@cygnus.com)
6436
6437 * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
6438 * decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
6439 (init_decl_processing): Handle TI types.
6440 * typeck.c (unsigned_type, signed_type): Handle TI types.
6441
6442 Sat Apr 18 15:25:21 1998 Jim Wilson <wilson@cygnus.com>
6443
6444 * g++spec.c (lang_specific_driver): New argument in_added_libraries.
6445 New local added_libraries. Increment count when add library to
6446 arglist.
6447
6448 Fri Apr 17 21:25:00 1998 Mark Mitchell <mmitchell@usa.net>
6449
6450 * cp-tree.h (type_as_string_real): New function.
6451 * pt.c (mangle_class_name_for_template): Use it.
6452 * error.c (dump_aggr_type): Change prototype.
6453 (dump_type_prefix): Likewise.
6454 (dump_type_suffix): Likewise.
6455 (dump_type_real): Convert from dump_type. If desired, the
6456 "canonica" name of a typedef, i.e., the name of the underlying
6457 type, can be printed.
6458 (dump_type): Call dump_type_real.
6459
6460 Fri Apr 17 14:30:45 1998 Jason Merrill <jason@yorick.cygnus.com>
6461
6462 * decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
6463
6464 * typeck.c (comp_target_types): Tweak pedantic case.
6465 (comp_target_parms): Tweak pedantic case. Clean up somewhat.
6466 Return -1 or 1 instead of 1 or 2.
6467 (compparms): Remove STRICT handling.
6468 (convert_for_assignment): Fix handling of pmfs.
6469
6470 Fri Apr 17 14:04:16 1998 Mark Mitchell <mmitchell@usa.net>
6471
6472 * typeck.c (comp_target_types): Handle references like pointers.
6473 (comp_target_parms): Note that return code from comp_target_types
6474 can be negative to indicate failure.
6475
6476 Fri Apr 17 09:10:52 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
6477
6478 * Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
6479 which requires a working target compiler to build.
6480
6481 Fri Apr 17 08:57:35 1998 Jeffrey A Law (law@cygnus.com)
6482
6483 * tree.c (avoid_overlap): Add prototype.
6484
6485 * spew.c (num_tokens): Add prototype.
6486 (nth_noken, add_token, consume_token, debug_yychar): Likewise.
6487
6488 * search.c (dfs_check_overlap): Add prototype.
6489 (dfs_no_overlap_yet): Likewise.
6490
6491 * pt.c (original_template): Add prototype.
6492 (inline_needs_template_parms): Likewise.
6493 (push_inline_template_parms_recursive): Likewise.
6494 (retrieve_specialization, register_specialization): Likewise.
6495 (print_candidates, reduce_template_parm_level): Likewise.
6496 (build_template_decl, mark_template_parm): Likewise.
6497 (tsubst_friend_function, get_bindings_real): Likewise.
6498
6499 * method.c (start_squangling): Add prototype.
6500 (end_squangling, check_ktype, issue_ktype): Likewise.
6501 (build_overloaded_scope_ref, check_btype): Likewise.
6502 (build_mangled_template_parm_index): Likewise.
6503
6504 * lex.c (init_cpp_parse): Add prototype.
6505 (handle_cp_pragma, handle_sysv_pragma): Likewise.
6506 (reduce_cmp, token_cmp): Likewise.
6507
6508 * except.c (call_eh_info): Add prototype.
6509 (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
6510 (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
6511
6512 * decl2.c (is_namespace_ancestor): Add prototype.
6513 (namespace_ancestor, add_using_namespace): Likewise.
6514 (ambiguous_decl): Likewise.
6515
6516 * decl.c (indent): Add prototype.
6517
6518 * call.c (add_template_candidate_real): Add prototype.
6519
6520 Fri Apr 17 01:57:12 1998 Jason Merrill <jason@yorick.cygnus.com>
6521
6522 * decl2.c (build_expr_from_tree): Just return a PMF.
6523
6524 Fri Apr 17 00:45:12 1998 Mark Mitchell <mmitchell@usa.net>
6525
6526 * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
6527 when doing initializations.
6528
6529 * pt.c (unify): Use comptypes to compare type args.
6530
6531 Fri Apr 17 00:24:22 1998 Jason Merrill <jason@yorick.cygnus.com>
6532
6533 * decl.c (duplicate_decls): Fix check for when it's safe to free
6534 the new decl.
6535
6536 * pt.c (mangle_class_name_for_template): Don't pass a typedef type
6537 to type_as_string.
6538
6539 Thu Apr 16 17:47:30 1998 Jeffrey A Law (law@cygnus.com)
6540
6541 * pt.c (build_template_parm_index): Add prototype.
6542
6543 * search.c (my_tree_cons): Don't clear words outside the
6544 newly allocated node.
6545
6546 Wed Apr 15 15:34:44 1998 Dave Brolley <brolley@cygnus.com>
6547
6548 * lex.c (init_parse): Now returns char* containing the filename.
6549
6550 Wed Apr 15 13:20:06 1998 John Carr <jfc@mit.edu>
6551 Jeff Law <law@cygnus.com>
6552
6553 * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
6554 than a pointer.
6555
6556 Sun Apr 12 22:31:19 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
6557
6558 * cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
6559
6560 Fri Apr 10 12:16:49 1998 Benjamin Kosnik <bkoz@loony.cygnus.com>
6561
6562 * decl.c (duplicate_decls): Don't warn for redundant decls if
6563 friend: let add_friend take care of it.
6564
6565 Thu Apr 9 02:40:48 1998 Jason Merrill <jason@yorick.cygnus.com>
6566
6567 * sig.c (build_signature_pointer_constructor): Don't set
6568 TREE_HAS_CONSTRUCTOR for a signature pointer.
6569 * cvt.c (ocp_convert): Don't force a temporary for internal structs.
6570 * init.c (resolve_offset_ref): Warn about implicit & on pmfs
6571 here, too.
6572 * typeck.c (build_unary_op): Only allow taking the address of a
6573 real constructor.
6574 * typeck2.c (digest_init): Simplify.
6575 (store_init_value): Don't pedwarn about using { } for pmfs.
6576
6577 Thu Apr 9 22:16:57 1998 Per Bothner <bothner@cygnus.com>
6578
6579 * cp-tree.h (start_decl): Update prototype.
6580 * decl.c (start_decl): Like the C version, new parameters
6581 for the attributes. Call cplus_decl_attributes here,
6582 (pushdecl): Like C version, do build_type_copy if TYPE_DECL,
6583 (grokdeclarator): Pass NULL for new start_decl arguments.
6584 * pt.c (tsubst_expr): Likewise.
6585 * parse.y: Merge cplus_decl_attribute calls into start_decl calls.
6586 * typeck.c (common_type): Check TYPE_MAIN_VARIANT.
6587 * lex.c (build_lang_decl): Add lang_name_java.
6588 * class.c (push_lang_context): Add lang_name_java.
6589 * method.c (build_mangled_name): Check for is_java_type.
6590
6591 Thu Apr 9 22:16:57 1998 Benjamin Kosnik <bkoz@loony.cygnus.com>
6592
6593 * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
6594 * call.c (build_scoped_method_call): Check for TREE_CODE for
6595 VOID_TYPE instead of type == void_type_node.
6596 (build_method_call): Likewise.
6597 * decl.c (lookup_name_real): Likewise.
6598 (grokdeclarator): Likewise.
6599 (start_decl): Likewise.
6600 (grokparms): Likewise.
6601 (start_function): Likewise.
6602 (finish_function): Likewise.
6603 (start_method): Likewise.
6604
6605 Thu Apr 9 00:18:44 1998 Dave Brolley (brolley@cygnus.com)
6606
6607 * lex.c (finput): New variable.
6608 (init_cpp_parse): Renamed from init_parse.
6609 (init_parse): Handle !USE_CPPLIB. Call init_cpp_parse when finished.
6610 (finish_parse): New function.
6611 * cp-tree.h (init_lex, init_parse): Remove declarations.
6612
6613 Mon Apr 6 02:25:05 1998 Jason Merrill <jason@yorick.cygnus.com>
6614
6615 * call.c (build_call): Still evaluate the actual argument.
6616 * class.c (is_empty_class): Update for -fnew-abi.
6617
6618 * decl2.c: -fnew-abi implies -fsquangle.
6619
6620 * method.c (do_build_assign_ref): Don't do anything to copy
6621 an empty class.
6622 (do_build_copy_constructor): Likewise.
6623 * call.c (build_over_call): Likewise.
6624
6625 Sat Apr 4 18:43:58 1998 Jason Merrill <jason@yorick.cygnus.com>
6626
6627 * tree.c (avoid_overlap): Return a value.
6628
6629 Sat Apr 4 12:52:35 1998 Jeffrey A Law (law@cygnus.com)
6630
6631 * method.c (check_btype): Add missing argument to xrealloc.
6632 (check_ktype): Likewise.
6633
6634 Fri Apr 3 02:22:59 1998 Jason Merrill <jason@yorick.cygnus.com>
6635
6636 Implement empty base optimization.
6637 * class.c (finish_struct_1): Add vbase fields earlier. Set
6638 CLASSTYPE_SIZE of an empty base to 0. Types with bases can be empty.
6639 * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
6640 (types_overlap_p): New fn.
6641 * tree.c (avoid_overlap): New fn.
6642 (build_base_fields): Use it to avoid overlapping empty bases.
6643 * cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
6644
6645 * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
6646
6647 Re-implement allocation of base class subobjects.
6648 * tree.c (unshare_base_binfos): New fn.
6649 (layout_basetypes): Use it. Now handles offsets of both virtual and
6650 non-virtual bases, after layout_type.
6651 (layout_vbasetypes): Remove.
6652 (build_base_fields): Generate FIELD_DECLs for each non-virtual base.
6653 (build_vbase_pointer_fields): Split out from old layout_basetypes.
6654 * class.c (finish_base_struct): Lose offset handling code.
6655 Move nonvdtor warning here. Don't mess with t_binfo anymore.
6656 (finish_struct_1): Don't mess with t_binfo anymore. Use fns above.
6657 * cp-tree.h: Adjust.
6658
6659 Thu Apr 2 14:25:13 1998 Jason Merrill <jason@yorick.cygnus.com>
6660
6661 * cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
6662 * decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
6663 * class.c (duplicate_tag_error): Likewise.
6664 (finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
6665 * tree.c (layout_vbasetypes): Update from layout_record, remove
6666 var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
6667 (layout_basetypes): Likewise.
6668
6669 Wed Apr 1 18:22:25 1998 Jeffrey A Law (law@cygnus.com)
6670
6671 * class.c, Make sure system.h is included just after config.h.
6672 Delete lingering stdio and errno references too.
6673 * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
6674
6675 Wed Apr 1 15:38:36 1998 Jason Merrill <jason@yorick.cygnus.com>
6676
6677 * friend.c (is_friend): Fix access control for local classes.
6678
6679 * class.c (is_empty_class): New fn.
6680 * call.c (build_call): Don't pass empty class objects to a function.
6681
6682 Wed Apr 1 14:58:35 1998 Mark Mitchell <mmitchell@usa.net>
6683
6684 * call.c (build_over_call): Do name resolution for default
6685 arguments of function templates in the scope of the templates.
6686
6687 Tue Mar 31 13:43:57 1998 Jeffrey A Law (law@cygnus.com)
6688
6689 * call.c: Include system.h. Remove includes, declarations and
6690 defines provided by system.h.
6691 * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
6692 * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
6693 * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
6694 * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
6695 * typeck2.c, xref.c: Likewise.
6696 * Makefile.in: Dependencies updated as appropriate.
6697 * Make-lang.in: Likewise.
6698
6699 Mon Mar 30 12:15:00 1998 Mark Mitchell <mmitchell@usa.net>
6700
6701 * pt.c (fn_type_unification): Allow incomplete unification without
6702 an immediate error message.
6703
6704 Mon Mar 30 08:55:42 1998 Jason Merrill <jason@yorick.cygnus.com>
6705
6706 * tree.c (member_p): New fn.
6707 * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
6708 initializing class members.
6709
6710 * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
6711 * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
6712
6713 * call.c (build_method_call): Handle non-scoped destructors, too.
6714 * pt.c (tsubst_copy): Likewise.
6715
6716 * pt.c (print_template_context): Split out...
6717 (push_tinst_level): ...from here.
6718
6719 * friend.c (is_friend): Don't pass a type to decl_function_context.
6720
6721 * typeck.c (convert_for_initialization): Always hand off
6722 conversions to class type.
6723
6724 Sun Mar 29 20:01:59 1998 Jason Merrill <jason@yorick.cygnus.com>
6725
6726 * friend.c (is_friend): Local classes have the same access as the
6727 enclosing function.
6728
6729 Sun Mar 29 00:47:32 1998 Jeffrey A Law (law@cygnus.com)
6730
6731 * typeck.c (expand_target_expr): Delete dead function.
6732
6733 * search.c: Put various prototypes inside #ifdef MI_MATRIX.
6734
6735 * repo.c (save_string): Delete dead function.
6736
6737 * method.c (thunk_printable_name): Delete dead function.
6738
6739 * lex.c (yynextch): Delete dead function.
6740
6741 * expr.c (tree_extract_aggr_init): #if 0 out.
6742
6743 * except.c (do_unwind): Delete dead function.
6744 (easy_expand_asm): Likewise.
6745
6746 * cvt.c (build_conversion_type_1): Delete dead function.
6747
6748 * cp-tree.h (push_expression_obstack): Declare.
6749
6750 * call.c (source_type): #if 0 out.
6751
6752 * class.c (alter_access): Remove unused label. Add braces
6753 around empty else clause.
6754
6755 * lex.c (yyprint): Fix argument to printf.
6756
6757 Sat Mar 28 17:43:52 1998 Mark Mitchell <mmitchell@usa.net>
6758
6759 * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
6760
6761 * pt.c (instantiate_class_template): Make sure template
6762 arguments are permanent.
6763 * init.c (resolve_offset_ref): Don't go looking around in
6764 template types.
6765
6766 * semantics.c: Add routines to handle expressions, and some
6767 declaration processing.
6768 * parse.y: Use them.
6769 (current_class_depth): Move declaration to cp-tree.h.
6770 * parse.c: Regenerated.
6771 * cp-tree.h: Use them.
6772 (current_class_depth): Declare.
6773 * pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
6774
6775 Fri Mar 27 20:23:18 1998 Mark Mitchell <mmitchell@usa.net>
6776
6777 * error.c (dump_decl): Be a bit more explicit with template
6778 type arguments, when verbose.
6779
6780 Fri Mar 27 18:16:40 1998 Jason Merrill <jason@yorick.cygnus.com>
6781
6782 * inc/exception: Reorder closing braces.
6783
6784 Fri Mar 27 13:22:18 1998 Mark Mitchell <mmitchell@usa.net>
6785
6786 * pt.c (redeclare_class_template): New function.
6787 * cp_tree.h (redeclare_class_template): Declare it.
6788 * decl.c (xref_tag): Use it.
6789
6790 Thu Mar 26 11:16:30 1998 Jason Merrill <jason@yorick.cygnus.com>
6791
6792 * call.c (build_over_call): Check IS_AGGR_TYPE, not
6793 TYPE_LANG_SPECIFIC.
6794 * typeck.c (convert_arguments): Likewise.
6795
6796 * decl.c (grokdeclarator): Remove const and volatile from type after
6797 setting constp and volatilep.
6798
6799 * class.c (finish_struct_1): Don't warn about bool bitfield larger
6800 than one bit.
6801
6802 Thu Mar 26 10:25:52 1998 Mark Mitchell <mmitchell@usa.net>
6803
6804 * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
6805
6806 Thu Mar 26 10:24:05 1998 Mark Mitchell <mmitchell@usa.net>
6807
6808 * call.c (build_object_call): Complain about ambiguous operator(),
6809 rather that crashing.
6810 (build_new_op): Likewise.
6811 (build_op_delete_call): Likewise.
6812
6813 Thu Mar 26 10:23:24 1998 Mark Mitchell <mmitchell@usa.net>
6814
6815 * cvt.c (perform_qualification_conversions): Use comp_target_types
6816 instead of comp_ptr_ttypes.
6817
6818 Wed Mar 25 16:10:50 1998 Mark Mitchell <mmitchell@usa.net>
6819
6820 * cp-tree.h (enforce_access): Declare.
6821 * call.c (enforce_access): Make it extern, not static.
6822 * class.c (alter_access): Use enforce_access; modify code for ISO
6823 compliance, rather than ARM rules.
6824
6825 Wed Mar 25 12:10:45 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
6826
6827 * cp-tree.h: Fix typo.
6828
6829 Wed Mar 25 02:01:02 1998 Jason Merrill <jason@yorick.cygnus.com>
6830
6831 * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
6832 if (aggregate_value_p (type)).
6833
6834 * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
6835
6836 Tue Mar 24 16:12:01 1998 Mark Mitchell <mmitchell@usa.net>
6837
6838 * tree.c (mapcar): When dealing with a DECL, use it's constant
6839 value, if any.
6840 * pt.c (lookup_template_class): Don't mangle the names of template
6841 classes whose arguments are unknown.
6842
6843 * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
6844
6845 Tue Mar 24 12:21:55 1998 Benjamin Kosnik <bkoz@lisa.cygnus.com>
6846
6847 * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
6848
6849 Tue Mar 24 12:21:48 1998 Jim Wilson <wilson@cygnus.com>
6850
6851 * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
6852 boolean_type_node to 1.
6853
6854 Tue Mar 24 10:23:47 1998 Mark Mitchell <mmitchell@usa.net>
6855
6856 * error.c (dump_expr): Remove unused variable `l'.
6857
6858 * pt.c (for_each_template_parm): New function, created by
6859 converting uses_template_parms.
6860 (tree_fn_t): New typedef.
6861 (uses_template_parms): Use it.
6862 (mark_template_parm): New function.
6863 (push_template_decl): Check that the argument list of a partial
6864 specialization uses all the template parameters.
6865
6866 * Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
6867 with it; we might want it for debugging.
6868 * cp-tree.h (type_unification): Change interface.
6869 * class.c (finish_struct_1): Skip nested template types, just like
6870 ordinary nested types.
6871 (instantiate_type): Use new interface to type_unification.
6872 * lex.c (init_lex): Add __sz as opname for sizeof.
6873 * method.c (build_overload_scope_ref): New function.
6874 (build_overload_int): Handle complex expressions. Set
6875 numeric_output_need_bar if necessary.
6876 (build_overload_value): Handle non-PARM_DECL nodes; this
6877 routine is now used by build_overload_int. Remove some
6878 assignments to numeric_output_need_bar. Use
6879 build_overload_scope_ref.
6880 (build_qualified_name): Note that some template mangled names end
6881 with digits, and set numeric_output_need_bar appropriately. Use
6882 build_underscore_int.
6883 * pt.c (unify): Change interface.
6884 (type_unification_real): Likewise.
6885 (determine_specialization): Use new interfaces.
6886 (tsubst): Deal gracefully with situations in which the argument
6887 vector is not fully filled.
6888 (fn_type_unification): Use new interfaces.
6889 (type_unification): Likewise. Remove NOP_EXPR hack.
6890 (type_unification_real): Likewise.
6891 (unify): Likewise. Deal with unification of complex expressions.
6892
6893 Mon Mar 23 12:24:37 1998 Jason Merrill <jason@yorick.cygnus.com>
6894
6895 * pt.c (complete_template_args): Initialize skip properly.
6896
6897 * decl.c (make_typename_type): Revert.
6898 (make_implicit_typename): Remove.
6899 (lookup_name_real): Don't call it. Call lookup_field if we see a
6900 TYPE_DECL from a template base.
6901 * search.c (lookup_field): Do implicit typename stuff.
6902
6903 Sun Mar 22 00:50:42 1998 Nick Clifton <nickc@cygnus.com>
6904 Geoff Noer <noer@cygnus.com>
6905
6906 * Makefile.in: Various fixes for building cygwin32 native toolchains.
6907 * Make-lang.in: Likewise.
6908
6909 Fri Mar 20 18:07:39 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
6910
6911 * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
6912
6913 Fri Mar 20 10:42:07 1998 Jason Merrill <jason@yorick.cygnus.com>
6914
6915 * decl.c (make_implicit_typename): Rewrite removed code.
6916 (make_typename_type): Call it if the type we look up comes from
6917 a base that uses template parms.
6918
6919 * pt.c (complete_template_args): Rewrite.
6920 (tsubst, FUNCTION_DECL): Use it.
6921
6922 Fri Mar 20 08:12:43 1998 H.J. Lu (hjl@gnu.org)
6923
6924 * semantics.c (finish_asm_stmt): Fix combine strings. Call
6925 c_expand_asm_operands () if output_operands, input_operands or
6926 clobbers is not NULL_TREE.
6927
6928 Fri Mar 20 00:10:19 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
6929
6930 * pt.c (complete_template_args): New function.
6931 (get_bindings): Deal with specializations of function templates
6932 with return type containing parameters from outer class
6933 templates.
6934 (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
6935 substitute arguments and compose a new type.
6936
6937 Thu Mar 19 19:01:48 1998 Mark Mitchell <mmitchell@usa.net>
6938
6939 * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
6940 FUNCTION_DECLs.
6941
6942 Thu Mar 19 11:51:58 1998 Jason Merrill <jason@yorick.cygnus.com>
6943
6944 * decl.c (make_implicit_typename): Lose useless code.
6945
6946 * call.c (standard_conversion): Handle A* -> const A* properly.
6947
6948 * pt.c (get_bindings_real): Rename from get_bindings. Add
6949 check_rettype parm.
6950 (get_bindings): Pass 1.
6951 (get_bindings_overload): Pass 0.
6952
6953 Wed Mar 19 09:08:12 1998 Mark Mitchell <mmitchell@usa.net>
6954
6955 * pt.c (check_explicit_specialization): When reverting a static
6956 member function, also remove the `this' parameter from
6957 last_function_parms.
6958
6959 Thu Mar 19 02:27:48 1998 Jason Merrill <jason@yorick.cygnus.com>
6960
6961 * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
6962 a function context.
6963
6964 * decl.c (store_bindings): Use free_binding_vecs.
6965 (pop_from_top_level): Likewise.
6966
6967 Wed Mar 18 12:41:43 1998 Jason Merrill <jason@yorick.cygnus.com>
6968
6969 * decl.c (make_implicit_typename): Only change the type of a
6970 TYPENAME_TYPE.
6971
6972 Wed Mar 18 10:09:51 1998 Mark Mitchell <mmitchell@usa.net>
6973
6974 * semantics.c: New file, containing routines to perform the
6975 semantic phase of parsing.
6976 * parse.y: Use it.
6977 * pt.c (tsubst_expr): Likewise.
6978 * cp-tree.h: Declare the various functions in semantics.c.
6979 Provide macros to access _STMT tree nodes.
6980 * cp-tree.def: Add ASM_STMT tree node.
6981 * Makefile.in, Make-lang.in: Add dependencies on and for
6982 semantics.c.
6983
6984 Wed Mar 18 00:24:10 1998 Jason Merrill <jason@yorick.cygnus.com>
6985
6986 * pt.c (push_template_decl): Only check primary templates.
6987
6988 * pt.c (check_explicit_specialization): Complain about default args
6989 in explicit specialization.
6990
6991 * parse.y (nomods_initdcl0): Also call cp_finish_decl for a
6992 constructor_declarator.
6993
6994 Tue Mar 17 14:44:54 1998 Mark Mitchell <mmitchell@usa.net>
6995
6996 * typeck2.c (build_x_arrow): Don't crash when an aggregate type
6997 has no overloaded operator ->.
6998
6999 * call.c (build_field_call): Don't crash when presented with a
7000 field that is actually a nested type.
7001
7002 * decl.c (pushtag): Deal with friend class injection in local
7003 classes.
7004
7005 * call.c (build_object_call): Don't crash if OBJ is a
7006 pointer-to-member-function.
7007
7008 Tue Mar 17 11:40:26 1998 Jason Merrill <jason@yorick.cygnus.com>
7009
7010 * pt.c (push_template_decl): Complain about template with C linkage,
7011 anonymous template class.
7012
7013 Mon Mar 16 12:10:39 1998 Jason Merrill <jason@yorick.cygnus.com>
7014
7015 * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
7016 * search.c: Likewise.
7017
7018 * lex.c (do_pending_defargs): Only call
7019 maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
7020
7021 * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
7022
7023 Mon Mar 16 10:47:22 1998 Mark Mitchell <mmitchell@usa.net>
7024
7025 * parse.y: Deal with CONSTRUCTORS in new_initializers.
7026
7027 Mon Mar 16 10:54:21 1998 Mark Mitchell <mmitchell@usa.net>
7028
7029 * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
7030 closely mimics the behavior in parse.y.
7031 (tsubst_expr): Return the resulting BLOCK when making a tsubst'ing
7032 into a compound statement.
7033
7034 Sun Mar 15 02:07:26 1998 Jason Merrill <jason@yorick.cygnus.com>
7035
7036 * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
7037 * pt.c (inline_needs_template_parms): New fn.
7038 (original_template): New fn.
7039 (push_inline_template_parms_recursive): New fn.
7040 (maybe_begin_member_template_processing): Use them.
7041 (maybe_end_member_template_processing): Likewise.
7042 (is_member_or_friend_template): Rename to is_member_template.
7043 Member functions of local classes are never member templates.
7044
7045 Sun Mar 15 01:14:22 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
7046
7047 * lex.c (do_identifier): Handle TEMPLATE_DECL that was
7048 added in the class scope to catch redefinition error.
7049
7050 * pt.c (reduce_template_parm_level): Also copy
7051 the DECL_TEMPLATE_PARMS field.
7052
7053 Sun Mar 15 10:54:08 1998 Mark Mitchell <mmitchell@usa.net>
7054
7055 * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
7056 reduced-level template type parameter.
7057
7058 Sun Mar 15 12:26:02 1998 Manfred Hollstein <manfred@s-direktnet.de>
7059
7060 * cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
7061 (DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
7062 * class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
7063 * decl.c (duplicate_decls): Propagate it.
7064 * typeck2.c (abstract_virtuals_error): Use two loops to emit
7065 abstract virtual functions and virtual functions which need a
7066 final overrider separately.
7067
7068 Thu Mar 12 09:39:40 1998 Manfred Hollstein <manfred@s-direktnet.de>
7069
7070 * lang-specs.h: Properly put brackets around array elements in
7071 initializer.
7072
7073 * typeck.c (build_binary_op_nodefault): Correctly place parens around
7074 && and || in expression.
7075
7076 Thu Mar 12 09:26:04 1998 Manfred Hollstein <manfred@s-direktnet.de>
7077
7078 * call.c (default_parm_conversions): Remove prototype definition.
7079 (build_method_call): Remove unused variable result.
7080
7081 * cvt.c (ocp_convert): Remove unused variable conversion.
7082
7083 * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
7084
7085 * except.c (do_unwind): #if 0 definition of unused variables fcall
7086 and next_pc.
7087
7088 * expr.c (extract_scalar_init): #if 0 prototype and function
7089 definition.
7090
7091 * init.c (expand_aggr_init_1): Remove unused variable init_type.
7092 (build_new_1): Remove unused variable t.
7093
7094 * pt.c (instantiate_class_template): Remove unused variable newtag;
7095 cast called function return value to void.
7096 (do_decl_instantiation): Remove unused variables name and fn.
7097
7098 * tree.c (get_type_decl): Add default return to shut up compiler from
7099 complaining control reaches end of non-void function.
7100
7101 * typeck.c (build_x_conditional_expr): Remove unused variable rval.
7102
7103 Thu Mar 12 09:12:15 1998 Manfred Hollstein <manfred@s-direktnet.de>
7104
7105 * call.c (default_parm_conversions): Remove prototype definition.
7106 (build_method_call): Remove unused variable result.
7107 (build_over_call): Add default case in enumeration switch.
7108
7109 Thu Mar 12 08:39:13 1998 Manfred Hollstein <manfred@s-direktnet.de>
7110
7111 * decl2.c (lang_decode_option): Change j's type to size_t.
7112
7113 * tree.c (layout_vbasetypes): record_align and desired_align are of
7114 type unsigned int; const_size and nonvirtual_const_size likewise.
7115
7116 Wed Mar 11 07:25:20 1998 Mark Mitchell <mmitchell@usa.net>
7117
7118 * parse.y (new_initializer): Make sure all initializers are
7119 lists.
7120
7121 Tue Mar 10 07:32:36 1998 Mark Mitchell <mmitchell@usa.net>
7122
7123 * decl2.c (import_export_decl): Mark tinfo functions for
7124 cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
7125
7126 Fri Mar 6 23:27:35 1998 Jeffrey A Law (law@cygnus.com)
7127
7128 * method.c: Fix typo.
7129
7130 Fri Mar 6 10:06:59 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
7131 <<<<<<< ChangeLog
7132 =======
7133
7134 * method.c: Include "system.h" to get stdlib.h, stdio.h,
7135 ctype.h, string.h, etc.
7136 (issue_nrepeats): Add default case in enumeration switch.
7137 (check_btype): Likewise.
7138 (process_overload_item): Likewise.
7139 >>>>>>> 1.988
7140
7141 <<<<<<< ChangeLog
7142 * method.c: Include "system.h" to get stdlib.h, stdio.h,
7143 ctype.h, string.h, etc.
7144 (issue_nrepeats): Add default case in enumeration switch.
7145 (check_btype): Likewise.
7146 (process_overload_item): Likewise.
7147
7148 * Makefile.in (method.o): Depend on system.h.
7149
7150 =======
7151 * Makefile.in (method.o): Depend on system.h.
7152
7153 >>>>>>> 1.988
7154 Wed Mar 4 22:26:53 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
7155
7156 * lex.c (do_scoped_id): Fix parenthesizing.
7157
7158 Wed Mar 4 12:11:53 1998 Michael Tiemann <tiemann@axon.cygnus.com>
7159
7160 * rtti.c (get_tinfo_fn_dynamic): If this function is called an
7161 FLAG_RTTI is unset, initialize type info machinery and continue
7162 with FLAG_RTTI enabled.
7163 (get_typeid): Likewise.
7164
7165 Wed Mar 4 11:47:55 1998 Jason Merrill <jason@yorick.cygnus.com>
7166
7167 * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
7168 from B.
7169
7170 Wed Mar 4 11:28:08 1998 Mark Mitchell <mmitchell@usa.net>
7171
7172 * pt.c (finish_member_template_decl): Deal more gracefully with
7173 invalid declarations.
7174
7175 Tue Mar 3 01:38:17 1998 Jason Merrill <jason@yorick.cygnus.com>
7176
7177 * cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
7178 cp-tree.h: Clean up more old overloading code, old RTTI code, and
7179 some formatting quirks.
7180
7181 * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
7182 method.c, pt.c, ptree.c, typeck.c: Remove support for
7183 -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
7184 * class.h: Remove.
7185 * Makefile.in: Adjust.
7186
7187 * pt.c (unify): Don't allow reduced cv-quals when strict.
7188
7189 * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
7190 *type_unification* and unify.
7191
7192 Mon Mar 2 12:11:06 1998 Jason Merrill <jason@yorick.cygnus.com>
7193
7194 * parse.y (explicit_template_type): Remove TEMPLATE keyword.
7195 (nested_name_specifier): And add it before this use.
7196 (typename_sub0): And this use. Also add use without the keyword.
7197 (typename_sub1): Likewise.
7198 * pt.c (instantiate_class_template): Don't actually instantiate
7199 anything if our type uses template parms.
7200
7201 Mon Mar 2 11:04:59 1998 Jim Wilson <wilson@cygnus.com>
7202
7203 * decl.c (start_function): Don't call temporary_allocation for a
7204 nested function.
7205
7206 Sun Mar 1 21:06:37 1998 Jason Merrill <jason@yorick.cygnus.com>
7207
7208 * pt.c (instantiate_class_template): Don't mess with friends if
7209 our type uses template parms.
7210
7211 Sat Feb 28 12:06:44 1998 Jason Merrill <jason@yorick.cygnus.com>
7212
7213 * parse.y (nested_name_specifier): Use explicit_template_type.
7214 (typename_sub): Allow a template_type, an explicit_template_type,
7215 or an implicit template type at the end.
7216 * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
7217 * decl.c (make_typename_type): Handle template-id where the name
7218 is a TEMPLATE_DECL.
7219 * call.c (build_scoped_method_call): Handle member template
7220 destructor call.
7221 * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member
7222 destructor is represented by the type.
7223
7224 * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
7225 * parse.y (nested_name_specifier): Add 'template' case.
7226 (explicit_template_type): New rule.
7227 (typename_sub): Use it.
7228 * decl.c (make_typename_type): Handle getting a template-id for NAME.
7229 * pt.c (tsubst): Likewise.
7230
7231 Fri Feb 27 11:17:50 1998 Jason Merrill <jason@yorick.cygnus.com>
7232
7233 * pt.c (add_to_template_args): Fix thinko.
7234 (instantiate_class_template): Call it later.
7235
7236 * pt.c (get_class_bindings): Add outer_args parm.
7237 (most_specialized_class): Likewise.
7238 (instantiate_class_template): Pass it.
7239 (more_specialized_class): Likewise.
7240 (lookup_template_class): Get context from template if none
7241 was specified.
7242 (finish_member_template_decl): Don't do anything with a
7243 partial specialization.
7244 * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
7245 AGGREGATE_TYPE_P.
7246 * class.c (finish_struct): Member class templates have already been
7247 checked for name clashes.
7248 * decl.c (pushdecl_with_scope): Handle pushing at class level.
7249
7250 Fri Feb 27 02:25:16 1998 Jason Merrill <jason@yorick.cygnus.com>
7251
7252 * pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
7253 (tsubst, *_PARM): Support multiple levels of template classes.
7254 (instantiate_class_template): Look up the pattern from the
7255 original template.
7256 (lookup_template_class): Handle getting a template for d1.
7257 (push_template_decl): Correct setting of 'primary'.
7258 (reduce_template_parm_level): Add 'levels' parm.
7259 (finish_member_template_decl): Support member class templates.
7260 (template_class_depth): Handle multiple levels.
7261 * parse.y (component_decl_1, fn.def2): Remove member template case.
7262 (component_decl): Add member template cases.
7263 * decl2.c (check_member_template): We now handle member template
7264 classes.
7265 * decl.c (pushtag): Handle member templates.
7266 * method.c (do_inline_function_hair): Don't touch
7267 IDENTIFIER_GLOBAL_VALUE.
7268 * init.c (build_offset_ref): If name isn't an identifier, just
7269 return it.
7270 * spew.c (yylex): Handle PTYPENAME like TYPENAME.
7271
7272 * typeck.c (get_delta_difference): Do adjust for conversions to
7273 and from virtual base.
7274
7275 Wed Feb 25 09:51:29 1998 Jason Merrill <jason@yorick.cygnus.com>
7276
7277 * typeck.c (get_delta_difference): Give hard error for conversion
7278 from virtual base.
7279
7280 * cp-tree.h: Tweak formatting.
7281
7282 Wed Feb 25 00:35:33 1998 Jason Merrill <jason@yorick.cygnus.com>
7283
7284 * decl.c (push_namespace): Handle redeclaration error.
7285
7286 * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
7287 (IDENTIFIER_NAMESPACE_BINDINGS): New macro.
7288 (NAMESPACE_BINDING): New macro.
7289 (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
7290 * *.c: Use them.
7291
7292 * pt.c (push_template_decl): Use innermost_args.
7293
7294 * decl.c (get_unique_name): Tweak from earlier in the name.
7295
7296 Tue Feb 24 22:15:04 1998 Martin von Loewis <loewis@informatik.hu-berlin.de>
7297
7298 * cp-tree.def: Add CPLUS_BINDING node.
7299 * cp-tree.h (tree_binding): New struct.
7300 (BINDING_SCOPE, BINDING_VALUE): New macros.
7301 (current_namespace, global_namespace): Declare extern.
7302 (struct lang_decl_flags): New field in_namespace.
7303 (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): New macros.
7304 (DECL_NAMESPACE, SET_DECL_NAMESPACE): New macros.
7305 (TREE_INDIRECT_USING): New macro.
7306 * decl2.c (current_namespace, global_namespace): Declare. The
7307 value is a NAMESPACE_DECL now, not a TREE_LIST.
7308 (is_namespace_ancestor, namespace_ancestor): New static functions.
7309 (add_using_namespace, ambiguous_decl): Likewise.
7310 (lookup_using_namespace): New support function for lookup_name.
7311 (qualified_lookup_using_namespace): New support function for
7312 do_scoped_id and lookup_namespace_name.
7313 (get_namespace_id): Mark as obsolete.
7314 (current_namespace_id): Likewise.
7315 (do_namespace_alias): Implement.
7316 (do_using_directive): Implement as call to add_using_namespace.
7317 * decl.c (binding_for_name): New function.
7318 (push_namespace, pop_namespace): Implement.
7319 (push_decl): Don't install a FUNCTION_DECL in the global branch.
7320 (lookup_namespace_name): Implement using qualified lookup.
7321 (lookup_name_real): For global scoping, lookup in
7322 global_namespace. For namespace scoping, lookup in given
7323 namespace. For unscoped lookup, iterate over namespace,
7324 considering using directives.
7325 (init_decl_processing): Initialize global_namespace.
7326 (grokvardecl): Build assembler name as static name for globals.
7327 (grokdeclarator): Remove old namespace mangling.
7328 (xref_tag): When installing a global binding for the
7329 tag, make sure we have an identifier.
7330 * method.c (build_overload_nested_name): Mangle namespaces.
7331 (build_qualified_name): Likewise.
7332 (build_decl_overload_real): Likewise.
7333 * lex.c (build_lang_decl): Set namespace for new declaration to
7334 current_namespace.
7335 (do_scoped_id): Find global names in global or current
7336 namespace, or using qualified namespace lookup, depending on
7337 context.
7338 * init.c (build_member_call): When scope is namespace, use
7339 build_x_function_call instead.
7340 (build_offset_ref): When scope is namespace, collapse processing
7341 to lookup_namespace_name instead.
7342 * error.c (dump_decl): Support NAMESPACE_DECL.
7343 * decl.c (pushdecl): Bind globals to current namespace.
7344 (push_overloaded_decl): Likewise.
7345 (lookup_tag): Likewise.
7346 (lookup_name_current_level): Likewise.
7347 (xref_tag): Likewise.
7348 (start_function): Likewise.
7349 * lex.c (do_identifier): Likewise.
7350 (identifier_typedecl_value): Likewise.
7351 (real_yylex): Likewise.
7352 * method.c (do_inline_function_hair): Likewise.
7353 * parse.y (unscoped): Likewise.
7354 * pt.c (check_explicit_specialization): Likewise.
7355 (lookup_template_class): Likewise.
7356 * rtti.c (call_void_fn): Likewise.
7357 * sig.c (build_sigtable): Likewise.
7358 * ptree.c (lang_print_xnode): New function.
7359
7360 Tue Feb 24 01:40:24 1998 Jason Merrill <jason@yorick.cygnus.com>
7361
7362 * pt.c (instantiate_class_template): Don't instantiate if pedantic
7363 and the args use template parms.
7364
7365 * pt.c (push_tinst_level): If the instantiation uses template parms,
7366 fail silently.
7367 * decl.c (xref_basetypes): Do call complete_type for basetypes
7368 that involve template parameters.
7369
7370 Tue Feb 24 00:36:43 1998 Jason Merrill <jason@yorick.cygnus.com>
7371
7372 * typeck2.c (process_init_constructor): Fix labeled init check.
7373
7374 Mon Feb 23 05:08:55 1998 Jason Merrill <jason@yorick.cygnus.com>
7375
7376 * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
7377 argument to tsubst and friends.
7378
7379 * pt.c (tsubst, FUNCTION_DECL): Tidy.
7380
7381 * typeck.c (build_x_function_call): Handle static member function
7382 templates like non-templates. Handle friend templates like normal
7383 function templates.
7384 * pt.c (tsubst, *_PARM): Don't use orig_level.
7385 (get_bindings): Don't call add_to_template_args.
7386 (instantiate_template): Likewise.
7387 (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
7388 * ptree.c (print_lang_type): Print index/level for template parms.
7389
7390 Mon Feb 23 02:52:29 1998 Mark Mitchell <mmitchell@usa.net>
7391
7392 * Make-lang.in (cc1plus): Note that cc1plus depends on
7393 cp/cp-tree.h and cp/cp-tree.def.
7394
7395 * cp-tree.def (TEMPLATE_CONST_PARM): Remove.
7396 (TEMPLATE_PARM_INDEX): New tree code, used to indicate a
7397 position in a template parameter list.
7398 * cp-tree.h (template_parm_index): New structure, used as the tree
7399 structure for a TEMPLATE_PARM_INDEX.
7400 (TEMPLATE_PARM_IDX): New macro.
7401 (TEMPLATE_PARM_LEVEL): Likewise.
7402 (TEMPLATE_PARM_DESCENDANTS): Likewise.
7403 (TEMPLATE_PARM_ORIG_LEVEL): Likewise.
7404 (TEMPLATE_PARM_DECL): Likewise.
7405 (TEMPLATE_TYPE_PARM_INDEX): Likewise.
7406 (TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
7407 (TEMPLATE_TYPE_DECL): Likewise.
7408 (TEMPLATE_CONST_IDX): Remove.
7409 (TEMPLATE_CONST_LEVEL): Likewise.
7410 (TEMPLATE_CONST_SET_INFO): Likewise.
7411 (TEMPLATE_TYPE_SET_INFO): Likewise.
7412 (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
7413 node.
7414 (TEMPLATE_TYPE_LEVEL): Likewise.
7415 * decl.c (decls_match): Call comp_template_parms, rather than
7416 expanding it inline.
7417 (duplicate_decls): If two template declarations are being merged,
7418 then their TEMPLATE_INFOs should be merged as well.
7419 (grokfndecl): Save template-id information when declaring a friend
7420 with explicit template arguments. Pass arguments to
7421 check_explicit_specialization via correct convention; at some
7422 point check_explicit_specialization changed, but these call-sites
7423 did not.
7424 (grokdeclarator): Tidy up slightly.
7425 * decl2.c (check_classfn): Tidy up slightly. Don't assume that
7426 two template functions with the same DECL_ASSEMBLER_NAME the same,
7427 since the names are not yet mangled.
7428 * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
7429 TEMPLATE_CONST_PARM.
7430 (dump_expr): Likewise. Use the TEMPLATE_PARM_DECL to get at the
7431 decl for a non-type parameter, rather than printing `<tparm ...>'.
7432 * friend.c (is_friend): Handle TEMPLATE_DECL friends.
7433 (do_friend): Deal with template friends.
7434 * lex.c (do_pending_inlines): Call
7435 maybe_begin_member_template_processing, rather than
7436 conditionally calling begin_member_template_processing.
7437 (process_next_inline): Likewise. Call
7438 maybe_end_member_template_processing, rather than
7439 conditionally calling end_member_template_processing.
7440 (do_pending_defargs): Likewise.
7441 (do_identifier): Use TEMPLATE_PARM_INDEX instead of
7442 TEMPLATE_CONST_PARM.
7443 * method.c (build_mangled_template_parm_index): New function.
7444 (build_overload_value): Use it.
7445 (build_overload_name): Likewise.
7446 * pt.c (finish_member_template_decl): Allow friend declarations.
7447 (template_class_depth): New function.
7448 (is_member_template): Rename, and modify, to become...
7449 (is_member_or_friend_template): New function.
7450 (end_member_template_processing): Rename, and modify, to become...
7451 (maybe_end_member_template_processing).
7452 (build_template_parm_index): New function.
7453 (reduce_template_parm_level): New function.
7454 (process_template_parm): Modify to use build_template_parm_index.
7455 (push_template_decl): Deal with friend templates.
7456 (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
7457 TEMPLATE_CONST_PARM.
7458 (tsubst_friend_function): New function.
7459 (instantiate_class_template): Generate the DECL_FRIENDLIST
7460 for a new instantiation by using tsubst_friend_function rather
7461 than just tsubst.
7462 (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
7463 Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
7464 appropriate new macros. Use reduce_template_parm_level to
7465 generate lower-level template parameters. Handle tsubst'ing into
7466 TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS. Don't forget
7467 to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
7468 templates. Similarly for the template parameters for a new
7469 template.
7470 (tsubst_copy): Tidy up slightly. Use TEMPLATE_PARM_INDEX instead
7471 of TEMPLATE_CONST_PARM. Handle TYPE_DECLs by tsubsting into them.
7472 (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.
7473 (get_bindings): Call add_to_template_args if necessary.
7474 (instantiate_decl): Handle instantiations of friend templates.
7475 * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
7476 TEMPLATE_TYPE_PARM as a list of fields; it's not!
7477 * spew.c (yylex): Do a little manual constant propagation to
7478 clarify the code.
7479
7480 Sun Feb 22 19:53:29 1998 Jeffrey A Law (law@cygnus.com)
7481
7482 * error.c: Include sys/types.h.
7483
7484 Thu Feb 19 14:49:09 1998 Jeffrey A Law (law@cygnus.com)
7485
7486 * method.c (build_mangled_name): Start CPP directives in column zero.
7487
7488 Thu Feb 19 10:36:48 1998 Jason Merrill <jason@yorick.cygnus.com>
7489
7490 * typeck2.c (process_init_constructor): Sorry about non-trivial
7491 labeled initializers.
7492 * parse.y (initlist): Re-enable labeled initializers.
7493
7494 Thu Feb 19 10:15:55 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
7495
7496 * pt.c (coerce_template_parms) Add a new parameter, is_tmpl_parm,
7497 all callers changed. Rely on the new parameter instead of arg
7498 being a TREE_LIST when determine whether we are working inside
7499 template template parameter. Clean up is_type test.
7500
7501 Thu Feb 19 10:04:12 1998 Jason Merrill <jason@yorick.cygnus.com>
7502
7503 * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
7504 * typeck2.c (initializer_constant_valid_p): Allow conversions
7505 between pointers and references.
7506
7507 1998-02-19 Brendan Kehoe <brendan@cygnus.com>
7508
7509 * typeck.c (build_unary_op): Only warn about incr/decr a pointer
7510 if pedantic || warn_pointer_arith.
7511
7512 Thu Feb 19 09:37:21 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
7513
7514 * pt.c (unify): Handle TEMPLATE_DECL.
7515
7516 1998-02-18 Brendan Kehoe <brendan@cygnus.com>
7517
7518 * cp-tree.h (strip_attrs): Remove decl.
7519
7520 1998-02-18 Doug Evans <devans@cygnus.com>
7521
7522 * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
7523 Update olddecl's attributes too.
7524 (strip_attrs): Remove function.
7525 * typeck.c (common_type): Call merge_machine_type_attributes.
7526
7527 Tue Feb 17 14:07:52 1998 Mark Mitchell <mmitchell@usa.net>
7528
7529 * parse.y (initdcl0_innards): New grammar symbol.
7530 (nomods_initdecls, nomods_initdcl0): Change type from itype to
7531 none, since the resulting value is never used.
7532 (parse_decl): New function.
7533 (datadef): Remove redundant actions.
7534 (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
7535 * parse.c: Regenerated.
7536
7537 Tue Feb 17 11:54:16 1998 Jason Merrill <jason@yorick.cygnus.com>
7538
7539 * parse.y (simple_stmt): Use getdecls() to check for decl.
7540
7541 Sat Feb 14 11:50:51 1998 Manfred Hollstein <manfred@s-direktnet.de>
7542
7543 * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New
7544 macros.
7545 (c++.install-common): Install c++filt properly as native or as cross
7546 variant.
7547 (c++.uninstall): Add c++filt.
7548
7549 Fri Feb 13 14:55:37 1998 Jason Merrill <jason@yorick.cygnus.com>
7550
7551 * call.c (standard_conversion): Fix multi-level ptr conversions.
7552
7553 Fri Feb 13 14:06:22 1998 Mike Stump <mrs@wrs.com>
7554
7555 * init.c (build_new): Propagate error_mark_node up.
7556
7557 Fri Feb 13 13:24:32 1998 Jason Merrill <jason@yorick.cygnus.com>
7558
7559 * parse.y (simple_stmt): If the condition isn't a declaration,
7560 start the controlled block after the test.
7561
7562 Fri Feb 13 02:26:10 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
7563
7564 * call.c (build_over_call): Convert builtin abs, labs and fabs to
7565 tree-codes.
7566 * decl.c (init_decl_processing): Re-enable abs, labs and fabs as
7567 builtins.
7568
7569 Fri Feb 13 01:36:42 1998 Jason Merrill <jason@yorick.cygnus.com>
7570
7571 * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
7572
7573 Fri Feb 13 00:21:59 1998 Jason Merrill <jason@yorick.cygnus.com>
7574
7575 * cp-tree.h: Add access_protected_virtual_node.
7576 * class.c (init_class_processing): Initialize it.
7577 * decl.c (xref_basetypes): Use it.
7578 * parse.y (base_class_access_list): Likewise.
7579
7580 * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
7581 (c++.install-common): Install c++filt.
7582
7583 Thu Feb 12 12:46:51 1998 Benjamin Kosnik <bkoz@rhino.cygnus.com>
7584
7585 * decl.c (shadow_tag): Give error for typedef-ing built-in types.
7586
7587 Wed Feb 11 23:28:05 1998 Mark Mitchell <mmitchell@usa.net>
7588
7589 * call.c (reference_binding): Use comptypes when comparing
7590 TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
7591
7592 Wed Feb 11 16:42:04 1998 Mark Mitchell <mmitchell@usa.net>
7593
7594 * tree.c (is_overloaded_fn): Use really_overloaded_fn.
7595 (really_overloaded_fn): Move check here from is_overloaded_fn.
7596 (get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
7597
7598 Wed Feb 11 15:54:18 1998 Mark Mitchell <mmitchell@usa.net>
7599
7600 * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
7601 conversions.
7602
7603 Mon Feb 9 22:23:31 1998 Mark Mitchell <mmitchell@usa.net>
7604
7605 * cp-tree.h (push_template_decl): Return the decl passed in, or an
7606 equivalent duplicate.
7607 * decl.c (pushtag): Use the return value from push_template_decl.
7608 (duplicate_decls): When duplicating a template declaration, merge
7609 the DECL_TEMPLATE_RESULTs as well.
7610 (make_implicit_typename): Don't try to dive into typename types to
7611 find a context for making a new implicit typename.
7612 (start_decl): Use the return value from push_template_decl.
7613 (grokdeclarator): Complain about declarations list `const operator
7614 int'. Since we don't correctly handle in-class initializations of
7615 non-static data members, complain about this (now illegal)
7616 practice. Issue an error for initializations of non-const statics
7617 since that is illegal as well, and since we don't handle that case
7618 correctly either.
7619 (start_function): Use the return value from push_template_decl.
7620 (start_method): Likewise.
7621 * decl2.c (grokfield): Likewise. Since the change to
7622 grokdeclarator ensures that all initialized fields are in fact
7623 static, remove a redundant test for TREE_PUBLIC.
7624 * parse.y (initlist): Disable labeled initializers since they do
7625 not work as per the documentation, and since they do not use the
7626 same syntax as the C front end.
7627 * pt.c (push_template_decl): Return the decl passed in, or an
7628 equivalent duplicate.
7629 (lookup_template_class): When searching in a nested context,
7630 use the right arguments.
7631 (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
7632 * typeck.c (build_component_ref): Assign the correct type to the
7633 result of build_vfn_ref.
7634
7635 Tue Feb 10 23:56:46 1998 Jason Merrill <jason@yorick.cygnus.com>
7636
7637 * pt.c (convert_nontype_argument): Fix typo.
7638 (check_explicit_specialization): Allow old-style specialization
7639 of class template members.
7640
7641 Tue Feb 10 20:36:52 1998 Jason Merrill <jason@yorick.cygnus.com>
7642 Manfred Hollstein <manfred@s-direktnet.de>
7643
7644 * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
7645 when deciding to override DECL_ASSEMBLER_NAME.
7646
7647 Tue Feb 10 15:30:55 EST 1998 Andrew MacLeod <amacleod@torpedo.to.cygnus.com>
7648
7649 * decl2.c (lang_f_options): Add -fsquangle to option processing list.
7650 * cp-tree.h (flag_do_squangling): Add declaration.
7651 * lang-options.h: Add -fsquangle and -fno-squangle.
7652 * method.c: Add macros and static variables for squangling.
7653 (build_overload_name): Rename to build_mangled_name, add logic for B
7654 compression, and split into process_modifiers and
7655 process_overload_item.
7656 (process_modifiers): New function, to handle constant, reference,
7657 and pointer types.
7658 (process_overload_item): New function, handles issue of type codes.
7659 (build_overload_name): New function, start squangling and call
7660 build_mangled_name.
7661 (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
7662 (start_squangling): New function to initialize squangling structs.
7663 (end_squangling): New function to destroy squangling structs.
7664 (nrepeats): Rename variable to Nrepeats.
7665 (issue_nrepeats): New function for issuing 'n' type repeats.
7666 (check_ktype): New function to check for type K name compression.
7667 (build_overload_nested_name): Add a check for K name compression.
7668 (build_qualified_name): Add a check for K name compression and don't
7669 use DECL_ASSEMBLER_NAME when squangling is on.
7670 (check_btype): New function, checks for B type compression.
7671 (build_static_name, build_decl_overload_real): Initiate squangling.
7672 (build_typename_overload, build_overload_with_type): Initiate
7673 squangling
7674
7675 Sun Feb 8 23:47:38 1998 scott snyder <sss@d0linux01.fnal.gov>
7676
7677 * method.c (make_thunk): Avoid name buffer overflow.
7678
7679 Sat Feb 7 16:48:54 1998 Jason Merrill <jason@yorick.cygnus.com>
7680
7681 * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
7682 don't define them yet.
7683
7684 * parse.y (nomods_initdcl0): Add constructor_declarator case.
7685
7686 Fri Feb 6 21:32:25 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
7687
7688 * config-lang.in (diff_excludes): Use basename only.
7689
7690 Thu Feb 5 19:10:40 1998 Jason Merrill <jason@yorick.cygnus.com>
7691
7692 * tinfo2.cc: Add tinfo for signed char.
7693
7694 Thu Feb 5 14:38:23 1998 Mike Stump <mrs@wrs.com>
7695
7696 * search.c (compute_access): Handle protected constructors in derived
7697 classes as accessible.
7698
7699 Wed Feb 4 01:26:49 1998 Jason Merrill <jason@yorick.cygnus.com>
7700
7701 * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
7702 Call convert_from_reference sooner.
7703
7704 Tue Feb 3 23:50:52 1998 Mark Mitchell <mmitchell@usa.net>
7705
7706 * cvt.c (ocp_convert): Obtain the constant values from constant
7707 decls even if the destination type is the same as the type of the
7708 decl.
7709
7710 * decl2.c (finish_file): Make sure that static inlines with
7711 definitions are not marked DECL_EXTERNAL before returning.
7712
7713 Tue Feb 3 22:43:42 1998 Jason Merrill <jason@yorick.cygnus.com>
7714
7715 * decl.c: Lose arg_looking_for_template.
7716 (lookup_name_real): Likewise.
7717 * parse.y: Lose processing_template_arg, template_arg1.
7718 (primary): Likewise.
7719 * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
7720
7721 Tue Feb 3 22:04:01 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
7722
7723 * error.c (dump_decl): Fix type of default arguments for template
7724 template parameters and nontype template parameters.
7725 * parse.y (template_parm): Handle invalid default template
7726 template arguments here.
7727
7728 * parse.y (template_parm): Use template_arg instead of PTYPENAME
7729 for default template template argument.
7730 * pt.c (coerce_template_parms): Merge default template argument
7731 codes. Can treat RECORD_TYPE as template name if it is implicitly
7732 created. Fix argument index in error message.
7733 * typeck.c (comptypes): Merge template argument comparison codes in
7734 TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
7735
7736 Tue Jan 6 01:42:44 1998 Mumit Khan <khan@xraylith.wisc.edu>
7737
7738 * lex.c (file_name_nondirectory): Also check for '/'.
7739
7740 Mon Feb 2 11:24:22 1998 Mark Mitchell <mmitchell@usa.net>
7741
7742 * parse.y (primary): Deal with statement-expressions in
7743 templates.
7744 * pt.c (tsubst_copy): Handle BIND_EXPR.
7745 * tree.c (mapcar): Likewise.
7746
7747 * call.c (add_template_candidate_real): Pass extra parameter to
7748 fn_type_unification.
7749 * cp-tree.h (fn_type_unification): Add parameter.
7750 * pt.c (fn_type_unification): Add additional parameter to deal with
7751 static member functions.
7752 (get_bindings): Deal with static member functions.
7753
7754 * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.
7755 (revert_static_member_fn): Declare.
7756 * decl.c (revert_static_member_fn): Remove declaration. Change
7757 linkage from internal to external.
7758 (cp_finish_decl): Deal with virtual functions in classes local to
7759 template functions.
7760 * decl2.c (finish_file): Don't forget to emit increment/decrement
7761 expressions in initializers for file-scope variables.
7762 * parse.y (typename_sub2): If the typename doesn't names a
7763 template, rather than a type, issue an error message.
7764 * pt.c (check_explicit_specialization): Handle specializations of
7765 static member functions.
7766 (coerce_template_parms): Handle offset references to lists of
7767 member functions.
7768 * search.c (note_debug_info_needed): Don't crash when handed a
7769 type which is being defined.
7770 * typeck.c (complete_type): Don't crash when handed NULL_TREE;
7771 that can happen with some illegal code.
7772
7773 Mon Feb 2 00:57:38 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
7774
7775 * call.c (user_harshness): Initialize `code' to 0.
7776 (build_method_call): Initialize `candidates', `cp' and `len' to 0.
7777 (null_ptr_cst_p): Add parentheses around && within ||.
7778 (standard_conversion): Likewise.
7779 (z_candidate): Likewise.
7780 (build_user_type_conversion_1): Initialize `args' to NULL_TREE.
7781 (build_object_call): Likewise for `mem_args'.
7782 (build_new_op): Likewise for `mem_arglist'. Add `return' from
7783 default case in enumeration switch.
7784
7785 * class.c (build_vtable_entry): Add explicit braces to avoid
7786 ambiguous `else'.
7787 (build_class_init_list): Likewise.
7788 (finish_struct_1): Initialize `width' to 0.
7789 (instantiate_type): Initialize `name' to NULL_TREE. Add
7790 explicit braces to avoid ambiguous `else'.
7791
7792 * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
7793 `else'.
7794
7795 * decl.c (grok_reference_init): Eliminate unused parameter, all
7796 callers changed.
7797 (record_builtin_type): Initialize `tdecl' to NULL_TREE.
7798 (init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
7799 (cp_finish_decl): Initialize `ttype' to NULL_TREE.
7800 (grokdeclarator): Add parentheses around && within ||. Add
7801 explicit braces to avoid ambiguous `else'.
7802 (grokparms): Initialize `type' to NULL_TREE.
7803 (xref_tag): Remove unused label `just_return'.
7804 (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
7805 (finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
7806 (hack_incomplete_structures): Add parentheses around assignment
7807 used as truth value.
7808
7809 * decl2.c (coerce_delete_type): Hide definition of `e3'.
7810
7811 * error.c: Include <stdlib.h>.
7812 (dump_expr): Change the type of `i' to size_t. Remove unused
7813 label `error'.
7814
7815 * except.c (init_exception_processing): Remove unused variable `d'.
7816 (expand_throw): Likewise for `label'.
7817
7818 * friend.c (add_friends): Add explicit braces to avoid ambiguous
7819 `else'.
7820
7821 * init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
7822 (sort_base_init): Likewise for `binfo'.
7823 (expand_member_init): Likewise for `rval'.
7824 (build_member_call): Add parentheses around assignment used as
7825 truth value.
7826 (build_offset_ref): Add explicit braces to avoid ambiguous `else'.
7827 (build_new): Initialize `nelts' to NULL_TREE. Initialize
7828 `old_immediate_size_expand' to 0.
7829 (build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
7830 (build_vec_delete_1): Remove unused variable `block'.
7831 (expand_vec_init): Initialize `itype' to NULL_TREE.
7832
7833 * lex.c: Include <strings.h> if we don't have <string.h>. Protect
7834 declaration of `index' and `rindex' with autoconf macros.
7835 (reinit_parse_for_expr): Remove unused variables
7836 `look_for_semicolon' and `look_for_lbrac'.
7837 (cons_up_default_function): Initialize `args' to NULL_TREE.
7838 (readescape): Initialize `firstdig' to 0.
7839 (real_yylex): Add parentheses around assignment used as truth value.
7840
7841 * method.c: Include <strings.h> if we don't have <string.h>.
7842 Protect declaration of `index' with autoconf macro.
7843
7844 * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
7845 Initialize `type' to NULL_TREE.
7846 (structsp): Remove unused variable `id'.
7847
7848 * pt.c (coerce_template_parms): Add explicit braces to avoid
7849 ambiguous `else'.
7850 (lookup_template_class): Initialize `template' to NULL_TREE.
7851 (instantiate_class_template): Remove unused variable `name' and `e'.
7852 (tsubst): Likewise for `i'. Initialize `last' to NULL_TREE.
7853 (do_poplevel): Initialize `saved_warn_unused' to 0.
7854 (type_unification): Remove unused varable `parm'.
7855 (unify): Likewise for `j'.
7856
7857 * repo.c (init_repo): Add parentheses around assignment used as
7858 truth value.
7859 (finish_repo): Remove unused varable `p'.
7860
7861 * search.c (get_binfo): Initialize `type' to NULL_TREE.
7862 (get_base_distance): Likewise.
7863 (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
7864 and `new_v' to NULL_TREE.
7865 (lookup_fnfields): Likewise for `rval_binfo_h'.
7866 (breadth_first_search): Add parentheses around assignment used as
7867 truth value.
7868 (get_template_base): Initialize `type' to NULL_TREE.
7869
7870 * sig.c (append_signature_fields): Initialize `last_mfptr' to
7871 NULL_TREE.
7872 (build_signature_table_constructor): Likewise for
7873 `last_rhs_field', `pfn' and `vt_off'.
7874 (build_sigtable): Likewise for `init'.
7875
7876 * tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
7877 (propagate_binfo_offsets): Likewise for `delta'.
7878 (hash_tree_cons): Initialize hashcode to 0.
7879 (can_free): Likewise for `size'.
7880 (cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
7881
7882 * typeck.c (convert_sequence): Hide prototype.
7883 (common_type): Add explicit braces to avoid ambiguous `else'.
7884 (comp_target_types): Likewise.
7885 (build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
7886 (build_function_call_real): Add explicit braces to avoid ambiguous
7887 `else'.
7888 (convert_arguments): Initialize `called_thing' to 0.
7889 (convert_for_initialization): Initialize `savew' and `savee' to 0.
7890
7891 * typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
7892 (digest_init): Initialize `old_tail_contents' to NULL_TREE.
7893 (build_x_arrow): Likewise for `last_rval'.
7894
7895 * xref.c (GNU_xref_decl): Initialize `cls' to 0.
7896
7897 Sun Feb 1 12:45:34 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
7898
7899 * decl.c (init_decl_processing): Use set_sizetype.
7900 * decl2.c (sizetype): Don't declare.
7901 * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
7902 (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
7903 (build_component_addr, unary_complex_lvalue): Likewise.
7904 * rtti.c (expand_class_desc): Likewise.
7905 * class.c (get_vfield_offset): Likewise.
7906
7907 Thu Jan 29 10:39:30 1998 Mark Mitchell <mmitchell@usa.net>
7908
7909 * pt.c (convert_nontype_argument): Move check for is_overloaded_fn
7910 early to avoid bogus error. Handle overloaded function
7911 names provided as template arguments correctly.
7912 (coerce_template_parms): Don't mishandle overloaded functions when
7913 dealing with template template parameters.
7914 (lookup_template_class): Issue an error message, rather than
7915 crashing, when the TYPE_DECL provided is not a template type.
7916
7917 Wed Jan 28 23:14:44 1998 Jason Merrill <jason@yorick.cygnus.com>
7918
7919 * class.c (instantiate_type): Don't just return a known type if
7920 it's wrong.
7921
7922 Wed Jan 28 11:04:07 1998 Mark Mitchell <mmitchell@usa.net>
7923
7924 * class.c (instantiate_type): Remove handling of FUNCTION_DECL
7925 since that code could never be reached.
7926
7927 * error.c (dump_decl): Avoid aborting in the midst of printing an
7928 error message about an illegal template declaration.
7929
7930 * parse.y (structsp): Print an error message, rather than crashing,
7931 when a class-head does not name a class.
7932
7933 * pt.c (convert_nontype_argument): Allow REAL_TYPE and COMPLEX_TYPE
7934 template arguments as a g++ extension.
7935
7936 * cp-tree.def (ALIGNOF_EXPR): New tree code.
7937 * decl2.c (grok_alignof): If processing_template_decl, just store
7938 the expression.
7939 * typeck.c (c_alignof): Likewise.
7940 * decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
7941 * error.c (dump_expr): Likewise.
7942 * pt.c (tsubst_copy): Likewise.
7943 * tree.c (cp_tree_equal): Likewise.
7944 * pt.c (uses_template_parms): Correctly determine whether or not a
7945 SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
7946 folding can be done.
7947
7948 * cp-tree.h (grok_enum_decls): Remove type parameter.
7949 * decl.c (grok_enum_decls): Likewise.
7950 * decl2.c (grok_x_components): Call grok_enum_decls
7951 unconditionally, since it will do nothing if there is no
7952 current_local_enum. Use the new calling sequence.
7953 * pt.c (tsubst_enum): Use the new calling sequence for
7954 grok_enum_decls.
7955
7956 * decl.c (start_function): Make member functions of local classes
7957 in extern inline functions have comdat linkage here...
7958 (grokdeclarator): Rather than here.
7959
7960 Wed Jan 28 10:55:47 1998 Jason Merrill <jason@yorick.cygnus.com>
7961
7962 * pt.c (convert_nontype_argument): Use decl_constant_value.
7963
7964 Tue Jan 27 16:42:21 1998 Mark Mitchell <mmitchell@usa.net>
7965
7966 * call.c (add_template_candidate_real): New function.
7967 (add_template_candidate): Use it.
7968 (add_template_conv_candidate): Likewise.
7969 (joust): Pass extra argument to more_specialized.
7970 * class.c (instantiate_type): Handle a single FUNCTION_DECL.
7971 (is_local_class): Remove.
7972 (finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
7973 * cp-tree.h (is_local_class): Remove.
7974 (perform_array_to_pointer_conversion): Likewise.
7975 (finish_member_template_decl): Add.
7976 (check_explicit_specialization): Return a tree, not an int.
7977 (more_specialized): Take additional argument.
7978 (get_bindings): Likewise.
7979 (TI_PENDING_SPECIALIZATION_FLAG): New macro.
7980 * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
7981 (perform_array_to_pointer_conversion): Remove.
7982 * decl.c (saved_scope): Add processing_specialization,
7983 processing_explicit_instantiation fields.
7984 (maybe_push_to_top_level): Save them.
7985 (pop_from_top_level): Restore them.
7986 (grokfndecl): Use new return value from
7987 check_explicit_specialization.
7988 (start_decl): Don't check flag_guiding_decls before pushing
7989 decls.
7990 (cp_finish_decl): Remove previous (bogus) change.
7991 (grok_declarator): Use decl_function_context rather than
7992 is_local_class.
7993 * decl2.c (finish_file): Pass extra argument to get_bindings.
7994 (build_expr_from_tree): Let build_x_component_ref check
7995 validity of arguments rather than doing it here.
7996 * lex.c (cons_up_default_function): Remove code fooling with
7997 processing_specialization, processing_explicit_instantiation
7998 flags, as that is now done in {maybe_push_top,pop_from}_top_level.
7999 * method.c (build_overload_identifier): Mangle local classes in
8000 template functions correctly.
8001 * parse.y (finish_member_template_decl): Move to pt.c.
8002 * pt.c (finish_member_template_decl): Moved here from parse.y.
8003 (print_candidates): New function.
8004 (determine_specialization): Change interface. Properly look for
8005 most specialized versions of template candidates.
8006 (check_explicit_specialization): Fully process explicit
8007 instantiations.
8008 (push_template_decl): Avoid looking at CLASSTYPE fields in
8009 FUNCTION_DECLS.
8010 (determine_overloaded_function): Remove.
8011 (convert_nontype_argument): Change name from
8012 convert_nontype_parameter. Use determine_overloaded_function
8013 instead of instantiate_type.
8014 (mangle_class_name_for_template): Handle type contexts as well as
8015 function contexts.
8016 (classtype_mangled_name): Likewise.
8017 (lookup_template_class): Likewise.
8018 (tsubst): Likewise.
8019 (more_specialized): Take explict template arguments as a
8020 parameter.
8021 (most_specialized): Likewise.
8022 (get_bindings): Likewise. Check that return types match before
8023 proclaiming a function a match.
8024 (do_decl_instantiation): Remove code searching for function to
8025 instantiate; that is now done in check_explicit_specialization.
8026 (add_maybe_template): Pass extra argument to get_bindings.
8027 * tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
8028 implementation.
8029 * typeck.c (build_component_ref): Check for invalid arguments.
8030
8031 Tue Jan 27 01:44:02 1998 Jason Merrill <jason@yorick.cygnus.com>
8032
8033 * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that
8034 return_target and call_target are equivalent.
8035
8036 * pt.c (type_unification_real): Just accept function parms that
8037 don't use any template parms.
8038
8039 Sun Jan 25 03:30:00 1998 Jason Merrill <jason@yorick.cygnus.com>
8040
8041 * decl.c (cp_finish_decl): When bailing on a comdat variable, also
8042 unset DECL_NOT_REALLY_EXTERN.
8043
8044 * parse.y (typename_sub*): Fix std::.
8045
8046 Sat Jan 24 12:13:54 1998 Jason Merrill <jason@yorick.cygnus.com>
8047
8048 * error.c (dump_decl): Fix type default template args.
8049 (dump_type): Hand TEMPLATE_DECL off to dump_decl.
8050
8051 Fri Jan 23 18:34:37 1998 Mumit Khan <khan@xraylith.wisc.edu>
8052
8053 * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
8054 (file_name_nondirectory): Use.
8055
8056 Wed Jan 21 10:29:57 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
8057
8058 * pt.c (coerce_template_parms): Don't access elements of ARGLIST
8059 that are not really present. Substitute default arguments in
8060 template template arguments. Correctly convert TEMPLATE_DECL to
8061 TEMPLATE_TEMPLATE_PARM.
8062 (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM
8063 are no longer treated specially here.
8064 * parse.y (template_template_parm): Fix copy error.
8065 * decl.c (grokdeclarator): Warn about missing `typename' for nested
8066 type created from template template parameters.
8067 * parse.y (bad_parm): Likewise
8068
8069 * class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
8070 (push_nested_class): Likewise.
8071 * cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
8072 * cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
8073 (copy_template_template_parm): Declare.
8074 * decl.c (arg_looking_for_template): New variable.
8075 (lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
8076 Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
8077 node if arg_looking_for_template is nonzero.
8078 (pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
8079 (grok_op_properties, xref_tag, xref_basetypes): Likewise.
8080 (grokdeclarator): Handle TEMPLATE_DECL.
8081 * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
8082 * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
8083 (dump_type_prefix, dump_type_suffix) Handle TEMPLATE_TEMPLATE_PARM.
8084 (dump_decl): Handle unnamed template type parameters.
8085 Handle template template parameters.
8086 (dump_function_name): Handle template template parameters.
8087 * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef):
8088 Handle TEMPLATE_TEMPLATE_PARM.
8089 * method.c (build_template_template_parm_names): New function.
8090 (build_template_parm_names): Handle TEMPLATE_DECL.
8091 (build_overload_nested_name, build_overload_name):
8092 Handle TEMPLATE_TEMPLATE_PARM.
8093 * parse.y (maybe_identifier): New nonterminal.
8094 (template_type_parm): Use it.
8095 (template_template_parm, template_arg1): New nonterminal.
8096 (template_parm): Add template_template_parm rules.
8097 (template_arg): Set processing_template_arg.
8098 (template_arg1): Rules moved from template_arg.
8099 (primary, nonnested_type): Set arg_looking_for_template if we are
8100 processing template arguments.
8101 * pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
8102 (process_template_parm): Handle template template parameters.
8103 (coerce_template_parms, comp_template_args): Likewise.
8104 (mangle_class_name_for_template, lookup_template_class): Likewise.
8105 (uses_template_parms): Handle TEMPLATE_DECL and
8106 TEMPLATE_TEMPLATE_PARM.
8107 (current_template_args): Handle TEMPLATE_DECL.
8108 (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
8109 * search.c (dfs_walk, dfs_record_inheritance):
8110 Handle TEMPLATE_TEMPLATE_PARM.
8111 * tree.c (copy_template_template_parm): New function.
8112 (mapcar): Handle TEMPLATE_TEMPLATE_PARM.
8113 * typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
8114
8115 Mon Jan 19 22:40:03 1998 Mark Mitchell <mmitchell@usa.net>
8116
8117 * decl.c (start_decl): Don't allow duplicate definitions of static
8118 data members.
8119
8120 * call.c (build_user_type_conversion_1): Handle user-defined
8121 template conversion operators correctly.
8122
8123 * decl2.c (build_expr_from_tree): Issue an error message if the
8124 object in a COMPONENT_REF is a TEMPLATE_DECL.
8125
8126 * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
8127
8128 * class.c (is_local_class): New function.
8129 * cp-tree.h (is_local_class): Declare it.
8130 (last_tree): Likewise.
8131 (begin_tree): Likewise.
8132 (end_tree): Likewise.
8133 (lookup_template_class): Change prototype.
8134 * decl.c (cp_finish_decl): Check for NULL where necessary.
8135 Consider FUNCTION_DECLS to declare objects with top-level binding,
8136 when calling make_decl_rtl.
8137 (grokdeclarator): Give members of local classes internal linkage.
8138 (start_function): Remove declaration of last_tree.
8139 (finish_function): Set flag_keep_inline_functions around call to
8140 rest_of_compilation if we are processing a member function in a
8141 local class.
8142 (start_method): Call push_template_decl for member functions of
8143 local classes in template functions.
8144 * decl2.c (import_export_decl): Don't give external linkage to
8145 instantiations of templates with internal linkage.
8146 * parse.y (last_tree): Remove declaration.
8147 (template_type): Pass extra parameter to lookup_template_class.
8148 (self_template_type): Likewise.
8149 (structsp): Move call to reset_specialization into left_curly.
8150 (left_curly): Call reset_specialization, and begin_tree.
8151 * pt.c (saved_trees): New variable.
8152 (mangle_class_name_for_template): Change prototype. Use
8153 additional function context to name local classes in templates
8154 correctly.
8155 (classtype_mangled_name): Pass the context.
8156 (push_template_decl): Handle local classes and templates, and
8157 member functions for such classes.
8158 (convert_nontype_parameter): Fix handling of pointer-to-member
8159 constants.
8160 (lookup_template_class): Handle local classes in templates.
8161 (tsubst): Likewise. Don't assume that template instantiations
8162 have external linkage; pay attention to the template declaration.
8163 (mark_decl_instantiated): Likewise.
8164 (begin_tree): New function.
8165 (end_tree): Likewise.
8166
8167 * decl.c (xref_basetypes): Don't call complete_type for basetypes
8168 that involve template parameters; that can lead to infinite
8169 recursion unnecessarily.
8170
8171 * pt.c (register_specialization): Do not register specializations
8172 that aren't ready to be registered yet.
8173 (check_explicit_specialization): Handle explicit specialization of
8174 constructors and destructors.
8175 (build_template_decl): New function.
8176 (push_template_delc): Handle out-of-class specializations of
8177 member templates.
8178
8179 * pt.c (check_explicit_specialization): Set up the template
8180 information before registering the specialization.
8181 (coerce_template_parms): Fix thinko.
8182 (tsubst): Handle specializations of member templates correctly.
8183
8184 * class.c (finish_struct_methods): Remove calls to
8185 check_explicit_specialization from here.
8186 (finish_struct): And insert them here.
8187 * cp-tree.h (perform_qualification_conversions): New function.
8188 (perform_array_to_pointer_conversion): Likewise.
8189 (begin_explicit_instantiation): Likewise.
8190 (end_explicit_instantiation): Likewise.
8191 (determine_specialization): Renamed from
8192 determine_explicit_specialization.
8193 (comp_template_parms): New function.
8194 (processing_explicit_instantiation): New variable.
8195 * cvt.c (perform_qualification_conversions): New function.
8196 (perform_array_to_pointer_conversion): Likewise.
8197 * decl.c (duplicate_decls): Don't consider template functions
8198 alike unless they have the same parameters. Refine handling of
8199 instantiation/specialization mismatches.
8200 (start_decl): Don't call pushdecl for template specializations,
8201 since they don't affect overloading.
8202 (start_function): Likewise.
8203 (grokfndecl): Call check_explicit_specialization a little later.
8204 Don't call duplicate_decls for memberm template specializations.
8205 (grokdeclarator): Don't update template_count for classes that are
8206 themselves specializations. Remove use of `2' as parameter to
8207 grokfndecl since that value isn't used.
8208 * lex.c (cons_up_default_function): Save and restore
8209 processing_explicit_instantiation around calls to grokfield.
8210 * parse.y (finish_member_template_decl): New function.
8211 (component_decl_1): Use it.
8212 (fn.def2): Likewise.
8213 (template_arg_list_opt): New nonterminal.
8214 (template_type): Use it.
8215 (self_template_type): Likewise.
8216 (template_id): Likewise.
8217 (object_template_id): Likewise.
8218 (notype_template_declarator): Likwise.
8219 (begin_explicit_instantiation): Likewise.
8220 (end_explicit_instantiation): Likewise.
8221 (explicit_instantiation): Use them.
8222 * pt.c (coerce_template_parms): Add parameters.
8223 (processing_explicit_instantiation): New variable.
8224 (convert_nontype_parameter): New function.
8225 (determine_overloaded_function): Likewise.
8226 (begin_explicit_instantiation): Likewise.
8227 (end_explicit_instantiation): Likewise.
8228 (retrieve_specialization): Likewise.
8229 (register_specialization): Likewise.
8230 (processing_explicit_specialization): Removed.
8231 (determine_specialization): Handle specializations of member
8232 functions of template class instantiations.
8233 (check_explicit_specialization): Refine to conform to standard.
8234 (comp_template_parms): New function.
8235 (coerce_template_parms): Call convert_nontype_parameter.
8236 (tsubst): Refine handling of member templates. Use
8237 register_specialization.
8238 (instantiate_template): Use retrieve_specialization.
8239 (do_decl_instantiation): Likewise.
8240 (instantiate_decl): Likewise.
8241 (type_unification): Improve handling of explict template
8242 arguments.
8243 * tree.c (mapcar): Return error_mark_node, rather than aborting,
8244 on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
8245 * typeck.c (build_unary_op): Call determine_specialization, rather
8246 than determine_explicit_specialization.
8247
8248 Mon Jan 19 13:18:51 1998 Jason Merrill <jason@yorick.cygnus.com>
8249
8250 * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
8251
8252 Fri Jan 16 11:40:50 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
8253
8254 * error.c (dump_decl): For enum tags, output the tag, not its value.
8255
8256 1998-01-13 Brendan Kehoe <brendan@cygnus.com>
8257
8258 * decl.c (init_decl_processing): Only call init_rtti_processing
8259 FLAG_RTTI is set.
8260
8261 Mon Jan 12 01:35:18 1998 Jason Merrill <jason@yorick.cygnus.com>
8262
8263 * init.c (build_new_1): Split out from build_new.
8264 (build_new): Just return a NEW_EXPR.
8265 * expr.c (cplus_expand_expr): Handle NEW_EXPR.
8266
8267 * decl2.c (get_temp_regvar): Tweak.
8268
8269 * cp-tree.h (TREE_CALLS_NEW): Comment out.
8270 * class.c (resolves_to_fixed_type_p): Remove use.
8271 * method.c (build_opfncall): Likewise.
8272 * call.c (build_new_op): Likewise.
8273
8274 Wed Jan 7 23:47:13 1998 Jason Merrill <jason@yorick.cygnus.com>
8275
8276 * exception.cc (__eh_alloc, __eh_free): New fns.
8277 (__cp_push_exception, __cp_pop_exception): Use them.
8278 (__uncatch_exception): Call terminate here if no exception.
8279 * except.c (build_terminate_handler): New fn.
8280 (expand_start_catch_block): Use it.
8281 (expand_exception_blocks): Likewise.
8282 (alloc_eh_object): New fn.
8283 (expand_throw): Use it. Protect exception init with terminate.
8284 * typeck.c (build_modify_expr): Remove code that ignores trivial
8285 methods.
8286
8287 Mon Dec 22 11:36:27 1997 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
8288
8289 * call.c (add_builtin_candidate): Add default case in enumeration
8290 switch.
8291 (build_new_op): Likewise.
8292 (convert_like): Likewise.
8293 * cvt.c (build_expr_type_conversion): Likewise.
8294 * tree.c (real_lvalue_p): Likewise.
8295 (lvalue_p): Likewise.
8296 (cp_tree_equal): Likewise.
8297 * typeck.c (comptypes): Likewise.
8298 (build_component_ref): Likewise.
8299 (build_function_call_real): Likewise.
8300 (build_binary_op_nodefault): Likewise.
8301 (build_unary_op): Likewise.
8302 (build_modify_expr): Likewise.
8303 * typeck2.c (initializer_constant_valid_p): Likewise.
8304
8305 Sun Dec 21 15:59:00 1997 Nick Clifton <nickc@cygnus.com>
8306
8307 * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
8308
8309 Thu Dec 18 14:51:50 1997 Mark Mitchell <mmitchell@usa.net>
8310
8311 * pt.c (coerce_template_parms): Make sure to digest_init if
8312 possible.
8313
8314 * decl.c (duplicate_decls): Make the newdecl virtual if the
8315 olddecl was, just as is done with other attributes of olddecl.
8316
8317 Thu Dec 18 14:43:19 1997 Jason Merrill <jason@yorick.cygnus.com>
8318
8319 * typeck.c (unary_complex_lvalue): Ignore op0 when taking the
8320 address of an OFFSET_REF.
8321
8322 * cp-tree.def: Add AGGR_INIT_EXPR.
8323 * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
8324 AGGR_INIT_EXPR where appropriate.
8325 * expr.c (cplus_expand_expr): Likewise. Simplify.
8326
8327 * decl2.c (finish_file): Remove call to register_exception_table.
8328
8329 Wed Dec 17 17:08:52 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
8330
8331 * pt.c (instantiate_class_template): Don't do injection when
8332 processing_template_decl is true, as pollutes current_binding_level
8333 for base classes.
8334
8335 Wed Dec 17 21:17:39 1997 Peter Schmid <schmid@ltoi.iap.physik.tu-darmstadt.de>
8336
8337 * pt.c (maybe_fold_nontype_arg): Add prototype.
8338
8339 Tue Dec 16 10:31:20 1997 Jason Merrill <jason@yorick.cygnus.com>
8340
8341 * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
8342 * error.c (dump_expr): Likewise.
8343
8344 Mon Dec 15 12:22:04 1997 Jason Merrill <jason@yorick.cygnus.com>
8345
8346 * typeck.c (build_function_call_real): Remove "inline called before
8347 definition" pedwarn.
8348
8349 * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
8350
8351 Sun Dec 14 22:34:20 1997 Jason Merrill <jason@yorick.cygnus.com>
8352
8353 * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
8354
8355 * pt.c (type_unification_real): Change __null to type void* with
8356 a warning.
8357
8358 Sun Dec 14 20:38:35 1997 Mark Mitchell <mmitchell@usa.net>
8359
8360 * call.c (implicit_conversion): Don't call
8361 build_user_type_conversion_1 with a NULL expr, since it will
8362 crash.
8363
8364 * pt.c (unify): Don't try to unify array bounds if either array is
8365 unbounded.
8366
8367 Fri Dec 12 16:09:14 1997 Jason Merrill <jason@yorick.cygnus.com>
8368
8369 * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at):
8370 Replace extern decls with casts.
8371
8372 * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
8373 Update last_parm_cleanup_insn.
8374 (store_after_parms): Remove.
8375 * cp-tree.h: Adjust.
8376
8377 Thu Dec 11 22:18:37 1997 Jason Merrill <jason@yorick.cygnus.com>
8378
8379 * decl2.c (comdat_linkage): Also set DECL_COMDAT.
8380 (finish_file): Check DECL_COMDAT instead of weak|one_only.
8381 (import_export_vtable): Use make_decl_one_only instead of
8382 comdat_linkage for win32 tweak.
8383 (import_export_decl): Likewise.
8384 * pt.c (mark_decl_instantiated): Likewise.
8385
8386 * decl2.c (finish_file): Lose handling of templates in pending_statics.
8387
8388 Thu Dec 11 21:12:09 1997 Jason Merrill <jason@yorick.cygnus.com>
8389
8390 * decl2.c (finish_file): Lose call to expand_builtin_throw.
8391 * except.c (expand_builtin_throw): Remove.
8392 * cp-tree.h: Remove ptr_ptr_type_node.
8393 * decl.c: Likewise.
8394
8395 Thu Dec 11 20:43:33 1997 Teemu Torma <tot@trema.com>
8396
8397 * decl.c (ptr_ptr_type_node): Define.
8398 (init_decl_processing): Initialize it.
8399 * cp-tree.h: Declare it.
8400 * exception.cc (__cp_exception_info): Use __get_eh_info.
8401 (__cp_push_exception): Likewise.
8402 (__cp_pop_exception): Likewise.
8403
8404 From Scott Snyder <snyder@d0sgif.fnal.gov>:
8405 * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
8406 saved_pc.
8407 (init_exception_processing): Removed saved_pc initialization.
8408
8409 Wed Dec 10 11:04:45 1997 Jason Merrill <jason@yorick.cygnus.com>
8410
8411 * pt.c (instantiate_decl): Defer all templates but inline functions.
8412
8413 Mon Dec 8 23:17:13 1997 Jason Merrill <jason@yorick.cygnus.com>
8414
8415 * init.c (expand_vec_init): Don't fold a list of parameters.
8416
8417 * decl.c (copy_args_p): Handle copy elision for types with virtual
8418 bases.
8419 * call.c (build_over_call): Likewise.
8420
8421 Sun Dec 7 22:38:12 1997 Mark Mitchell <mmitchell@usa.net>
8422
8423 * pt.c (lookup_template_function): Copy the template arguments,
8424 not just the list containing them, to the permanent obstack.
8425
8426 Sun Dec 7 15:53:06 1997 Jason Merrill <jason@yorick.cygnus.com>
8427
8428 * except.c (expand_start_catch_block): suspend_momentary for the
8429 terminate handler.
8430
8431 * error.c (dump_decl): Handle LOOKUP_EXPR.
8432
8433 Sun Dec 7 15:45:07 1997 Mark Mitchell <mmitchell@usa.net>
8434
8435 * rtti.c (build_dynamic_cast): Copy the cast-to type to the
8436 permanent obstack if we are processing a template decl.
8437 * typeck.c (build_static_cast): Likewise.
8438 (build_const_cast): Likewise.
8439 (build_reinterpret_cast): Likewise.
8440
8441 * pt.c (coerce_template_parms): Coerce some expressions, even
8442 when processing_template_decl.
8443
8444 Sun Dec 7 01:46:33 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
8445
8446 * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
8447 handling of pointer difference expressions.
8448
8449 * typeck.c (comp_target_types): Comparison of function/method types
8450 is independent of nptrs.
8451
8452 Sun Dec 7 01:40:27 1997 Mark Mitchell <mmitchell@usa.net>
8453
8454 * pt.c (tsubst): Avoid creating pointer to reference and
8455 reference to reference types.
8456
8457 Sat Dec 6 01:29:37 1997 Jason Merrill <jason@yorick.cygnus.com>
8458
8459 * parse.y (do_id): New nonterminal.
8460 (template_id): Use it.
8461
8462 Fri Dec 5 01:17:34 1997 Jason Merrill <jason@yorick.cygnus.com>
8463
8464 * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
8465 * spew.c (yylex): Don't do_identifier here.
8466 * decl2.c (build_expr_from_tree): Revert last change.
8467
8468 * decl2.c (build_expr_from_tree): Expand the name for a method call.
8469 * parse.y (object_template_id): Don't try to take the DECL_NAME.
8470
8471 Wed Dec 3 20:02:39 1997 Jason Merrill <jason@yorick.cygnus.com>
8472
8473 * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
8474 alloc_expr.
8475 * call.c (build_op_delete_call): Adjust.
8476
8477 * except.c (expand_end_catch_block): Lose rethrow region.
8478 (expand_start_catch_block): Likewise.
8479 (expand_end_catch_block): Don't expand_leftover_cleanups.
8480
8481 Wed Dec 3 13:24:04 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
8482
8483 * pt.c (tsubst): Remove tree_cons call (places redundant info into
8484 DECL_TEMPLATE_INSTANTIATION).
8485
8486 Wed Dec 3 11:44:52 1997 Jason Merrill <jason@yorick.cygnus.com>
8487
8488 * tree.c (is_overloaded_fn): Handle getting a fn template.
8489 (really_overloaded_fn): Likewise.
8490 * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
8491 * pt.c (check_explicit_specialization): Tweak.
8492 (determine_explicit_specialization): Tweak.
8493
8494 * tree.c, cp-tree.h (get_target_expr): New fn.
8495
8496 Wed Dec 3 08:47:27 1997 Paul Eggert <eggert@twinsun.com>
8497
8498 * pt.c (check_explicit_specialization): Fix misspelling in
8499 diagnostic: `preceeded'.
8500 * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
8501 `conversiona'.
8502
8503 1997-12-02 Mark Mitchell <mmitchell@usa.net>
8504
8505 * pt.c (determine_explicit_specialization): Avoid an internal
8506 error for bad specializations.
8507
8508 * method.c (build_overload_value): Handle SCOPE_REF.
8509
8510 Tue Dec 2 19:18:50 1997 Mike Stump <mrs@wrs.com>
8511
8512 * class.c (prepare_fresh_vtable): Enable even more complex MI
8513 vtable names.
8514
8515 Tue Dec 2 01:37:19 1997 Jason Merrill <jason@yorick.cygnus.com>
8516
8517 * exception.cc (__check_eh_spec): Optimize a bit.
8518
8519 * exception.cc (__cp_pop_exception): Lose handler arg.
8520 * except.c (do_pop_exception): Likewise.
8521 (push_eh_cleanup): Let the cleanup mechanism supply the handler.
8522 (expand_end_catch_block): Likewise.
8523
8524 Fri Nov 28 01:58:14 1997 Jason Merrill <jason@yorick.cygnus.com>
8525
8526 * pt.c (check_explicit_specialization): Complain about using a
8527 template-id for a non-specialization.
8528
8529 Fri Nov 28 12:35:19 1997 Scott Christley <scottc@net-community.com>
8530
8531 * repo.c: Prototype rindex only if needed.
8532 * xref.c: Likewise.
8533
8534 Fri Nov 28 01:56:35 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
8535
8536 * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
8537
8538 Thu Nov 27 00:59:46 1997 Jason Merrill <jason@yorick.cygnus.com>
8539
8540 * typeck.c (build_const_cast): Handle references here instead of
8541 handing off to convert_to_reference.
8542
8543 * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
8544 TerminateFunctionCall.
8545 (init_exception_processing): Likewise. Terminate et al are now
8546 the fns, not ADDR_EXPRs.
8547 (various): Lose redundant assemble_external calls.
8548 (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
8549
8550 * cp-tree.h (struct lang_decl_flags): Add comdat.
8551 (DECL_COMDAT): New macro.
8552 * decl.c (duplicate_decls): Propagate it.
8553 (cp_finish_decl): Handle it.
8554 * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
8555
8556 * class.c: Remove static pending_hard_virtuals.
8557 (add_virtual_function): Take pointers to pending_virtuals
8558 and pending_hard_virtuals.
8559 (finish_struct_1): Pass them. Declare pending_hard_virtuals.
8560
8561 Wed Nov 26 20:28:49 1997 Jason Merrill <jason@yorick.cygnus.com>
8562
8563 * decl2.c (import_export_vtable): If we support one_only but not
8564 weak symbols, mark instantiated template vtables one_only.
8565 (import_export_decl): Likewise for tinfo functions.
8566 (finish_vtable_vardecl): Also write out vtables from explicitly
8567 instantiated template classes.
8568 * pt.c (mark_class_instantiated): Revert last change.
8569
8570 * except.c (expand_throw): Call mark_used on the destructor.
8571
8572 Wed Nov 26 15:13:48 1997 Jeffrey A Law (law@cygnus.com)
8573
8574 * lex.c (lang_init): Enable flag_exceptions by default if no
8575 command line switch was specified.
8576
8577 1997-11-26 Mark Mitchell <mmitchell@usa.net>
8578
8579 * pt.c (unify): Handle `void' template parameters in
8580 specializations.
8581
8582 Wed Nov 26 01:11:24 1997 Jason Merrill <jason@yorick.cygnus.com>
8583
8584 * rtti.c (build_dynamic_cast): Handle template case here.
8585 (build_dynamic_cast_1): Not here.
8586
8587 * typeck2.c (digest_init): Make copies where appropriate.
8588
8589 * decl2.c (delete_sanity): resolve_offset_ref.
8590
8591 * except.c: Call terminate without caching so many bits.
8592
8593 * except.c (expand_start_catch_block): Fix catching a reference
8594 to pointer.
8595
8596 Tue Nov 25 11:28:21 1997 Jason Merrill <jason@yorick.cygnus.com>
8597
8598 * init.c (build_new): Copy size to the saveable obstack.
8599
8600 * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
8601 TRY_CATCH_EXPR for now.
8602
8603 Mon Nov 24 12:15:55 1997 Jason Merrill <jason@yorick.cygnus.com>
8604
8605 * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
8606 has DECL_LANG_SPECIFIC.
8607
8608 * exception.cc (struct cp_eh_info): Add handlers field.
8609 (__cp_push_exception): Initialize it.
8610 (__cp_pop_exception): Decrement it. Don't pop unless it's 0.
8611 (__throw_bad_exception): Remove.
8612 * except.c (call_eh_info): Add handlers field.
8613 (get_eh_handlers): New fn.
8614 (push_eh_cleanup): Increment handlers.
8615
8616 Fri Nov 21 12:22:07 1997 Jason Merrill <jason@yorick.cygnus.com>
8617
8618 * except.c (expand_start_eh_spec): Use the try/catch code.
8619 (expand_end_eh_spec): Likewise. Call __check_eh_spec instead of
8620 doing everything inline.
8621 (init_exception_processing): throw_type_match now takes
8622 const void pointers.
8623 * exception.cc (__check_eh_spec): New fn.
8624 * inc/exception: Neither terminate nor unexpected return.
8625 * decl.c: Make const_ptr_type_node public.
8626 * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
8627
8628 * except.c (expand_start_catch_block): We only need the rethrow
8629 region for non-sjlj exceptions.
8630 (expand_end_catch_block): Likewise. Use outer_context_label_stack.
8631
8632 Thu Nov 20 14:40:17 1997 Jason Merrill <jason@yorick.cygnus.com>
8633
8634 * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
8635 (various.o): Likewise.
8636 * inc/new: Add placement deletes. Add throw specs for default new.
8637 * new.cc (set_new_handler): Move here from libgcc2.
8638 * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
8639 (new): Move from libgcc2. Throw bad_alloc.
8640 * new2.cc: Move the rest of the op news and op deletes from libgcc2.
8641 * decl.c (init_decl_processing): Update exception specs on new and
8642 delete.
8643
8644 * method.c (build_decl_overload_real): Don't mess with global
8645 placement delete.
8646
8647 * init.c (build_new): Check for null throw spec, not nothrow_t.
8648
8649 * decl.c (duplicate_decls): Don't complain about different exceptions
8650 from an internal declaration.
8651
8652 * call.c (build_op_delete_call): Fix check for member fns again.
8653
8654 * decl2.c (import_export_decl): Interface hackery affects
8655 virtual synthesized methods.
8656
8657 Wed Nov 19 18:24:14 1997 Jason Merrill <jason@yorick.cygnus.com>
8658
8659 * decl.c (start_decl): Don't just complain about a mismatched
8660 scope, fix it.
8661
8662 * decl.c (make_implicit_typename): Handle case where t is not
8663 actually from context.
8664 * tree.c (get_type_decl): Lose identifier case.
8665 * spew.c (yylex): Lose useless call to identifier_typedecl_value.
8666 * parse.y (nonnested_type): Just use lookup_name.
8667 (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
8668
8669 Wed Nov 19 11:45:07 1997 Michael Tiemann <tiemann@axon.cygnus.com>
8670
8671 * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
8672 T was built in C language context (for example, by
8673 output_func_start_profiler).
8674
8675 Wed Nov 19 10:39:27 1997 Jason Merrill <jason@yorick.cygnus.com>
8676
8677 * decl.c (make_implicit_typename): New fn.
8678 (lookup_name_real): Use it. Use current_class_type as the context.
8679
8680 Mon Nov 17 23:42:03 1997 Bruno Haible <haible@ilog.fr>
8681
8682 * pt.c (do_poplevel): Don't prohibit jumps into this contour.
8683
8684 Mon Nov 17 02:01:28 1997 Jason Merrill <jason@yorick.cygnus.com>
8685
8686 * friend.c (do_friend): Warn about non-template friends in templates.
8687
8688 * call.c (build_op_delete_call): Fix handling of inherited delete.
8689
8690 * search.c (dfs_record_inheritance): Ignore template type parms.
8691
8692 Sat Nov 15 00:30:51 1997 Jason Merrill <jason@yorick.cygnus.com>
8693
8694 * call.c (build_new_op): Fix copy error.
8695 (build_op_new_call): New fn.
8696 (build_op_delete_call): New fn.
8697 * cp-tree.h: Declare them.
8698 * init.c (build_new): Use them. Support placement delete.
8699 (build_x_delete): Use build_op_delete_call.
8700 (build_delete): Likewise.
8701 * decl2.c (delete_sanity): Likewise.
8702 (coerce_delete_type): Don't complain about placement delete.
8703
8704 Thu Nov 13 01:52:36 1997 Jason Merrill <jason@yorick.cygnus.com>
8705
8706 * call.c (build_new_function_call): Remove unused 'obj' parm.
8707 * cp-tree.h, typeck.c: Adjust.
8708
8709 * init.c (build_new): Make the cleanup last longer.
8710 (expand_vec_init): Call do_pending_stack_adjust.
8711
8712 Wed Nov 12 11:04:33 1997 Jason Merrill <jason@yorick.cygnus.com>
8713
8714 * pt.c (do_type_instantiation): Fix typo.
8715 (mark_class_instantiated): If we support one_only but not weak
8716 symbols, don't mark this as known.
8717
8718 * init.c (build_new): Handle vec delete in EH cleanup.
8719
8720 Wed Nov 12 08:11:55 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
8721
8722 * call.c (build_method_call): Call complete_type before checking
8723 for destructor.
8724
8725 Sun Nov 9 01:29:55 1997 Jim Wilson (wilson@cygnus.com)
8726
8727 * decl.c (add_block_current_level): Delete.
8728 * init.c (build_vec_delete_1): Delete build_block and
8729 add_block_current_level calls.
8730
8731 Wed Nov 12 00:48:16 1997 Jason Merrill <jason@yorick.cygnus.com>
8732
8733 * init.c (build_new): Handle freeing allocated memory when the
8734 constructor throws.
8735
8736 * call.c (build_new_method_call): Fix flags arg.
8737
8738 * pt.c (do_type_instantiation): Don't try to instantiate
8739 member templates.
8740 (mark_decl_instantiated): If we support one_only but not
8741 weak symbols, mark this one_only.
8742 * decl2.c (import_export_vtable): Don't defer handling of vtables
8743 if MULTIPLE_SYMBOL_SPACES.
8744
8745 Tue Nov 11 12:02:12 1997 Jason Merrill <jason@yorick.cygnus.com>
8746
8747 * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
8748
8749 Tue Nov 11 02:53:44 1997 Jason Merrill <jason@lasher.cygnus.com>
8750
8751 * except.c (do_pop_exception): Return a value.
8752
8753 Mon Nov 10 20:25:31 1997 Jason Merrill <jason@yorick.cygnus.com>
8754
8755 * call.c (build_new_method_call): Handle getting a
8756 TEMPLATE_ID_EXPR around a TEMPLATE_DECL. Don't look for a field
8757 if we got template parms.
8758 * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
8759 not just the args.
8760 * decl2.c (build_expr_from_tree): Tweak last change.
8761 * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
8762 (maybe_fold_nontype_arg): Split out from tsubst_copy.
8763 * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
8764
8765 Mon Nov 10 20:08:38 1997 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
8766
8767 * pt.c (tsubst_copy): Handle explicit template arguments in
8768 function calls.
8769 * typeck.c (build_x_function_call): Likewise.
8770 * decl2.c (build_expr_from_tree): Lookup function name if it
8771 hasn't been done.
8772
8773 * pt.c (tsubst): Instantiate template functions properly when
8774 template parameter does not appear in function arguments and return
8775 type.
8776 (comp_template_args): Handle member templates required by tsubst.
8777
8778 Mon Nov 10 20:08:38 1997 Jason Merrill <jason@yorick.cygnus.com>
8779
8780 * decl.c (grokdeclarator): Tweak conditions for pedwarn in
8781 previous change.
8782
8783 Mon Nov 10 20:08:29 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
8784
8785 * pt.c (coerce_template_parms): Tweak error message.
8786
8787 * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
8788 return type defaults to `int', even if there are storage-class
8789 specifiers.
8790
8791 Mon Nov 10 03:04:20 1997 Jason Merrill <jason@yorick.cygnus.com>
8792
8793 Complete nested exception support.
8794 * except.c (do_pop_exception): Split out...
8795 (push_eh_cleanup): From here. Handle the EH region by hand.
8796 (expand_start_catch_block): Add a new level for the catch parm.
8797 Move the rethrow region outside the two cleanup regions.
8798 Protect the initializer for the catch parm with terminate.
8799 (expand_end_catch_block): Likewise. End the region for the eh_cleanup.
8800 * exception.cc (__cp_pop_exception): Now takes two parms. Handle
8801 popping off the middle of the stack.
8802 * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR,
8803 WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
8804 (build_cplus_new): Only wrap CALL_EXPRs.
8805 * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around
8806 the constructor call.
8807
8808 Sun Nov 9 18:00:26 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
8809
8810 * Make-lang.in (c++.distdir): Make inc subdirectory.
8811
8812 Fri Nov 7 11:57:28 1997 Jason Merrill <jason@yorick.cygnus.com>
8813
8814 * decl2.c (finish_file): Put back some code.
8815
8816 Thu Nov 6 11:28:14 1997 Jason Merrill <jason@yorick.cygnus.com>
8817
8818 * decl2.c (finish_file): Remove redundant code.
8819 * method.c (emit_thunk): Don't let the backend defer generic thunks.
8820
8821 Wed Nov 5 23:52:50 1997 Jason Merrill <jason@yorick.cygnus.com>
8822
8823 * except.c (call_eh_info): Split out...
8824 (push_eh_info): From here.
8825 (expand_builtin_throw): Use it.
8826 (expand_start_catch_block): Move region start back.
8827
8828 Tue Nov 4 13:45:10 1997 Doug Evans <devans@canuck.cygnus.com>
8829
8830 * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
8831 (real_yylex): Record wide strings using target endianness, not host.
8832
8833 1997-11-03 Brendan Kehoe <brendan@lisa.cygnus.com>
8834
8835 * repo.c (rindex): Add decl unconditionally.
8836 (get_base_filename, open_repo_file): Don't cast rindex.
8837 * xref.c (rindex): Add decl unconditionally.
8838 (index): Remove unused decl.
8839 (open_xref_file): Don't cast rindex.
8840
8841 Sun Nov 2 15:04:12 1997 Jason Merrill <jason@yorick.cygnus.com>
8842
8843 * class.c (build_vbase_path): Propagate the result type properly.
8844
8845 1997-11-01 Brendan Kehoe <brendan@lisa.cygnus.com>
8846
8847 * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
8848 remaining use of saved_throw_type with a call to get_eh_type.
8849
8850 1997-10-31 Brendan Kehoe <brendan@lisa.cygnus.com>
8851
8852 * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
8853 (file_name_nondirectory): New function, doing the same as the macro.
8854 (set_typedecl_interface_info): Use it instead of the macro.
8855 (check_newline): Likewise.
8856 (handle_cp_pragma): Likewise.
8857
8858 * repo.c (get_base_filename): Cast result of rindex to char*.
8859 (open_repo_file): Likewise.
8860 * xref.c (open_xref_file): Likewise.
8861 * error.c (dump_char): Make its arg int, not char.
8862
8863 * except.c (push_eh_info): Pass the number of fields - 1 down, not
8864 the exact number of fields.
8865
8866 Fri Oct 31 01:47:57 1997 Jason Merrill <jason@yorick.cygnus.com>
8867
8868 Support for nested exceptions.
8869 * tinfo2.cc (__is_pointer): New fn.
8870 * exception.cc (struct cp_eh_info): Define.
8871 (__cp_exception_info, __uncatch_exception): New fns.
8872 (__cp_push_exception, __cp_pop_exception): New fns.
8873 * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
8874 Lose empty_fndecl.
8875 (init_exception_processing): Likewise. __eh_pc is now external.
8876 (push_eh_info): New fn.
8877 (get_eh_{info,value,type,caught}): New fns.
8878 (push_eh_cleanup): Just call __cp_pop_exception.
8879 (expand_start_catch_block): Use push_eh_info. Start the eh region
8880 sooner.
8881 (expand_end_eh_spec): Use push_eh_info.
8882 (expand_throw): Call __cp_push_exception to set up the exception info.
8883 Just pass the destructor or 0 as the cleanup. Call __uncatch_exception
8884 when we rethrow.
8885 (expand_builtin_throw): Don't refer to empty_fndecl.
8886
8887 Thu Oct 23 02:01:30 1997 Jason Merrill <jason@yorick.cygnus.com>
8888
8889 * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
8890
8891 1997-10-22 Brendan Kehoe <brendan@cygnus.com>
8892
8893 * method.c (build_template_parm_names, build_decl_overload_real):
8894 Add static to definitions.
8895 * pt.c (add_to_template_args, note_template_header,
8896 processing_explicit_specialization, type_unification_real): Likewise.
8897 ({determine,check}_explicit_specialization): Use a single string for
8898 error messages.
8899
8900 Mon Oct 20 12:06:34 1997 Jason Merrill <jason@yorick.cygnus.com>
8901
8902 * except.c (expand_exception_blocks): Call do_pending_stack_adjust.
8903 (expand_end_catch_block): Likewise.
8904 (expand_end_eh_spec): Likewise.
8905
8906 Mon Oct 20 11:44:20 1997 Mark Mitchell <mmitchell@usa.net>
8907
8908 * decl.c (duplicate_decls): Handle template specializations
8909 correctly.
8910 * error.c (dump_function_name): Fix printing of specializations of
8911 member functions that are not member templates.
8912 * cp-tree.h (processing_specialization): Make global.
8913 * pt.c (processing_specialization): Likewise.
8914 * lex.c (cons_up_default_function): Save and restore
8915 processing_specialization to avoid confusion.
8916
8917 Mon Oct 20 10:52:22 1997 Jason Merrill <jason@yorick.cygnus.com>
8918
8919 * decl.c (init_decl_processing): Give null_node unknown* type.
8920 * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
8921 (common_type): Likewise.
8922 * error.c (args_as_string): Recognize null_node.
8923
8924 Sun Oct 19 09:13:01 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
8925
8926 * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
8927 (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
8928
8929 * decl.c (init_decl_processing): Call using_eh_for_cleanups.
8930
8931 * Make-lang.in (g++): Include prefix.o.
8932
8933 Thu Oct 16 15:31:09 1997 Judy Goldberg <judygold@sanwafp.com>
8934
8935 * pt.c (determine_explicit_specialization): Initialize "dummy"
8936 to keep Purify quiet.
8937
8938 Thu Oct 16 00:14:48 1997 Jason Merrill <jason@yorick.cygnus.com>
8939
8940 * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
8941 (build_overload_int): Not here.
8942
8943 Wed Oct 15 00:35:28 1997 Mike Stump <mrs@wrs.com>
8944
8945 * class.c (build_type_pathname): Remove.
8946 (prepare_fresh_vtable): Fix problem with complex MI vtable names.
8947
8948 1997-10-14 Brendan Kehoe <brendan@lisa.cygnus.com>
8949
8950 * parse.y (unary_expr): Give a pedwarn if someone tries to use the
8951 &&label GNU extension.
8952
8953 Tue Oct 14 12:01:00 1997 Mark Mitchell <mmitchell@usa.net>
8954
8955 * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
8956 so as to avoid incorrect manglings.
8957 * method.c (build_decl_overload_real): Don't mangle return types
8958 for constructors.
8959
8960 Tue Oct 14 11:46:14 1997 Jason Merrill <jason@yorick.cygnus.com>
8961
8962 * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
8963 scratch_tree_cons): Define as macros for now.
8964 * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c,
8965 lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
8966 typeck2.c: Use them and the expression_obstack variants.
8967
8968 Mon Oct 13 17:41:26 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
8969
8970 * decl.c (store_return_init): Allow classes with explicit ctors to
8971 be used with the named return values extension.
8972
8973 Fri Oct 10 12:21:11 1997 Jason Merrill <jason@yorick.cygnus.com>
8974
8975 * pt.c (instantiate_decl): Fix previous change.
8976
8977 Thu Oct 9 12:08:21 1997 Jason Merrill <jason@yorick.cygnus.com>
8978
8979 * pt.c (tsubst): Fix thinko.
8980 (instantiate_decl): Really use the original template.
8981
8982 * call.c (build_new_method_call): Use simple constructor_name for
8983 error messages.
8984
8985 Wed Oct 8 22:44:42 1997 Jeffrey A Law (law@cygnus.com)
8986
8987 * method.c (build_underscore_int): Don't use ANSI specific
8988 features.
8989
8990 Wed Oct 8 00:18:22 1997 Jason Merrill <jason@yorick.cygnus.com>
8991
8992 * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
8993 for our key method; it might have been inlined by -O3.
8994
8995 Tue Oct 7 23:00:12 1997 Mark Mitchell <mmitchell@usa.net>
8996
8997 * decl.c (make_typename_type): Do not try to call lookup_field for
8998 non-aggregate types.
8999
9000 Tue Oct 7 22:52:10 1997 Jason Merrill <jason@yorick.cygnus.com>
9001
9002 * typeck.c (build_reinterpret_cast): Tweak.
9003
9004 Tue Oct 7 22:45:31 1997 Alexandre Oliva <oliva@dcc.unicamp.br>
9005
9006 * typeck.c (build_reinterpret_cast): Converting a void pointer
9007 to function pointer with a reinterpret_cast produces a warning
9008 if -pedantic is issued.
9009
9010 Tue Oct 7 22:43:43 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
9011
9012 * typeck.c (c_expand_return): Don't warn about returning a
9013 reference-type variable as a reference.
9014
9015 Tue Oct 7 21:11:22 1997 Jason Merrill <jason@yorick.cygnus.com>
9016
9017 * method.c (build_static_name): Fix typo.
9018
9019 1997-10-07 Brendan Kehoe <brendan@lisa.cygnus.com>
9020
9021 * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
9022 OLDDECL before we try to do DECL_USE_TEMPLATE.
9023
9024 Tue Oct 7 00:48:36 1997 Jason Merrill <jason@yorick.cygnus.com>
9025
9026 * decl.c (duplicate_decls): Don't warn about template instances.
9027
9028 * typeck.c (mark_addressable): Lose ancient code that unsets
9029 DECL_EXTERNAL.
9030
9031 * pt.c (do_decl_instantiation): Lose support for instantiating
9032 non-templates.
9033
9034 * call.c (build_new_function_call): Fix handling of null explicit
9035 template args.
9036 (build_new_method_call): Likewise.
9037
9038 Mon Oct 6 23:44:34 1997 Mark Mitchell <mmitchell@usa.net>
9039
9040 * method.c (build_underscore_int): Fix typo.
9041
9042 1997-10-06 Brendan Kehoe <brendan@lisa.cygnus.com>
9043
9044 * tree.c (print_lang_statistics): #if 0 call to
9045 print_inline_obstack_statistics until its definition is checked in.
9046
9047 Mon Oct 6 09:27:29 1997 Jason Merrill <jason@yorick.cygnus.com>
9048
9049 * decl2.c (finish_file): Move dump_tree_statistics to end.
9050
9051 * pt.c (instantiate_decl): Look for the original template.
9052 (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
9053 of member templates.
9054
9055 Wed Oct 1 08:41:38 1997 Jason Merrill <jason@yorick.cygnus.com>
9056
9057 * Makefile.in (g++FAQ.*): New rules.
9058 (CONFLICTS): Update.
9059 * g++FAQ.texi: Moved from libg++.
9060
9061 * parse.y (PFUNCNAME): Only specify the type once.
9062
9063 1997-10-01 Brendan Kehoe <brendan@lasher.cygnus.com>
9064
9065 * lex.c (real_yylex): Clean up the code to fully behave the way
9066 the c-lex.c parser does for complex and real numbers.
9067
9068 Tue Sep 30 08:51:36 1997 Jason Merrill <jason@yorick.cygnus.com>
9069
9070 * method.c (build_decl_overload_real): Reformat.
9071
9072 Tue Sep 30 00:18:26 1997 Jason Merrill <jason@yorick.cygnus.com>
9073
9074 * method.c (synthesize_method): If at_eof, determine our linkage.
9075
9076 1997-09-29 Paul Eggert <eggert@twinsun.com>
9077
9078 * lex.c (real_yylex): Treat `$' just like `_', except issue a
9079 diagnostic if !dollars_in_ident or if pedantic.
9080
9081 * lang-specs.h (@c++): -ansi no longer implies -$.
9082
9083 * decl2.c (lang_decode_option):
9084 -traditional and -ansi now do not mess with
9085 dollars_in_ident.
9086
9087 Mon Sep 29 19:57:51 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
9088
9089 * Makefile.in (parse.o, decl.o): Also depend on
9090 $(srcdir)/../except.h $(srcdir)/../output.h.
9091 (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
9092 $(srcdir)/../except.h $(srcdir)/../output.h.
9093 (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
9094 ../insn-codes.h.
9095
9096 * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
9097
9098 * expr.c (cplus_expand_expr): Make it static.
9099
9100 * decl2.c, init.c, typeck.c: Include "expr.h".
9101 (expand_expr): Use proper values when calling the function.
9102
9103 Mon Sep 29 11:05:54 1997 Alexandre Oliva <oliva@dcc.unicamp.br>
9104
9105 * lang-options.h: New -Wold-style-cast flag.
9106 * cp-tree.h (warn_old_style_cast): New variable.
9107 * decl2.c (warn_old_style_cast): Likewise..
9108 (lang_decode_option): Support -Wold-style-cast.
9109 (reparse_absdcl_as_casts): Produce old-style-cast warning.
9110
9111 Mon Sep 29 09:20:53 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
9112
9113 * decl.c (cp_finish_decl): Allow expand_aggr_init to set
9114 TREE_USED, reset value based on already_used.
9115
9116 * init.c (expand_member_init): Revert change.
9117
9118 Mon Sep 29 08:57:53 1997 Jason Merrill <jason@yorick.cygnus.com>
9119
9120 * cp-tree.h, decl.c, decl2.c, pt.c:
9121 Lose DECL_C_STATIC and DECL_PUBLIC. Don't pretend statics are public.
9122
9123 * decl2.c (lang_decode_option): Add missing ;.
9124
9125 Sat Sep 27 16:22:48 1997 Jason Merrill <jason@yorick.cygnus.com>
9126
9127 * friend.c (do_friend): Disable injection for all template-derived
9128 decls.
9129 * decl2.c (lang_decode_option): Handle -fguiding-decls.
9130 * parse.y (notype_template_declarator): New nonterminal.
9131 (direct_notype_declarator): Use it.
9132 (complex_direct_notype_declarator): Likewise.
9133 (object_template_id): Accept any kind of identifier after TEMPLATE.
9134 (notype_qualified_id): Don't add template declarators here.
9135
9136 Sat Sep 27 16:21:58 1997 Mark Mitchell <mmitchell@usa.net>
9137 <<<<<<< ChangeLog
9138
9139 * call.c (add_template_candidate): Add explicit_targs parameter.
9140 (build_scoped_method_call): Use it.
9141 (build_overload_call_real): Likewise.
9142 (build_user_type_conversion_1): Likewise.
9143 (build_new_function_call): Likewise.
9144 (build_object_call): Likewise.
9145 (build_new_op): Likewise.
9146 (build_new_method_call): Likewise.
9147 (build_new_function_call): Handle TEMPLATE_ID_EXPR.
9148 (build_new_method_call): Likewise.
9149
9150 * class.c (finish_struct_methods): Add specialization pass to
9151 determine which methods were specializing which other methods.
9152 (instantiate_type): Handle TEMPLATE_ID_EXPR.
9153 =======
9154
9155 * call.c (add_template_candidate): Add explicit_targs parameter.
9156 (build_scoped_method_call): Use it.
9157 (build_overload_call_real): Likewise.
9158 (build_user_type_conversion_1): Likewise.
9159 (build_new_function_call): Likewise.
9160 (build_object_call): Likewise.
9161 (build_new_op): Likewise.
9162 (build_new_method_call): Likewise.
9163 (build_new_function_call): Handle TEMPLATE_ID_EXPR.
9164 (build_new_method_call): Likewise.
9165 >>>>>>> 1.988
9166
9167 <<<<<<< ChangeLog
9168 * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
9169 =======
9170 * class.c (finish_struct_methods): Add specialization pass to
9171 determine which methods were specializing which other methods.
9172 (instantiate_type): Handle TEMPLATE_ID_EXPR.
9173 >>>>>>> 1.988
9174
9175 <<<<<<< ChangeLog
9176 * cp-tree.h (name_mangling_version): New variable.
9177 =======
9178 * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
9179
9180 * cp-tree.h (name_mangling_version): New variable.
9181 >>>>>>> 1.988
9182 (flag_guiding_decls): Likewise.
9183 <<<<<<< ChangeLog
9184 (build_template_decl_overload): New function.
9185 (begin_specialization): Likewise.
9186 (reset_specialization): Likewise.
9187 (end_specialization): Likewise.
9188 (determine_explicit_specialization): Likewise.
9189 (check_explicit_specialization): Likewise.
9190 (lookup_template_function): Likewise.
9191 (fn_type_unification): Add explicit_targs parameter.
9192 (type_unification): Likewise.
9193
9194 * decl.c (duplicate_decls): Add smarts for explicit
9195 specializations.
9196 (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
9197 specializations.
9198 (grokfndecl): Call check_explicit_specialization.
9199
9200 * decl2.c (lang_decode_option): Handle -fname-mangling-version.
9201 (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
9202 (check_classfn): Handle specializations.
9203 =======
9204 (build_template_decl_overload): New function.
9205 (begin_specialization): Likewise.
9206 (reset_specialization): Likewise.
9207 (end_specialization): Likewise.
9208 (determine_explicit_specialization): Likewise.
9209 (check_explicit_specialization): Likewise.
9210 (lookup_template_function): Likewise.
9211 (fn_type_unification): Add explicit_targs parameter.
9212 (type_unification): Likewise.
9213
9214 * decl.c (duplicate_decls): Add smarts for explicit
9215 specializations.
9216 (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
9217 specializations.
9218 (grokfndecl): Call check_explicit_specialization.
9219
9220 * decl2.c (lang_decode_option): Handle -fname-mangling-version.
9221 (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
9222 (check_classfn): Handle specializations.
9223 >>>>>>> 1.988
9224
9225 <<<<<<< ChangeLog
9226 * error.c (dump_function_name): Print specialization arguments.
9227 =======
9228 * error.c (dump_function_name): Print specialization arguments.
9229 >>>>>>> 1.988
9230
9231 <<<<<<< ChangeLog
9232 * friend.c (do_friend): Don't call pushdecl for template
9233 instantiations.
9234 =======
9235 * friend.c (do_friend): Don't call pushdecl for template
9236 instantiations.
9237 >>>>>>> 1.988
9238
9239 <<<<<<< ChangeLog
9240 * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
9241
9242 * lang-options.h: Add -fname-mangling-version, -fguiding-decls,
9243 =======
9244 * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
9245
9246 * lang-options.h: Add -fname-mangling-version, -fguiding-decls,
9247 >>>>>>> 1.988
9248 and -fno-guiding-decls.
9249 <<<<<<< ChangeLog
9250
9251 * lex.c (identifier_type): Return PFUNCNAME for template function
9252 names.
9253 =======
9254
9255 * lex.c (identifier_type): Return PFUNCNAME for template function
9256 names.
9257 >>>>>>> 1.988
9258
9259 <<<<<<< ChangeLog
9260 * method.c (build_decl_overload_real): New function.
9261 (build_template_parm_names): New function.
9262 (build_overload_identifier): Use it.
9263 (build_underscore_int): New function.
9264 (build_overload_int): Use it. Add levels for template
9265 parameters.
9266 (build_overload_name): Likewise. Also, handle TYPENAME_TYPEs.
9267 (build_overload_nested_names): Handle template type parameters.
9268 (build_template_decl_overload): New function.
9269
9270 * parse.y (YYSTYPE): New ntype member.
9271 (nested_name_specifier): Use it.
9272 (nested_name_specifier_1): Likewise.
9273 (PFUNCNAME): New token.
9274 (template_id, object_template_id): New non-terminals.
9275 (template_parm_list): Note specializations.
9276 (template_def): Likewise.
9277 (structsp): Likewise.
9278 (fn.def2): Handle member template specializations.
9279 (component_decl_1): Likewise.
9280 (direct_notype_declarator): Handle template-ids.
9281 (component_decl_1): Likewise.
9282 (direct_notype_declarator): Handle template-ids.
9283 (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
9284
9285 * pt.c (processing_specializations): New variable.
9286 (template_header_count): Likewise.
9287 (type_unification_real): New function.
9288 (processing_explicit_specialization): Likewise.
9289 (note_template_header): Likewise.
9290 (is_member_template): Handle specializations.
9291 (end_template_decl): Call reset_specialization.
9292 (push_template_decl): Handle member template specializations.
9293 (tsubst): Likewise.
9294 (tsubst_copy): Handle TEMPLATE_ID_EXPR.
9295 (instantiate_template): Handle specializations.
9296 (instantiate_decl): Likewise.
9297 (fn_type_unification): Handle explicit_targs.
9298 (type_unification): Likewise. Allow incomplete unification
9299 without an error message, if allow_incomplete.
9300 (get_bindings): Use new calling sequence for fn_type_unification.
9301
9302 * spew.c (yylex): Handle PFUNCNAME.
9303
9304 * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
9305 (really_overloaded_fn): Likewise.
9306 (get_first_fn): Handle function templates.
9307
9308 * typeck.c (build_x_function_call): Use really_overloaded_fn.
9309 Handle TEMPLATE_ID_EXPR.
9310 (build_x_unary_op): Likewise.
9311 (build_unary_op): Likewise.
9312 (mark_addressable): Templates whose address is taken are marked
9313 as used.
9314
9315 =======
9316 * method.c (build_decl_overload_real): New function.
9317 (build_template_parm_names): New function.
9318 (build_overload_identifier): Use it.
9319 (build_underscore_int): New function.
9320 (build_overload_int): Use it. Add levels for template
9321 parameters.
9322 (build_overload_name): Likewise. Also, handle TYPENAME_TYPEs.
9323 (build_overload_nested_names): Handle template type parameters.
9324 (build_template_decl_overload): New function.
9325
9326 * parse.y (YYSTYPE): New ntype member.
9327 (nested_name_specifier): Use it.
9328 (nested_name_specifier_1): Likewise.
9329 (PFUNCNAME): New token.
9330 (template_id, object_template_id): New non-terminals.
9331 (template_parm_list): Note specializations.
9332 (template_def): Likewise.
9333 (structsp): Likewise.
9334 (fn.def2): Handle member template specializations.
9335 (component_decl_1): Likewise.
9336 (direct_notype_declarator): Handle template-ids.
9337 (component_decl_1): Likewise.
9338 (direct_notype_declarator): Handle template-ids.
9339 (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
9340
9341 * pt.c (processing_specializations): New variable.
9342 (template_header_count): Likewise.
9343 (type_unification_real): New function.
9344 (processing_explicit_specialization): Likewise.
9345 (note_template_header): Likewise.
9346 (is_member_template): Handle specializations.
9347 (end_template_decl): Call reset_specialization.
9348 (push_template_decl): Handle member template specializations.
9349 (tsubst): Likewise.
9350 (tsubst_copy): Handle TEMPLATE_ID_EXPR.
9351 (instantiate_template): Handle specializations.
9352 (instantiate_decl): Likewise.
9353 (fn_type_unification): Handle explicit_targs.
9354 (type_unification): Likewise. Allow incomplete unification
9355 without an error message, if allow_incomplete.
9356 (get_bindings): Use new calling sequence for fn_type_unification.
9357
9358 * spew.c (yylex): Handle PFUNCNAME.
9359
9360 * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
9361 (really_overloaded_fn): Likewise.
9362 (get_first_fn): Handle function templates.
9363
9364 * typeck.c (build_x_function_call): Use really_overloaded_fn.
9365 Handle TEMPLATE_ID_EXPR.
9366 (build_x_unary_op): Likewise.
9367 (build_unary_op): Likewise.
9368 (mark_addressable): Templates whose address is taken are marked
9369 as used.
9370
9371 >>>>>>> 1.988
9372 1997-09-25 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
9373
9374 * decl.c (init_decl_processing): Declare __builtin_constant_p as
9375 accepting any kind of type, not only int.
9376
9377 Fri Sep 26 00:22:56 1997 Jason Merrill <jason@yorick.cygnus.com>
9378
9379 * search.c (get_matching_virtual): Notice virtual bases when sorrying
9380 about covariant returns.
9381
9382 * parse.y (member_init): Also imply typename here. Remove ancient
9383 extension for initializing base members.
9384
9385 Thu Sep 25 11:11:13 1997 Jason Merrill <jason@yorick.cygnus.com>
9386
9387 Handle multi-level typenames and implicit typename in base list.
9388 * parse.y (typename_sub{,[0-2]}): New rules.
9389 (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
9390 (nonnested_type): New rule.
9391 (complete_type_name): Use it.
9392 (base_class.1): Use typename_sub and nonnested_type.
9393 (nested_name_specifier): Don't elide std:: here.
9394 * decl.c (make_typename_type): Handle getting a type for NAME.
9395 (lookup_name_real): Turn std:: into :: here.
9396
9397 Rvalue conversions were removed in London.
9398 * call.c (is_subseq): Don't consider lvalue transformations.
9399 (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
9400 (joust): Re-enable ?: kludge.
9401
9402 1997-09-22 Brendan Kehoe <brendan@lisa.cygnus.com>
9403
9404 * decl.c (start_function): Up warning of no return type to be a
9405 pedwarn.
9406
9407 Mon Sep 22 14:15:34 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
9408
9409 * init.c (expand_member_init): Don't set TREE_USED.
9410 * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
9411 set,don't clear TREE_USED wholesale.
9412
9413 Sat Sep 20 15:31:00 1997 Jason Merrill <jason@yorick.cygnus.com>
9414
9415 * call.c (build_over_call): Do require_complete_type before
9416 build_cplus_new.
9417
9418 Thu Sep 18 16:47:52 1997 Jason Merrill <jason@yorick.cygnus.com>
9419
9420 * search.c (lookup_field): Call complete_type in all cases.
9421
9422 * decl.c (finish_function): Just warn about flowing off the end.
9423
9424 Wed Sep 17 10:31:25 1997 Jason Merrill <jason@yorick.cygnus.com>
9425
9426 * decl.c (grokparms): Don't bash a permanent list node if we're
9427 in a function.
9428
9429 1997-09-17 Brendan Kehoe <brendan@lisa.cygnus.com>
9430
9431 * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
9432
9433 Tue Sep 16 14:06:56 1997 Jason Merrill <jason@yorick.cygnus.com>
9434
9435 * call.c (build_new_op): Give better error for syntactically
9436 correct, but semantically invalid, use of undeclared template.
9437
9438 * call.c (compare_qual): Handle pmfs.
9439
9440 * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
9441 after the exception spec.
9442
9443 Mon Sep 15 11:52:13 1997 Jason Merrill <jason@yorick.cygnus.com>
9444
9445 * call.c (null_ptr_cst_p): Integer type, not integral type.
9446
9447 * call.c (joust): Disable warnings until they can be moved to the
9448 right place.
9449
9450 Fri Sep 12 16:11:13 1997 Per Bothner <bothner@cygnus.com>
9451
9452 * Makefile.in, config-lang.in: Convert to autoconf.
9453
9454 Thu Sep 11 17:14:55 1997 Jason Merrill <jason@yorick.cygnus.com>
9455
9456 * decl.c (lookup_name_real): Add implicit 'typename' to types from
9457 base classes.
9458
9459 * pt.c (most_specialized_class): Fix typo.
9460 (tsubst): Move constant folding to TREE_VEC case.
9461
9462 Thu Sep 11 10:08:45 1997 Mark Mitchell <mmitchell@usa.net>
9463
9464 * pt.c (do_poplevel): Don't warn about unused local variables
9465 while processing_template_decl since we don't always know whether
9466 or not they will need constructing/destructing.
9467
9468 * pt.c (uses_template_parms): Check the values of an enumeration
9469 type to make sure they don't depend on template parms.
9470
9471 * decl.c (make_typename_type): Don't lookup the field if the
9472 context uses template parms, even if we're not
9473 processing_template_decl at the moment.
9474
9475 * pt.c (coerce_template_parms): Avoid looking at the
9476 TYPE_LANG_DECL portion of a typename type, since there won't be
9477 one.
9478 (tsubst): Do constant folding as necessary to make sure that
9479 arguments passed to lookup_template_class really are constants.
9480
9481 Wed Sep 10 11:21:55 1997 Jason Merrill <jason@yorick.cygnus.com>
9482
9483 * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
9484 * decl2.c (finish_file): Only register exception tables if we
9485 need to.
9486
9487 * decl.c (init_decl_processing): Add __builtin_[fs]p.
9488
9489 Tue Sep 9 19:49:38 1997 Jason Merrill <jason@yorick.cygnus.com>
9490
9491 * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
9492
9493 Tue Sep 9 17:57:25 1997 Mark Mitchell <mmitchell@usa.net>
9494
9495 * error.c (dump_decl): Avoid crashing when presented with a
9496 uninitialized constant, as can occur with a template parameter.
9497 (dump_expr): Make sure that there are enough levels of
9498 current_template_parms before we start diving through them.
9499
9500 1997-09-09 Brendan Kehoe <brendan@lisa.cygnus.com>
9501
9502 * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
9503 c-typeck.c.
9504
9505 Tue Sep 9 09:36:39 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
9506
9507 * except.c (expand_throw): Call build_delete for all
9508 exception types, not just objects with destructors.
9509
9510 Mon Sep 8 02:33:20 1997 Jody Goldberg <jodyg@idt.net>
9511
9512 * decl.c (current_local_enum): Remove static.
9513 * pt.c (tsubst_enum): Save and restore value of current_local_enum
9514 in case template is expanded in enum decl.
9515 (instantiate_class_template) : Use new tsubst_enum signature.
9516 (tsubst_expr): Likewise.
9517
9518 Mon Sep 8 01:21:43 1997 Mark Mitchell <mmitchell@usa.net>
9519
9520 * pt.c (begin_member_template_processing): Take a function as
9521 argument, not a set of template arguments. Use the template
9522 parameters, rather than the arguments. Handle non-type parameters
9523 correctly. Push a binding level for the parameters so that multiple
9524 member templates using the same parameter names can be declared.
9525 (end_member_template_processing): Pop the binding level.
9526 (push_template_decl): Mark member templates as static when
9527 appropriate.
9528
9529 * lex.c (do_pending_inlines): Pass the function, not its template
9530 arguments, to begin_member_template_processing.
9531 (process_next_inline): Likewise.
9532 (do_pending_defargs): Likewise.
9533
9534 * error.c (dump_expr): Obtain the correct declaration for a
9535 TEMPLATE_CONST_PARM.
9536
9537 * call.c (add_template_conv_candidate): New function.
9538 (build_object_call): Handle member templates, as done in the other
9539 build_ functions.
9540
9541 Sat Sep 6 10:20:27 1997 Mark Mitchell <mmitchell@usa.net>
9542
9543 * decl.c (replace_defag): Undo previous change.
9544 * lex.c (do_pending_defargs): Deal with member templates.
9545
9546 * pt.c (is_member_template): Avoid crashing when passed a
9547 non-function argument.
9548
9549 Fri Sep 5 17:27:38 1997 Jason Merrill <jason@yorick.cygnus.com>
9550
9551 * class.c (grow_method): Remove check for redeclaration.
9552
9553 Fri Sep 5 01:37:17 1997 Mark Mitchell <mmitchell@usa.net>
9554
9555 * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
9556 (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
9557 (PRIMARY_TEMPLATE_P): Use it.
9558 * call.c (build_overload_call_real): Use it.
9559 * class.c (instantiate_type): Likewise.
9560 * decl.c (decls_match): Likewise.
9561 * method.c (build_overload_identifier): Likewise.
9562 * pt.c (push_template_decl): Likewise.
9563 (classtype_mangled_name): Likewise.
9564 (lookup_template_class): Likewise.
9565
9566 * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
9567 DECL_NTPARMS to conform to usage elsewhere.
9568 * call.c (add_template_candidate): Likewise.
9569 * class.c (instantiate_type): Likewise.
9570 * pt.c (instantiate_template): Likewise.
9571 (get_bindings): Likewise.
9572
9573 * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
9574 is_member_template.
9575
9576 * pt.c (unify): Undo changes to allow multiple levels of template
9577 parameters.
9578 (type_unification): Likewise.
9579 (fn_type_unification): Likewise.
9580 (get_class_bindings): Likewise.
9581 * cp-tree.h (Likewise).
9582
9583 * decl.c (replace_defarg): Check that the type of the default
9584 parameter does not invlove a template type before complaining
9585 about the initialization.
9586
9587 * error.c (dump_expr): Deal with template constant parameters in
9588 member templates correctly.
9589
9590 * pt.c (is_member_template): Deal with class specializations
9591 correctly.
9592 (tsubst): Handle "partial instantiation" of member templates
9593 correctly.
9594
9595 Wed Sep 3 12:30:24 1997 Mark Mitchell <mmitchell@usa.net>
9596
9597 * pt.c (type_unification): Change calling sequence to allow for
9598 multiple levels of template parameters.
9599 (tsubst_expr): Likewise.
9600 (tsubst): Likewise.
9601 (tsubst_copy): Likewise.
9602 (instantiate_template): Likewise.
9603 (unify): Likewise.
9604 * call.c (build_overload_call_real): Use it.
9605 (add_builtin_candidate): Use it.
9606 (build_new_method_call): Use it.
9607 * class.c (instantiate_type): Use it.
9608 * decl.c (grokdeclarator): Use it.
9609 * decl2.c (finish_file): Use it.
9610 * method.c (build_overload_identifier): Use it.
9611
9612 * call.c (add_template_candidate): Add additional parameter for
9613 the function return type. Call fn_type_unification istead of
9614 type_unification.
9615 (build_user_type_conversion_1): Handle member templates.
9616 (build_new_function_call): Likewise.
9617 (build_new_op): Likewise.
9618 (build_new_method_call): Likewise.
9619
9620 * class.c (grow_method): Don't give an error message indicating
9621 that two member templates with the same name are ambiguous.
9622 (finish_struct): Treat member template functions just like member
9623 functions.
9624
9625 * cp-tree.h (check_member_template): Add declaration.
9626 (begin_member_template_processing): Likewise.
9627 (end_member_template_processing): Likewise.
9628 (fn_type_unification): Likewise.
9629 (is_member_template): Likewise.
9630 (tsubst): Change prototype.
9631 (tsubst_expr): Likewise.
9632 (tsubst_copy): Likewise.
9633 (instantiate_template): Likewise.
9634 (get_bindings): Likewise.
9635
9636 * decl.c (decls_match): Handle multiple levels of template
9637 parameters.
9638 (pushdecl): Handle template type params just like other type
9639 declarations.
9640 (push_class_level_binding): Return immediately if the
9641 class_binding_level is NULL.
9642 (grokfndecl): If check_classfn() returns a member_template, use
9643 the result of the template, not the template itself.
9644
9645 * decl2.c (check_member_template): New function. Check to see
9646 that the entity declared to be a member template can be one.
9647 (check_classfn): Allow redeclaration of member template functions
9648 with different types; the new functions can be specializations or
9649 explicit instantiations.
9650
9651 * error.c (dump_decl): Handle multiple levels of template
9652 parameters.
9653 (dump_function_decl): Update to handle function templates.
9654
9655 * lex.c (do_pending_inlines): Set up template parameter context
9656 for member templates.
9657 (process_next_inline): Likewise.
9658
9659 * method.c (build_overload_identifier): Adjust for multiple levels
9660 of template parameters.
9661
9662 * parse.y (fn.def2): Add member templates.
9663 (component_decl_1): Likewise.
9664
9665 * pt.c (begin_member_template_processing): New function.
9666 (end_member_template_processing): Likewise.
9667 (is_member_template): Likewise.
9668 (fn_type_unification): Likewise.
9669 (current_template_parms): Return a vector of all the template
9670 parms, not just the innermost level of parms.
9671 (push_template_decl): Deal with the possibility of member
9672 templates.
9673 (lookup_template_class): Likewise.
9674 (uses_template_parms): Likewise.
9675 (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
9676 TEMPLATE_CONST_PARM to deal with multiple levels of template
9677 arguments. Add processing of TEMPLATE_DECL to produce new
9678 TEMPLATE_DECLs from old ones.
9679 (do_decl_instantiation): Handle member templates.
9680
9681 * search.c (lookup_fnfields_1): Handle member template conversion
9682 operators.
9683
9684 * tree.c (cp_tree_equal): Check the levels, as well as the
9685 indices, of TEMPLATE_CONST_PARMs.
9686
9687 * typeck.c (comptypes): Check the levels, as well as the indices,
9688 fo TEMPLATE_TYPE_PARMs.
9689 (build_x_function_call): Treat member templates like member
9690 functions.
9691
9692 Wed Sep 3 11:09:25 1997 Jason Merrill <jason@yorick.cygnus.com>
9693
9694 * typeck.c (c_expand_return): Always convert_for_initialization
9695 before checking for returning a pointer to local.
9696
9697 * pt.c (type_unification): If strict and the function parm doesn't
9698 use template parms, just compare types.
9699
9700 Wed Sep 3 10:35:49 1997 Klaus Espenlaub <kespenla@student.informatik.uni-ulm.de>
9701
9702 * method.c (build_overloaded_value): Replace direct call
9703 to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
9704
9705 Wed Sep 3 00:02:53 1997 Jason Merrill <jason@yorick.cygnus.com>
9706
9707 * typeck.c (convert_arguments): Don't arbitrarily choose the first
9708 of a set of overloaded functions.
9709
9710 Tue Sep 2 12:09:13 1997 Jason Merrill <jason@yorick.cygnus.com>
9711
9712 * lex.c (real_yylex): Don't elide __FUNCTION__.
9713
9714 * method.c (build_overload_value): Add in_template parm.
9715 (build_overload_int): Likewise.
9716 (build_overload_identifier): Pass it.
9717
9718 * decl.c (duplicate_decls): Don't bash a previous template
9719 definition with a redeclaration.
9720
9721 * pt.c (unify): float doesn't match double.
9722
9723 * pt.c (do_type_instantiation): Handle getting a _TYPE or a
9724 TYPE_DECL. Handle getting non-template types.
9725 * parse.y (explicit_instantiation): Use typespec instead of
9726 aggr template_type.
9727
9728 Tue Sep 2 10:27:08 1997 Richard Henderson <rth@cygnus.com>
9729
9730 * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
9731
9732 Mon Sep 1 13:19:04 1997 Eugene Mamchits <eugin@ips.ras.ru>
9733
9734 * call.c (add_builtin_candidate): Add missing TREE_TYPE.
9735 (compare_ics): Likewise.
9736
9737 Mon Sep 1 13:19:04 1997 Jason Merrill <jason@yorick.cygnus.com>
9738
9739 * call.c (joust): Warn about choosing one conversion op over
9740 another because of 'this' argument when the other return type is
9741 better.
9742 (source_type): New fn.
9743
9744 * call.c (build_new_op): Strip leading REF_BIND from first operand
9745 to builtin operator.
9746
9747 * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
9748 use its RTL.
9749
9750 Thu Aug 28 09:45:23 1997 Jason Merrill <jason@yorick.cygnus.com>
9751
9752 * call.c (null_ptr_cst_p): Remove support for (void*)0.
9753
9754 Wed Aug 27 02:03:34 1997 Jeffrey A Law (law@cygnus.com)
9755
9756 * typeck.c (expand_target_expr): Make definition match declaration.
9757
9758 * class.c (get_basefndecls): Make definition match declaration.
9759
9760 Mon Aug 25 14:30:02 1997 Jason Merrill <jason@yorick.cygnus.com>
9761
9762 * input.c (sub_getch): Eventually give up and release the input file.
9763
9764 * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
9765 right place.
9766
9767 * call.c (joust): Tweak message.
9768
9769 Sat Aug 23 18:02:59 1997 Mark Mitchell <mmitchell@usa.net>
9770
9771 * error.c (type_as_string): Put const/volatile on template type
9772 parameters where appropriate.
9773
9774 Sat Aug 23 17:47:22 1997 Jeffrey A Law (law@cygnus.com)
9775
9776 * call.c (strictly_better): Make arguments unsigned ints.
9777
9778 Thu Aug 21 18:48:44 1997 Jason Merrill <jason@yorick.cygnus.com>
9779
9780 * lex.c (real_yylex): Refer to __complex instead of complex.
9781
9782 Thu Aug 21 22:25:46 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
9783
9784 * lex.c (real_yylex): Don't use getc directly.
9785
9786 Wed Aug 20 17:25:08 1997 Jason Merrill <jason@yorick.cygnus.com>
9787
9788 * call.c (is_subseq): Don't try to be clever.
9789
9790 Wed Aug 20 03:13:36 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
9791
9792 * parse.y, pt.c: Include "except.h".
9793 * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
9794 error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
9795 lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
9796 sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
9797 prototyping.
9798
9799 Wed Aug 20 01:34:40 1997 Jason Merrill <jason@yorick.cygnus.com>
9800
9801 * decl2.c (mark_vtable_entries): Instead of replacing pure
9802 virtuals with a reference to __pure_virtual, copy the decl and
9803 change the RTL.
9804
9805 Tue Aug 19 02:26:07 1997 Jason Merrill <jason@yorick.cygnus.com>
9806
9807 * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
9808
9809 * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
9810
9811 * pt.c (instantiate_class_template): Call repo_template_used
9812 before finish_prevtable_vardecl.
9813
9814 * call.c (is_subseq): New fn.
9815 (compare_ics): Use it.
9816
9817 * repo.c (finish_repo): Don't crash on no args.
9818
9819 * parse.y (named_complex_class_head_sans_basetype): Handle
9820 explicit global scope.
9821 * decl2.c (handle_class_head): New fn.
9822
9823 * pt.c (unify): Add CONST_DECL case.
9824
9825 Thu Aug 14 10:05:13 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9826
9827 * rtti.c (permanent_obstack): Fix decl to not be a pointer.
9828
9829 * cp-tree.h (report_type_mismatch): Add prototype.
9830 * call.c (build_overload_call_real): Remove erroneous fourth
9831 argument to report_type_mismatch.
9832 (build_user_type_conversion_1): Remove erroneous second arg to
9833 tourney.
9834 (build_new_function_call): Likewise.
9835 (build_object_call): Likewise.
9836 (build_new_op): Likewise.
9837 (build_new_method_call): Likewise.
9838
9839 Wed Aug 13 19:19:25 1997 Jason Merrill <jason@yorick.cygnus.com>
9840
9841 * error.c (dump_decl): Don't bother processing a function with no
9842 DECL_LANG_SPECIFIC.
9843
9844 * method.c (emit_thunk): Call init_function_start in the macro case.
9845
9846 Wed Aug 13 10:46:19 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
9847
9848 * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
9849 defined and used to set flag_vtable_thunks.
9850
9851 Tue Aug 12 20:13:57 1997 Jason Merrill <jason@yorick.cygnus.com>
9852
9853 * parse.y: Don't clear the inlines from their obstack until they've
9854 all been processed.
9855
9856 * decl.c (duplicate_decls): Don't complain about exception
9857 specification mismatch if flag_exceptions is off.
9858
9859 Mon Aug 11 15:01:56 1997 Marc Lehmann <pcg@goof.com>
9860
9861 * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
9862
9863 Sun Aug 10 12:06:09 1997 Paul Eggert <eggert@twinsun.com>
9864
9865 * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
9866 * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
9867 Include <stdio.h> before include files that formerly used STDIO_PROTO.
9868
9869 * decl.c, g++spec.c, lex.c, method.c, repo.c:
9870 Include "config.h" first, as per autoconf manual.
9871
9872 Fri Aug 8 11:47:48 1997 Jason Merrill <jason@yorick.cygnus.com>
9873
9874 * decl.c (duplicate_decls): Tweak wording.
9875 * lex.c (do_pending_defargs): Don't die if we see a default arg
9876 that isn't a DEFAULT_ARG.
9877 * error.c (dump_expr): Handle DEFAULT_ARG.
9878
9879 * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
9880 * lang-options.h: Add -fhandle-exceptions.
9881
9882 * class.c (build_vtable): Vtables are artificial.
9883 (prepare_fresh_vtable): Likewise.
9884
9885 Wed Aug 6 11:02:36 1997 Jason Merrill <jason@yorick.cygnus.com>
9886
9887 * cvt.c (ocp_convert): After converting to the target type, set
9888 LOOKUP_NO_CONVERSION.
9889
9890 * call.c (joust): Warn about potentially confusing promotion rules
9891 with -Wsign-promo.
9892 * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
9893
9894 Tue Aug 5 15:15:07 1997 Michael Meissner <meissner@cygnus.com>
9895
9896 * exception.cc: Declare __terminate_func with noreturn attribute.
9897
9898 Fri Aug 1 03:18:15 1997 Jason Merrill <jason@yorick.cygnus.com>
9899
9900 * parse.y: Break out eat_saved_input, handle errors.
9901 (function_try_block): Use compstmt instead of compstmt_or_error.
9902
9903 Thu Jul 31 17:14:04 1997 Jason Merrill <jason@yorick.cygnus.com>
9904
9905 * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
9906
9907 Fri Jul 4 01:45:16 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
9908
9909 * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
9910 existence of cc1plus check whether $(LANGUAGES) contains C++.
9911
9912 Wed Jul 30 13:04:21 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
9913
9914 * method.c (do_build_copy_constructor): When copying an anonymous
9915 union member loop around to handle nested anonymous unions. Use
9916 the offset of the member relative to the outer structure, not the
9917 union.
9918
9919 Tue Jul 29 21:17:29 1997 Jason Merrill <jason@yorick.cygnus.com>
9920
9921 * call.c (resolve_args): New fn.
9922 (build_new_function_call): Use it.
9923 (build_object_call): Likewise.
9924 (build_new_method_call): Likewise.
9925
9926 Mon Jul 28 16:02:36 1997 Jason Merrill <jason@yorick.cygnus.com>
9927
9928 * call.c (build_over_call): tsubst all default parms from templates.
9929
9930 Wed Jul 23 13:36:25 1997 Jason Merrill <jason@yorick.cygnus.com>
9931
9932 * decl.c (struct cp_function): Add static_labelno.
9933 (push_cp_function_context): Save it.
9934 (pop_cp_function_context): Restore it.
9935
9936 Tue Jul 22 14:43:29 1997 Jason Merrill <jason@yorick.cygnus.com>
9937
9938 * typeck.c (build_component_ref_1): Convert from reference.
9939
9940 Tue Jul 22 11:06:23 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9941
9942 * parse.y (current_declspecs, prefix_attributes): Initialize to
9943 NULL_TREE.
9944
9945 * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
9946 before we try to force it to be a TREE_LIST.
9947 (decl): Make sure $1.t is non-nil.
9948
9949 Sun Jul 20 11:53:07 1997 Jason Merrill <jason@yorick.cygnus.com>
9950
9951 * pt.c (uses_template_parms): Handle template first-parse codes.
9952
9953 * decl.c (cp_finish_decl): Only warn about user-defined statics.
9954
9955 Fri Jul 18 17:56:08 1997 Jason Merrill <jason@yorick.cygnus.com>
9956
9957 * pt.c (unify): Handle BOOLEAN_TYPE.
9958
9959 * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
9960 * pt.c (tsubst): Don't set it.
9961 * call.c (build_over_call): Use uses_template_parms.
9962
9963 Thu Jul 17 18:06:30 1997 Jason Merrill <jason@yorick.cygnus.com>
9964
9965 * method.c (build_overload_nested_name): Use static_labelno
9966 instead of var_labelno.
9967 (build_qualified_name): New fn.
9968 (build_overload_name): Split out from here.
9969 (build_static_name): Use build_qualified_name.
9970 * decl.c (cp_finish_decl): Statics in extern inline functions
9971 have comdat linkage.
9972 (start_function): Initialize static_labelno.
9973
9974 Thu Jul 17 11:20:17 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
9975
9976 * class.c (finish_struct_methods): Add check of warn_ctor_dtor_privacy
9977 before "all member functions in class [] are private".
9978
9979 Wed Jul 16 23:47:08 1997 Jason Merrill <jason@yorick.cygnus.com>
9980
9981 * lex.c (do_scoped_id): convert_from_reference.
9982 * init.c (build_offset_ref): Likewise.
9983
9984 Wed Jul 16 12:34:29 1997 Benjamin Kosnik <bkoz@lisa.cygnus.com>
9985
9986 * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
9987
9988 Mon Jul 14 03:23:46 1997 Jason Merrill <jason@yorick.cygnus.com>
9989
9990 * typeck.c (get_member_function_from_ptrfunc): Promote index
9991 before saving it.
9992
9993 Sun Jul 13 00:11:52 1997 Jason Merrill <jason@yorick.cygnus.com>
9994
9995 * tree.c (layout_basetypes): Move non-virtual destructor warning.
9996 * decl.c (xref_basetypes): Remove non-virtual destructor warning.
9997
9998 Sat Jul 12 12:47:12 1997 Jason Merrill <jason@yorick.cygnus.com>
9999
10000 * decl.c (grokdeclarator): Call add_defarg_fn for the function
10001 type, too.
10002 * lex.c (add_defarg_fn): Adjust.
10003 (do_pending_defargs): Adjust. Don't skip the first parm.
10004
10005 Fri Jul 11 01:39:50 1997 Jason Merrill <jason@yorick.cygnus.com>
10006
10007 * decl.c (build_enumerator): Global enumerators are also readonly.
10008
10009 * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
10010 (build_dynamic_cast): Call it and convert_from_reference.
10011
10012 * lex.c (add_defarg_fn): New fn.
10013 (snarf_defarg): Don't add to defarg_types.
10014 (do_pending_defargs): Lose defarg_types. All fns we process now
10015 have defargs.
10016 * decl.c (grokfndecl): Call add_defarg_fn.
10017
10018 * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
10019 * cp-tree.def: Add DEFAULT_ARG.
10020 * spew.c (yylex): Call snarf_defarg as appropriate.
10021 * parse.y: New tokens DEFARG and DEFARG_MARKER.
10022 (defarg_again, pending_defargs, defarg, defarg1): New rules.
10023 (structsp): Use pending_defargs.
10024 (parms, full_parm): Use defarg.
10025 * lex.c (init_lex): Initialize inline_text_firstobj.
10026 (do_pending_inlines): Never pass the obstack to feed_input.
10027 (process_next_inline): Call end_input instead of restore_pending_input.
10028 (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
10029 finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
10030 * input.c (end_input): New fn.
10031 (sub_getch): At the end of some fed input, just keep returning EOF
10032 until someone calls end_input.
10033 Remove 'obstack' field from struct input_source.
10034 * decl.c (grokparms): Handle DEFAULT_ARG.
10035 (replace_defarg): New fn.
10036 * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
10037
10038 Wed Jul 9 13:44:12 1997 Jason Merrill <jason@yorick.cygnus.com>
10039
10040 * call.c (implicit_conversion): If nothing else works, try binding
10041 an rvalue to a reference.
10042
10043 Wed Jul 9 13:04:38 1997 Geoffrey Noer <noer@cygnus.com>
10044
10045 * decl.c (init_decl_processing): Fix Jun 30 patch -- move
10046 ifndef for Cygwin32 to include SIGSEGV.
10047
10048 Thu Jul 3 01:44:05 1997 Jason Merrill <jason@yorick.cygnus.com>
10049
10050 * class.c (finish_struct_1): Only complain about pointers without
10051 copy stuff if there are any constructors.
10052
10053 * rtti.c (build_dynamic_cast): Call complete_type on the types.
10054
10055 * decl.c (grokfndecl): If the function we chose doesn't actually
10056 match, die.
10057
10058 * decl2.c (grokclassfn): Don't specify 'const int' for the
10059 artificial destructor parm.
10060
10061 * pt.c (type_unification): If we are called recursively, nothing
10062 decays.
10063
10064 Mon Jun 30 17:53:21 1997 Geoffrey Noer <noer@cygnus.com>
10065
10066 * decl.c (init_decl_processing): Stop trying to catch signals
10067 other than SIGABRT since the Cygwin32 library doesn't support
10068 them correctly yet. This fixes a situation in which g++ causes
10069 a hang on SIGSEGVs and other such signals in our Win32-hosted
10070 tools.
10071
10072 Mon Jun 30 14:50:01 1997 Jason Merrill <jason@yorick.cygnus.com>
10073
10074 * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
10075
10076 Fri Jun 27 15:18:49 1997 Jason Merrill <jason@yorick.cygnus.com>
10077
10078 * typeck2.c (store_init_value): Always return the value if our
10079 type needs constructing.
10080
10081 * method.c (hack_identifier): Convert class statics from
10082 reference, too.
10083
10084 Thu Jun 26 11:44:46 1997 Jason Merrill <jason@yorick.cygnus.com>
10085
10086 * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
10087
10088 Thu Jun 19 16:49:28 1997 Mike Stump <mrs@cygnus.com>
10089
10090 * typeck.c (c_expand_return): Make sure we clean up temporaries at
10091 the end of return x;
10092
10093 Thu Jun 19 12:28:43 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10094
10095 * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
10096
10097 Tue Jun 17 18:35:57 1997 Mike Stump <mrs@cygnus.com>
10098
10099 * except.c (expand_builtin_throw): Add support
10100 -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
10101
10102 Mon Jun 16 01:24:37 1997 Jason Merrill <jason@yorick.cygnus.com>
10103
10104 * repo.c (extract_string): Null-terminate.
10105
10106 * cp-tree.h (TI_SPEC_INFO): New macro.
10107 (CLASSTYPE_TI_SPEC_INFO): New macro.
10108 * pt.c (push_template_decl): Correctly determine # of template parms
10109 for partial specs.
10110
10111 * call.c (compare_ics): Really fix 'this' conversions.
10112
10113 * pt.c (do_decl_instantiation): Don't crash on explicit inst of
10114 non-template fn.
10115
10116 * pt.c (push_template_decl): Complain about mismatch in # of
10117 template parms between a class template and a member template.
10118
10119 Sun Jun 15 02:38:20 1997 Jason Merrill <jason@yorick.cygnus.com>
10120
10121 * method.c (synthesize_method): You can't call
10122 function_cannot_inline_p after finish_function.
10123 * decl.c (finish_function): Turn on flag_inline_functions and turn
10124 off DECL_INLINE before handing a synthesized method to the
10125 backend.
10126
10127 Thu Jun 12 17:35:28 1997 Jason Merrill <jason@yorick.cygnus.com>
10128
10129 * method.c (synthesize_method): Remove July 30 change to never set
10130 DECL_INLINE if at_eof.
10131
10132 Thu Jun 12 15:25:08 1997 Mike Stump <mrs@cygnus.com>
10133
10134 * xref.c (GNU_xref_member): Ensure that the node has a
10135 decl_lang_specific part before checking DECL_FRIEND_P.
10136
10137 Thu Jun 12 12:36:05 1997 Jason Merrill <jason@yorick.cygnus.com>
10138
10139 * pt.c (instantiate_class_template): Diagnose non-class types used
10140 as bases.
10141
10142 Wed Jun 11 17:33:40 1997 Jason Merrill <jason@yorick.cygnus.com>
10143
10144 * typeck.c (build_conditional_expr): Use convert_for_initialization
10145 instead of convert_and_check.
10146
10147 Wed Jun 11 12:31:33 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10148
10149 * parse.y (typespec): Don't pedwarn for typeof.
10150
10151 Tue Jun 10 00:22:09 1997 Jason Merrill <jason@yorick.cygnus.com>
10152
10153 * repo.c (finish_repo): Only check changes if we would write a
10154 repo file.
10155
10156 * call.c (compare_ics): Fix handling of 'this' conversions.
10157
10158 * pt.c (do_decl_instantiation): Support static data too. Rename
10159 from do_function_instantiation.
10160 * cp-tree.h: Adjust.
10161 * parse.y: Adjust.
10162
10163 * repo.c (extract_string): New fn.
10164 (get_base_filename): Use it.
10165 (init_repo): Compare old args with current args.
10166
10167 Mon Jun 9 14:25:30 1997 Mike Stump <mrs@cygnus.com>
10168
10169 * Makefile.in, Make-lang.in: Protect C-ls with a comment
10170 character, idea from Paul Eggert <eggert@twinsun.com>.
10171
10172 Mon Jun 9 01:52:03 1997 Jason Merrill <jason@yorick.cygnus.com>
10173
10174 * typeck.c (c_expand_return): Be more persistent in looking for
10175 returned temps.
10176
10177 * cvt.c (build_up_reference): Use NOP_EXPR for switching from
10178 pointer to reference.
10179
10180 * class.c (build_vbase_path): Don't do anything if PATH has no steps.
10181
10182 Sun Jun 8 03:07:05 1997 Jason Merrill <jason@yorick.cygnus.com>
10183
10184 * init.c (build_member_call, build_offset_ref):
10185 Use do_scoped_id instead of do_identifier.
10186
10187 * cvt.c (convert): Remove bogosity.
10188
10189 Sat Jun 7 20:50:17 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10190
10191 * cvt.c (build_up_reference): Do checks of ARGTYPE and
10192 TARGET_TYPE before trying to use get_binfo.
10193
10194 Fri Jun 6 17:36:39 1997 Jason Merrill <jason@yorick.cygnus.com>
10195
10196 * cvt.c (build_up_reference): Call get_binfo to get access control.
10197
10198 * decl2.c (import_export_decl): If we don't support weaks, leave
10199 statics undefined.
10200
10201 Fri Jun 6 15:55:49 1997 Mike Stump <mrs@cygnus.com>
10202
10203 * except.c (expand_builtin_throw): Add support for machines that
10204 cannot access globals after throw's epilogue when
10205 -fno-sjlj-exceptions is used.
10206
10207 Thu Jun 5 16:28:43 1997 Jason Merrill <jason@yorick.cygnus.com>
10208
10209 * parse.y: 'std::' becomes '::'.
10210 * lex.c (real_yylex): Remove 'namespace' warning.
10211 * init.c (build_member_call): Ignore 'std::'.
10212 (build_offset_ref): Likewise.
10213 * decl2.c (do_using_directive): Ignore 'using namespace std;'.
10214 (do_toplevel_using_decl): Ignore 'using std::whatever'.
10215 * decl.c (push_namespace): Just sorry.
10216 (pop_namespace): Nop.
10217 (init_decl_processing): Declare std namespace.
10218
10219 Tue Jun 3 18:08:23 1997 Jason Merrill <jason@yorick.cygnus.com>
10220
10221 * search.c (push_class_decls): A name which ambiguously refers to
10222 several instantiations of the same template just refers to the
10223 template.
10224
10225 Tue Jun 3 12:30:40 1997 Benjamin Kosnik <bkoz@cirdan.cygnus.com>
10226
10227 * decl.c (build_enumerator): Fix problem with unsigned long
10228 enumerated values being smashed to ints, causing overflow
10229 when computing next enumerated value (for enum values around
10230 MAX_VAL).
10231
10232 Mon Jun 2 17:40:56 1997 Jason Merrill <jason@yorick.cygnus.com>
10233
10234 * typeck.c (build_component_ref): Only call mark_used on a decl.
10235
10236 Thu May 29 15:54:17 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10237
10238 * typeck.c (build_c_cast): Make the check for a ptr to function
10239 more specific before possible default_conversion call.
10240
10241 Thu May 29 13:02:06 1997 Mike Stump <mrs@cygnus.com>
10242
10243 * except.c (expand_exception_blocks): Simplify and fix and make
10244 sure we don't end a region in a sequence, as expand_end_bindings
10245 doesn't like it.
10246
10247 Wed May 28 17:08:03 1997 Mike Stump <mrs@cygnus.com>
10248
10249 * except.c (init_exception_processing): Mark terminate as not
10250 returning so that the optimizer can optimize better.
10251
10252 Tue May 27 19:49:19 1997 Mike Stump <mrs@cygnus.com>
10253
10254 * cvt.c (convert): Don't do any extra work, if we can avoid it
10255 easily.
10256
10257 Tue May 27 18:21:47 1997 Mike Stump <mrs@cygnus.com>
10258
10259 * *.[chy]: Change cp_convert to ocp_convert, change convert to
10260 cp_convert. convert is now reserved for the backend, and doesn't
10261 have the semantics a frontend person should ever want.
10262
10263 Fri May 23 10:58:31 1997 Jason Merrill <jason@yorick.cygnus.com>
10264
10265 * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
10266 Lose -traditional support.
10267
10268 Thu May 22 15:41:28 1997 Jason Merrill <jason@yorick.cygnus.com>
10269
10270 * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
10271
10272 * parse.y (self_reference): Do it for templates, too.
10273 * class.c (pushclass): Don't overload_template_name; the alias
10274 generated by build_self_reference serves the same purpose.
10275
10276 * tree.c (list_hash): Make static, take more args.
10277 (list_hash_lookup): Likewise.
10278 (list_hash_add): Make static.
10279 (list_hash_canon): Lose.
10280 (hash_tree_cons): Only build a new node if one isn't already in the
10281 hashtable.
10282 (hash_tree_chain): Use hash_tree_cons.
10283 * cp-tree.h: Adjust.
10284 * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
10285 of calling lookup_name.
10286
10287 Wed May 21 18:24:19 1997 Jason Merrill <jason@yorick.cygnus.com>
10288
10289 * pt.c (instantiate_class_template): TYPE_VALUES for an enum
10290 doesn't refer to the CONST_DECLs.
10291
10292 Tue May 20 21:09:32 1997 Bob Manson <manson@charmed.cygnus.com>
10293
10294 * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
10295 is bigger.
10296 (expand_class_desc): Convert the last argument to a sizetype.
10297
10298 Tue May 20 13:55:57 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10299
10300 * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
10301 __real__): Add reswords.
10302 * hash.h: Regenerate.
10303 * lex.h (rid): Add RID_COMPLEX.
10304 (RID_LAST_MODIFIER): Set to RID_COMPLEX.
10305 * lex.c (init_lex): Add building of RID_COMPLEX.
10306 (real_yylex): General cleanup in line with what c-lex.c also has,
10307 sans the cruft for traditional; add handling of SPEC_IMAG, complex
10308 types, and imaginary numeric constants.
10309 * parse.y (REALPART, IMAGPART): Add tokens.
10310 (unary_expr): Add REALPART and IMAGPART rules.
10311 * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
10312 * decl.c (complex_{integer,float,double,long}_type_node): Define
10313 types.
10314 (init_decl_processing): Set up the types.
10315 (grokdeclarator): Add handling of RID_COMPLEX. Set and use
10316 DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
10317 * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
10318 * cvt.c (cp_convert): Handle COMPLEX_TYPE.
10319 * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
10320 COMPLEX_TYPE case.
10321 * method.c (build_overload_name): Add handling of the different
10322 COMPLEX_TYPEs, prefixing them with `J'.
10323 * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
10324 as a template parm.
10325 (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
10326 * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
10327 (mapcar): Handle COMPLEX_CST.
10328 * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
10329 (common_type): Add code for complex types.
10330 (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
10331 (convert_for_assignment): Likewise.
10332 (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
10333
10334 Mon May 19 12:26:27 1997 Jason Merrill <jason@yorick.cygnus.com>
10335
10336 * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
10337 tsubst_expr, as it might try to do overload resolution.
10338
10339 Sat May 17 10:48:31 1997 Jason Merrill <jason@yorick.cygnus.com>
10340
10341 * pt.c (instantiate_class_template): Oops.
10342
10343 Fri May 16 14:23:57 1997 Jason Merrill <jason@yorick.cygnus.com>
10344
10345 * cp-tree.def: Add TAG_DEFN.
10346 * pt.c (tsubst_enum): New fn.
10347 (instantiate_class_template): Use it.
10348 (tsubst_expr): Support TAG_DEFN.
10349 (tsubst): Support local enums.
10350 (tsubst_copy): Likewise.
10351 * decl.c (finish_enum): Likewise.
10352 (start_enum): If this is a local enum, switch to permanent_obstack.
10353
10354 Wed May 14 19:08:28 1997 Mike Stump <mrs@cygnus.com>
10355
10356 * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
10357 (finish_function): Put the base init code for constructors just
10358 after the parm cleanup insns.
10359 (struct cp_function): Add last_parm_cleanup_insn.
10360 (push_cp_function_context): Likewise.
10361 (pop_cp_function_context): Likewise.
10362
10363 Tue May 13 15:51:20 1997 Jason Merrill <jason@yorick.cygnus.com>
10364
10365 * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
10366
10367 Wed May 7 11:17:59 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10368
10369 * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
10370 for THUNK_FNDECL before we switch to temporary allocation.
10371
10372 Mon May 5 14:46:53 1997 Jason Merrill <jason@yorick.cygnus.com>
10373
10374 * call.c (build_new_op): Handle null arg2 for ?:.
10375
10376 Thu May 1 18:26:37 1997 Mike Stump <mrs@cygnus.com>
10377
10378 * except.c (expand_exception_blocks): Ensure that we flow through
10379 the end of the exception region for the exception specification.
10380 Move exception region for the exception specification in, so that
10381 it doesn't protect the parm cleanup. Remove some obsolete code.
10382 * decl.c (store_parm_decls): Likewise.
10383 (finish_function): Likewise.
10384
10385 Tue Apr 29 15:38:54 1997 Jason Merrill <jason@yorick.cygnus.com>
10386
10387 * init.c (build_new): Fix nothrow handling.
10388
10389 Tue Apr 29 14:29:50 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10390
10391 * init.c (emit_base_init): Don't warn about the initialization
10392 list for an artificial member.
10393
10394 Fri Apr 25 17:47:59 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10395
10396 * expr.c (do_case): Handle !START case for the error msg.
10397
10398 Fri Apr 25 11:55:23 1997 Jason Merrill <jason@yorick.cygnus.com>
10399
10400 * decl2.c, lang-options.h: New option -Weffc++.
10401 * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
10402 to -Weffc++.
10403
10404 * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
10405 to MULTIPLE_SYMBOL_SPACES.
10406
10407 Wed Apr 23 18:06:50 1997 Jason Merrill <jason@yorick.cygnus.com>
10408
10409 * method.c (emit_thunk, generic case): Set current_function_is_thunk.
10410
10411 * method.c (emit_thunk, macro case): Set up DECL_RESULT.
10412
10413 * typeck.c (c_expand_return): Don't complain about returning void
10414 to void in an artificial function.
10415 * method.c (make_thunk): Change settings of READONLY/VOLATILE,
10416 don't set DECL_RESULT, set DECL_ARTIFICIAL.
10417 (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC.
10418
10419 Wed Apr 23 14:43:06 1997 Mike Stump <mrs@cygnus.com>
10420
10421 * init.c (init_decl_processing): Add support for setjmp/longjmp based
10422 exception handling.
10423 * except.c (init_exception_processing): Likewise.
10424 (expand_end_catch_block): Likewise.
10425 (expand_exception_blocks): Likewise.
10426 (expand_throw): Likewise.
10427 * exception.cc (__default_terminate): Likewise.
10428
10429 * init.c (perform_member_init): Use new method of expr level
10430 cleanups, instead of cleanups_this_call and friends.
10431 (emit_base_init): Likewise.
10432 (expand_aggr_vbase_init_1): Likewise.
10433 (expand_vec_init): Likewise.
10434 * decl.c (cp_finish_decl): Likewise.
10435 (expand_static_init): Likewise.
10436 (store_parm_decls): Likewise.
10437 (cplus_expand_expr_stmt): Likewise.
10438 * decl2.c (finish_file): Likewise.
10439
10440 * Make-lang.in (exception.o): Ok to compile with -O now.
10441
10442 * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
10443 we know it will be done later by the backend.
10444
10445 * decl2.c (lang_f_options): Remove support for short temps.
10446 * lang-options.h: Likewise.
10447
10448 Wed Apr 23 04:12:06 1997 Jason Merrill <jason@yorick.cygnus.com>
10449
10450 * tree.c (varargs_function_p): New fn.
10451 * method.c (emit_thunk): Replace broken generic code with code to
10452 generate a heavyweight thunk function.
10453
10454 Tue Apr 22 02:45:18 1997 Jason Merrill <jason@yorick.cygnus.com>
10455
10456 * pt.c (process_template_parm): pedwarn about floating-point parms.
10457
10458 * decl.c (grokdeclarator): inline no longer implies static.
10459
10460 * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
10461
10462 Mon Apr 21 15:42:27 1997 Jason Merrill <jason@yorick.cygnus.com>
10463
10464 * class.c (check_for_override): The signature of an overriding
10465 function is not changed.
10466
10467 * call.c (build_over_call): Move setting of conv into the loop.
10468 Note: this change, along with the related changes of the 18th thru
10469 the 20th of April, fix an infinite loop problem in conversions.
10470
10471 Sun Apr 20 16:24:29 1997 Jason Merrill <jason@yorick.cygnus.com>
10472
10473 * call.c (build_user_type_conversion_1): Really ignore rvalue
10474 conversions when looking for a REFERENCE_TYPE.
10475
10476 * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
10477 * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
10478 * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
10479 (build_unary_op): Likewise.
10480 * call.c (build_over_call): See through a CONVERT_EXPR around the
10481 ADDR_EXPR for on a temporary.
10482 * typeck.c (c_expand_return): See through a CONVERT_EXPR around
10483 the ADDR_EXPR for a local variable.
10484
10485 Fri Apr 18 12:11:33 1997 Jason Merrill <jason@yorick.cygnus.com>
10486
10487 * call.c (build_user_type_conversion_1): If we're trying to
10488 convert to a REFERENCE_TYPE, only consider lvalue conversions.
10489 (build_new_function_call): Print candidates.
10490 (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
10491 (reference_binding): Binding a temporary of a reference-related type
10492 is BAD.
10493
10494 Thu Apr 17 14:37:22 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10495
10496 * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
10497 * tinfo2.cc (type_info::before): Likewise.
10498
10499 Mon Apr 14 12:38:17 1997 Jason Merrill <jason@yorick.cygnus.com>
10500
10501 * call.c (implicit_conversion): Oops.
10502
10503 Fri Apr 11 02:18:30 1997 Jason Merrill <jason@yorick.cygnus.com>
10504
10505 * call.c (implicit_conversion): Try to find a reference conversion
10506 before binding a const reference to a temporary.
10507
10508 Wed Apr 2 12:51:36 1997 Mike Stump <mrs@cygnus.com>
10509
10510 * exception.cc (__default_unexpected): Call terminate by default,
10511 so that if the user overrides terminate, the correct function will
10512 be called.
10513
10514 Wed Mar 19 14:14:45 1997 Mike Stump <mrs@cygnus.com>
10515
10516 * parse.y (left_curly): Avoid trying to use any fields of
10517 error_mark_node, as there aren't any.
10518
10519 Thu Mar 13 16:33:22 1997 Jason Merrill <jason@yorick.cygnus.com>
10520
10521 * lex.c (do_identifier): Avoid breaking on overloaded methods
10522 as default arguments.
10523
10524 Wed Mar 12 13:55:10 1997 Hans-Peter Nilsson <Hans-Peter.Nilsson@axis.se>
10525
10526 * call.c (add_template_candidate): Initialize the variable "dummy".
10527
10528 Mon Mar 10 15:13:14 1997 Brendan Kehoe <brendan@canuck.cygnus.com>
10529
10530 * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
10531 before we try to use TYPE_SIZE and TREE_CONSTANT on it.
10532
10533 Fri Mar 7 13:19:36 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10534
10535 * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
10536 (debug_binfo): Delete decl, not needed.
10537
10538 * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
10539 promotes_to_aggr_type): Delete fns.
10540 * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
10541 SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
10542 PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
10543
10544 * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
10545
10546 * friend.c (is_friend_type): Delete fn.
10547 * cp-tree.h (is_friend_type): Delete decl.
10548
10549 * decl.c (original_result_rtx, double_ftype_double,
10550 double_ftype_double_double, int_ftype_int, long_ftype_long,
10551 float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
10552 * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
10553
10554 * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
10555 fwd decls.
10556 * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
10557
10558 * decl.c (pushdecl_nonclass_level): #if 0, unused.
10559 * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
10560
10561 * lex.c (reinit_lang_specific): #if 0, unused.
10562 * cp-tree.h (reinit_lang_specific): #if 0 decl.
10563
10564 * decl.c (revert_static_member_fn): Make static, adding fwd decl.
10565 * cp-tree.h (revert_static_member_fn): Delete decl.
10566
10567 * class.c (root_lang_context_p): Delete fn.
10568 * cp-tree.h (root_lang_context_p): Delete decl.
10569
10570 * decl.c (set_current_level_tags_transparency): #if 0, unused.
10571 * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
10572
10573 * lex.c (set_vardecl_interface_info): Make static.
10574 * cp-tree.h (set_vardecl_interface_info): Delete decl.
10575
10576 * call.c (find_scoped_type): Make static.
10577 * cp-tree.h (find_scoped_type): Delete decl.
10578
10579 * search.c (convert_pointer_to_vbase): Make static.
10580 * cp-tree.h (convert_pointer_to_vbase): Delete decl.
10581
10582 * decl.c (const_ptr_type_node): Likewise.
10583 * cp-tree.h (const_ptr_type_node): Delete decl.
10584
10585 * typeck.c (common_base_type): Make static.
10586 * cp-tree.h (common_base_types): Delete erroneous decl.
10587
10588 * pt.c (classtype_mangled_name): Make static.
10589 * cp-tree.h (classtype_mangled_name): Delete decl.
10590
10591 * lex.c (check_newline): Make static.
10592 * cp-tree.h (check_newline): Delete decl.
10593
10594 * typeck.c (build_x_array_ref): Delete fn, same idea as
10595 grok_array_decl.
10596 * cp-tree.h (build_x_array_ref): Delete decl.
10597
10598 * lex.c (copy_decl_lang_specific): Delete fn, same idea as
10599 copy_lang_decl.
10600 * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
10601
10602 * class.c (build_vtable_entry): Make static.
10603 * cp-tree.h (build_vtable_entry): Delete decl.
10604
10605 * class.c (build_vbase_pointer): Make static.
10606 * cp-tree.h (build_vbase_pointer): Delete decl.
10607
10608 * sig.c (build_sptr_ref): Add forward decl and make static.
10609 * cp-tree.h (build_sptr_ref): Delete decl.
10610
10611 * call.c (build_new_method_call): Add forward decl and make static.
10612 * cp-tree.h (build_new_method_call): Delete decl.
10613
10614 * call.c (build_object_call): Make static.
10615 * class.c (check_for_override, complete_type_p, mark_overriders):
10616 Likewise.
10617 * decl.c (cp_function_chain): Likewise.
10618 * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
10619 Likewise.
10620 * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
10621 Likewise.
10622 * tree.c (build_cplus_array_type_1): Likewise.
10623 * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
10624 (comp_target_parms): Likewise.
10625
10626 * init.c (build_builtin_call): Make static.
10627 * cp-tree.h (build_builtin_call): Delete decl.
10628
10629 * typeck.c (binary_op_error): Delete decl.
10630 * cp-tree.h (binary_op_error): Likewise.
10631
10632 Thu Mar 6 16:13:52 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10633
10634 * call.c (build_method_call): Compare against error_mark_node
10635 directly, rather than the ERROR_MARK tree code.
10636 * cvt.c (cp_convert): Likewise.
10637 * decl.c (print_binding_level): Likewise.
10638 (duplicate_decls): Likewise.
10639 (grokdeclarator): Likewise.
10640 (grokdeclarator): Likewise.
10641 * init.c (expand_aggr_init_1): Likewise.
10642 (decl_constant_value): Likewise.
10643 * method.c (build_opfncall): Likewise.
10644 (hack_identifier): Likewise.
10645 * typeck.c (build_modify_expr): Likewise.
10646
10647 * typeck.c (build_c_cast): Don't decl TYPE as register tree.
10648
10649 Sun Mar 2 02:54:36 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
10650
10651 * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
10652
10653 * pt.c (coerce_template_parms): Add new error message.
10654
10655 * method.c (build_overload_value): Implement name mangling for
10656 floating-point template arguments.
10657
10658 * method.c (build_overload_int, icat, dicat): Fix mangling of template
10659 arguments whose absolute value doesn't fit in a signed word.
10660
10661 Mon Mar 3 12:14:54 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10662
10663 * friend.c: New file; put all of the friend stuff in here.
10664 * init.c: Instead of here.
10665 * Makefile.in (CXX_OBJS): Add friend.o.
10666 (friend.o): Add dependencies.
10667 * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
10668
10669 Sun Mar 2 11:04:43 1997 Jason Merrill <jason@yorick.cygnus.com>
10670
10671 * call.c (build_scoped_method_call): Complain if the scope isn't a
10672 base.
10673
10674 Wed Feb 26 11:31:06 1997 Jason Merrill <jason@yorick.cygnus.com>
10675
10676 * parse.y (left_curly): Don't crash on erroneous type.
10677
10678 * init.c (build_delete): Fix type of ref.
10679
10680 Tue Feb 25 12:41:48 1997 Jason Merrill <jason@yorick.cygnus.com>
10681
10682 * search.c (get_vbase_1): Renamed from get_vbase.
10683 (get_vbase): Wrapper, now non-static.
10684 (convert_pointer_to_vbase): Now static.
10685
10686 * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
10687 * init.c (build_delete): Pass one.
10688 (build_partial_cleanup_for): Use build_scoped_method_call.
10689 * decl.c (finish_function): Pass a binfo.
10690
10691 Mon Feb 24 15:00:12 1997 Jason Merrill <jason@yorick.cygnus.com>
10692
10693 * call.c (build_over_call): Only synthesize non-trivial copy ctors.
10694
10695 * typeck.c (build_c_cast): Lose other reference to flag.
10696
10697 * call.c (build_field_call): Don't look for [cd]tor_identifier.
10698 * decl2.c (delete_sanity): Remove meaningless use of
10699 LOOKUP_HAS_IN_CHARGE.
10700 * decl.c (finish_function): Use build_scoped_method_call instead
10701 of build_delete for running vbase dtors.
10702 * init.c (build_delete): Call overload resolution code instead of
10703 duplicating it badly.
10704
10705 Thu Feb 20 15:12:15 1997 Jason Merrill <jason@yorick.cygnus.com>
10706
10707 * call.c (build_over_call): Call mark_used before trying to elide
10708 the call.
10709
10710 * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
10711
10712 Wed Feb 19 11:18:53 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10713
10714 * typeck.c (build_modify_expr): Always pedwarn for a cast to
10715 non-reference used as an lvalue.
10716
10717 Wed Feb 19 10:35:37 1997 Jason Merrill <jason@yorick.cygnus.com>
10718
10719 * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
10720
10721 Tue Feb 18 15:40:57 1997 Jason Merrill <jason@yorick.cygnus.com>
10722
10723 * parse.y (handler): Fix template typo.
10724
10725 Sun Feb 16 02:12:28 1997 Jason Merrill <jason@yorick.cygnus.com>
10726
10727 * error.c (lang_decl_name): New fn.
10728 * tree.c (lang_printable_name): Use it.
10729
10730 Fri Feb 14 16:57:05 1997 Mike Stump <mrs@cygnus.com>
10731
10732 * g++spec.c: Include config.h so that we can catch bzero #defines
10733 from the config file.
10734
10735 Tue Feb 11 13:50:48 1997 Mike Stump <mrs@cygnus.com>
10736
10737 * new1.cc: Include a declaration for malloc, to avoid warning, and
10738 avoid lossing on systems that require one (ones that define malloc
10739 in xm.h).
10740
10741 Mon Feb 10 22:51:13 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
10742
10743 * decl2.c (max_tinst_depth): New variable.
10744 (lang_decode_option): Parse "-ftemplate-depth-NN" command line
10745 option.
10746 * pt.c (max_tinst_depth): Variable moved.
10747 * lang-options.h: Declare "-ftemplate-depth-NN" command line option
10748 as legal.
10749
10750 Fri Feb 7 15:43:34 1997 Jason Merrill <jason@yorick.cygnus.com>
10751
10752 * decl.c (xref_basetypes): Allow a base class that depends on
10753 template parms to be incomplete.
10754
10755 * decl2.c (build_expr_from_tree): Support typeid(type).
10756 * rtti.c (get_typeid): Support templates.
10757 (expand_si_desc, expand_class_desc): Fix string length.
10758 (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
10759
10760 Tue Feb 4 11:28:24 1997 Jason Merrill <jason@yorick.cygnus.com>
10761
10762 * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
10763
10764 * pt.c (tsubst): Put it back for -fno-ansi-overloading.
10765
10766 Mon Feb 3 18:41:12 1997 Jason Merrill <jason@yorick.cygnus.com>
10767
10768 * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
10769 smashes together template and non-template decls of the same
10770 signature.
10771
10772 Thu Jan 30 19:18:00 1997 Jason Merrill <jason@yorick.cygnus.com>
10773
10774 * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
10775
10776 Wed Jan 29 11:40:35 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10777
10778 * decl.c (duplicate_decls): Next route, pedwarn about different
10779 exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
10780
10781 Tue Jan 28 20:43:29 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10782
10783 * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
10784 (struct lang_type): Delete has_default_implementation member.
10785 Increase dummy to 21.
10786 * decl.c (start_method): Delete usage.
10787
10788 * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
10789 store_after_parms, start_decl_1, auto_function): Add decls.
10790 (get_arglist_len_in_bytes, declare_implicit_exception,
10791 have_exceptions_p, make_type_decl, typedecl_for_tag,
10792 store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
10793 build_component_type_expr, cplus_exception_name,
10794 {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
10795 * call.c (build_this): Make static.
10796 (is_complete): Likewise.
10797 (implicit_conversion): Likewise.
10798 (reference_binding): Likewise.
10799 (standard_conversion): Likewise.
10800 (strip_top_quals): Likewise.
10801 (non_reference): Likewise.
10802 (build_conv): Likewise.
10803 (user_harshness): Likewise.
10804 (rank_for_ideal): Likewise.
10805 * decl.c (start_decl_1): Delete forward decl.
10806 (push_decl_level): Make static.
10807 (resume_binding_level): Make static.
10808 (namespace_bindings_p): Make static.
10809 (declare_namespace_level): Make static.
10810 (lookup_name_real): Make static.
10811 (duplicate_decls): Make static. Take register off NEWDECL and
10812 OLDDECL parm decls.
10813 * decl2.c (get_sentry): Make static.
10814 (temp_name_p): Delete fn.
10815 * except.c (auto_function): Delete decl.
10816 * lex.c (handle_{cp,sysv}_pragma): Make static.
10817 (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
10818 * method.c (do_build_{copy_constructor,assign_ref}): Make static.
10819 * pt.c (tsubst_expr_values): Make static.
10820 * rtti.c (combine_strings): Delete decl.
10821
10822 Tue Jan 28 16:40:40 1997 Jason Merrill <jason@yorick.cygnus.com>
10823
10824 * pt.c (push_template_decl): Handle getting a typedef.
10825
10826 * call.c (build_new_function_call): Complain about void arg.
10827
10828 Tue Jan 28 15:25:09 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10829
10830 * decl.c (duplicate_decls): Give pedwarn of different exceptions
10831 if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
10832
10833 Mon Jan 27 19:21:29 1997 Mike Stump <mrs@cygnus.com>
10834
10835 * except.c (expand_throw): Don't expand the cleanup tree here,
10836 since we are not going to write the rtl out. Fixes problem with
10837 -g -O on SPARC.
10838
10839 Mon Jan 27 16:24:35 1997 Sean McNeil <sean@mcneil.com>
10840
10841 * Make-lang.in: Add $(exeext) as necessary.
10842
10843 Mon Jan 27 13:20:39 1997 Mike Stump <mrs@cygnus.com>
10844
10845 * parse.y (handler_seq): Must have at least one catch clause.
10846
10847 Sat Jan 25 12:00:05 1997 Jason Merrill <jason@yorick.cygnus.com>
10848
10849 * call.c (add_builtin_candidate): Restore ?: hack.
10850
10851 * decl.c (grok_op_properties): More warnings.
10852
10853 Sat Jan 25 08:50:03 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10854
10855 * decl.c (duplicate_decls): On second thought, do it as a pedwarn
10856 still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
10857
10858 * decl.c (duplicate_decls): Scale back to a warning, and only do
10859 'em if -pedantic.
10860
10861 Fri Jan 24 17:52:54 1997 Mike Stump <mrs@cygnus.com>
10862
10863 * decl.c (duplicate_decls): pedwarn mismatched exception
10864 specifications.
10865
10866 Thu Jan 23 18:18:54 1997 Mike Stump <mrs@cygnus.com>
10867
10868 * call.c (build_new_method_call): Don't display the invisible
10869 argument for controlling virtual bases.
10870
10871 Thu Jan 23 16:48:10 1997 Mike Stump <mrs@cygnus.com>
10872
10873 * new: Add nothrow new and delete, bad_alloc and throw specifications
10874 for delete.
10875 * decl.c (init_decl_processing): Add throw specification for delete.
10876 * new.cc (nothrow): Define.
10877 * lex.c (real_yylex): Removing warning that throw and friends are
10878 keywords.
10879 * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
10880 * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
10881 * Make-lang.in: Add new{1,2}.{cc,o}.
10882
10883 Thu Jan 23 16:39:06 1997 Jason Merrill <jason@yorick.cygnus.com>
10884
10885 * lex.c (cons_up_default_function): Fix return type of synth op=.
10886
10887 * init.c (emit_base_init): Add warnings for uninitialized members
10888 and bases.
10889
10890 * decl.c (xref_basetypes): Add warning for non-polymorphic type
10891 with destructor used as base type.
10892
10893 * decl.c (grok_op_properties): Add warning for op= returning void.
10894 * typeck.c (c_expand_return): Add warning for op= returning anything
10895 other than *this.
10896
10897 * class.c (finish_struct_1): Add warning for class with pointers
10898 but not copy ctor or copy op=.
10899
10900 * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
10901 * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
10902 (instantiate_template): If -fexternal-templates, add this
10903 instantiation to pending_templates.
10904
10905 * decl2.c (copy_assignment_arg_p): Disable old hack to support
10906 Booch components.
10907
10908 Tue Jan 21 18:32:04 1997 Mike Stump <mrs@cygnus.com>
10909
10910 * cvt.c (cp_convert): pedwarn enum to pointer conversions.
10911
10912 Mon Jan 20 17:59:51 1997 Jason Merrill <jason@yorick.cygnus.com>
10913
10914 * call.c (standard_conversion): Handle getting references. Tack
10915 on RVALUE_CONV here. Do it for non-class types, too.
10916 (reference_binding): Pass references to standard_conversion.
10917 (implicit_conversion): Likewise.
10918 (add_builtin_candidate): Disable one ?: kludge.
10919 (convert_like): Handle RVALUE_CONVs for non-class types.
10920 (joust): Disable the other ?: kludge.
10921
10922 Mon Jan 20 14:53:13 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10923
10924 * decl.c (init_decl_processing): Add code to build up common
10925 function types beforehand, to avoid creation then removal of
10926 things already in the hash table.
10927
10928 Mon Jan 20 14:43:49 1997 Jason Merrill <jason@yorick.cygnus.com>
10929
10930 * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
10931 the arguments.
10932
10933 * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
10934 current_template_parms.
10935
10936 Fri Jan 17 10:25:42 1997 Jason Merrill <jason@yorick.cygnus.com>
10937
10938 * search.c (lookup_field): Don't return a function, check want_type.
10939
10940 Thu Jan 16 18:14:35 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10941
10942 * init.c (build_new): Make sure PLACEMENT has a type.
10943
10944 Thu Jan 16 17:40:28 1997 Jason Merrill <jason@yorick.cygnus.com>
10945
10946 * init.c (build_new): Support new (nothrow).
10947
10948 Wed Jan 15 12:38:14 1997 Jason Merrill <jason@yorick.cygnus.com>
10949
10950 * pt.c (instantiate_decl): Also do push_to_top_level before setting
10951 up DECL_INITIAL.
10952
10953 * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
10954 * pt.c (tsubst): Defer instantiation of default args.
10955 * call.c (build_over_call): Until here.
10956
10957 Wed Jan 15 10:08:10 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10958
10959 * search.c (lookup_field): Make sure we have an
10960 IDENTIFIER_CLASS_VALUE before we try to return it.
10961
10962 Thu Jan 9 07:19:01 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
10963
10964 * call.c (build_method_call): Delete unused var PARM.
10965 (build_overload_call_real): Likewise.
10966 (build_object_call): Delete unused var P.
10967 (build_new_op): Likewise.
10968 * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
10969 var definitions, which are never used.
10970 (shadow_tag): Delete unused var FN.
10971 * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
10972 * init.c (build_new): Delete unused var ALLOC_TEMP.
10973 * method.c (hack_identifier): Delete unused var CONTEXT.
10974 (do_build_copy_constructor): Delete unused var NAME.
10975 (synthesize_method): Delete unused var BASE.
10976 * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
10977 * rtti.c (build_headof): Delete unused var VPTR.
10978 (get_typeid): Delete unused var T.
10979 * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
10980 and ORIG_OP2.
10981 (build_ptrmemfunc): Delete unused vars U and NINDEX.
10982 * typeck2.c (build_functional_cast): Delete unused var BINFO.
10983
10984 Wed Jan 8 13:09:54 1997 Jason Merrill <jason@yorick.cygnus.com>
10985
10986 * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
10987 things in a type being defined.
10988 * decl.c (finish_enum): Reverse the values so that they are in
10989 the correct order.
10990
10991 * pt.c (instantiate_class_template): Don't initialize
10992 BINFO_BASETYPES until the vector is filled out.
10993 (unify): Don't abort on conflicting bindings, just fail.
10994 (instantiate_decl): Do push_tinst_level before any tsubsting.
10995
10996 * method.c (build_overload_value): Handle getting a
10997 TEMPLATE_CONST_PARM for a pointer.
10998
10999 Tue Jan 7 14:00:58 1997 Jason Merrill <jason@yorick.cygnus.com>
11000
11001 * init.c (expand_member_init): Don't give 'not a base' error for
11002 templates.
11003
11004 * pt.c (instantiate_decl): Call import_export_decl later.
11005
11006 * pt.c (instantiate_class_template): Return a value.
11007
11008 * parse.y (extension): New rule for __extension__.
11009 (extdef, unary_expr, decl, component_decl): Use it.
11010
11011 Tue Jan 7 09:20:28 1997 Mike Stump <mrs@cygnus.com>
11012
11013 * class.c (base_binfo): Remove unused base_has_virtual member.
11014 (finish_base_struct): Likewise.
11015 (finish_struct_1): Likewise.
11016
11017 Tue Dec 31 20:25:50 1996 Mike Stump <mrs@cygnus.com>
11018
11019 * search.c (expand_upcast_fixups): Fix bogus code generation
11020 problem where the generated code uses the wrong index into the
11021 runtime built vtable on the stack. Old code could clobber random
11022 stack values.
11023
11024 Tue Dec 31 15:16:56 1996 Mike Stump <mrs@cygnus.com>
11025
11026 * init.c (perform_member_init): Make sure the partial EH cleanups
11027 live on the function_obstack.
11028
11029 Fri Dec 27 10:31:40 1996 Paul Eggert <eggert@twinsun.com>
11030
11031 * Make-lang.in (g++spec.o): Don't use $< with an explicit target;
11032 this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
11033
11034 Tue Dec 24 10:24:03 1996 Jeffrey A Law (law@cygnus.com)
11035
11036 * decl.c (grokvardecl): Avoid ANSI style initialization.
11037
11038 Sun Dec 22 04:22:06 1996 Jason Merrill <jason@yorick.cygnus.com>
11039
11040 * pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
11041
11042 Fri Dec 20 17:09:25 1996 Jason Merrill <jason@yorick.cygnus.com>
11043
11044 * pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
11045
11046 Fri Dec 20 12:17:12 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11047
11048 * g++spec.c (lang_specific_driver): Put missing hyphen in front of
11049 arguments we compare against. Start the count of I at 1, not 0,
11050 since argv[0] is still the command.
11051
11052 Thu Dec 19 11:53:57 1996 Stan Shebs <shebs@andros.cygnus.com>
11053
11054 * lang-specs.h: Accept .cp as an C++ extension.
11055
11056 Mon Dec 16 22:43:31 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11057
11058 * cp-tree.h (ptr_reasonably_similar): Add decl.
11059
11060 Thu Dec 12 15:00:35 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11061
11062 * decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
11063 pointer. New local SPECBITS with the parm's value.
11064 (grokdeclarator): Pass &specbits down.
11065
11066 * parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
11067 before we try to do C_SET_EXP_ORIGINAL_CODE on it.
11068
11069 * search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
11070 CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
11071
11072 * decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
11073 not an error_mark_node.
11074
11075 Sat Dec 7 17:20:22 1996 Jason Merrill <jason@yorick.cygnus.com>
11076
11077 * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
11078 * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
11079
11080 Fri Dec 6 14:40:09 1996 Jason Merrill <jason@yorick.cygnus.com>
11081
11082 * decl.c (grokdeclarator): When giving an anonymous struct a name,
11083 replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
11084 not affected).
11085
11086 * typeck2.c (build_m_component_ref): If component is a pointer
11087 to data member, resolve the OFFSET_REF now.
11088
11089 * call.c (convert_like): Don't go into infinite recursion.
11090
11091 * pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
11092
11093 * class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
11094 * tree.c (layout_basetypes): And on the vbase ptr.
11095
11096 Thu Dec 5 02:11:28 1996 Jason Merrill <jason@yorick.cygnus.com>
11097
11098 * decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
11099 CHAR_TYPE_SIZE so bool is always the same size as another type.
11100
11101 * decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
11102
11103 Tue Dec 3 23:18:37 1996 Jason Merrill <jason@yorick.cygnus.com>
11104
11105 * decl2.c (grok_x_components): Remove synthesized methods from
11106 TYPE_METHODS of an anonymous union, complain about member
11107 functions.
11108 * decl.c (shadow_tag): Wipe out memory of synthesized methods in
11109 anonymous unions.
11110 (finish_function): Just clear the DECL_RTL of our arguments.
11111
11112 Fri Nov 29 21:54:17 1996 Jason Merrill <jason@yorick.cygnus.com>
11113
11114 * decl2.c (finish_file): Emit DWARF debugging info for static data
11115 members.
11116
11117 * pt.c (tsubst): If t is a stub decl, return the stub decl for type.
11118
11119 Wed Nov 27 14:47:15 1996 Bob Manson <manson@charmed.cygnus.com>
11120
11121 * typeck.c (build_component_ref): Don't die if COMPONENT isn't a
11122 IDENTIFIER_NODE.
11123
11124 Wed Nov 27 16:05:19 1996 Michael Meissner <meissner@tiktok.cygnus.com>
11125
11126 * Make-lang.in (g++-cross$(exeext)): Fix typo.
11127
11128 Wed Nov 27 08:14:00 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11129
11130 Make the g++ driver now be a standalone program, rather than one
11131 that tries to run the gcc driver after munging up the options.
11132 * Make-lang.in (g++.c, g++spec.o): New rules.
11133 (g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
11134 added.
11135 (g++$(exeext)): New rule, based on xgcc rule.
11136 (g++-cross$(exeext)): Now just copies g++$(exeext) over.
11137 * g++spec.c: New file.
11138 * g++.c: Removed file.
11139
11140 Tue Nov 26 19:01:09 1996 Mike Stump <mrs@cygnus.com>
11141
11142 * cvt.c (build_up_reference): Arrange for any temporary values
11143 that have been keep in registers until now to be put into memory.
11144
11145 Mon Nov 25 15:16:41 1996 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
11146
11147 * Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
11148 that make -j3 bootstrap works better.
11149
11150 Sun Nov 24 02:09:39 1996 Jason Merrill <jason@yorick.cygnus.com>
11151
11152 * decl.c (pushtag): Do pushdecl for anon tags.
11153
11154 Thu Nov 21 16:30:24 1996 Jason Merrill <jason@yorick.cygnus.com>
11155
11156 * typeck.c (c_expand_return): Fix logic.
11157 (unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
11158
11159 Wed Nov 20 18:47:31 1996 Bob Manson <manson@charmed.cygnus.com>
11160
11161 * g++.c (main): Make sure arglist has a final NULL entry. Add
11162 PEXECUTE_LAST to the flags passed to pexecute, as otherwise
11163 stdin/stdout of the invoked program are redirected to
11164 nowheresville.
11165
11166 Tue Nov 19 16:12:44 1996 Jason Merrill <jason@yorick.cygnus.com>
11167
11168 * decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
11169
11170 Tue Nov 19 15:48:19 1996 Mike Stump <mrs@cygnus.com>
11171
11172 * init.c (resolve_offset_ref): Handle obj.vfn better.
11173 * typeck.c (build_component_ref): Set TREE_TYPE on result from
11174 build_vfn_ref.
11175
11176 Tue Nov 19 13:14:33 1996 Mike Stump <mrs@cygnus.com>
11177
11178 * typeck.c (convert_for_assignment): Also handle anachronistic
11179 implicit conversions from (::*)() to cv void*.
11180 * cvt.c (cp_convert_to_pointer): Likewise.
11181
11182 Mon Nov 18 17:05:26 1996 Jason Merrill <jason@yorick.cygnus.com>
11183
11184 * lex.c (handle_cp_pragma): Fix bogus warning.
11185
11186 Mon Nov 18 16:10:43 1996 Mike Stump <mrs@cygnus.com>
11187
11188 * cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
11189 (METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
11190
11191 Thu Nov 14 23:18:17 1996 Jason Merrill <jason@yorick.cygnus.com>
11192
11193 * class.c (finish_struct_1): Support DWARF2_DEBUG.
11194 * search.c (dfs_debug_mark): Likewise.
11195 * decl2.c (finish_vtable_vardecl): Likewise.
11196 * decl.c (pushtag, finish_enum): Likewise.
11197 * lex.c (check_newline): Use debug_* instead of calling *out
11198 functions directly.
11199
11200 Thu Nov 14 15:21:46 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11201
11202 * Make-lang.in (cplib2.ready): Add else clause to avoid problems
11203 on some picky hosts.
11204
11205 Wed Nov 13 12:32:07 1996 Jason Merrill <jason@yorick.cygnus.com>
11206
11207 * class.c (finish_struct_1): A class has a non-trivial copy
11208 constructor if it has virtual functions.
11209
11210 * cvt.c (cp_convert): Always call a constructor.
11211
11212 * call.c (reference_binding): Still tack on a REF_BIND
11213 for bad conversions.
11214 (build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
11215
11216 * typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
11217 (c_expand_return): Likewise.
11218 * typeck2.c (digest_init): Likewise for { }.
11219 * init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
11220 * cvt.c (cp_convert): Handle failure better.
11221
11222 Wed Nov 13 11:51:20 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11223
11224 * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
11225 of GCC be path-relative.
11226
11227 Wed Nov 13 11:27:16 1996 Michael Meissner <meissner@tiktok.cygnus.com>
11228
11229 * Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
11230 it does need choose-temp.o and pexecute.o.
11231
11232 Wed Nov 13 07:53:38 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11233
11234 * g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
11235 that we still use it.
11236 (P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
11237
11238 Wed Nov 13 02:00:26 1996 Jason Merrill <jason@yorick.cygnus.com>
11239
11240 * init.c (expand_default_init): Avoid calling constructors to
11241 initialize reference temps.
11242
11243 * cvt.c (convert_to_reference): Fix.
11244
11245 Tue Nov 12 19:10:07 1996 Jason Merrill <jason@yorick.cygnus.com>
11246
11247 * cvt.c (cp_convert): Simplify for flag_ansi_overloading.
11248 (convert_to_reference): Likewise.
11249 * typeck.c (convert_for_initialization): Likewise.
11250 * init.c (expand_default_init): Likewise.
11251 (expand_aggr_init_1): Likewise.
11252 * cp-tree.h (CONV_NONCONVERTING): Lose.
11253 * typeck.c (build_c_cast): Lose allow_nonconverting parm.
11254 * *.c: Adjust.
11255 * call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
11256
11257 Tue Nov 12 16:29:04 1996 Brendan Kehoe <brendan@canuck.cygnus.com>
11258
11259 * pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
11260
11261 Tue Nov 12 15:26:17 1996 Jason Merrill <jason@yorick.cygnus.com>
11262
11263 * init.c (expand_aggr_init_1): Don't crash on non-constructor
11264 TARGET_EXPR.
11265
11266 Tue Nov 12 14:00:50 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11267
11268 * g++.c: Include gansidecl.h.
11269 (VPROTO, PVPROTO, VA_START): Delete.
11270 (choose_temp_base_try, choose_temp_base, perror_exec,
11271 run_dos) [__MSDOS__]: Delete fns.
11272 (pfatal_with_name): Delete fn.
11273 (temp_filename): Declare like in gcc.c.
11274 (pexecute, pwait, choose_temp_base): Declare from gcc.c.
11275 (error_count, signal_count): Define.
11276 (error): Delete both definitions.
11277 (PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
11278 (pfatal_pexecute): Add fn from gcc.c.
11279 (main): Rename local VERBOSE var to VERBOSE_FLAG. Rewrite the
11280 code to use the pexecute stuff also used by gcc.c.
11281 (MIN_FATAL_STATUS): Define.
11282 * Make-lang.in (g++): Add dependency on and linking with
11283 choose-temp.o and pexecute.o.
11284
11285 * cp-tree.h: Include gansidecl.h.
11286 (STDIO_PROTO): Delete #undef/#define.
11287 * cvt.c (NULL): Delete #undef/#define.
11288 * expr.c (NULL): Likewise.
11289 * init.c (NULL): Likewise.
11290 * rtti.c (NULL): Likewise.
11291 * xref.c (NULL): Likewise.
11292
11293 * cp-tree.h (build_user_type_conversion): Add prototype.
11294 * call.c (build_user_type_conversion): Delete prototype. Correct
11295 decl of FLAGS arg to be an int.
11296 * cvt.c (build_user_type_conversion): Likewise.
11297
11298 Tue Nov 12 12:16:20 1996 Jason Merrill <jason@yorick.cygnus.com>
11299
11300 * cp-tree.def: Add TRY_BLOCK and HANDLER.
11301 * except.c (expand_start_catch_block): Support templates.
11302 * parse.y (try_block, handler_seq): Likewise.
11303 * pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
11304
11305 Mon Nov 11 13:57:31 1996 Jason Merrill <jason@yorick.cygnus.com>
11306
11307 * pt.c (current_template_args): New fn.
11308 (push_template_decl): Use it.
11309 * decl.c (grokdeclarator): Use it.
11310
11311 * decl2.c (build_expr_from_tree): Dereference ref vars.
11312
11313 * decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
11314 the decl-specifier-seq.
11315
11316 * decl.c (grok_op_properties): Don't force the type of a conversion
11317 op to be complete. Don't warn about converting to the same type
11318 for template instantiations.
11319
11320 * decl2.c (finish_file): Don't call instantiate_decl on synthesized
11321 methods.
11322
11323 Mon Nov 11 13:20:34 1996 Bob Manson <manson@charmed.cygnus.com>
11324
11325 * typeck.c (get_delta_difference): Remove previous bogusness.
11326 Don't give errors if force is set.
11327
11328 Fri Nov 8 17:38:44 1996 Jason Merrill <jason@yorick.cygnus.com>
11329
11330 * decl2.c (finish_file): Don't emit debug info.
11331 * decl.c (pushdecl): Lose obsolete code.
11332 (grokdeclarator): Still do the long long thing after complaining.
11333 * search.c (note_debug_info_needed): Don't do anything if we're in a
11334 template.
11335 * method.c (synthesize_method): For non-local classes,
11336 push_to_top_level first.
11337
11338 Fri Nov 8 11:52:28 1996 Bob Manson <manson@charmed.cygnus.com>
11339
11340 * typeck.c (get_delta_difference): Add no_error parameter.
11341 (build_ptrmemfunc): Call get_delta_difference with no_error set;
11342 we don't want error messages when converting unrelated
11343 pointer-to-member functions.
11344
11345 Thu Nov 7 11:16:24 1996 Mike Stump <mrs@cygnus.com>
11346
11347 * error.c (dump_expr): Improve the wording on error messages that
11348 involve pointer to member functions.
11349
11350 Tue Nov 5 17:12:05 1996 Mike Stump <mrs@cygnus.com>
11351
11352 * cvt.c (cp_convert_to_pointer): Move code for conversions from
11353 (::*)() to void* or (*)() up a bit, so that we can convert from
11354 METHOD_TYPEs as well.
11355
11356 Tue Nov 5 14:54:17 1996 Jason Merrill <jason@yorick.cygnus.com>
11357
11358 * rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
11359 There are no 'member' types.
11360 (get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
11361 (build_x_typeid): Handle errors.
11362
11363 Mon Nov 4 17:43:12 1996 Mike Stump <mrs@cygnus.com>
11364
11365 * typeck.c (convert_for_assignment): Handle anachronistic implicit
11366 conversions from (::*)() to void* or (*)().
11367 * cvt.c (cp_convert_to_pointer): Likewise.
11368 (cp_convert_to_pointer_force): Remove cp_convert_to_pointer
11369 conversions from here.
11370 * decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
11371 * lang-options.h: Likewise.
11372 * decl2.c (warn_pmf2ptr): Define.
11373 * cp-tree.h: Declare it.
11374 * typeck2.c (digest_init): Allow pmfs down into
11375 convert_for_initialization.
11376
11377 Sun Nov 3 09:43:00 1996 Jason Merrill <jason@yorick.cygnus.com>
11378
11379 * typeck.c (c_expand_return): Fix for returning overloaded fn.
11380
11381 Fri Nov 1 08:53:17 1996 Jason Merrill <jason@yorick.cygnus.com>
11382
11383 * cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
11384 * decl.c (grok_reference_init): Pass DIRECT_BIND.
11385 * cvt.c (build_up_reference): Don't mark 'this' addressable. Use
11386 DIRECT_BIND.
11387 * call.c (convert_like): Don't pass INDIRECT_BIND.
11388 * typeck.c (convert_arguments): Likewise.
11389 * typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
11390
11391 Thu Oct 31 17:08:49 1996 Jason Merrill <jason@yorick.cygnus.com>
11392
11393 * typeck.c (mark_addressable): Support TARGET_EXPR, unify with
11394 similar code in build_up_ref.
11395 * cvt.c (build_up_reference): Drastically simplify.
11396
11397 Mon Oct 28 12:45:05 1996 Jeffrey A Law (law@cygnus.com)
11398
11399 * typeck.c (signed_or_unsigned_type): If the given type already
11400 as the correct signedness, then just return it.
11401
11402 * typeck.c ({un,}signed_type): If can't do anything, call
11403 signed_or_unsigned_type.
11404
11405 Thu Oct 24 14:21:59 1996 Bob Manson <manson@charmed.cygnus.com>
11406
11407 * decl2.c (copy_assignment_arg_p): Don't buy the farm if
11408 current_class_type is NULL.
11409
11410 Wed Oct 23 00:43:10 1996 Jason Merrill <jason@gerbil.cygnus.com>
11411
11412 * class.c (finish_struct_1): Avoid empty structs by adding a field
11413 so layout_type gets the mode right.
11414
11415 * typeck.c (c_expand_return): Drastically simplify.
11416
11417 Mon Oct 21 22:34:02 1996 Jason Merrill <jason@yorick.cygnus.com>
11418
11419 * typeck.c (decay_conversion): Handle overloaded methods.
11420
11421 Fri Oct 18 16:03:48 1996 Jason Merrill <jason@yorick.cygnus.com>
11422
11423 * call.c (build_over_call): A TARGET_EXPR has side-effects.
11424
11425 Thu Oct 17 11:31:59 1996 Mike Stump <mrs@cygnus.com>
11426
11427 * cvt.c (convert_to_pointer_force): Add code to support pointer to
11428 member function to pointer to function conversions.
11429 * init.c (resolve_offset_ref): Add code to allow faked up objects,
11430 ignoring them if they are not used, and giving an error, if they
11431 are needed.
11432 * typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
11433 code, and so that we can give an error, if we needed an object,
11434 and one was not provided.
11435 (build_c_cast): Don't call default_conversion when we want to
11436 convert to pointer to function from a METHOD_TYPE.
11437
11438 Mon Oct 14 00:28:51 1996 Jason Merrill <jason@yorick.cygnus.com>
11439
11440 * Make-lang.in (cplib2.ready): Fix logic.
11441
11442 * decl.c (shadow_tag): Only complain about non-artificial function
11443 members.
11444
11445 * class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
11446
11447 Fri Oct 11 16:12:40 1996 Jason Merrill <jason@yorick.cygnus.com>
11448
11449 * expr.c (cplus_expand_expr): Pre-tweak call_target like
11450 expand_inline_function would.
11451
11452 * pt.c (mark_decl_instantiated): If extern_p, call
11453 mark_inline_for_output.
11454
11455 Thu Oct 10 15:58:08 1996 Mike Stump <mrs@cygnus.com>
11456
11457 * typeck.c (unary_complex_lvalue): Add code to handle intermediate
11458 pmd conversions.
11459
11460 * typeck.c (get_delta_difference): Fix wording, as we can be used
11461 for pointer to data members.
11462
11463 Tue Oct 8 12:43:51 1996 Bob Manson <manson@charmed.cygnus.com>
11464
11465 * pt.c (tsubst): If the function decl isn't a member of this
11466 template, return a copy of the decl (including copying the
11467 lang-specific part) so we don't hose ourselves later.
11468
11469 Thu Oct 3 16:24:28 1996 Jason Merrill <jason@yorick.cygnus.com>
11470
11471 * class.c (finish_struct): Remove DWARF-specific tag handling.
11472 * decl.c (pushtag): Likewise.
11473 (finish_function): Always clear DECL_ARGUMENTS on function decls with
11474 no saved RTX.
11475 * decl2.c (finish_file): Emit DWARF debugging info for static data
11476 members.
11477
11478 Wed Oct 2 21:58:01 1996 Bob Manson <manson@charmed.cygnus.com>
11479
11480 * decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
11481 isn't the same as the new one before we whack it.
11482
11483 Mon Sep 30 13:38:24 1996 Jason Merrill <jason@yorick.cygnus.com>
11484
11485 * class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
11486 lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
11487 warn_traditional and warn_strict_prototypes; remove ancient
11488 'overload' code; remove references to flag_traditional.
11489
11490 Mon Sep 30 12:58:40 1996 Mike Stump <mrs@cygnus.com>
11491
11492 * input.c (sub_getch): Handle 8-bit characters in string literals.
11493
11494 Sun Sep 29 03:12:01 1996 Jason Merrill <jason@yorick.cygnus.com>
11495
11496 * tree.c (mapcar): Handle CONSTRUCTORs.
11497 (copy_to_permanent): Handle expression_obstack properly.
11498
11499 * Make-lang.in (cplib2.txt): Also depend on the headers.
11500
11501 * rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
11502 INT_TYPE_SIZE.
11503 (expand_class_desc): Use USItype for offset field.
11504 * tinfo.h (struct __class_type_info): Likewise.
11505
11506 * method.c (build_overload_int): TYPE_PRECISION should be applied
11507 to types.
11508
11509 Sat Sep 28 14:44:50 1996 Jason Merrill <jason@yorick.cygnus.com>
11510
11511 * call.c (build_new_op): A COND_EXPR involving void must be a
11512 builtin.
11513
11514 Fri Sep 27 16:40:30 1996 Jason Merrill <jason@yorick.cygnus.com>
11515
11516 * typeck.c (build_x_component_ref): New fn.
11517 (build_object_ref): Use it.
11518 * parse.y (primary): Use it.
11519 * decl2.c (build_expr_from_tree): Use it.
11520 * cp-tree.h: Declare it.
11521
11522 * decl.c (start_decl): Variable-sized arrays cannot be initialized.
11523 * error.c (dump_type_suffix): Handle variable arrays.
11524
11525 Fri Sep 27 13:14:05 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11526
11527 * Make-lang.in (exception.o): Put back compiling it with -fPIC.
11528
11529 Fri Sep 27 03:00:09 1996 Jason Merrill <jason@yorick.cygnus.com>
11530
11531 * decl.c (lookup_name_real): Don't try to look up anything in a
11532 TYPENAME_TYPE.
11533
11534 * tinfo2.cc (__throw_type_match_rtti): Oops.
11535
11536 Thu Sep 26 22:11:05 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11537
11538 * Make-lang.in (exception.o): Use -fno-PIC for now.
11539
11540 Thu Sep 26 10:59:00 1996 Jason Merrill <jason@yorick.cygnus.com>
11541
11542 * rtti.c (build_dynamic_cast): Pass tinfo fns rather than
11543 calling them.
11544 (get_tinfo_fn_dynamic): Extracted from build_typeid.
11545 * tinfo2.cc (__dynamic_cast): Adjust.
11546
11547 * rtti.c (build_typeid): Use resolves_to_fixed_type_p.
11548 (build_x_typeid): Likewise.
11549
11550 * parse.y: Call build_x_typeid instead of build_typeid.
11551 * cp-tree.def: Add TYPEID_EXPR.
11552 * pt.c (tsubst_copy): Handle typeid.
11553 * decl2.c (build_expr_from_tree): Likewise.
11554 * rtti.c (build_x_typeid): Throw bad_typeid from here.
11555 (build_typeid): Not here.
11556 * cp-tree.h: Declare build_x_typeid.
11557
11558 Wed Sep 25 17:26:16 1996 Jason Merrill <jason@yorick.cygnus.com>
11559
11560 * call.c (convert_like): Pull out constant values.
11561
11562 * tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
11563
11564 Wed Sep 25 17:28:53 1996 Michael Meissner <meissner@tiktok.cygnus.com>
11565
11566 * decl.c (init_decl_processing): Create short int types before
11567 creating size_t in case a machine description needs to use
11568 unsigned short for size_t.
11569
11570 Tue Sep 24 18:18:44 1996 Jason Merrill <jason@yorick.cygnus.com>
11571
11572 * Make-lang.in (exception.o): Turn off pic.
11573
11574 * tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
11575 type, multi-level ptr conversions.
11576
11577 * rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
11578 (throw_bad_cast): Use it.
11579 (throw_bad_typeid): New fn.
11580 (build_typeid): Throw bad_typeid as needed.
11581 Use build_call.
11582 (synthesize_tinfo_fn): Handle functions and arrays before checking
11583 for cv-quals.
11584
11585 * Remove .h from standard C++ headers, add new.h, move into inc
11586 subdirectory.
11587
11588 * exception*: Remove pointer from object, constructors. Add
11589 default exception::what that uses type_info::name. Add
11590 __throw_bad_typeid.
11591
11592 * init.c (build_new): Don't add a cookie to new (void *) T[2].
11593
11594 Mon Sep 23 15:21:53 1996 Jason Merrill <jason@yorick.cygnus.com>
11595
11596 * Make-lang.in: Building C++ code depends on cc1plus.
11597
11598 Mon Sep 23 12:38:40 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11599
11600 * decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
11601 a HOST_WIDE_INT, not a tree.
11602
11603 Mon Sep 23 12:36:02 1996 Jason Merrill <jason@yorick.cygnus.com>
11604
11605 * exception.cc: Don't include <stdlib.h>.
11606
11607 * Make-lang.in (c++.clean): Remove cplib2.*.
11608
11609 Mon Sep 23 09:42:19 1996 Doug Evans <dje@canuck.cygnus.com>
11610
11611 * parse.y (component_decl_1, component_costructor_declarator case):
11612 Pass attributes/prefix_attributes in tree list.
11613
11614 Mon Sep 23 01:18:50 1996 Jason Merrill <jason@yorick.cygnus.com>
11615
11616 * tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
11617
11618 Sun Sep 22 05:31:22 1996 Jason Merrill <jason@yorick.cygnus.com>
11619
11620 * lex.c (do_identifier): Don't do deferred lookup in a template
11621 header.
11622
11623 * typeck2.c (store_init_value): Oops.
11624
11625 * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}:
11626 New files for C++ lang-support library.
11627 * Make-lang.in (CXX_EXTRA_HEADERS): Define.
11628 (CXX_LIB2FUNCS): Define.
11629 And rules for building the C++ lang-support code.
11630 * config-lang.in (headers): Define.
11631 (lib2funcs): Define.
11632
11633 Sat Sep 21 19:17:28 1996 Jason Merrill <jason@yorick.cygnus.com>
11634
11635 * decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
11636 digest_init.
11637 * pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
11638 * typeck2.c (store_init_value): Check for initializing pmf with { }
11639 here.
11640 (process_init_constructor): Not here.
11641
11642 Thu Sep 19 16:41:07 1996 Jason Merrill <jason@yorick.cygnus.com>
11643
11644 * pt.c (begin_template_parm_list): Increment
11645 processing_template_decl here.
11646 (end_template_parm_list): Not here.
11647 (process_template_parm): No need to add 1 to it now.
11648 * *.c: Use processing_template_decl instead of current_template_parms
11649 to check for being in a template.
11650
11651 * pt.c (uses_template_parms): Handle SCOPE_REF. Fix CONSTRUCTOR.
11652 (tsubst_copy): Handle CONSTRUCTOR.
11653 (instantiate_decl): Set up context properly for variables.
11654 * decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
11655 * class.c (finish_struct): Reverse CLASSTYPE_TAGS.
11656
11657 Wed Sep 18 13:30:20 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11658
11659 * lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
11660
11661 Wed Sep 18 04:24:07 1996 Jason Merrill <jason@yorick.cygnus.com>
11662
11663 * method.c (make_thunk): Call comdat_linkage before setting the
11664 TREE_CODE.
11665
11666 * decl2.c (comdat_linkage): Use make_decl_one_only.
11667 (import_export_decl): Likewise.
11668 * decl.c (init_decl_processing): Check supports_one_only instead of
11669 SUPPORTS_WEAK.
11670
11671 Sat Sep 14 08:34:41 1996 Jason Merrill <jason@yorick.cygnus.com>
11672
11673 * decl2.c (grokfield): Tighten checking for access decls.
11674
11675 * decl.c (make_typename_type): Resolve references to
11676 current_class_type. Set CLASSTYPE_GOT_SEMICOLON.
11677 (lookup_name_real): Types that depend on a template parameter get
11678 an implicit 'typename' unless they're in the current scope.
11679 (start_decl_1): We don't care about incomplete types that depend
11680 on a template parm.
11681 (grokdeclarator): Resolve 'typename's in the type specifier that
11682 refer to members of the current scope.
11683
11684 * call.c (build_over_call): Remove 'inline called before
11685 definition' diagnostic.
11686 (build_method_call): Likewise.
11687 * decl.c (duplicate_decls): Downgrade 'used before declared
11688 inline' to a warning, only with -Winline.
11689
11690 Fri Sep 13 17:31:40 1996 Stan Shebs <shebs@andros.cygnus.com>
11691
11692 * mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
11693
11694 Wed Sep 11 22:38:13 1996 Gerald Baumgartner <gb@cs.purdue.edu>
11695
11696 * call.c (build_method_call): When calling a signature
11697 default implementation, as in other cases, let instance_ptr simply
11698 be instance.
11699
11700 Wed Sep 11 22:14:44 1996 Mike Stump <mrs@cygnus.com>
11701
11702 * parse.y (simple_stmt): Cleanup and use do_poplevel ().
11703
11704 Wed Sep 11 22:10:48 1996 Mike Stump <mrs@cygnus.com>
11705
11706 * except.c (expand_start_catch_block): Add a pushlevel so that -g
11707 works on hppa and SPARC.
11708
11709 Wed Sep 11 10:18:06 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11710
11711 * typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
11712
11713 Mon Sep 9 19:51:14 1996 Gerald Baumgartner <gb@cs.purdue.edu>
11714
11715 * call.c (build_over_call): Check first whether DECL_CONTEXT exists
11716 before testing whether it's a signature.
11717
11718 Sun Sep 8 16:06:57 1996 Gerald Baumgartner <gb@cs.purdue.edu>
11719
11720 * call.c (build_new_method_call): Don't complain about signature
11721 pointers and references not being an aggr type.
11722 (build_this): If a signature pointer or reference was passed in,
11723 just return it.
11724 (build_new_method_call): If instance is a signature pointer, set
11725 basetype to the signature type of instance.
11726 * sig.c (build_signature_method_call): Deleted basetype and
11727 instance parameters, they can be found as the DECL_CONTEXT of
11728 function and as the first argument passed in.
11729 * cp-tree.h: Changed declaration of build_signature_method_call.
11730 * call.c (build_method_call): Deleted first two arguments in call
11731 of build_signature_method_call.
11732 (build_over_call): Added call to build_signature_method_call.
11733
11734 Thu Sep 5 16:51:28 1996 Jason Merrill <jason@yorick.cygnus.com>
11735
11736 * typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
11737 target_expr.
11738
11739 Thu Sep 5 10:05:38 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11740
11741 * cvt.c (convert_to_reference): Use %#T, not %#D, for error.
11742
11743 Wed Sep 4 17:16:09 1996 Bob Manson <manson@charmed.cygnus.com>
11744
11745 * except.c (expand_start_try_stmts): Move to except.c in the backend.
11746 (expand_end_try_stmts): Remove.
11747
11748 * init.c (perform_member_init): Use add_partial_entry () instead
11749 of directly manipulating lists.
11750 (emit_base_init): Likewise.
11751
11752 Wed Sep 4 12:14:36 1996 Mike Stump <mrs@cygnus.com>
11753
11754 * except.c (expand_exception_blocks): Always make sure USE and
11755 CLOBBER insns that came at the end still do, the backend relies
11756 upon this.
11757
11758 Wed Sep 4 07:44:48 1996 Jason Merrill <jason@yorick.cygnus.com>
11759
11760 * call.c (build_over_call): We can only use a TARGET_EXPR of the
11761 right type.
11762
11763 Tue Sep 3 19:26:05 1996 Jason Merrill <jason@yorick.cygnus.com>
11764
11765 * cvt.c (convert_to_reference): Revert last change, don't complain
11766 about temp without target decl.
11767
11768 Tue Sep 3 10:22:56 1996 Mike Stump <mrs@cygnus.com>
11769
11770 * decl.c (grokdeclarator): Don't core dump when void() is given.
11771
11772 Tue Sep 3 02:38:56 1996 Jason Merrill <jason@yorick.cygnus.com>
11773
11774 * decl.c (copy_args_p): Don't crash.
11775
11776 Fri Aug 30 14:26:57 1996 Mike Stump <mrs@cygnus.com>
11777
11778 * pt.c (tsubst): And support template args inside the exception
11779 specification.
11780
11781 * pt.c (tsubst): Add support for exception specifications in
11782 template functions.
11783
11784 Fri Aug 30 10:01:55 1996 Mike Stump <mrs@cygnus.com>
11785
11786 * cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
11787 fields now.
11788 * cp-tree.h (start_decl): Eliminate the throw spec parameter.
11789 (start_function): Likewise.
11790 (start_method): Likewise.
11791 (grokfield): Likewise.
11792 (make_call_declarator): Add throw spec parameter.
11793 (set_quals_and_spec): Add routine.
11794 * lex.c (set_quals_and_spec): Likewise.
11795 * decl.h (grokdeclarator): Eliminate the throw spec parameter.
11796 * decl.c (shadow_tag): Eliminate the throw spec parameter to
11797 grokdeclarator.
11798 (groktypename): Likewise.
11799 (start_decl): Eliminate the throw spec parameter. Eliminate the
11800 throw spec parameter to grokdeclarator. Eliminate the throw spec
11801 field in DECL_STMT.
11802 (cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
11803 (grokfndecl): Remove useless set of raises.
11804 (grokdeclarator): Eliminate the throw spec parameter. Eliminate
11805 the throw spec parameter to start_decl. Pull the throw spec out
11806 of the call declarator.
11807 (grokparms): Eliminate the throw spec parameter to grokdeclarator.
11808 (start_function): Eliminate the throw spec parameter. Eliminate
11809 the throw spec parameter to grokdeclarator.
11810 (start_method): Likewise.
11811 * decl2.c (grokfield): Likewise.
11812 (grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
11813 (grokoptypename): Likewise.
11814 (finish_file): Eliminate the throw spec parameter to
11815 start_function. Add throw spec to make_call_declarator.
11816 * except.c (init_exception_processing): Add throw spec to
11817 make_call_declarator. Eliminate the throw spec parameter to
11818 start_decl.
11819 (expand_start_catch_block): Eliminate the throw spec parameter to
11820 grokdeclarator.
11821 (expand_builtin_throw): Add throw spec to make_call_declarator.
11822 Eliminate the throw spec parameter to start_function.
11823 (start_anon_func): Likewise.
11824 * lex.c (make_call_declarator): Add throw spec parameter.
11825 (set_quals_and_spec): New routine.
11826 (cons_up_default_function): Add throw spec to make_call_declarator.
11827 Eliminate the throw spec parameter to grokfield.
11828 * method.c (synthesize_method): Eliminate the throw spec parameter
11829 to start_function.
11830 * pt.c (process_template_parm): Eliminate the throw spec parameter
11831 to grokdeclarator.
11832 (tsubst): Add throw spec to make_call_declarator.
11833 (tsubst_expr): Eliminate the throw spec parameter to start_decl.
11834 (do_function_instantiation): Eliminate the throw spec parameter to
11835 grokdeclarator. Eliminate the throw spec parameter to
11836 start_function.
11837 * rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
11838 to start_function.
11839 * parse.y (datadef): Remove non-winning optimization.
11840 (decl): Likewise.
11841 (fndef): Remove ambiguous error productions uncovered by grammar
11842 fixing.
11843 (constructor_declarator): Add exception_specification_opt here.
11844 (component_constructor_declarator): Likewise.
11845 (direct_after_type_declarator): Likewise.
11846 (complex_direct_notype_declarator): Likewise.
11847 (direct_abstract_declarator): Likewise.
11848 (fn.def1): Remove exception_specification_opt.
11849 (fn.def2): Likewise.
11850 (condition): Likewise.
11851 (initdcl0): Likewise.
11852 (initdcl): Likewise.
11853 (notype_initdcl0): Likewise.
11854 (nomods_initdcl0): Likewise.
11855 (component_decl_1): Likewise.
11856 (component_declarator): Likewise.
11857 (after_type_component_declarator0): Likewise.
11858 (after_type_component_declarator): Likewise.
11859 (notype_component_declarator): Likewise.
11860
11861 Wed Aug 28 01:40:30 1996 Jason Merrill <jason@yorick.cygnus.com>
11862
11863 * call.c (build_over_call): Also use an INIT_EXPR when
11864 initializing anything from an rvalue.
11865
11866 * call.c (build_over_call): Call stabilize_reference when building
11867 an INIT_EXPR instead of calling the copy ctor.
11868
11869 * call.c (joust): Extend the previous change to all comparisons.
11870
11871 * decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and
11872 NO_LINKAGE_HEURISTICS.
11873
11874 * decl2.c (finish_file): Emit any statics that weren't already.
11875
11876 * typeck.c (build_static_cast): Implement.
11877 * tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
11878 * decl.c (grokparms): Use can_convert_arg instead of
11879 implicit_conversion directly.
11880 (copy_args_p): New fn.
11881 * cvt.c (convert_to_reference): Don't complain about temp with
11882 static_cast.
11883 (build_up_reference): Handle TARGET_EXPRs.
11884 * call.c (build_over_call): Elide unnecessary temps.
11885 (can_convert*): Use new overloading code.
11886
11887 Tue Aug 27 13:12:21 1996 Jason Merrill <jason@yorick.cygnus.com>
11888
11889 * call.c: Move TYPE_PTR*_MACROS ...
11890 * cp-tree.h: To here.
11891 * typeck.c (build_reinterpret_cast): Implement.
11892
11893 * call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
11894 ptr_complete_ob.
11895 (joust): If we're comparing a function to a builtin and the worst
11896 conversion for the builtin is worse than the worst conversion for the
11897 function, take the function.
11898
11899 * typeck.c (build_const_cast): Implement.
11900 (comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
11901 (comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
11902
11903 Tue Aug 27 13:14:58 1996 Bob Manson <manson@charmed.cygnus.com>
11904
11905 * rtti.c (build_dynamic_cast): Don't try to dereference exprtype
11906 too early. Make sure we explode if exprtype turns out to be a
11907 NULL_TREE when it shouldn't be.
11908
11909 Tue Aug 27 10:56:21 1996 Mike Stump <mrs@cygnus.com>
11910
11911 * cp-tree.h: New routine make_call_declarator.
11912 * lex.c (make_call_declarator): Define it.
11913 * except.c (init_exception_processing): Use it.
11914 (expand_builtin_throw): Likewise.
11915 (start_anon_func): Likewise.
11916 * decl2.c (finish_file): Likewise.
11917 * lex.c (cons_up_default_function): Likewise.
11918 * parse.y: Likewise.
11919 * pt.c (tsubst): Likewise.
11920
11921 Mon Aug 26 17:40:03 1996 Mike Stump <mrs@cygnus.com>
11922
11923 * decl2.c (groktypefield): Remove unused code.
11924
11925 Mon Aug 26 17:00:33 1996 Mike Stump <mrs@cygnus.com>
11926
11927 * gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
11928 * parse.y: Likewise. Change maybe_type_qual into maybe_cv_qualifier.
11929 Change type_quals into cv_qualifiers. Change nonempty_type_quals into
11930 nonempty_cv_qualifiers.
11931 * hash.h: Rebuild.
11932
11933 * lex.c (make_pointer_declarator): Change type_quals into
11934 cv_qualifiers.
11935 (make_reference_declarator): Likewise.
11936
11937 Thu Aug 22 01:09:22 1996 Jason Merrill <jason@yorick.cygnus.com>
11938
11939 * decl.c (start_function): Only check interface_* for templates
11940 with flag_alt_external_templates.
11941
11942 * call.c (build_new_op): Check for comparison of different enum types.
11943 (build_over_call): Fix arg # output.
11944
11945 * typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
11946
11947 Wed Aug 21 00:13:15 1996 Jason Merrill <jason@yorick.cygnus.com>
11948
11949 * call.c (build_new_op): Check for erroneous args.
11950
11951 * call.c (build_new_method_call): Add missing args to cp_error.
11952
11953 * tree.c (error_type): Don't print reference-to-array.
11954
11955 * typeck.c (convert_for_assignment): Don't say contravariance for
11956 removing const.
11957
11958 Tue Aug 20 13:23:00 1996 Jason Merrill <jason@yorick.cygnus.com>
11959
11960 * call.c (build_over_call): Diagnose bad convs for `this'.
11961
11962 * lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
11963 on _ctor_arg.
11964
11965 * call.c (convert_like): Handle bad convs.
11966 (build_over_call): Handle bad convs better.
11967
11968 * decl2.c: -fansi-overloading is now the default.
11969
11970 * call.c (build_new_method_call): Check for erroneous args.
11971
11972 * pt.c (instantiate_class_template): Propagate
11973 TYPE_USES_MULTIPLE_INHERITANCE.
11974
11975 Tue Aug 20 13:09:57 1996 Mike Stump <mrs@cygnus.com>
11976
11977 * call.c (enforce_access): Add static to routine.
11978
11979 Sun Aug 18 14:35:54 1996 Jason Merrill <jason@yorick.cygnus.com>
11980
11981 * call.c (build_user_type_conversion_1): Fix bad handling.
11982 (compare_ics): Likewise.
11983
11984 Sat Aug 17 21:54:11 1996 Jason Merrill <jason@yorick.cygnus.com>
11985
11986 * call.c (standard_conversion): Oops.
11987
11988 Sat Aug 17 16:28:11 1996 Geoffrey Noer <noer@cygnus.com>
11989
11990 * g++.c: Update test for win32 (&& ! cygwin32).
11991
11992 Sat Aug 17 03:45:31 1996 Jason Merrill <jason@yorick.cygnus.com>
11993
11994 * typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
11995 (ptr_reasonably_similar): New fn.
11996 * call.c (BAD_RANK): New rank.
11997 (ICS_BAD_FLAG): New macro.
11998 (standard_conversion): Handle almost-right pointer conversions.
11999 (reference_binding): Handle bad rvalue bindings.
12000 (add_*_candidate): Stuff.
12001 (build_over_call): Pass bad conversions to convert_for_initialization.
12002 (compare_ics): Handle bad convs.
12003 (joust): Likewise.
12004
12005 Fri Aug 16 15:02:19 1996 Bob Manson <manson@charmed.cygnus.com>
12006
12007 * init.c (expand_vec_init): Use ptrdiff_type_node instead of
12008 integer_type_node when computing pointer offsets.
12009
12010 Fri Aug 16 01:28:32 1996 Jason Merrill <jason@yorick.cygnus.com>
12011
12012 * tree.c (lvalue_type): New fn.
12013 (error_type): New fn.
12014 * call.c (op_error): Use error_type.
12015 (add_conv_candidate): Use lvalue_type.
12016 (add_builtin_candidates): Likewise.
12017 * error.c (args_as_string): Use error_type.
12018
12019 Thu Aug 15 17:27:13 1996 Jason Merrill <jason@yorick.cygnus.com>
12020
12021 * pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
12022 (tsubst): Not here.
12023
12024 * decl.c (init_decl_processing): With -ansi, __null's type is the
12025 signed integral type with the same number of bits as a pointer.
12026 Introduce a new variable null_node for it.
12027 * cp-tree.h: Adjust.
12028 * call.c (null_ptr_cst_p): Adjust.
12029
12030 Thu Aug 15 17:09:54 1996 Mike Stump <mrs@cygnus.com>
12031
12032 * except.c (do_unwind): Mark %i7 as used on the SPARC so we can
12033 optimize.
12034
12035 Thu Aug 15 01:36:49 1996 Jason Merrill <jason@yorick.cygnus.com>
12036
12037 * decl2.c (import_export_decl): Ignore #pragma interface for tinfo
12038 fns of classes without virtual functions.
12039
12040 * call.c (add_function_candidate): Handle `this' specially.
12041 (compare_ics): Likewise.
12042
12043 Tue Aug 13 12:16:10 1996 Jason Merrill <jason@yorick.cygnus.com>
12044
12045 * typeck.c (build_conditional_expr): Fix handling of __null.
12046
12047 * decl2.c (comdat_linkage): New fn.
12048 (import_export_vtable): Use it.
12049 (import_export_decl): Use it.
12050 * method.c (make_thunk): Use it.
12051
12052 Mon Aug 12 00:09:18 1996 Jason Merrill <jason@yorick.cygnus.com>
12053
12054 * pt.c (end_template_decl): If we don't actually have parms, return.
12055 * parse.y (template_header): Accept 'template <>'.
12056
12057 * errfn.c: Allow 5 args.
12058
12059 Sun Aug 11 15:20:58 1996 Jason Merrill <jason@yorick.cygnus.com>
12060
12061 * tree.c (make_temp_vec): New fn.
12062 * pt.c (push_template_decl): Handle partial specs.
12063 (instantiate_class_template): Likewise.
12064 (more_specialized): Use get_bindings.
12065 (more_specialized_class): New fn.
12066 (get_class_bindings): New fn.
12067 (most_specialized_class): New fn.
12068 (do_function_instantiation): List candidates for ambiguous case.
12069 * decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
12070 (shadow_tag): Call push_template_decl for partial specializations.
12071 * parse.y: Likewise.
12072 * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
12073 DECL_TEMPLATE_MEMBERS.
12074 * call.c (print_z_candidates): Reduce duplication.
12075
12076 Fri Aug 9 14:36:08 1996 Jason Merrill <jason@yorick.cygnus.com>
12077
12078 * decl2.c (lang_decode_option): Allow -fansi-overloading.
12079
12080 Thu Aug 8 17:04:18 1996 Jason Merrill <jason@yorick.cygnus.com>
12081
12082 * pt.c (get_bindings): New fn.
12083 (most_specialized): Likewise.
12084 (do_function_instantiation): Use them.
12085 (add_maybe_template): New fn.
12086 * cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
12087 * call.c (build_new_op): Handle guiding decls.
12088 (build_new_function_call): Likewise.
12089 * decl2.c (finish_file): Likewise.
12090
12091 * decl2.c (mark_used): Do synthesis here.
12092 * call.c (build_method_call): Not here.
12093 (build_over_call): Or here.
12094 * typeck.c (build_function_call_real): Or here.
12095 * tree.c (bot_manip): Call mark_used on functions used in default
12096 args.
12097
12098 Thu Aug 8 17:48:16 1996 Michael Meissner <meissner@tiktok.cygnus.com>
12099
12100 * decl2.c (import_export_vtable): Delete code that disabled vtable
12101 heuristic on systems with ASM_OUTPUT_EXTERNAL.
12102
12103 Wed Aug 7 12:44:11 1996 Jason Merrill <jason@yorick.cygnus.com>
12104
12105 * typeck.c (build_x_function_call): Handle static call context
12106 better.
12107
12108 * decl.c (finish_function): Set the DECL_CONTEXT of the result to
12109 the function, not its outer block.
12110
12111 * call.c (build_field_call): Pass fields on to build_opfncall
12112 regardless of TYPE_OVERLOADS_CALL_EXPR.
12113 (build_method_call): Pass on to build_new_method_call sooner.
12114
12115 * typeck.c (build_ptrmemfunc): Just return what instantiate_type
12116 gives us.
12117 * class.c (instantiate_type): Don't put a POINTER_TYPE to
12118 METHOD_TYPE on an expression. Also make a copy of rhs instead of
12119 modifying it.
12120
12121 Tue Aug 6 12:58:46 1996 Jason Merrill <jason@yorick.cygnus.com>
12122
12123 * call.c (compare_ics): Handle qual_conv after lvalue_conv.
12124 (add_builtin_candidate): Don't take enums for ++.
12125 (build_new_method_call): Handle non-aggregates and field calls.
12126 Move new overloading code from...
12127 * cvt.c: Here.
12128
12129 * decl.c (grokparms): Don't check default args in templates.
12130
12131 Mon Aug 5 17:17:06 1996 Jason Merrill <jason@yorick.cygnus.com>
12132
12133 * cvt.c (build_new_op): Fix args to build_unary_op.
12134 (add_builtin_candidates): Don't call type_promotes_to on float.
12135
12136 * decl.c (grokparms): Check the type of the default arg.
12137
12138 * cvt.c (build_new_op): Pass non-overloaded cases on rather than
12139 returning NULL_TREE.
12140
12141 * typeck.c (build_x_binary_op): Avoid doing extra work.
12142 (build_x_unary_op): Likewise.
12143 (build_x_conditional_expr): Likewise.
12144 * cvt.c (build_over_call): Return.
12145 (add_builtin_candidate): Fix MEMBER_REF.
12146 (build_new_op): Likewise.
12147
12148 Mon Aug 5 17:07:47 1996 Mike Stump <mrs@cygnus.com>
12149
12150 * method.c (build_overload_name): Put bug fix into code but leave
12151 disabled for now so we can be bug compatible with older releases
12152 that do repeats incorrectly. In the future, we can enable it.
12153
12154 Mon Aug 5 13:46:28 1996 Jason Merrill <jason@yorick.cygnus.com>
12155
12156 * cvt.c (convert_like): Don't call build_cplus_new twice.
12157
12158 * call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
12159 Control new overloading code with -fansi-overloading.
12160
12161 Sun Aug 4 15:29:11 1996 Jason Merrill <jason@yorick.cygnus.com>
12162
12163 * cvt.c (build_over_call): Call build_cplus_new.
12164 * call.c (build_method_call): Likewise.
12165 * typeck.c (build_function_call_real): Likewise.
12166 (build_conditional_expr): If both operands are TARGET_EXPRs, wrap
12167 the COND_EXPR in a TARGET_EXPR so they use the same slot.
12168
12169 * cvt.c (build_up_reference): Propagate INDIRECT_BIND to
12170 recursive calls.
12171 * typeck.c (complete_type): Propagate
12172 TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
12173
12174 Sat Aug 3 14:05:07 1996 Jason Merrill <jason@yorick.cygnus.com>
12175
12176 * cvt.c (joust): More ?: kludging. Sigh.
12177 (build_over_call): Don't try to synthesize global fns.
12178
12179 * search.c (lookup_conversions): Use binfo marking.
12180
12181 Sat Aug 3 12:33:42 1996 Bob Manson <manson@charmed.cygnus.com>
12182
12183 * search.c (build_mi_matrix): Use the correct value of cid
12184 when determining the new mi_size.
12185
12186 Sat Aug 3 01:27:41 1996 Jason Merrill <jason@yorick.cygnus.com>
12187
12188 * cvt.c (add_builtin_candidates): Do consider type conversion ops
12189 for the first parms of += et al.
12190 (strip_top_quals): New fn.
12191 (reference_binding): Use it instead of TYPE_MAIN_VARIANT.
12192 (implicit_conversion): Likewise.
12193 (add_builtin_candidates): Be careful about arrays.
12194 (build_new_method_call): Handle vtable optimization.
12195
12196 Fri Aug 2 01:26:59 1996 Jason Merrill <jason@yorick.cygnus.com>
12197
12198 * cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
12199 * cvt.c (reference_binding): Use it.
12200 (implicit_conversion): Use it.
12201 (add_builtin_candidate, COND_EXPR): Use it.
12202
12203 * cvt.c (build_new_function_call): Check for error args.
12204
12205 * typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
12206
12207 * gxx.gperf: Add __null.
12208 * hash.h: Regenerate.
12209 * lex.h: Add RID_NULL.
12210 * lex.c (init_lex): Create null_pointer_node here, stick it in
12211 RID_NULL.
12212 * decl.c (init_decl_processing): Still set its type here.
12213 * cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
12214 (convert_to_pointer_force): Likewise.
12215 (null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
12216 if (! pedantic).
12217 * call.c (convert_harshness): Use null_ptr_cst_p.
12218 * typeck.c (convert_for_assignment): Likewise. Don't produce
12219 null_pointer_node.
12220
12221 * error.c (args_as_string): Handle lists of actual args, too.
12222 * cvt.c (null_ptr_cst): Support (void*)0 for now.
12223 (build_user_type_conversion_1): Improve diagnostics.
12224 (build_new_function_call): Likewise.
12225 (build_object_call): Likewise.
12226 (build_new_method_call): Likewise. Move call before def diagnostic...
12227 (build_over_call): Here.
12228
12229 * cvt.c (build_new_method_call): Don't complain about no match if
12230 LOOKUP_SPECULATIVELY.
12231 (build_over_call): Fix 'this' for virtual fn.
12232 (build_new_method_call): Add diagnostic.
12233
12234 Thu Aug 1 16:45:09 1996 Jason Merrill <jason@yorick.cygnus.com>
12235
12236 * cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
12237 constructors to be passed in.
12238 (build_over_call): Likewise.
12239 (build_user_type_conversion_1): Pass them in.
12240 (convert_like): Likewise.
12241 (build_object_call): Handle overloaded conversions.
12242 (build_over_call): Pass the right args to build_vfn_ref.
12243 (standard_conversion): Fix pmf convs.
12244 (joust): Handle comparing statics and non-statics.
12245 (build_new_method_call): New fn.
12246 * call.c (build_method_call): Call it if NEW_OVER.
12247
12248 Thu Aug 1 16:06:14 1996 Mike Stump <mrs@cygnus.com>
12249
12250 * lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
12251 %D instead.
12252
12253 Thu Aug 1 15:24:02 1996 Mike Stump <mrs@cygnus.com>
12254
12255 * except.c (expand_throw): Use maybe_build_cleanup_and_delete
12256 instead of just maybe_build_cleanup so that we deallocate the
12257 thrown object.
12258
12259 Thu Aug 1 15:18:00 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12260
12261 * decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
12262 * cp-tree.h (finish_prevtable_vardecl): Add decl.
12263
12264 Thu Aug 1 11:53:51 1996 Bob Manson <manson@charmed.cygnus.com>
12265
12266 * pt.c (instantiate_class_template): Call complete_type. Also, if
12267 we're at the end of the file and we just instantiated a template
12268 class with a vtable, call finish_prevtable_vardecl.
12269
12270 * error.c (dump_decl): Don't explode (or explode more gracefully
12271 as appropriate) if the object being dumped has a null type.
12272 (dump_expr): Likewise.
12273
12274 * search.c (build_mi_matrix): Ensure that mi_size is large enough,
12275 by counting the number of nodes that we'll need before allocating
12276 the array.
12277 (lookup_fnfields): Fix comment.
12278 (breadth_first_search): Fix comment.
12279
12280 Wed Jul 31 09:57:05 1996 Jason Merrill <jason@yorick.cygnus.com>
12281
12282 * pt.c (instantiate_class_template): Propagate TYPE_PACKED and
12283 TYPE_ALIGN.
12284 * class.c (finish_struct): Call cplus_decl_attributes here.
12285 (finish_struct_1): Not here.
12286 * cp-tree.h: Adjust.
12287
12288 * pt.c (type_unification): New parameter STRICT.
12289 (unify): If STRICT, don't allow cv addition or base deduction.
12290 * call.c, class.c, cvt.c, cp-tree.h: Adjust.
12291
12292 Tue Jul 30 13:06:13 1996 Jason Merrill <jason@yorick.cygnus.com>
12293
12294 * search.c (get_template_base{_recursive}): New fns.
12295 * pt.c (more_specialized): New fn.
12296 (do_function_instantiation): Use it.
12297 (unify): Handle base deduction.
12298 * cvt.c (joust): Use more_specialized.
12299 Don't arbitrarily choose between non-builtin candidates.
12300 (build_over_call): Call require_complete_type.
12301
12302 * decl.c (start_function): Statics are static even in a #pragma
12303 interface file.
12304
12305 * decl2.c (import_export_vtable): Disable vtable heuristic on
12306 systems with ASM_OUTPUT_EXTERNAL.
12307
12308 * cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
12309 (standard_conversion): No std conv to enum type.
12310
12311 * cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
12312 for ptm's.
12313
12314 * cvt.c (reference_binding): Bind directly to a base subobject of
12315 a class rvalue.
12316
12317 * cvt.c (build_new_op): Enforce access control.
12318
12319 Tue Jul 30 09:22:53 1996 Bob Manson <manson@charmed.cygnus.com>
12320
12321 * typeck2.c (process_init_constructor): When scanning the
12322 union for a named field, skip things that aren't FIELD_DECLs.
12323
12324 * method.c (synthesize_method): Don't scan fndecl's rtl if
12325 we're at the end of the file; just assume the function can't
12326 be inlined.
12327
12328 Mon Jul 29 15:48:30 1996 Jason Merrill <jason@yorick.cygnus.com>
12329
12330 * cvt.c (build_builtin_candidate): Stick a dummy conversion in if
12331 it failed.
12332
12333 * cvt.c (build_user_type_conversion_1): Handle overloaded
12334 conversion ops.
12335
12336 * cvt.c (add_builtin_candidates): Don't consider type conversion
12337 operators for the first parameter of operator=.
12338
12339 Mon Jul 29 15:33:55 1996 Bob Manson <manson@charmed.cygnus.com>
12340
12341 * typeck.c (complete_type): Only call layout_type if we're not
12342 expanding a template.
12343
12344 Mon Jul 29 14:40:38 1996 Jason Merrill <jason@yorick.cygnus.com>
12345
12346 * cvt.c (compare_ics): Oops.
12347
12348 * cvt.c (op_error): Oops.
12349
12350 * cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
12351 * cvt.c: Add IDENTITY_RANK before others. Use real_lvalue_p.
12352 (build_conv): Use them.
12353 (implicit_conversion): Use them.
12354 (convert_like): Handle them.
12355 (build_new_op): Handle builtin COND_EXPR again.
12356 (add_builtin_candidates): Strip cv-quals. Fix oops. Include enums
12357 in lists of types for COND_EXPR.
12358 (add_builtin_candidate): Add enum candidates for COND_EXPR.
12359
12360 Mon Jul 29 12:05:40 1996 Bob Manson <manson@charmed.cygnus.com>
12361
12362 * typeck.c (build_modify_expr): Always attempt to build a call to
12363 the assignment operator, even if we're using a default one.
12364 (convert_for_initialization): Call complete_type.
12365
12366 Mon Jul 29 11:25:08 1996 Jason Merrill <jason@yorick.cygnus.com>
12367
12368 * cvt.c (reference_binding): A REF_BIND gets the reference type.
12369 (implicit_conversion): Likewise.
12370 (convert_like): Likewise.
12371 (compare_ics): Likewise.
12372 (compare_qual): Likewise.
12373 (print_z_candidates): Handle no candidates.
12374 (build_new_op): Don't handle builtin COND_EXPR for now.
12375
12376 Sat Jul 27 11:27:47 1996 Stan Shebs <shebs@andros.cygnus.com>
12377
12378 * cvt.c (build_builtin_candidate): Init local var in an ANSI way.
12379
12380 Fri Jul 26 01:07:22 1996 Jason Merrill <jason@yorick.cygnus.com>
12381
12382 * cvt.c (joust): If the candidates are the same, arbitrarily pick one.
12383
12384 * cvt.c (build_builtin_candidate): Oops.
12385 (build_new_op): Oops.
12386
12387 * method.c (build_opfncall): Pass COND_EXPR on.
12388 * cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
12389 (add_builtin_candidate{,s}): Likewise.
12390 (add_builtin_candidates): Likewise.
12391 (print_z_candidates, op_error, build_new_op): Likewise.
12392 (type_decays_to): New fn.
12393 * lex.c (init_lex): Just say ?: for COND_EXPR.
12394
12395 Thu Jul 25 09:33:33 1996 Jason Merrill <jason@yorick.cygnus.com>
12396
12397 * typeck.c (complete_type): Call layout_type rather than building
12398 a new array type.
12399
12400 * cvt.c (add_builtin_candidate): Pointer arithmetic candidates
12401 only use ptrdiff_t.
12402
12403 Wed Jul 24 12:45:08 1996 Jason Merrill <jason@yorick.cygnus.com>
12404
12405 * cvt.c: Always compile the new overloading code (but don't use it).
12406 (implicit_conversion): Add a BASE_CONV when converting to
12407 the same class type.
12408 (convert_like): Handle BASE_CONV.
12409
12410 Tue Jul 23 12:46:30 1996 Jason Merrill <jason@yorick.cygnus.com>
12411
12412 * cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
12413 (add_builtin_candidate): Likewise.
12414
12415 NEW_OVER changes:
12416 * typeck.c (build_x_function_call): Try an operator function
12417 whenever we call an object of class type.
12418 * method.c (build_opfncall): Pass CALL_EXPRs through.
12419 * cvt.c (implicit_conversion): Do const-ref case first.
12420 (add_conv_candidate, build_object_call, op_error): New fns.
12421 (ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
12422 ({add,build}_builtin_candidate{,s}, print_z_candidates): Display
12423 builtin candidates.
12424 (build_new_op): Handle CALL_EXPR. Don't try to decay void.
12425 Fall back on preincrement handling. Use op_error.
12426 Handle warn_synth.
12427 (convert_like): Pass INDIRECT_BIND. Don't try to do anything with
12428 an error_mark_node.
12429 (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
12430 properly.
12431
12432 Mon Jul 22 16:21:55 1996 Bob Manson <manson@charmed.cygnus.com>
12433
12434 * pt.c (tsubst_expr): Handle CONTINUE_STMT.
12435
12436 Mon Jul 22 15:38:58 1996 Mike Stump <mrs@cygnus.com>
12437
12438 * typeck.c (build_component_ref_1): Use build_component_ref
12439 instead of open coding it here.
12440
12441 Mon Jul 22 12:18:54 1996 Jason Merrill <jason@yorick.cygnus.com>
12442
12443 * g++.c (main): Don't link with -lg++.
12444
12445 NEW_OVER changes:
12446 * cvt.c (convert_to_reference): Don't use convert_from_reference on
12447 result of build_type_conversion.
12448 (cp_convert): Only call build_method_call for ctors if
12449 build_type_conversion failed.
12450 (ptr_complete_ob): New function.
12451 (TYPE_PTR{,OB,MEM}_P): New macros.
12452 ({add,build}_builtin_candidate{,s}): New functions.
12453 (print_z_candidates): Handle builtins.
12454 (build_user_type_conversion_1): Don't use conversion fns for
12455 converting to a base type.
12456 (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
12457 (build_user_type_conversion): Use convert_from_reference.
12458 (build_new_op): New function.
12459 (build_over_call): Fix handling of methods.
12460 (compare_ics): Handle AMBIG_CONV properly.
12461 * typeck2.c: Increment abort count.
12462 * method.c (build_opfncall): Forward most requests to build_new_op.
12463 * cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
12464
12465 Fri Jul 19 17:59:29 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12466
12467 * error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
12468 invalid second argument to dump_expr_list.
12469
12470 Fri Jul 19 14:04:05 1996 Mike Stump <mrs@cygnus.com>
12471
12472 * decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
12473
12474 Thu Jul 18 14:48:23 1996 Bob Manson <manson@charmed.cygnus.com>
12475
12476 * decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
12477 ASSEMBLE_EXTERNAL.
12478
12479 Mon Jul 15 17:48:43 1996 Mike Stump <mrs@cygnus.com>
12480
12481 * typeck2.c (process_init_constructor): New pedwarn for using { }
12482 to initialize a pointer to member function.
12483 * typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
12484 we can avoid the new error.
12485
12486 Mon Jul 15 15:42:03 1996 Mike Stump <mrs@cygnus.com>
12487
12488 * typeck.c (build_ptrmemfunc1): New function to hide details of
12489 pointer to member functions better.
12490
12491 Mon Jul 15 14:23:02 1996 Mike Stump <mrs@cygnus.com>
12492
12493 * init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
12494 methods into the actual method, as we know the implied object is
12495 not used.
12496
12497 Mon Jul 15 13:08:29 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12498
12499 * parse.y (maybecomma_warn): Only emit the pedwarn if we're not
12500 inside a system header.
12501
12502 Fri Jul 12 16:30:05 1996 Bob Manson <manson@charmed.cygnus.com>
12503
12504 * call.c (build_method_call): Call complete_type on the
12505 instance type.
12506
12507 Thu Jul 11 17:16:40 1996 Mike Stump <mrs@cygnus.com>
12508
12509 * typeck.c (build_component_ref): Always build up an OFFSET_REF
12510 for obj_ptr->func so that we can know which object to use in a
12511 method call.
12512
12513 Wed Jul 10 19:36:37 1996 Mike Stump <mrs@cygnus.com>
12514
12515 * typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
12516 around things. Also improve maintainability.
12517
12518 Wed Jul 10 18:20:11 1996 Bob Manson <manson@charmed.cygnus.com>
12519
12520 * decl.c (grokdeclarator): Check for overflow when evaluating an
12521 array dimension.
12522
12523 Wed Jul 10 17:26:19 1996 Jason Merrill <jason@yorick.cygnus.com>
12524
12525 * cvt.c (cp_convert): Don't check for ambiguity with constructor
12526 if NEW_OVER.
12527
12528 * typeck.c (build_x_function_call): Pass function overload
12529 questions to new overloading code if NEW_OVER.
12530 * init.c (expand_aggr_init_1): Only check for type conversion ops
12531 if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
12532 Don't check for ambiguity with constructor if NEW_OVER.
12533 * cvt.c (convert_to_reference): Dereference the result of a type
12534 conversion operator.
12535 (build_conv): Propagate ICS_USER_FLAG.
12536 (implicit_conversion): Call instantiate_type.
12537 Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
12538 (add_function_candidate): Fix cv-quals on argtype.
12539 (print_z_candidates): New function.
12540 (build_new_function_call): Call it.
12541 (build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
12542 consider non-converting constructors.
12543 Call print_z_candidates.
12544 Return an AMBIG_CONV for an ambiguous conversion.
12545 (build_user_type_conversion): Handle AMBIG_CONV.
12546 (convert_like): Fix test for building TARGET_EXPR.
12547 Call instantiate_type.
12548 Handle AMBIG_CONV and LVALUE_CONV.
12549 (build_over_call): Handle 0 args and ellipsis.
12550 * cp-tree.def: Add AMBIG_CONV.
12551
12552 Tue Jul 9 17:48:48 1996 Mike Stump <mrs@cygnus.com>
12553
12554 * decl.c (lookup_name_real): If we find mem in obj when parsing
12555 `obj->mem', make sure we return the right value.
12556
12557 Tue Jul 9 16:11:28 1996 Bob Manson <manson@charmed.cygnus.com>
12558
12559 * search.c (get_base_distance): Call complete_type.
12560
12561 Tue Jul 9 12:46:34 1996 Mike Stump <mrs@cygnus.com>
12562
12563 * decl.c (store_bindings): Make static.
12564
12565 Mon Jul 8 16:42:31 1996 Jason Merrill <jason@yorick.cygnus.com>
12566
12567 * init.c (expand_aggr_init_1): Don't check type conversions if
12568 NEW_OVER.
12569
12570 * cvt.c (z_candidate): Put back template field.
12571 (add_function_candidate): Set it.
12572 (add_template_candidate): Likewise.
12573 (joust): Use it.
12574 (compare_qual): Handle references and pointers to members.
12575 (compare_ics): Handle reference bindings.
12576
12577 * decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
12578
12579 Mon Jul 8 16:18:56 1996 Bob Manson <manson@charmed.cygnus.com>
12580
12581 * call.c (compute_conversion_costs): Call complete_type.
12582
12583 * tree.c (vec_binfo_member): Use comptypes instead of comparing
12584 pointers, so we can handle template parameters.
12585
12586 Fri Jul 5 16:51:53 1996 Bob Manson <manson@charmed.cygnus.com>
12587
12588 * cvt.c (cp_convert_to_pointer): We have to call complete_type
12589 here; let's make it explicit instead of a side effect of an
12590 error check.
12591
12592 Wed Jul 3 16:29:51 1996 Jason Merrill <jason@yorick.cygnus.com>
12593
12594 * cvt.c (z_candidate): Remove template field.
12595 (reference_binding): Handle binding to temporary.
12596 (implicit_conversion): Likewise.
12597 (add_function_candidate): Handle artificial constructor parms.
12598 Handle functions with too few parms.
12599 (add_template_candidate): New function.
12600 (build_user_type_conversion_1): Handle constructors.
12601 (convert_like): Likewise.
12602 (build_over_call): Likewise.
12603 (build_new_function_call): Support templates.
12604 (compare_ics): Fix reference, inheritance handling.
12605
12606 Mon Jul 1 22:58:18 1996 Bob Manson <manson@charmed.cygnus.com>
12607
12608 * decl.c: Add signed_size_zero_node.
12609 (init_decl_processing): Build it.
12610 * class.c (prepare_fresh_vtable): Use it instead of size_zero_node
12611 when we're trying to make a negative delta.
12612
12613 Mon Jul 1 17:56:19 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12614
12615 Stop doing this damn index==strchr variable name confusion.
12616 * class.c (add_virtual_function): Change local var INDEX to be
12617 named IDX.
12618 (add_method): Likewise.
12619 * lex.c (print_parse_statistics): Likewise.
12620 * search.c (make_memoized_table_entry): Likewise.
12621 (lookup_fnfields_here): Likewise.
12622 (lookup_field): Likewise.
12623 (lookup_fnfields): Likewise.
12624 (get_baselinks): Likewise.
12625 * sig.c (build_signature_table_constructor): Likewise.
12626 (build_signature_method_call): Likewise.
12627 * typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
12628 (get_member_function_from_ptrfunc): Likewise.
12629 (build_ptrmemfunc): Change local var INDEX to be IDX.
12630 (c_expand_start_case): Likewise.
12631
12632 Sat Jun 29 14:05:46 1996 Jason Merrill <jason@yorick.cygnus.com>
12633
12634 * cvt.c (cp_convert_to_pointer): Move user-defined type conversion
12635 handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
12636 (convert_to_reference): Use build_type_conversion to convert to
12637 the reference type directly.
12638 (standard_conversion): Fix void* case, non-conversions.
12639 (reference_binding): Fix expr == 0 case, non-conversions.
12640 (convert_like): Support REF_BIND.
12641 (compare_qual): Split out from compare_ics.
12642 (compare_ics): Use it, handle icses with only a qual_conv.
12643
12644 * init.c (expand_vec_init): Don't crash if decl is NULL.
12645
12646 Fri Jun 28 11:52:51 1996 Stan Shebs <shebs@andros.cygnus.com>
12647
12648 * mpw-config.in: New file, configury for Mac MPW.
12649 * mpw-make.sed: New file, makefile editing for MPW.
12650
12651 Thu Jun 27 15:18:30 1996 Jason Merrill <jason@yorick.cygnus.com>
12652
12653 * pt.c (instantiate_class_template): Call repo_template_used.
12654
12655 * search.c (lookup_conversions): Only lookup conversions in
12656 complete types.
12657
12658 Thu Jun 27 12:59:53 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12659
12660 * cp-tree.def: Renamed from tree.def, to avoid confusion with
12661 gcc's tree.def.
12662 * cp-tree.h, lex.c: Include cp-tree.def.
12663 * Makefile.in (CXX_TREE_H): Reference cp-tree.def.
12664
12665 Wed Jun 26 18:29:47 1996 Bob Manson <manson@charmed.cygnus.com>
12666
12667 * init.c (build_vec_delete_1): Call complete_type.
12668
12669 Mon Jun 24 17:17:32 1996 Mike Stump <mrs@cygnus.com>
12670
12671 * except.c (start_anon_func): Make sure anonymous functions are
12672 never external.
12673
12674 Fri Jun 21 15:10:58 1996 Jason Merrill <jason@yorick.cygnus.com>
12675
12676 * decl.c (finish_function): If function_depth > 1, set nested.
12677
12678 * decl2.c (grokbitfield): Revert Bob's change.
12679 * class.c (finish_struct_1): Fix handling of named bitfield widths.
12680
12681 Thu Jun 20 23:35:38 1996 Jason Merrill <jason@yorick.cygnus.com>
12682
12683 * pt.c (add_pending_template): Handle types.
12684 (lookup_template_class): With -fexternal-templates, just add the class
12685 to pending_templates instead of instantiating it now.
12686 * decl2.c (finish_file): Handle types in pending_templates.
12687
12688 Thu Jun 20 14:08:40 1996 Bob Manson <manson@charmed.cygnus.com>
12689
12690 * decl2.c (grokbitfield): Handle constant decls appropriately.
12691 Give an appropriate error message now instead of spewing core
12692 later.
12693
12694 Thu Jun 20 13:01:51 1996 Jason Merrill <jason@yorick.cygnus.com>
12695
12696 * decl2.c: Don't turn on thunks by default for now.
12697
12698 Wed Jun 19 11:37:04 1996 Jason Merrill <jason@yorick.cygnus.com>
12699
12700 * typeck.c (complete_type): Handle error_mark_node.
12701 (common_type, OFFSET_TYPE): Handle template_type_parms.
12702
12703 Tue Jun 18 10:02:15 1996 Jason Merrill <jason@yorick.cygnus.com>
12704
12705 * pt.c (instantiate_decl): If at_eof, call import_export_decl
12706 regardless of DECL_INLINE.
12707
12708 * typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
12709
12710 * class.c (finish_struct_bits): Copy TYPE_SIZE.
12711
12712 * rtti.c (build_dynamic_cast): Support templates.
12713 * tree.def: Support DYNAMIC_CAST_EXPR.
12714 * pt.c (tsubst_copy): Likewise.
12715 * decl2.c (build_expr_from_tree): Likewise.
12716
12717 Mon Jun 17 15:23:36 1996 Jason Merrill <jason@yorick.cygnus.com>
12718
12719 * typeck.c (build_static_cast): Support templates.
12720 (build_const_cast): Likewise.
12721 * tree.def: Support CONST/STATIC_CAST_EXPR.
12722 * pt.c (tsubst_copy): Likewise.
12723 * decl2.c (build_expr_from_tree): Likewise.
12724
12725 Sun Jun 16 12:33:57 1996 Jason Merrill <jason@yorick.cygnus.com>
12726
12727 * decl2.c (finish_vtable_vardecl): Don't trust
12728 TREE_SYMBOL_REFERENCED for vtables of local classes.
12729
12730 Fri Jun 14 18:13:36 1996 Jason Merrill <jason@yorick.cygnus.com>
12731
12732 * pt.c (tsubst_copy): Handle operator T.
12733
12734 Wed Jun 12 17:52:40 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12735
12736 * init.c (build_delete): Move creation of PARMS inside test of
12737 TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
12738
12739 Tue Jun 11 15:09:18 1996 Bob Manson <manson@charmed.cygnus.com>
12740
12741 * typeck.c (build_conditional_expr): Don't assume that
12742 the arguments to ?: are always pointers or records.
12743
12744 Tue Jun 11 13:56:23 1996 Jason Merrill <jason@yorick.cygnus.com>
12745
12746 * decl2.c (import_export_decl): Still emit static/weak/comdat
12747 copies of inline template functions with -fno-implicit-templates.
12748
12749 Tue Jun 11 11:42:13 1996 Bob Manson <manson@charmed.cygnus.com>
12750
12751 * init.c (build_delete): Determine the complete basetype
12752 path to the destructor we're calling.
12753
12754 Fri Jun 7 15:30:10 1996 Bob Manson <manson@charmed.cygnus.com>
12755
12756 * decl.c (build_enumerator): Always copy the INTEGER_CST used to
12757 initialize the enum, because we really and truly don't know where
12758 it came from.
12759 (start_enum): Don't copy integer_zero_node because
12760 build_enumerator will do it.
12761
12762 Fri Jun 7 11:11:09 1996 Jason Merrill <jason@yorick.cygnus.com>
12763
12764 * decl.c (finish_function): Do access control on base destructors.
12765
12766 * pt.c (tsubst, case FUNCTION_DECL): Set up
12767 IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
12768 hose us.
12769
12770 Fri Jun 7 10:37:33 1996 Mike Stump <mrs@cygnus.com>
12771
12772 * cvt.c (build_up_reference): If we have already extended the
12773 lifetime of the temporary, don't try it again.
12774 * typeck.c (c_expand_return): Don't try and convert the return
12775 value twice when we want a reference, once is enough.
12776
12777 Tue Jun 4 15:41:45 1996 Jason Merrill <jason@yorick.cygnus.com>
12778
12779 * pt.c (tsubst_expr, case DECL_STMT): Don't pass
12780 LOOKUP_ONLYCONVERTING at all for now.
12781
12782 * search.c (add_conversions): Put the conversion function in
12783 TREE_VALUE, the basetype in TREE_PURPOSE.
12784 * cvt.c (build_type_conversion): Adjust.
12785 * cvt.c (build_expr_type_conversion): Adjust.
12786 * call.c (user_harshness): Adjust.
12787
12788 Mon Jun 3 15:30:52 1996 Jason Merrill <jason@yorick.cygnus.com>
12789
12790 * method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
12791 backend's benefit.
12792
12793 Mon Jun 10 18:58:19 1996 Mike Stump <mrs@cygnus.com>
12794
12795 * except.c (expand_start_catch_block): Add a dummy region, if we
12796 get an error, so that we can avoid core dumping later.
12797
12798 Fri May 31 14:56:13 1996 Mike Stump <mrs@cygnus.com>
12799
12800 * cp-tree.h (OFFSET_REF): Remove.
12801 * tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
12802 * expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
12803 * init.c (expand_aggr_init_1): Likewise.
12804 (build_new): Likewise.
12805 * typeck.c (expand_target_expr): Likewise.
12806
12807 Fri May 31 14:22:08 1996 Jason Merrill <jason@yorick.cygnus.com>
12808
12809 * typeck.c (build_modify_expr): Don't use TREE_VALUE on a
12810 TARGET_EXPR.
12811
12812 Wed May 29 17:04:33 1996 Mike Stump <mrs@cygnus.com>
12813
12814 * cvt.c (build_up_reference): Redo how and when temporaries are
12815 created.
12816 * decl.c (grok_reference_init): Don't try and be smart about
12817 running cleanups.
12818
12819 Wed May 29 16:02:08 1996 Mike Stump <mrs@cygnus.com>
12820
12821 * cvt.c (build_up_reference): Add NULL_TREE to all calls to build
12822 (TARGET_EXPR...), now that it has 4 arguments.
12823 * tree.c (build_cplus_new): Likewise.
12824
12825 Thu May 23 16:40:30 1996 Jason Merrill <jason@yorick.cygnus.com>
12826
12827 * error.c (dump_expr, case CAST_EXPR): Handle T() properly.
12828
12829 * pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
12830 * decl.c (struct saved_scope): Remove named_labels,
12831 {base,member}_init_list.
12832 (maybe_push_to_top_level): Don't set them. Call
12833 push_cp_function_context if appropriate.
12834 (pop_from_top_level): Likewise.
12835
12836 * method.c (do_build_assign_ref): Remove obsolete check of
12837 TYPE_HAS_ASSIGN_REF (basetype).
12838
12839 * decl.c (grokfndecl): Diagnose user definition of
12840 implicitly-declared methods.
12841
12842 Thu May 23 12:13:08 1996 Bob Manson <manson@charmed.cygnus.com>
12843
12844 * method.c (do_build_copy_constructor): Add code to give
12845 meaningful error messages instead of crashing.
12846 (do_build_assign_ref): Don't synthesize assignment operators for
12847 classes containing reference or const members.
12848
12849 * class.c (struct base_info): Remove cant_synth_copy_ctor
12850 and cant_synth_asn_ref.
12851 (finish_base_struct): Remove the code that tries to conditionalize
12852 synthesis of copy constructors & assignment operators based on
12853 access permissions. Instead, let it fail when it tries to
12854 synthesize the copy constructor. This will give meaningful error
12855 messages instead of silently generating code to perform a bitcopy.
12856
12857 Wed May 22 11:45:19 1996 Bob Manson <manson@charmed.cygnus.com>
12858
12859 * lex.c (real_yylex): Remove old-n-crufty #if 0 code for
12860 determining types for constant values.
12861
12862 * decl.c (struct named_label_list): Use instead of stuffing
12863 random items into a TREE_LIST node.
12864 (named_label_uses): Use the new struct.
12865 (poplevel): Likewise.
12866 (lookup_label): Likewise.
12867 (define_label): Add an error message to tell the user the line
12868 where the goto is located in addition to the destination of the
12869 goto.
12870 (init_decl_processing): Use NULL instead of NULL_TREE to initialize
12871 named_label_uses.
12872 (finish_function): Likewise.
12873
12874 (start_decl): Complain about defining a static data member
12875 in a different type from which it was declared.
12876
12877 Wed May 22 09:33:23 1996 Jason Merrill <jason@yorick.cygnus.com>
12878
12879 * cvt.c (build_expr_type_conversion): Adjust.
12880
12881 Tue May 21 11:21:56 1996 Jason Merrill <jason@yorick.cygnus.com>
12882
12883 * call.c (build_method_call): Always convert 'this' to the
12884 appropriate type.
12885
12886 * search.c (add_conversions): Put the conversion function in
12887 TREE_VALUE, the type in TREE_PURPOSE.
12888 * cvt.c (build_type_conversion): Adjust.
12889 * call.c (user_harshness): Adjust.
12890
12891 * method.c (emit_thunk): Call temporary_allocation and
12892 permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
12893
12894 * tree.c (build_cplus_array_type): Handle tweaking of
12895 TYPE_MAIN_VARIANT here.
12896 * typeck.c (common_type): Not here.
12897
12898 * typeck.c (complete_type): Only try to complete an array type if
12899 it has a domain.
12900
12901 Mon May 20 14:55:59 1996 Jason Merrill <jason@yorick.cygnus.com>
12902
12903 * decl.c (grokvardecl): Call complete_type.
12904 (grokdeclarator): Call complete_type for PARM_DECLs.
12905
12906 Fri May 17 16:41:17 1996 Jason Merrill <jason@yorick.cygnus.com>
12907
12908 * pt.c (instantiate_class_template): Re-set
12909 CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
12910
12911 Fri May 17 14:56:55 1996 Mike Stump <mrs@cygnus.com>
12912
12913 * cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
12914 smart enough to do it right.
12915 * tree.c (cp_expand_decl_cleanup): Likewise.
12916 * decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
12917 cp_expand_decl_cleanup.
12918 (store_parm_decls): Likewise.
12919 (hack_incomplete_structures): Likewise.
12920 * except.c (push_eh_cleanup): Likewise.
12921
12922 Fri May 17 13:13:51 1996 Mike Stump <mrs@cygnus.com>
12923
12924 * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
12925 frontend to the backend where it belongs.
12926 * tree.c (unsave_expr): Likewise.
12927 (unsave_expr_now): Likewise.
12928 * tree.def (UNSAVE_EXPR): Likewise.
12929 * cp-tree.h (unsave_expr): Likewise.
12930 (unsave_expr_now): Likewise.
12931
12932 Fri May 17 11:02:41 1996 Mike Stump <mrs@cygnus.com>
12933
12934 * init.c (emit_base_init): Make sure the partial EH cleanups live
12935 on the function_obstack.
12936
12937 Thu May 16 15:29:33 1996 Bob Manson <manson@charmed.cygnus.com>
12938
12939 * expr.c (do_case): Don't try to dereference null TREE_TYPEs
12940 when checking for pointer types.
12941
12942 Thu May 16 13:38:58 1996 Jason Merrill <jason@yorick.cygnus.com>
12943
12944 * pt.c (instantiate_class_template): Remove obsolete check for
12945 access declarations.
12946
12947 Thu May 16 13:34:15 1996 Mike Stump <mrs@cygnus.com>
12948
12949 * call.c (build_overload_call): Simplify calls to
12950 build_overload_call by removing last parameter.
12951 (build_method_call): Likewise.
12952 * cp-tree.h: Likewise.
12953 * method.c (build_opfncall): Likewise.
12954 * typeck.c (build_x_function_call): Likewise.
12955
12956 Thu May 16 13:15:43 1996 Mike Stump <mrs@cygnus.com>
12957
12958 * call.c (default_parm_conversions): Factor out common code.
12959 (build_method_call): Use it.
12960 (build_overload_call_real): Use it.
12961
12962 Wed May 15 14:46:14 1996 Mike Stump <mrs@cygnus.com>
12963
12964 * call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
12965 but pedwarn as the code is bogus.
12966 * typeck.c (decay_conversion): Likewise.
12967 (build_function_call_real): Use build_addr_func instead of
12968 default_conversion. Don't allow pointer-to-method functions down
12969 here.
12970 (build_unary_op): Use real pointer-to-member functions instead of
12971 fake ones.
12972 (build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
12973 (convert_for_assignment): Removed some obsolete code.
12974 * decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
12975 build_x_function_call instead of current_class_ptr. Only call
12976 digest_init once on an initializer, we do this just checking
12977 TREE_TYPE.
12978 (build_expr_from_tree): Pass current_class_ref to
12979 build_x_function_call instead of current_class_ptr.
12980 * init.c (build_member_call): Likewise.
12981 * pase.y: Likewise.
12982 * error.c (dump_expr): Handle OFFSET_REFs better.
12983 * pt.c (unify): Handle pointer-to-member functions better.
12984 * decl.c (finish_function): Clear out current_class_ref just like
12985 we do for current_class_ptr.
12986
12987 * typeck.c (get_delta_difference): Handle virtual bases better.
12988
12989 Tue May 14 16:37:37 1996 Jason Merrill <jason@yorick.cygnus.com>
12990
12991 * sig.c (build_signature_table_constructor): Use the delta for
12992 the original basetype for this virtual function with thunks.
12993 (build_signature_method_call): We still need to adjust 'this'
12994 with thunks.
12995
12996 Tue May 14 16:27:25 1996 Mike Stump <mrs@cygnus.com>
12997
12998 * call.c (build_addr_func): New routine. Used to get the `real'
12999 address of a function or a method. Needed to avoid getting a
13000 pointer-to-member function.
13001 (build_call): New routine to build CALL_EXPRs.
13002 (build_method_call): Use it.
13003 * cvt.c (convert_to_aggr): Likewise.
13004 * typeck.c (build_function_call_real): Likewise.
13005 * sig.c (build_signature_table_constructor): Use build_addr_func.
13006 * cp-tree.h (build_call, build_addr_func): Declare them.
13007
13008 Tue May 14 12:47:47 1996 Mike Stump <mrs@cygnus.com>
13009
13010 * cp-tree.h (LOOKUP_AGGR): Remove, unused.
13011 * parse.y: Remove uses of LOOKUP_AGGR.
13012
13013 Tue May 14 12:07:51 1996 Mike Stump <mrs@cygnus.com>
13014
13015 * *.[chy]: Rename current_class_decl to current_class_ptr, and
13016 C_C_D to current_class_ref.
13017
13018 Mon May 13 16:55:23 1996 Jason Merrill <jason@yorick.cygnus.com>
13019
13020 * call.c (convert_harshness): Tighten up pointer conversions.
13021
13022 Sat May 11 04:33:50 1996 Doug Evans <dje@canuck.cygnus.com>
13023
13024 * decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
13025 (finish_file): Likewise.
13026
13027 Fri May 10 11:09:57 1996 Jason Merrill <jason@yorick.cygnus.com>
13028
13029 * cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
13030
13031 * method.c (emit_thunk): Set flag_omit_frame_pointer in default
13032 code.
13033
13034 Thu May 9 18:18:30 1996 Jason Merrill <jason@yorick.cygnus.com>
13035
13036 * decl2.c: Turn on thunks by default where supported.
13037
13038 Tue May 7 20:39:57 1996 Mike Stump <mrs@cygnus.com>
13039
13040 * cp-tree.h (build_overload_call_maybe): Removed.
13041 * call.c (build_overload_call_real): Invert meaning of last arg to
13042 be require_complete.
13043 (build_overload_call): Likewise.
13044 * typeck.c (build_x_function_call): Use build_overload_call_real
13045 instead of build_overload_call_maybe.
13046
13047 Mon May 6 01:23:32 1996 Jason Merrill <jason@yorick.cygnus.com>
13048
13049 * decl2.c (finish_file): Don't try to emit functions that haven't
13050 been compiled.
13051
13052 Fri May 3 09:30:13 1996 Jason Merrill <jason@yorick.cygnus.com>
13053
13054 * decl2.c (finish_vtable_vardecl): Oops.
13055
13056 * decl.c (maybe_push_to_top_level): Do save previous_class_*.
13057 Also store the bindings from previous_class_values.
13058 (pop_from_top_level): Restore them.
13059
13060 Thu May 2 21:56:49 1996 Jason Merrill <jason@yorick.cygnus.com>
13061
13062 * decl2.c (finish_vtable_vardecl): Only write out vtable if its
13063 symbol has been referenced.
13064 (finish_file): Re-join synthesis/vtable loop with inline emission
13065 loop, disable inlining when an inline is output.
13066
13067 Thu May 2 17:20:02 1996 Mike Stump <mrs@cygnus.com>
13068
13069 * except.c (init_exception_processing): Setup saved_in_catch.
13070 (push_eh_cleanup): Reset __eh_in_catch.
13071 (expand_start_catch_block): Set __eh_in_catch.
13072
13073 Thu May 2 16:21:17 1996 Mike Stump <mrs@cygnus.com>
13074
13075 * except.c (push_eh_cleanup): Add tracking for whether or not we
13076 have an active exception object.
13077 (expand_builtin_throw): Use it to make sure a rethrow without an
13078 exception object is caught.
13079
13080 Thu May 2 11:26:41 1996 Jason Merrill <jason@yorick.cygnus.com>
13081
13082 * decl.c (maybe_push_to_top_level): Clear out class-level bindings
13083 cache.
13084
13085 Wed May 1 11:26:52 1996 Jason Merrill <jason@yorick.cygnus.com>
13086
13087 * decl2.c (finish_file): Also use sentries for vars with
13088 DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
13089 created).
13090
13091 * lex.c (handle_cp_pragma): Disable #pragma
13092 interface/implementation if SUPPORTS_ONE_ONLY > 1.
13093
13094 Tue Apr 30 11:25:46 1996 Jason Merrill <jason@yorick.cygnus.com>
13095
13096 * method.c (emit_thunk): Wrap default case in
13097 temporary/permanent_allocation.
13098
13099 * method.c (make_thunk): Use DECL_ONE_ONLY.
13100 (emit_thunk): Call assemble_end_function.
13101
13102 Mon Apr 29 15:38:29 1996 Jason Merrill <jason@yorick.cygnus.com>
13103
13104 * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
13105 (import_export_decl): Likewise.
13106 (finish_prevtable_vardecl): Disable vtable hack if
13107 SUPPORTS_ONE_ONLY > 1.
13108
13109 Mon Apr 29 14:32:47 1996 Mike Stump <mrs@cygnus.com>
13110
13111 * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
13112 PREDECREMENT_EXPRs take two arguments, not one.
13113
13114 Mon Apr 29 00:27:53 1996 Jason Merrill <jason@yorick.cygnus.com>
13115
13116 * class.c (build_vtable_entry): Don't build thunks for abstract
13117 virtuals.
13118
13119 * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
13120 frontend.
13121
13122 Sat Apr 27 16:45:35 1996 Jason Merrill <jason@yorick.cygnus.com>
13123
13124 * class.c (set_rtti_entry): Use size_zero_node.
13125 (build_vtable): Likewise.
13126
13127 Sat Apr 27 14:48:57 1996 Jason Merrill <jason@phydeaux.cygnus.com>
13128
13129 * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
13130 (prepare_fresh_vtable): Likewise.
13131
13132 Fri Apr 26 13:14:14 1996 Jason Merrill <jason@yorick.cygnus.com>
13133
13134 * method.c (emit_thunk): Call mark_used on the target function.
13135
13136 * call.c (build_method_call): Don't warn about pending templates.
13137
13138 Thu Apr 25 14:55:44 1996 Jason Merrill <jason@yorick.cygnus.com>
13139
13140 * decl2.c (finish_file): Fix list walking logic.
13141
13142 * typeck2.c (check_for_new_type): Only warn if -pedantic.
13143
13144 Wed Apr 24 15:41:15 1996 Bob Manson <manson@charmed.cygnus.com>
13145
13146 * class.c (finish_struct_1): Remove old code for
13147 dont_allow_type_definitions.
13148 * cp-tree.h: Likewise.
13149 * spew.c: Make sure cp-tree.h is included before parse.h, so the
13150 definition of flagged_type_tree is found before it is used.
13151 * lex.c: Likewise.
13152 * parse.y: Added the ftype member to the type union, and changed a
13153 number of rules to use it instead of ttype. Added calls to
13154 check_for_new_type() as appropriate.
13155 * typeck2.c (check_for_new_type): New function for checking
13156 if a newly defined type appears in the specified tree.
13157 * cp-tree.h: Add new type flagged_type_tree. Add a prototype
13158 for check_for_new_type().
13159
13160 Wed Apr 24 00:36:21 1996 Jason Merrill <jason@yorick.cygnus.com>
13161
13162 * decl2.c (finish_file): Only use a sentry if the decl is public.
13163
13164 * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
13165 don't pass LOOKUP_ONLYCONVERTING.
13166
13167 Tue Apr 23 17:18:47 1996 Bob Manson <manson@charmed.cygnus.com>
13168
13169 * typeck.c (common_type): Fix the ARRAY_TYPE case so it
13170 properly keeps track of const and volatile type modifiers.
13171
13172 Tue Apr 23 10:52:56 1996 Jason Merrill <jason@yorick.cygnus.com>
13173
13174 * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
13175 * pt.c (comp_template_args): Use it.
13176
13177 * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
13178 assemble_external for artificial function decls.
13179
13180 * decl.c (cp_finish_decl): Oops.
13181
13182 Mon Apr 22 17:28:27 1996 Jason Merrill <jason@yorick.cygnus.com>
13183
13184 * decl2.c (import_export_decl): Put static data member templates
13185 into common storage, or make them weak, depending on whether they
13186 are dynamically or statically initialized.
13187 (get_sentry): New function.
13188 (finish_file): Do import_export_decl for static data members before
13189 building the init/fini functions. Don't init/fini a variable that's
13190 EXTERNAL. Use a sentry for variables in common. Fix mismatching
13191 push/pop_temp_slots.
13192 * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
13193 expand_static_init thang.
13194 * method.c (get_id_2): New function.
13195
13196 Mon Apr 22 15:32:45 1996 Bob Manson <manson@charmed.cygnus.com>
13197
13198 * parse.y (empty_parms): Make sure we use C++-style prototypes
13199 when we're declaring member functions.
13200
13201 Sun Apr 21 10:08:22 1996 Jason Merrill <jason@yorick.cygnus.com>
13202
13203 * Makefile.in (CONFLICTS): 16 s/r conflicts.
13204 * parse.y (self_template_type): New nonterminal.
13205
13206 Thu Apr 18 08:56:54 1996 Jason Merrill <jason@yorick.cygnus.com>
13207
13208 * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
13209 name.
13210 * parse.y (base_class.1): Allow 'typename foo::bar'.
13211
13212 * lex.c (check_newline): Remove #pragma code that plays with the
13213 input stream, since we now deal with tokens. Clear nextchar when
13214 we're done.
13215 (handle_cp_pragma): Use real_yylex.
13216 (handle_sysv_pragma): Don't do skipline here. Only call real_yylex
13217 in one place.
13218
13219 * lex.c (check_for_missing_semicolon): Handle SELFNAME.
13220
13221 * lex.c (handle_cp_pragma): Fix "#pragma implementation".
13222
13223 Wed Apr 17 16:51:33 1996 Jason Merrill <jason@yorick.cygnus.com>
13224
13225 * parse.y: New token SELFNAME for potential constructor.
13226 * spew.c (yylex): Handle it.
13227 * lex.c (identifier_type): Produce it.
13228
13229 * parse.y (complete_type_name): In :: case, don't push class binding.
13230 (complex_type_name): Likewise.
13231
13232 Wed Apr 17 15:02:40 1996 Mike Stump <mrs@cygnus.com>
13233
13234 * typeck.c (build_reinterpret_cast): Handle pointer to member
13235 functions.
13236
13237 Wed Apr 17 12:28:26 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13238
13239 * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
13240 pragmas.
13241 (check_newline): Put the vtable/unit/implementation/interface pragma
13242 code into handle_cp_pragma, replacing it with a call.
13243 (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
13244 args. Get the next token after handling the pragma token.
13245
13246 Wed Apr 17 10:28:34 1996 Jason Merrill <jason@yorick.cygnus.com>
13247
13248 * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
13249 (convert_to_pointer_force): Likewise.
13250
13251 * init.c (build_new): Fix array new without -fcheck-new.
13252
13253 Tue Apr 16 13:44:58 1996 Jason Merrill <jason@yorick.cygnus.com>
13254
13255 * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
13256 tree.c: Lose TYPE_NESTED_NAME.
13257
13258 * parse.y (nested_name_specifier_1): Don't treat non-identifiers
13259 as identifiers.
13260
13261 * tree.def: Add VEC_INIT_EXPR.
13262 * expr.c (cplus_expand_expr): Handle it.
13263 * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
13264 the extra file-scope symbol nastiness.
13265
13266 Mon Apr 15 16:21:29 1996 Jason Merrill <jason@yorick.cygnus.com>
13267
13268 * method.c (make_thunk): Thunks are static.
13269 (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
13270
13271 * decl2.c (mark_vtable_entries): Emit thunks as needed.
13272 (finish_file): Don't emit them here.
13273
13274 Sun Apr 14 11:34:39 1996 Jason Merrill <jason@yorick.cygnus.com>
13275
13276 * rtti.c (build_dynamic_cast): Handle null pointers.
13277 (ifnonnull): New function.
13278
13279 Fri Apr 12 09:08:27 1996 Bob Manson <manson@charmed.cygnus.com>
13280
13281 * call.c (build_method_call): Remember the original basetype we
13282 were called with. Give an error message instead of trying
13283 (incorrectly) to call a non-static member function through a
13284 non-inherited class.
13285
13286 * search.c (expand_upcast_fixups): Mark the new fixup as
13287 DECL_ARTIFICIAL.
13288
13289 Thu Apr 11 03:57:09 1996 Jason Merrill <jason@yorick.cygnus.com>
13290
13291 * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
13292
13293 * class.c (set_rtti_entry): Fix for thunks.
13294
13295 * decl2.c (import_export_decl): Still emit typeinfo fns for
13296 cv-variants of builtin types.
13297
13298 * rtti.c (expand_class_desc): Set up base_info_type_node here.
13299 (init_rtti_processing): Instead of here.
13300
13301 Wed Apr 10 14:17:13 1996 Jason Merrill <jason@yorick.cygnus.com>
13302
13303 * rtti.c (init_rtti_processing): Do init regardless of -frtti.
13304 (build_typeid): Only complain about taking dynamic typeid without
13305 -frtti.
13306
13307 * decl2.c: flag_rtti defaults to 1.
13308
13309 * rtti.c (get_tinfo_var): The general class case is now smaller.
13310 (init_rtti_processing): Pack the latter three fields of base_info
13311 into 32 bits.
13312
13313 Wed Apr 10 13:50:14 1996 Mike Stump <mrs@cygnus.com>
13314
13315 * init.c (expand_member_init): Don't dump if name is NULL_TREE.
13316
13317 Wed Apr 10 12:56:02 1996 Mike Stump <mrs@cygnus.com>
13318
13319 * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
13320 (push_memoized_context): Split out code to undefer pop_type_level to
13321 (clear_memoized_cache): here.
13322 (pop_memoized_context): We can only handle one layer of deferral of
13323 pop_type_level so clear the cache, if there was a previous level.
13324
13325 Tue Apr 9 23:06:09 1996 Jason Merrill <jason@yorick.cygnus.com>
13326
13327 * rtti.c (init_rtti_processing): Build up base_info_type_node.
13328 (expand_class_desc): Use one pointer to an array of base_info
13329 structs, passed using a CONSTRUCTOR.
13330
13331 Tue Apr 9 14:20:57 1996 Mike Stump <mrs@cygnus.com>
13332
13333 * class.c (build_vbase_path): Remove block extern for
13334 flag_assume_nonnull_objects here.
13335 (build_vfn_ref): Split out functionality into build_vtbl_ref.
13336 (build_vtbl_ref): New routine.
13337 (build_vtable): Set up rtti info here.
13338 (add_virtual_function): Note in CLASSTYPE_RTTI the best
13339 place where we can get the rtti pointers from to avoid having to
13340 search around for a place.
13341 (finish_base_struct): Likewise.
13342 (finish_struct_1): Likewise. Never create totally new vtables
13343 with totally new vtable pointers for rtti. Disable code to layout
13344 vtable pointers better until we want to break binary
13345 compatibility.
13346 * rtti.c (build_headof_sub): New routine to convert down to a
13347 sub-object that has an rtti pointer in the vtable.
13348 (build_headof): Use it. Also, use build_vtbl_ref now to be more
13349 maintainable.
13350 (build_dynamic_cast): Make sure we have saved it, if we need to.
13351 * search.c (dfs_init_vbase_pointers): Disable code that deals with
13352 a more efficient vtable layout, enable later.
13353 * call.c (flag_assume_nonnull_objects): Moved declaration to
13354 * cp-tree.h: here. Declare build_vtbl_ref.
13355 * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
13356 function calls that want a tree.
13357
13358 Tue Apr 9 12:10:26 1996 Jason Merrill <jason@yorick.cygnus.com>
13359
13360 * rtti.c (build_dynamic_cast): Handle downcasting to X* given
13361 other X subobjects in the most derived type. Ack.
13362
13363 * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
13364 get_typeid will do it for us.
13365 (get_typeid_1): Break out call-building for expand_*_desc to use.
13366 (get_typeid): Call it.
13367 (expand_*_desc): Likewise.
13368 * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
13369 and void *.
13370 (init_decl_processing): Lose builtin_type_tdescs lossage.
13371 * decl2.c (finish_vtable_vardecl): Remove obsolete code.
13372
13373 Mon Apr 8 17:23:23 1996 Bob Manson <manson@charmed.cygnus.com>
13374
13375 * pt.c (tsubst): When calling set_nested_typename, use
13376 TYPE_NESTED_NAME (current_class_type) instead of
13377 current_class_name.
13378
13379 * decl.c (pushdecl): Likewise.
13380 (pushdecl_class_level): Likewise.
13381 (grokdeclarator): Use NULL_TREE instead of 0 in the call to
13382 set_nested_typename.
13383
13384 Sun Apr 7 10:44:31 1996 Jason Merrill <jason@yorick.cygnus.com>
13385
13386 * rtti.c (synthesize_tinfo_fn): Handle arrays.
13387
13388 * cp-tree.h (DECL_REALLY_EXTERN): New macro.
13389
13390 Sat Apr 6 13:56:27 1996 Jason Merrill <jason@yorick.cygnus.com>
13391
13392 * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
13393 (init_rtti_processing): Lose bad_cast_type.
13394 (build_dynamic_cast): Use throw_bad_cast.
13395
13396 * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
13397
13398 * decl2.c (finish_file): Don't synthesize artificial functions
13399 that are external and not inline.
13400
13401 * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
13402
13403 * decl2.c (finish_file): Handle having new inlines added to
13404 saved_inlines by synthesis.
13405
13406 * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
13407
13408 Fri Apr 5 17:02:09 1996 Jason Merrill <jason@yorick.cygnus.com>
13409
13410 RTTI rewrite to initialize nodes as needed, not require that
13411 users #include <typeinfo>, complete functionality and reduce wasted
13412 space.
13413 * rtti.c (init_rtti_processing): New fn.
13414 (build_typeid): The vtable entry is now a function.
13415 (get_tinfo_var): New fn.
13416 (get_tinfo_fn): Likewise.
13417 (get_typeid): Use it.
13418 (build_dynamic_cast): Declare and use entry point __dynamic_cast.
13419 (build_*_desc): Rename to expand_*_desc and rewrite to use entry
13420 points __rtti_*.
13421 (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
13422 (synthesize_tinfo_fn): New fn.
13423 * method.c (build_t_desc_overload): Lose.
13424 (build_overload_with_type): More generic.
13425 * decl.c (init_decl_processing): Call init_rtti_processing.
13426 * class.c (set_rtti_entry): Use get_tinfo_fn.
13427 * decl2.c (mark_vtable_entries): Mark the rtti function.
13428 (finish_prevtable_vardecl): Don't build_t_desc.
13429 (import_export_decl): Handle tinfo functions.
13430 (finish_file): Likewise.
13431 * typeck.c (inline_conversion): New fn.
13432 (build_function_call_real): Use it.
13433 * cp-tree.h: Add decls.
13434
13435 * method.c (hack_identifier): Also convert component_refs from
13436 references.
13437
13438 * lex.c (cons_up_default_function): Use the type, not the name, in
13439 declspecs.
13440
13441 * decl2.c (import_export_vtable): Fix weak vtables.
13442
13443 Fri Apr 5 13:30:17 1996 Bob Manson <manson@charmed.cygnus.com>
13444
13445 * search.c (get_base_distance_recursive): Fix access checks for
13446 protected bases.
13447
13448 Fri Apr 5 11:02:06 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13449
13450 * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
13451 cp-tree.h.
13452 (convert_harshness): Add prototypes wrapped by PROTO.
13453 * decl2.c (grok_function_init): Likewise.
13454 (do_toplevel_using_decl): Change to void return type.
13455 * class.c (build_vtable_entry): Remove decl of make_thunk.
13456 (merge_overrides): Fix order of arg definitions.
13457 (finish_vtbls): Likewise.
13458 (fixup_vtable_deltas): Likewise.
13459 (modify_all_direct_vtables): Likewise.
13460 (modify_all_indirect_vtables): Likewise.
13461 * search.c (get_base_distance_recursive): Likewise.
13462 (get_abstract_virtuals_1): Likewise.
13463 (fixup_virtual_upcast_offsets): Likewise.
13464 (lookup_fnfields_1): Add prototypes wrapped by PROTO.
13465 * init.c (perform_member_init): Fix order of arg definitions.
13466 (expand_aggr_init_1): Add prototypes wrapped by PROTO.
13467 * cp-tree.h (make_thunk): Add decl.
13468 (overload_template_name, push_template_decl): Add decls.
13469 (do_toplevel_using_decl): Change to void return type.
13470 (vec_binfo_member): Add decl.
13471
13472 Thu Apr 4 13:33:10 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13473
13474 * typeck.c (mark_addressable, convert_for_assignment,
13475 convert_for_initialization, pointer_int_sum, pointer_diff,
13476 unary_complex_lvalue): Add prototypes wrapped by PROTO.
13477 (convert_sequence): #if 0 fn decl, since definition also is.
13478
13479 Thu Apr 4 11:00:53 1996 Mike Stump <mrs@cygnus.com>
13480
13481 * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
13482 cast to pointer types for type searching.
13483
13484 Wed Apr 3 17:10:57 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13485
13486 * typeck.c (get_delta_difference): Use cp_error, not error, in the
13487 case where BINFO == 0.
13488
13489 Wed Apr 3 12:01:02 1996 Mike Stump <mrs@cygnus.com>
13490
13491 * call.c (build_method_call): Fix wording of error messages so
13492 constructors come out right.
13493
13494 Tue Apr 2 16:06:59 1996 Bob Manson <manson@charmed.cygnus.com>
13495
13496 * decl.c (push_overloaded_decl): Don't warn about hidden
13497 constructors when both the type and the function are declared
13498 in a system header file.
13499
13500 Mon Apr 1 09:03:13 1996 Bob Manson <manson@charmed.cygnus.com>
13501
13502 * class.c (finish_struct_1): Propagate the TYPE_PACKED
13503 flag for the type to the type's fields.
13504
13505 Sat Mar 30 12:14:33 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13506
13507 * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
13508
13509 Fri Mar 29 15:51:36 1996 Bob Manson <manson@charmed.cygnus.com>
13510
13511 * class.c (base_info, finish_base_struct): Replace
13512 needs_virtual_dtor with base_has_virtual.
13513
13514 (finish_struct_1): Remove the old code that tried to make default
13515 destructors virtual. Use base_has_virtual when checking if we need
13516 to add a vtable entry for the rtti code.
13517
13518 Fri Mar 29 14:02:36 1996 Jason Merrill <jason@yorick.cygnus.com>
13519
13520 * pt.c (push_template_decl): Complain about template decl with
13521 inappropriate declaration.
13522
13523 Fri Mar 29 12:15:35 1996 Bob Manson <manson@charmed.cygnus.com>
13524
13525 * typeck.c (build_x_unary_op): Remove bogus check for taking
13526 the address of a member function.
13527
13528 Fri Mar 29 11:56:02 1996 Jason Merrill <jason@yorick.cygnus.com>
13529
13530 * parse.y (constructor_declarator): Only push the class if
13531 we are not already in the class.
13532
13533 Fri Mar 29 09:41:02 1996 Jeffrey A. Law <law@cygnus.com>
13534
13535 * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
13536 Add additional argument to INIT_CUMULATIVE_ARGS.
13537
13538 Thu Mar 28 16:41:39 1996 Jason Merrill <jason@yorick.cygnus.com>
13539
13540 * decl.c (shadow_tag): Fix error about anon union with methods.
13541
13542 * parse.y (self_reference): Only generate a self-reference if this
13543 is a non-template class.
13544 (opt.component_decl_list): Only use it if it was generated.
13545
13546 * parse.y (component_decl_1): Use constructor_declarator.
13547 (fn.def2): Likewise.
13548 (notype_component_declarator0): Likewise.
13549
13550 Thu Mar 28 15:11:35 1996 Bob Manson <manson@charmed.cygnus.com>
13551
13552 * typeck.c (build_x_unary_op): Add checks for taking the address
13553 of a TARGET_EXPR or of a member function, and give appropriate
13554 warnings.
13555
13556 Thu Mar 28 14:49:26 1996 Jason Merrill <jason@yorick.cygnus.com>
13557
13558 * pt.c (process_template_parm): Allow template type parms to be
13559 used as types for template const parms.
13560
13561 Wed Mar 27 15:51:19 1996 Mike Stump <mrs@cygnus.com>
13562
13563 * init.c (expand_vec_init): Ensure the eh cleanups are on the
13564 function_obstack.
13565
13566 Wed Mar 27 10:14:30 1996 Jason Merrill <jason@yorick.cygnus.com>
13567
13568 * decl.c (lookup_name_real): Be even more picky about the
13569 ambiguous lookup warning.
13570 (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
13571 * parse.y (constructor_declarator): Rather than here.
13572
13573 * parse.y (constructor_declarator): New nonterminal.
13574 (fn.def1): Use it.
13575 (explicit_instantiation): Likewise.
13576
13577 Tue Mar 26 13:41:33 1996 Jason Merrill <jason@yorick.cygnus.com>
13578
13579 Add implicit declaration of class name at class scope.
13580 * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
13581 * parse.y (self_reference): New nonterminal.
13582 (opt.component_decl_list): Use it.
13583 (fn.def1): Add nested_name_specifier type_name cases.
13584 * class.c (build_self_reference): New function.
13585 (finish_struct): Handle access_default later, move self-reference
13586 decl to the end.
13587 * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
13588 * cp-tree.h: Adjust.
13589
13590 * pt.c (do_function_instantiation): Separate handling of member
13591 functions and non-member functions properly.
13592
13593 Mon Mar 25 14:23:22 1996 Jason Merrill <jason@yorick.cygnus.com>
13594
13595 * pt.c (process_template_parm): Improve error for 'volatile class K'.
13596
13597 * class.c (finish_struct_1): Check the right slot for destructors.
13598
13599 * decl.c (start_enum): Complain about enum templates.
13600
13601 Mon Mar 25 13:25:31 1996 Mike Stump <mrs@cygnus.com>
13602
13603 * init.c (resolve_offset_ref): Offset pointers to member data by one.
13604 * typeck.c (unary_complex_lvalue): Likewise.
13605
13606 Mon Mar 25 13:30:42 1996 Bob Manson <manson@charmed.cygnus.com>
13607
13608 * typeck.c (c_expand_return): Check for a returned local
13609 array name, similar to the check for an ADDR_EXPR.
13610
13611 Mon Mar 25 13:07:19 1996 Jason Merrill <jason@yorick.cygnus.com>
13612
13613 * decl.c (cp_finish_decl): Don't build cleanups for static
13614 variables here.
13615
13616 Fri Mar 22 17:57:55 1996 Mike Stump <mrs@cygnus.com>
13617
13618 * typeck.c (build_modify_expr): Fix error messages to be more
13619 accurate.
13620 * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
13621 assignment operators.
13622 * error.c (assop_as_string): Likewise. Add support for `%Q' for
13623 assignment operators.
13624
13625 Fri Mar 22 13:48:29 1996 Jason Merrill <jason@yorick.cygnus.com>
13626
13627 * decl.c (grokdeclarator): Call bad_specifiers for typedefs. Also
13628 give an error if initialized. pedwarn about nested type with the
13629 same name as its enclosing class.
13630
13631 * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
13632
13633 * typeck.c (require_complete_type): Be sure to instantiate the
13634 MAIN_VARIANT of the type.
13635
13636 * decl2.c (finish_file): Instantiate pending templates before
13637 processing static constructors and destructors.
13638
13639 * pt.c (instantiate_decl): Don't instantiate functions at toplevel
13640 unless at_eof.
13641
13642 Fri Mar 22 09:30:17 1996 Bob Manson <manson@beauty.cygnus.com>
13643
13644 * decl2.c (delete_sanity): If error_mark_node is passed
13645 in as an expression, quit while we're ahead.
13646
13647 * decl.c (grokdeclarator): Give an error message if `friend'
13648 is combined with any storage class specifiers.
13649
13650 Wed Mar 20 14:51:55 1996 Jason Merrill <jason@yorick.cygnus.com>
13651
13652 * parse.y (named_complex_class_head_sans_basetype): Don't crash on
13653 definition of nonexistent nested type.
13654
13655 * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
13656 not to say 'typedef'.
13657
13658 Wed Mar 20 00:11:47 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13659
13660 * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
13661 * search.c (dfs_walk, dfs_init_vbase_pointers,
13662 expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
13663 (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
13664
13665 Tue Mar 19 17:56:03 1996 Jason Merrill <jason@yorick.cygnus.com>
13666
13667 * except.c (build_throw): Support minimal parse.
13668 * pt.c (tsubst_copy): Support THROW_EXPR.
13669 * decl2.c (build_expr_from_tree): Likewise.
13670
13671 * pt.c (mangle_class_name_for_template): Always allocate
13672 scratch_firstobj.
13673
13674 Tue Mar 19 16:34:31 1996 Bob Manson <manson@beauty.cygnus.com>
13675
13676 * cvt.c (cp_convert_to_pointer): Give an appropriate error
13677 when trying to cast from an incomplete type.
13678
13679 Tue Mar 19 16:00:33 1996 Jason Merrill <jason@yorick.cygnus.com>
13680
13681 * pt.c (instantiate_class_template): Don't bother setting up
13682 CLASSTYPE_TAGS explicitly, as the nested types will add
13683 themselves.
13684
13685 Tue Mar 19 15:48:43 1996 Bob Manson <manson@beauty.cygnus.com>
13686
13687 * decl.c (shadow_tag): Remove old error check for usage of
13688 an enum without a previous declaration.
13689 (xref_tag): Add error message about usage of enums without a
13690 previous declaration.
13691
13692 Tue Mar 19 09:21:35 1996 Jason Merrill <jason@yorick.cygnus.com>
13693
13694 * lex.c (do_identifier): Only do name consistency check if we're
13695 parsing.
13696
13697 * pt.c (push_template_decl): Don't crash if we get a member defn
13698 that doesn't match.
13699
13700 * decl.c (xref_tag_from_type): New function to do an xref without
13701 always having to figure out code_type_node.
13702 * cp-tree.h: Declare it.
13703 * pt.c (instantiate_class_template): Use it for friend classes.
13704 (lookup_template_class): Use it.
13705
13706 * typeck2.c (build_functional_cast): Pull out a single parm before
13707 passing it to build_c_cast.
13708
13709 Tue Mar 19 09:07:15 1996 Bob Manson <manson@beauty.cygnus.com>
13710
13711 * expr.c (do_case): Give an error message if a pointer is
13712 given as a case value.
13713
13714 Mon Mar 18 21:57:54 1996 Jason Merrill <jason@yorick.cygnus.com>
13715
13716 * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
13717 an overload list.
13718
13719 * lex.c (cons_up_default_function): Really, now, interface hackery
13720 does not apply to synthesized methods.
13721
13722 Mon Mar 18 18:20:57 1996 Mike Stump <mrs@cygnus.com>
13723
13724 * call.c (build_method_call): Ctors and dtors now have special names
13725 with respect to lookups.
13726 * class.c (add_method): Likewise.
13727 (grow_method): Likewise.
13728 (finish_struct_methods): Likewise.
13729 (warn_hidden): Likewise.
13730 (finish_struct_1): Likewise.
13731 * cvt.c (convert_to_reference): Likewise.
13732 (convert_to_aggr): Likewise.
13733 (cp_convert): Likewise.
13734 * decl2.c (check_classfn): Likewise.
13735 * init.c (expand_member_init): Likewise.
13736 (expand_default_init): Likewise.
13737 (expand_aggr_init_1): Likewise.
13738 (build_offset_ref): Likewise.
13739 (build_new): Likewise.
13740 (build_delete): Likewise.
13741 * lex.c (do_inline_function_hair): Likewise.
13742 * search.c (lookup_field_1): Likewise.
13743 (lookup_fnfields_here): Likewise.
13744 (lookup_field): Likewise.
13745 (lookup_fnfields): Likewise.
13746 (get_virtual_destructor): Likewise.
13747 (dfs_debug_mark): Likewise.
13748 (dfs_pushdecls): Likewise.
13749 (dfs_compress_decls): Likewise.
13750 * tree.c (layout_basetypes): Likewise.
13751 * typeck.c (build_component_ref): Likewise.
13752 (build_x_function_call): Likewise.
13753 (build_modify_expr): Likewise.
13754 (convert_for_initialization): Likewise.
13755 (build_functional_cast): Likewise.
13756 * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
13757 (CTOR_NAME): New.
13758 (DTOR_NAME): New.
13759 * decl.c (ctor_identifier): New.
13760 (dtor_identifier): New.
13761 (init_decl_processing): Set them.
13762
13763 Mon Mar 18 18:00:51 1996 Mike Stump <mrs@cygnus.com>
13764
13765 * typeck.c (build_component_ref): Don't get confused by fields whose
13766 context has no type name, like pointer to member functions.
13767
13768 Mon Mar 18 13:19:03 1996 Jason Merrill <jason@yorick.cygnus.com>
13769
13770 * decl.c (grokdeclarator): Handle typedef without declarator.
13771
13772 * pt.c (tsubst): Handle SCOPE_REF in declarator.
13773
13774 * parse.y (bad_parm): Catch another case of missing `typename'.
13775
13776 * lex.c (yyprint): Handle TYPE_DECLs.
13777
13778 * decl.c (start_function): Don't try to be clever.
13779
13780 * lex.c: Lose compiler_error_with_decl.
13781 * typeck2.c: Lose error_with_aggr_type.
13782 (incomplete_type_error): Use cp_* instead of old functions.
13783 (readonly_error): Likewise.
13784 * typeck.c (convert_arguments): Likewise.
13785 * search.c (lookup_nested_field): Likewise.
13786 * method.c (make_thunk): Likewise.
13787 * decl.c (grokparms): Likewise.
13788 * cp-tree.h: Update.
13789
13790 * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
13791 and value.
13792
13793 Mon Mar 18 11:25:52 1996 Bob Manson <manson@beauty.cygnus.com>
13794
13795 * method.c (build_opfncall): When deleting a pointer to an
13796 array, build a new pointer to the tree past any ARRAY_TYPE
13797 nodes.
13798
13799 Mon Mar 18 10:11:46 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13800
13801 * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
13802
13803 Fri Mar 15 11:03:57 1996 Jason Merrill <jason@yorick.cygnus.com>
13804
13805 * pt.c (instantiate_decl): Only call import_export_decl if at_eof
13806 and ! DECL_INLINE.
13807
13808 * decl.c (finish_function): Don't set nested based on
13809 hack_decl_function_context.
13810 * parse.y (function_try_block): Check for nested function.
13811 (pending_inlines): Likewise.
13812
13813 * decl2.c (build_expr_from_tree): If a unary op already has a
13814 type, just return it.
13815
13816 * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
13817
13818 * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
13819 (finish_file): Check the return value of walk_vtables.
13820 (finish_prevtable_vardecl): Return int.
13821 (finish_vtable_vardecl): Likewise.
13822 (prune_vtable_vardecl): Likewise.
13823 * lex.c (set_vardecl_interface_info): Likewise.
13824 * cp-tree.h: Adjust return types.
13825
13826 * class.c (delete_duplicate_fields_1): Don't complain about
13827 duplicate nested types if they're the same type.
13828 (finish_struct): Remove check for duplicate.
13829 * decl2.c (grokfield): Don't check for typedef of anonymous type.
13830
13831 Thu Mar 14 10:00:19 1996 Jason Merrill <jason@yorick.cygnus.com>
13832
13833 * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
13834
13835 * decl.c (grokdeclarator): Lose special handling of class-level
13836 typedef. Lose SIGNATURE_GROKKING_TYPEDEF. Set
13837 SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
13838
13839 * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
13840
13841 * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
13842
13843 * search.c (compute_access): Fix handling of anonymous union
13844 members.
13845 * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
13846 from anonymous unions to their members.
13847
13848 * typeck.c (build_x_function_call): For static member functions,
13849 hand off to build_member_call.
13850
13851 Wed Mar 13 14:03:34 1996 Jason Merrill <jason@yorick.cygnus.com>
13852
13853 * typeck.c (build_component_ref): Handle OFFSET_REFs.
13854
13855 * init.c (expand_vec_init): Fix init == 0 case.
13856
13857 Tue Mar 12 14:36:02 1996 Jason Merrill <jason@yorick.cygnus.com>
13858
13859 * init.c (build_new): pedwarn about init and array new.
13860 (expand_vec_init): Handle lists, use convert_for_initialization.
13861
13862 * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
13863 when converting to an aggregate type.
13864 * cvt.c (cp_convert): Pass it through.
13865
13866 * typeck.c (build_conditional_expr): Handle user-defined
13867 conversions to slightly different types.
13868
13869 * decl.c (grokdeclarator): Force an array type in a parm to be
13870 permanent.
13871
13872 * decl2.c (do_using_directive): Sorry.
13873 (do_namespace_alias): Likewise.
13874 * lex.c (real_yylex): Warn about using the `namespace' keyword.
13875
13876 Sun Mar 10 22:26:09 1996 Jason Merrill <jason@yorick.cygnus.com>
13877
13878 * parse.y (datadef): Move call to note_list_got_semicolon up.
13879
13880 Fri Mar 8 11:47:26 1996 Mike Stump <mrs@cygnus.com>
13881
13882 * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
13883
13884 Fri Mar 8 11:29:06 1996 Mike Stump <mrs@cygnus.com>
13885
13886 * decl.c (cp_finish_decl): The exception regions have to be
13887 nested, not overlapping. We start the exception region for a
13888 decl, after it has been fully built, and all temporaries for it
13889 have been cleaned up.
13890
13891 Thu Mar 7 17:46:06 1996 Mike Stump <mrs@cygnus.com>
13892
13893 * tree.c (vec_binfo_member): Don't core dump if we have no bases.
13894
13895 Thu Mar 7 14:11:49 1996 Jason Merrill <jason@yorick.cygnus.com>
13896
13897 * tree.def: Add RETURN_INIT.
13898 * pt.c (instantiate_decl): Handle RETURN_INIT.
13899 * decl.c (store_return_init): Handle minimal_parse_mode.
13900
13901 * tree.c (cp_build_type_variant): Just return an error_mark_node.
13902 * decl.c (make_typename_type): Don't try to get the file and line
13903 of an identifier.
13904 * typeck.c (comptypes): Handle TYPENAME_TYPE.
13905
13906 Wed Mar 6 18:47:50 1996 Per Bothner <bothner@kalessin.cygnus.com>
13907
13908 * decl.c (poplevel): Make sure we clear out and restore old local
13909 non-VAR_DECL values by default when they go out of scope.
13910
13911 Wed Mar 6 09:57:36 1996 Jason Merrill <jason@yorick.cygnus.com>
13912
13913 * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
13914 referring to addresses of variables and functions.
13915
13916 * error.c (dump_expr): Support SIZEOF_EXPR.
13917
13918 * init.c (do_friend): Use the return value of check_classfn.
13919
13920 * typeck.c (convert_arguments): Call complete_type.
13921
13922 * method.c (hack_identifier): After giving an error, set value to
13923 error_mark_node.
13924
13925 Tue Mar 5 16:00:15 1996 Jason Merrill <jason@yorick.cygnus.com>
13926
13927 * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
13928 lossage for local classes.
13929 * cp-tree.h: Declare it.
13930 * decl.c (lookup_name_real): Evil, painful hack for local classes.
13931 (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
13932 Use hack_decl_function_context.
13933 (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
13934 (start_function): Use hack_decl_function_context.
13935 (finish_function): Likewise.
13936 * method.c (synthesize_method): Likewise.
13937 * lex.c (process_next_inline): Likewise.
13938 (do_pending_inlines): Likewise.
13939 * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
13940 done with it.
13941
13942 Mon Mar 4 22:38:39 1996 Gerald Baumgartner <gb@alexander.cs.purdue.edu>
13943
13944 * sig.c (build_signature_pointer_or_reference_type): Align
13945 signature pointers/references on 8-byte boundaries so they can be
13946 grabbed 2 words at a time on a Sparc.
13947
13948 Tue Mar 5 10:21:01 1996 Jason Merrill <jason@yorick.cygnus.com>
13949
13950 * method.c (hack_identifier): Requiring a static chain is now a
13951 hard error.
13952 * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
13953 functions.
13954
13955 Mon Mar 4 20:03:33 1996 Jason Merrill <jason@yorick.cygnus.com>
13956
13957 * init.c (build_offset_ref): Call complete_type.
13958
13959 * decl.c (pop_from_top_level): Always pop previous_class_type.
13960
13961 * parse.y: Handle multiple decls in a for-init-statement.
13962 * pt.c (tsubst_expr): Likewise.
13963
13964 * pt.c (tsubst): Use tsubst_expr for the second operand of an
13965 ARRAY_REF.
13966
13967 * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
13968 (poplevel_class): Set it here.
13969 (pop_from_top_level): Pop it here if we're returning to class scope.
13970 * class.c (pushclass): Don't set it here.
13971
13972 * decl.c (maybe_push_to_top_level): Save current_template_parms,
13973 and clear it if !pseudo.
13974 (pop_from_top_level): Restore it.
13975
13976 * decl2.c (finish_file): Push the dummy each time we walk the list
13977 of vtables.
13978
13979 * error.c (dump_expr): Support LOOKUP_EXPR and actually do
13980 something for CAST_EXPR.
13981
13982 Mon Feb 19 14:49:18 1996 Rusty Russell <rusty@adelaide.maptek.com.au>
13983
13984 * cvt.c (cp_convert): Warn about implicit conversion of the
13985 address of a function to bool, as it is always true.
13986
13987 Fri Feb 23 23:06:01 1996 Rusty Russell <rusty@adelaide.maptek.com.au>
13988
13989 * typeck.c (c_expand_return): Fix warning for local externs returned.
13990
13991 Mon Mar 4 15:03:11 1996 Jason Merrill <jason@yorick.cygnus.com>
13992
13993 * tree.c (mapcar): Propagate const and volatile properly.
13994
13995 * typeck.c (complete_type): Be sure to instantiate the
13996 MAIN_VARIANT of the type.
13997
13998 * method.c (synthesize_method): Class interface hackery does not
13999 apply to synthesized methods.
14000
14001 Mon Mar 4 14:05:23 1996 Jason Merrill <jason@yorick.cygnus.com>
14002
14003 * pt.c (comp_template_args): Use comptypes rather than just
14004 checking for TEMPLATE_TYPE_PARM equivalence.
14005
14006 * typeck.c (build_x_function_call): Call complete_type before
14007 checking TYPE_OVERLOADS_CALL_EXPR.
14008
14009 Mon Mar 4 18:48:30 1996 Manfred Hollstein <manfred@lts.sel.alcatel.de>
14010
14011 * g++.c (main): Check also for new define ALT_LIBM.
14012
14013 Fri Mar 1 13:09:33 1996 Jason Merrill <jason@yorick.cygnus.com>
14014
14015 * pt.c (instantiate_class_template): If we don't have a pattern
14016 yet, that's OK.
14017 (coerce_template_parms): If we see a local class, bail.
14018
14019 * decl.c (grok_reference_init): Make sure there's a type before
14020 checking its code.
14021
14022 * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
14023 (push_template_decl): Likewise.
14024
14025 * parse.y (named_class_head): Set
14026 CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
14027
14028 * decl.c (xref_tag): Diagnose redeclaration of template
14029 type-parameter name.
14030
14031 * error.c (dump_type): Handle anonymous template type parms.
14032
14033 * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
14034 TYPE_STUB_DECL.
14035 (coerce_template_parms): Likewise.
14036
14037 Thu Feb 29 16:26:01 1996 Mike Stump <mrs@cygnus.com>
14038
14039 * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
14040 case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
14041
14042 Thu Feb 29 08:20:25 1996 Jason Merrill <jason@yorick.cygnus.com>
14043
14044 * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
14045 before trying to get its STUB_DECL.
14046 (coerce_template_parms): Likewise.
14047
14048 * parse.y (template_type_parm): If they didn't use 'class',
14049 pretend they did after giving an error.
14050
14051 * pt.c (coerce_template_parms): Diagnose use of local class.
14052
14053 * decl.c (grok_reference_init): Use instantiate_type.
14054
14055 * error.c (dump_expr): Handle TEMPLATE_DECLs.
14056
14057 * parse.y (named_class_head): Diagnose mismatching types and tags.
14058
14059 * decl.c (pushdecl): Type decls and class templates clash with
14060 artificial type decls, not hide them.
14061
14062 * decl.c (redeclaration_error_message): Diagnose redefinition of
14063 templates properly.
14064 (duplicate_decls): Diagnose disallowed overloads for template
14065 functions, too.
14066
14067 * decl.c (start_decl): Call complete_type before checking for a
14068 destructor.
14069
14070 * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
14071
14072 * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
14073
14074 Wed Feb 28 09:28:44 1996 Jason Merrill <jason@yorick.cygnus.com>
14075
14076 * decl.c (grok_op_properties): Don't check for operator++(int) in
14077 a template.
14078
14079 * tree.c (perm_manip): Return a copy of variable and function
14080 decls with external linkage.
14081
14082 * tree.def: Change some of the min tree codes to type "1".
14083 * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
14084 * method.c (build_overload_int): Emit something arbitrary for
14085 anything but an INTEGER_CST if we're in a template.
14086
14087 * decl.c (cp_finish_decl): Call complete_type before deciding
14088 whether or not to lay out the decl.
14089
14090 * lex.c (do_identifier): Check for DECL_INITIAL before using it.
14091
14092 Tue Feb 27 16:35:32 1996 Jason Merrill <jason@yorick.cygnus.com>
14093
14094 * typeck2.c (build_x_arrow): Call complete_type.
14095
14096 * pt.c (add_pending_template): Broken out.
14097 (lookup_template_class): If -fexternal-templates, call it for all
14098 the methods of implemented types.
14099 (instantiate_class_template): Instead of instantiating them here.
14100 (instantiate_decl): Handle -fexternal-templates earlier.
14101
14102 Tue Feb 27 15:51:32 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14103
14104 * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
14105 memoized lookup stuff inside GATHER_STATISTICS.
14106
14107 Tue Feb 27 10:38:08 1996 Jason Merrill <jason@yorick.cygnus.com>
14108
14109 * decl.c (start_decl): Complain about array of incomplete type
14110 here.
14111 (grokdeclarator): Not here.
14112
14113 * parse.y (template_parm): Expand full_parm inline so we can set
14114 the rule's precedence.
14115
14116 * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
14117 (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
14118 * decl2.c (grokbitfield): Don't check for integer constant here.
14119 * class.c (finish_struct_1): Check here.
14120
14121 * decl.c (define_label): Make the min decl go on permanent_obstack.
14122
14123 * pt.c (unify): Don't handle CONST_DECLs.
14124 (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
14125 (tsubst_copy): Likewise.
14126
14127 * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
14128 CONST_DECL for a template parm.
14129
14130 Mon Feb 26 12:48:18 1996 Jason Merrill <jason@yorick.cygnus.com>
14131
14132 * decl.c (grokdeclarator): Complain about array of incomplete type
14133 here.
14134 (start_decl_1): Not here.
14135
14136 * pt.c (tsubst): Handle pointer-to-function declarators.
14137
14138 * method.c (hack_identifier): If pedantic, diagnose local class
14139 methods that require a static chain.
14140
14141 * decl.c (grok_op_properties): No longer static.
14142 * cp-tree.h: Declare it.
14143 * pt.c (tsubst): Call it for operators.
14144 Use tsubst_copy for TREE_VECs.
14145
14146 * parse.y (template_arg): The expr has precedence like '>'.
14147
14148 Fri Feb 23 14:51:52 1996 Jason Merrill <jason@yorick.cygnus.com>
14149
14150 * pt.c (coerce_template_parms): Don't coerce an expression using
14151 template parms.
14152 (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
14153 (tsubst): Don't use build_index_2_type if the max_value uses template
14154 parms.
14155 * method.c (build_overload_int): Emit something arbitrary for an
14156 expression using template parms.
14157
14158 * parse.y (template_close_bracket): New non-terminal to catch use
14159 of '>>' instead of '> >' in template class names.
14160 (template_type): Use it.
14161 * Makefile.in (CONFLICTS): Causes one more r/r conflict.
14162
14163 * tree.def: Add CAST_EXPR.
14164 * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
14165 CONVERT_EXPR for minimal_parse_mode.
14166 * typeck.c (build_c_cast): Likewise.
14167 * pt.c (tsubst_copy): Likewise.
14168 * decl2.c (build_expr_from_tree): Likewise.
14169 * error.c (dump_expr): Likewise.
14170
14171 Fri Feb 23 10:36:46 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14172
14173 * except.c (SetTerminate, SetUnexpected): Put back global vars.
14174 (init_exception_processing): Put back decl/init of
14175 set_unexpected_fndecl and set_terminate_fndecl, needed to get the
14176 fns from libstdc++.
14177
14178 * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
14179 (declare_uninstantiated_type_level, uninstantiated_type_level_p):
14180 Delete unused fns.
14181 * cp-tree.h (declare_uninstantiated_type_level,
14182 uninstantiated_type_level_p): Delete prototypes.
14183
14184 Thu Feb 22 19:36:15 1996 Jason Merrill <jason@yorick.cygnus.com>
14185
14186 * pt.c (tsubst_expr): Add default return.
14187
14188 Thu Feb 22 16:47:24 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14189
14190 * error.c (fndecl_as_string): Delete unused arg CNAME.
14191 * sig.c (build_signature_table_constructor,
14192 build_signature_method_call): Fix calls.
14193
14194 * class.c (the_null_vtable_entry): Delete var definition.
14195 (init_class_processing): Delete tree the_null_vtable_entry init.
14196 * decl.c (no_print_{functions, builtins}): Declare as static.
14197 (__tp_desc_type_node): #if 0 var definition.
14198 (init_type_desc): #if 0 init of __tp_desc_type_node.
14199 (vb_off_identifier): Move var decl into init_decl_processing.
14200 (current_function_assigns_this): Declare as static.
14201 (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
14202 (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
14203 Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
14204 * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
14205 * init.c (BI_header_type, BI_header_size): Declare as static.
14206 * pt.c (template_classes): Delete unused var.
14207 (add_pending_template): Delete decl for non-existent fn.
14208 (lookup_template_class): Delete vars CODE and TAG_CODE.
14209 (instantiate_template): Delete unused var TARGS.
14210 * cp-tree.h (vb_off_identifier, current_function_assigns_this):
14211 Delete decls.
14212 (__tp_desc_type_node): #if 0 var decl.
14213 (fndecl_as_string): Fix prototype.
14214
14215 Thu Feb 22 15:56:19 1996 Jason Merrill <jason@yorick.cygnus.com>
14216
14217 * tree.def: Add GOTO_STMT.
14218 * pt.c (tsubst_expr): Support goto and labels.
14219 * decl.c (define_label): Support minimal parsing.
14220 * parse.y (simple_stmt): Likewise.
14221
14222 Thu Feb 22 15:30:12 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14223
14224 * xref.c (GNU_xref_member): Only define/set var I if
14225 XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
14226 used.
14227 (GNU_xref_end_scope): Delete unused fifth arg TRNS.
14228 (GNU_xref_end): Fix call.
14229 * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
14230 * cp-tree.h (GNU_xref_end_scope): Fix prototype.
14231
14232 * tree.c (build_exception_variant): Delete unused vars I, A, T,
14233 T2, and CNAME.
14234 (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
14235 (mapcar): Delete unused var CODE.
14236 (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
14237 (break_out_cleanups): Fix call.
14238 (bot_manip): Likewise.
14239 * call.c (build_method_call): Likewise.
14240 * cvt.c (build_up_reference, convert_to_reference, cp_convert):
14241 Likewise.
14242 * typeck.c (unary_complex_lvalue, build_modify_expr,
14243 convert_for_initialization): Likewise.
14244 * typeck2.c (build_functional_cast): Likewise.
14245 * cp-tree.h (build_cplus_new): Fix prototype.
14246
14247 * repo.c (open_repo_file): Delete unused var Q.
14248 (repo_compile_flags, repo_template_declared,
14249 repo_template_defined, repo_class_defined, repo_inline_used,
14250 repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
14251 (repo_get_id, repo_vtable_used): Declare as static.
14252 * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
14253 prototypes.
14254
14255 Thu Feb 22 14:53:35 1996 Jason Merrill <jason@yorick.cygnus.com>
14256
14257 * parse.y (pending_inlines): Add function_try_block case.
14258
14259 * pt.c (unify): Fix for template const parms.
14260
14261 Thu Feb 22 13:24:15 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14262
14263 * lex.c (extract_interface_info): Delete forward decl.
14264 (default_copy_constructor_body, default_assign_ref_body): Delete
14265 decls for non-existent functions.
14266 (synth_firstobj, inline_text_firstobjs): Delete unused vars.
14267 (init_lex): Delete setting them.
14268 (cons_up_default_function): Delete unused vars FUNC_BUF,
14269 FUNC_LEN, and COMPLEX. Delete code setting COMPLEX. Delete old
14270 #if 0'd synth code.
14271 (toplevel, expression_obstack): Delete unused extern decls.
14272 (tree_node_kind): Delete unused enum.
14273 (tree_node_counts, tree_node_sizes): Wrap with #ifdef
14274 GATHER_STATISTICS.
14275 (tree_node_kind_names): Delete unused extern decl.
14276 (synth_obstack): Delete unused var.
14277 (init_lex): Don't set it.
14278 (init_parse): Add decl before use.
14279 (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
14280 (current_unit_{name, language}): Delete unused vars.
14281 (check_newline): Don't bother setting them, just accept the #pragma.
14282 * cp-tree.h (init_repo, peek_yylex): Add prototypes.
14283 (current_unit_{name, language}): Delete decls.
14284
14285 * search.c: Wrap all of the memoized functions, macros, and
14286 variables inside #ifdef GATHER_STATISTICS.
14287 (lookup_field, lookup_fnfields): Likewise.
14288 (init_search_processing): Likewise.
14289 (reinit_search_statistics): Wrap whole function.
14290 * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
14291
14292 * decl.c (finish_function): Only call pop_memoized_context if
14293 GATHER_STATISTICS is defined.
14294 (start_function): Likewise for push_memoized_context.
14295 * class.c (pushclass, popclass): Likewise.
14296
14297 * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
14298 * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
14299
14300 * cvt.c (cp_convert): Delete unused local var FORM.
14301 * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
14302 prototypes.
14303
14304 Thu Feb 22 13:19:44 1996 Jason Merrill <jason@yorick.cygnus.com>
14305
14306 * pt.c (do_poplevel): Oops; really return what we get from
14307 poplevel this time.
14308
14309 Thu Feb 22 11:41:44 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14310
14311 * cp-tree.h (is_aggr_type): Add prototype.
14312
14313 * cp-tree.h ({push,pop}_cp_function_context): Add decls.
14314 * method.c ({push,pop}_cp_function_context): Delete decls.
14315 * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
14316 (SetUnexpected, SetTerminate): Delete unused vars.
14317 (init_exception_processing): Don't set SetUnexpected or
14318 SetTerminate. Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
14319 (output_exception_table_entry): Delete unused array LABEL.
14320 (expand_internal_throw): Delete unused var PARAMS.
14321 (expand_start_catch_block): Delete unused var CLEANUP.
14322 (emit_exception_table): Delete unused var EH_NODE_DECL.
14323 (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
14324 GOTO_UNWIND_AND_THROW. Don't set them.
14325 (end_eh_unwinder): Add top decl.
14326 (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
14327 (exception_section, push_rtl_perm, do_function_call,
14328 lang_interim_eh, push_eh_cleanup, eh_outer_context,
14329 expand_end_eh_spec, end_eh_unwinder): Declare as static.
14330 (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
14331 throw_used): Likewise.
14332 * cp-tree.h (expand_end_eh_spec): Delete prototype.
14333
14334 * search.c (dfs_mark, dfs_mark_vtable_path,
14335 dfs_unmark_vtable_path, dfs_mark_new_vtable,
14336 dfs_unmark_new_vtable, dfs_clear_search_slot,
14337 dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
14338 bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
14339 bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
14340 functions.
14341 (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
14342 n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
14343 n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
14344 Only define #ifdef GATHER_STATISTICS.
14345 (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
14346 is defined.
14347 (vbase_decl): Delete var definition.
14348 (init_search): Delete old decl.
14349 (init_vbase_pointers): Delete building of VBASE_DECL, since it's
14350 never actually used.
14351 (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
14352 (get_base_distance_recursive): Delete unused fourth arg
14353 BASETYPE_PATH. Fix call .
14354 (get_base_distance): Fix call.
14355 (push_class_decls): Delete unused var ID.
14356 (make_memoized_table_entry): Declare as static.
14357 (breadth_first_search): Declare as static.
14358 (tree_has_any_destructor_p): Declare as static.
14359 (pop_class_decls): Delete unused arg pop_class_decls.
14360 * class.c (popclass): Fix call to pop_class_decls.
14361 * cp-tree.h (make_memoized_table_entry, breadth_first_search,
14362 tree_has_any_destructor_p): Delete prototypes.
14363
14364 * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
14365 (build_t_desc): Fix call. Delete unused vars ELEMS and TT.
14366 (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
14367 (build_user_desc): Delete unused var T.
14368 (build_class_desc): Delete unused vars T and OFF.
14369 (build_t_desc): Delete unused var NAME_STRING.
14370 (build_headof): Make static.
14371 (get_bad_cast_node): Likewise.
14372 (get_def_to_follow): Likewise.
14373 * cp-tree.h (init_type_desc): Add prototype.
14374 (build_headof): Remove prototype.
14375
14376 Thu Feb 22 00:54:22 1996 Jason Merrill <jason@yorick.cygnus.com>
14377
14378 * pt.c (tsubst): Only look for matching decls at file scope for
14379 non-member functions.
14380
14381 * call.c (build_scoped_method_call): Handle scoped destructor
14382 calls in templates.
14383
14384 * decl.c (*_top_level): Also save previous_class_values.
14385
14386 * pt.c (tsubst_expr): Support do {} while loops.
14387 * parse.y (simple_stmt): Likewise.
14388 * tree.def: Likewise.
14389
14390 * method.c (build_overload_identifier): For a class nested in a
14391 template class, don't mangle in the template parms from our
14392 context.
14393
14394 * lex.c, cp-tree.h: Remove support for template instantiations in
14395 the pending_inlines code.
14396 * pt.c: Remove dead functions and unused arguments.
14397 (uses_template_parms): TYPENAME_TYPEs always use template parms.
14398 * parse.y: Stop passing anything to end_template_decl.
14399 * tree.c (print_lang_statistics): Only print tinst info #ifdef
14400 GATHER_STATISTICS.
14401
14402 Wed Feb 21 16:57:33 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14403
14404 * init.c (expand_recursive_init{,_1}): Delete decls.
14405 (sort_member_init): Delete unused var INIT.
14406 (emit_base_init): Delete unused var X.
14407 (build_offset_ref): Delete unused var CNAME.
14408 (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
14409 (emit_base_init): Delete unused local var BASE. Delete extern
14410 decl of IN_CHARGE_IDENTIFIER.
14411 (build_delete): Delete unused local var VIRTUAL_SIZE.
14412
14413 * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
14414 (build_delete): Fix call.
14415 * decl2.c (delete_sanity): Likewise.
14416 * cp-tree.h (build_vec_delete): Update prototype.
14417
14418 * typeck.c (common_base_type): Delete unused var TMP.
14419 (build_binary_op): Delete local var ARGS_SAVE.
14420 (build_array_ref): Delete unused var ITYPE.
14421 (c_expand_return): Delete unused var USE_TEMP.
14422
14423 * typeck.c (compexcepttypes): Delete unused arg STRICT.
14424 (comptypes): Fix calls.
14425 * decl.c (duplicate_decls): Likewise.
14426 * cp-tree.h (compexcepttypes): Delete extra arg.
14427
14428 * decl2.c (check_classfn): Delete unused second arg CNAME.
14429 * decl.c (start_decl, grokfndecl): Fix calls.
14430 * init.c (do_friend): Likewise.
14431 * cp-tree.h (check_classfn): Update prototype.
14432
14433 * cp-tree.h (signature_error, import_export_vtable,
14434 append_signature_fields, id_in_current_class, mark_used,
14435 copy_assignment_arg_p): Add decls.
14436 * decl2.c (mark_used): Delete decl.
14437
14438 * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
14439
14440 * class.c (get_vtable_entry): Disable unused function.
14441 (doing_hard_virtuals): Delete unused static global var.
14442 (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
14443 (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
14444 (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
14445 (modify_one_vtable): Delete unused var OLD_RTTI.
14446 (finish_struct_anon): Delete unused vars OFFSET and X.
14447 (finish_struct_bits): Delete unused var METHOD_VEC.
14448 (get_basefndecls): Delete unused var PURPOSE. Delete unused
14449 for-scope local variable METHODS.
14450
14451 * call.c (user_harshness): Delete unused/unneeded arg PARM.
14452 (ideal_candidate): Delete unused args BASETYPE and PARMS.
14453 (build_method_call): Delete unused args passed into ideal_candidate.
14454 (build_overload_call_real): Likewise. Delete unused var OVERLOAD_NAME.
14455 * cp-tree.h (synthesize_method): Add decl.
14456
14457 * decl.c (note_level_for_for): Give void return type.
14458 (pushdecl_nonclass_level): Likewise.
14459 (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
14460 (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
14461 (suspend_binding_level): Delete unused var LEVEL.
14462 (duplicate_decls): Delete unused var CTYPE.
14463 (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
14464 (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
14465 PTR_ENDLINK.
14466 (grokdeclarator): Delete unused var C.
14467 (grokdeclarator): Delete unused var SIZE_VARIES.
14468 (grokparms): Delete unused var SAW_VOID.
14469 (start_function): Delete unused var OLDDECL.
14470 (cplus_expand_expr_stmt): Delete unused var
14471 REMOVE_IMPLICIT_IMMEDIATELY.
14472
14473 * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
14474
14475 * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
14476
14477 Wed Feb 21 00:06:17 1996 Jason Merrill <jason@yorick.cygnus.com>
14478
14479 * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
14480 (build_min_nt): Likewise.
14481 * pt.c (do_pushlevel): Emit line note.
14482 (do_poplevel): Return what we get from poplevel.
14483 (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
14484 * parse.y: Use do_pushlevel and do_poplevel.
14485 * cp-tree.h: Declare do_poplevel.
14486
14487 * cp-tree.h: Declare at_eof.
14488 * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
14489 * decl2.c (import_export_decl): Renamed from import_export_inline.
14490 (finish_file): Call it to do interface handling for statics.
14491 * pt.c (tsubst_copy): Call mark_used on variables and functions
14492 used here.
14493
14494 * decl2.c (finish_file): Don't emit statics we can't generate.
14495 * pt.c (instantiate_decl): Don't set interface on instantiations
14496 we can't generate.
14497
14498 * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
14499 * tree.c (print_lang_statistics): Print max template depth.
14500 * pt.c (push_tinst_level): Dump entire instantiation context.
14501 (instantiate_class_template): Use it and pop_tinst_level.
14502 (instantiate_decl): Likewise.
14503
14504 * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
14505 pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
14506
14507 Tue Feb 20 18:21:51 1996 Jason Merrill <jason@yorick.cygnus.com>
14508
14509 * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
14510 init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
14511 tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
14512 the new template implementation.
14513
14514 Tue Feb 20 17:14:29 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14515
14516 * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
14517
14518 Thu Feb 15 18:44:42 1996 Mike Stump <mrs@cygnus.com>
14519
14520 * decl.c (cp_finish_decl): Delay emitting the debug information for
14521 a typedef that has been installed as the canonical typedef, if the
14522 type has not yet been defined.
14523
14524 Thu Feb 15 09:39:08 1996 Jason Merrill <jason@yorick.cygnus.com>
14525
14526 * decl2.c (grokfield): Still call pop_nested_class for access decls.
14527
14528 Wed Feb 14 17:30:04 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14529
14530 * decl.c (lookup_label): Call label_rtx.
14531
14532 * decl.c (make_binding_level): New function.
14533 (pushlevel, pushlevel_class): Call it instead of explicit
14534 duplicate calls to xmalloc.
14535
14536 * decl.c (init_decl_processing): Delete useless build_pointer_type
14537 call.
14538
14539 * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
14540 (sizet_ftype_string): Delete variable.
14541 (init_decl_processing): Add built-in functions fabsf, fabsl,
14542 sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl. New local
14543 variable strlen_ftype, used for strlen.
14544
14545 Wed Feb 14 16:21:25 1996 Jason Merrill <jason@yorick.cygnus.com>
14546
14547 * decl.c (push_to_top_level): Start from current_binding_level
14548 again for now; the stl hacks depend on g++ being broken in this
14549 way, and it'll be fixed in the template rewrite.
14550
14551 * tree.def: Add USING_DECL.
14552 * decl2.c (do_class_using_decl): Implement.
14553 (grokfield): Pass access decls off to do_class_using_decl instead of
14554 grokdeclarator.
14555 * error.c (dump_decl): Handle USING_DECLs.
14556 * decl.c (grokdeclarator): Remove code for handling access decls.
14557 * class.c (finish_struct_1): Adjust accordingly, treat using-decls
14558 as access decls for now.
14559 (finish_struct): Don't check USING_DECLs for other uses of the name.
14560
14561 * search.c (get_matching_virtual): Use cp_error_at.
14562
14563 Wed Feb 14 10:36:58 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14564
14565 * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
14566 match c-typeck.c.
14567 (self_promoting_args_p): Move the check that TYPE is non-nil
14568 before trying to look at its main variant.
14569 (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
14570
14571 * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
14572 Delete macros.
14573 * init.c (xref_friend, embrace_waiting_friends): Delete functions.
14574 (do_friend): Delete call to xref_friend.
14575 * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
14576
14577 * typeck.c (convert_sequence): #if 0 unused function.
14578
14579 * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
14580 be in decl_in_memory_p.
14581 (decl_in_memory_p): Delete decl.
14582 * expr.c (decl_in_memory_p): Delete fn.
14583 * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
14584
14585 * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
14586
14587 Tue Feb 13 12:51:21 1996 Jason Merrill <jason@yorick.cygnus.com>
14588
14589 * class.c (finish_struct_1): Check for a pure-specifier on a
14590 non-virtual function here.
14591
14592 * decl2.c (grok_function_init): Don't check whether the function
14593 is virtual here.
14594 (grokfield): Don't call check_for_override here.
14595
14596 * decl.c (push_to_top_level): Start from inner_binding_level,
14597 check class_shadowed in class levels.
14598
14599 Mon Feb 12 17:46:59 1996 Mike Stump <mrs@cygnus.com>
14600
14601 * decl.c (resume_level): Ignore things that don't have names, instead
14602 of core dumping.
14603
14604 Mon Feb 12 15:47:44 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14605
14606 * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
14607
14608 Sat Feb 10 17:59:45 1996 Jason Merrill <jason@yorick.cygnus.com>
14609
14610 * class.c (finish_struct_1): Set DECL_VINDEX properly on a
14611 synthesized dtor.
14612
14613 * parse.y (complete_type_name): Bind global_scope earlier.
14614 (complex_type_name): Likewise.
14615 (qualified_type_name): Remove.
14616
14617 Thu Feb 8 15:15:14 1996 Jason Merrill <jason@yorick.cygnus.com>
14618
14619 * decl.c (grokfndecl): Move code that looks for virtuals in base
14620 classes...
14621 * class.c (check_for_override): ... to a new function.
14622 (finish_struct_1): Call it.
14623
14624 * cp-tree.h: Declare warn_sign_compare.
14625
14626 * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
14627 rather than extra_warnings to decide whether to warn about
14628 comparison of signed and unsigned.
14629
14630 * decl2.c (lang_decode_option): Handle warn_sign_compare. -Wall
14631 implies -Wsign-compare. -Wall doesn't imply -W.
14632
14633 Wed Feb 7 15:27:57 1996 Mike Stump <mrs@cygnus.com>
14634
14635 * typeck.c (build_component_ref): Fix to handle anon unions in base
14636 classes as well.
14637
14638 Wed Feb 7 14:29:12 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14639
14640 * class.c (resolves_to_fixed_type_p): Delete code dealing with
14641 a WITH_CLEANUP_EXPR, since we don't generate them any more.
14642 * cvt.c (build_up_reference): Likewise.
14643 * decl.c (grok_reference_init): Likewise.
14644 (cp_finish_decl): Likewise.
14645 * error.c (dump_expr): Likewise.
14646 * tree.c (real_lvalue_p): Likewise.
14647 (lvalue_p): Likewise.
14648 (build_cplus_new): Likewise.
14649 (unsave_expr_now): Likewise.
14650 * typeck.c (unary_complex_lvalue, build_modify_expr,
14651 c_expand_return): Likewise.
14652
14653 Tue Feb 6 13:39:22 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14654
14655 Make the C++ front-end pay attention to attributes for structures.
14656 * class.c (finish_struct): New argument ATTRIBUTES, passed down into
14657 finish_struct_1.
14658 (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
14659 Take out old round_up_size use and setting the DECL_ALIGN possibly
14660 using it. Take out setting of TYPE_ALIGN to round_up_size, which
14661 can override what the attribute set.
14662 * cp-tree.h (finish_struct): Update prototype.
14663 * parse.y (template_instantiate_once): Pass a NULL_TREE for the
14664 attributes to finish_struct.
14665 (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
14666 value down into finish_struct.
14667 * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
14668
14669 Tue Feb 6 13:12:15 1996 Per Bothner <bothner@kalessin.cygnus.com>
14670
14671 * decl.c (poplevel): Re-word dead for local handling.
14672 (pushdecl): Remove useless DECL_DEAD_FOR_LOCAL test.
14673 (cp_finish_decl): If is_for_scope, check for duplicates so
14674 we can disable is_for_scope. Otherwise, preserve_temp_slots.
14675
14676 * lex.c (do_identifier): Use global binding in preference of
14677 dead for local variable.
14678
14679 Mon Feb 5 17:46:46 1996 Mike Stump <mrs@cygnus.com>
14680
14681 * init.c (initializing_context): Handle anon union changes, the
14682 context where fields of anon unions can be initialized now has to be
14683 found by walking up the TYPE_CONTEXT chain.
14684
14685 Fri Feb 2 14:54:04 1996 Doug Evans <dje@charmed.cygnus.com>
14686
14687 * decl.c (start_decl): #ifdef out code to set DECL_COMMON
14688 if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
14689 (obscure_complex_init): If bss is supported, always set
14690 DECL_INITIAL to error_mark_node.
14691
14692 Thu Feb 1 16:19:56 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14693
14694 * init.c (is_friend): Make sure there's a context before we see if
14695 it's an aggr type.
14696
14697 Thu Feb 1 15:44:53 1996 Mike Stump <mrs@cygnus.com>
14698
14699 * init.c (is_friend): Classes are not friendly with nested classes.
14700
14701 Thu Feb 1 15:27:37 1996 Doug Evans <dje@charmed.cygnus.com>
14702
14703 * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
14704 and record its result.
14705
14706 Thu Feb 1 09:27:01 1996 Mike Stump <mrs@cygnus.com>
14707
14708 * class.c (finish_struct_anon): Switch around code to not move anon
14709 union elements around, nor mess up their contexts, nor offsets,
14710 instead we now build up the right number of COMPONENT_REFs for all
14711 the anon unions that may be present at build_component_ref time.
14712 * typeck.c (lookup_anon_field): New routine to handle field lookup
14713 on fields without names. We find them, based upon their unique type
14714 instead.
14715 * typeck.c (build_component_ref): Allow FIELD_DECL components.
14716 Handle finding components in anonymous unions, and ensure that a
14717 COMPONENT_REF is built for each level as necessary.
14718
14719 Tue Jan 30 18:18:23 1996 Mike Stump <mrs@cygnus.com>
14720
14721 * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
14722 code that ensures that copy ctors are used if appropriate.
14723
14724 Tue Jan 30 17:35:14 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14725
14726 * init.c (build_vec_delete): Only give an error if base isn't an
14727 error_mark_node.
14728
14729 Mon Jan 29 17:09:06 1996 Mike Stump <mrs@cygnus.com>
14730
14731 * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
14732 (yylex): If we see `new', keep slurping.
14733
14734 Thu Jan 25 18:31:36 1996 Mike Stump <mrs@cygnus.com>
14735
14736 * class.c (finish_struct_1): Move code for handling anon unions...
14737 (finish_struct_anon): to here. Fixup so that we do the offset
14738 calculations right, and so that the fields are physically moved to
14739 the containers's chain.
14740
14741 Thu Jan 25 18:27:37 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14742
14743 * decl.c (grokdeclarator): Avoid trying to get an operand off an
14744 identifier node.
14745
14746 Wed Jan 24 11:25:30 1996 Jim Wilson <wilson@chestnut.cygnus.com>
14747
14748 * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
14749 POINTER_SIZE to agree with expr.c.
14750
14751 Thu Jan 25 13:01:23 1996 Mike Stump <mrs@cygnus.com>
14752
14753 * search.c (lookup_field): Don't report ambiguities if protect is 0,
14754 instead return NULL_TREE.
14755
14756 Wed Jan 24 13:01:26 1996 Mike Stump <mrs@cygnus.com>
14757
14758 * class.c (finish_struct_1): Call warn_hidden if we want warnings
14759 about overloaded virtual functions.
14760 (warn_hidden): New routine to warn of virtual functions that are
14761 hidden by other virtual functions, that are not overridden.
14762 (get_basefndecls): New routine, used by warn_hidden.
14763 (mark_overriders): New routine, used by warn_hidden.
14764 * search.c (get_matching_virtual): Remove old warning that just
14765 isn't very useful.
14766
14767 Tue Jan 23 12:26:10 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14768
14769 * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
14770
14771 * typeck.c (null_ptr_cst_p): Delete unused fn.
14772 (build_function_call_maybe): Delete unused fn.
14773
14774 * expr.c (extract_init): #if 0 the code after unconditional return 0
14775 for now.
14776
14777 Delete old cadillac code.
14778 * edsel.c: Remove file.
14779 * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
14780 * Makefile.in (CXX_OBJS): Delete edsel.o.
14781 (edsel.o): Delete rule.
14782 * cp-tree.h (flag_cadillac): Delete var decl.
14783 * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
14784 * decl2.c (flag_cadillac): Delete var definition.
14785 (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
14786 (grokfield): Delete code depending on flag_cadillac.
14787 (finish_anon_union): Likewise.
14788 * class.c (finish_struct_1): Likewise.
14789 (pushclass): Likewise.
14790 (popclass): Likewise.
14791 (push_lang_context): Likewise.
14792 (pop_lang_context): Likewise.
14793 * decl.c (init_decl_processing): Likewise.
14794 (start_decl): Likewise.
14795 (cp_finish_decl): Likewise.
14796 (xref_tag): Likewise.
14797 (finish_enum): Likewise.
14798 (start_function): Likewise.
14799 (finish_function): Likewise.
14800 (finish_stmt): Likewise.
14801 * lex.c (lang_init): Likewise.
14802 (check_newline): Likewise.
14803
14804 * lex.c (do_pending_inlines): Delete synthesized method kludge.
14805
14806 Delete defunct, ancient garbage collection implementation.
14807 * rtti.c: New file with the RTTI stuff from gc.c.
14808 * gc.c: Removed file (moved the remaining stuff into rtti.c).
14809 * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
14810 (rtti.o): New rule, replacing gc.o.
14811 * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
14812 * cp-tree.h: Delete gc-related fn decls.
14813 (DECL_GC_OFFSET): Delete macro.
14814 (flag_gc): Delete extern decl.
14815 * decl.c (current_function_obstack_index): Delete var decl.
14816 (current_function_obstack_usage): Delete var decl.
14817 (start_function): Delete clearing of current_function_obstack_index
14818 and current_function_obstack_usage.
14819 (init_decl_processing): Delete code relying on -fgc.
14820 Delete call to init_gc_processing.
14821 (cp_finish_decl): Delete calls to build_static_gc_entry and
14822 type_needs_gc_entry. Delete gc code setting DECL_GC_OFFSET.
14823 (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
14824 and to expand_expr of a __gc_main call.
14825 (maybe_gc_cleanup): Delete var decl.
14826 (finish_function): Delete call to expand_gc_prologue_and_epilogue.
14827 * decl2.c (flag_gc): Delete var decl.
14828 (lang_f_options): Delete offering of -fgc.
14829 (lang_decode_option): Delete -fgc and -fno-gc handling.
14830 (get_temp_regvar): Delete gc code.
14831 * init.c (build_new): Delete gc code.
14832 * lex.c (init_lex): Delete checking of flag_gc.
14833
14834 * typeck.c (convert_arguments): Delete gc code.
14835 (build_component_addr): Delete -fgc warning.
14836 (build_modify_expr): Delete gc code.
14837
14838 * decl2.c (build_push_scope): Delete fn.
14839 * cp-tree.h (build_push_scope): Delete decl.
14840
14841 * search.c (clear_search_slots): Delete fn.
14842 * cp-tree.h (clear_search_slots): Delete decl.
14843
14844 * search.c (tree_needs_constructor_p): Delete fn.
14845 * cp-tree.h (tree_needs_constructor_p): Delete decl.
14846
14847 * tree.c (id_cmp): Delete fn.
14848
14849 * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
14850 * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
14851
14852 * tree.c (decl_value_member): Delete fn.
14853 * cp-tree.h (decl_value_member): Delete decl.
14854
14855 * tree.c (list_hash_lookup_or_cons): Delete fn.
14856 * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
14857
14858 * method.c (cplus_exception_name): Delete fn.
14859 (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
14860
14861 * spew.c (shift_tokens): Delete fn.
14862
14863 Mon Jan 22 17:49:33 1996 Jason Merrill <jason@yorick.cygnus.com>
14864
14865 * except.c (init_exception_processing): Pass 1 to needs_pop in calls
14866 to cp_finish_decl.
14867 * parse.y: Likewise.
14868
14869 Mon Jan 22 17:34:29 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14870
14871 * tree.c (build_cplus_staticfn_type): Delete function definition;
14872 never used.
14873 * cp-tree.h (build_cplus_staticfn_type): Delete decl.
14874
14875 * tree.c (virtual_member): Delete function definition; never used.
14876 * cp-tree.h (virtual_member): Delete decl.
14877
14878 Fri Jan 19 18:03:14 1996 Mike Stump <mrs@cygnus.com>
14879
14880 * typeck.c (build_component_ref): Handle getting vbase pointers
14881 out of complex multiple inheritance better.
14882
14883 Fri Jan 19 16:27:40 1996 Mike Stump <mrs@cygnus.com>
14884
14885 * typeck.c (build_object_ref): Make sure we use the real type, not
14886 any reference type.
14887
14888 Fri Jan 19 16:01:47 1996 Mike Stump <mrs@cygnus.com>
14889
14890 * tree.c (build_exception_variant): Don't create new types if we
14891 don't have to, also build new types on the right obstack.
14892
14893 Fri Jan 19 14:09:44 1996 Jason Merrill <jason@yorick.cygnus.com>
14894
14895 * decl.c (store_bindings): Split out from push_to_top_level.
14896 (push_to_top_level): Call it for b->type_shadowed on class binding
14897 levels.
14898
14899 Fri Jan 19 13:53:14 1996 Mike Stump <mrs@cygnus.com>
14900
14901 * search.c (expand_upcast_fixups): Fix so that offsets stored in
14902 vbase_offsets are always right. Fixes a problem where virtual base
14903 upcasting and downcasting could be wrong during conversions on this
14904 during virtual function dispatch at ctor/dtor time when dynamic
14905 vtable fixups for deltas are needed. This only sounds easier than
14906 it is. :-)
14907 (fixup_virtual_upcast_offsets): Change to reflect new calling
14908 convention for expand_upcast_fixups.
14909
14910 Fri Jan 19 12:23:08 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14911
14912 * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
14913 check that it's usable as the bitfield width.
14914
14915 Wed Jan 17 21:22:40 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14916
14917 * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
14918 Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
14919 only ever used for functions in it.
14920
14921 Wed Jan 17 12:10:38 1996 Jason Merrill <jason@yorick.cygnus.com>
14922
14923 * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
14924 (nested_type): Likewise.
14925 (nested_name_specifier): Use lastiddecl.
14926
14927 * decl.c (grokdeclarator): Adjust accordingly.
14928 * init.c (expand_member_init): Likewise.
14929 * parse.y (base_class): Likewise.
14930 * typeck2.c (build_functional_cast): Likewise.
14931
14932 * typeck2.c (build_functional_cast): Fill in name after we've
14933 checked for non-aggr type.
14934
14935 Wed Jan 17 10:18:01 1996 Mike Stump <mrs@cygnus.com>
14936
14937 * decl2.c (warn_pointer_arith): Default to on.
14938
14939 Tue Jan 16 12:45:38 1996 Jason Merrill <jason@yorick.cygnus.com>
14940
14941 * lex.c (is_rid): New function.
14942 * decl.c (grokdeclarator): Diagnose reserved words used as
14943 declarator-ids.
14944
14945 Tue Jan 16 11:39:40 1996 Jason Merrill <jason@yorick.cygnus.com>
14946
14947 * tree.c (get_decl_list): Don't lose cv-quals.
14948
14949 * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
14950 typespecs used as declarator-ids.
14951
14952 Tue Jan 16 11:09:42 1996 Mike Stump <mrs@cygnus.com>
14953
14954 * decl.c (poplevel): When poping a level, don't give a warning for
14955 any subblocks that already exist.
14956
14957 Tue Jan 16 00:25:33 1996 Jason Merrill <jason@yorick.cygnus.com>
14958
14959 * typeck.c (build_object_ref): Finish what I started.
14960
14961 * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
14962
14963 * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
14964
14965 * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
14966 scope.
14967
14968 Mon Jan 15 16:19:32 1996 Jason Merrill <jason@yorick.cygnus.com>
14969
14970 * decl.c (xref_tag): Handle passing a type in directly.
14971
14972 * parse.y (qualified_type_name): Pull out the type.
14973 (nested_type): Likewise.
14974 Take types directly instead of as identifiers.
14975 * call.c (build_scoped_method_call): Take types directly instead of
14976 as identifiers.
14977 * decl.c (xref_basetypes): Likewise.
14978 * init.c (expand_member_init): Likewise.
14979 (build_member_call): Likewise.
14980 (build_offset_ref): Likewise.
14981 * typeck2.c (build_scoped_ref): Likewise, remove bogus code.
14982 * method.c (do_build_assign_ref): Likewise.
14983 * decl.c (grokdeclarator): Handle a type appearing as the
14984 declarator-id for constructors.
14985 * method.c (do_build_copy_constructor): current_base_init_list now
14986 uses the types directly, not their names.
14987 * init.c (sort_base_init): Likewise.
14988 (expand_member_init): Likewise.
14989 * init.c (is_aggr_type): New function, like is_aggr_typedef.
14990
14991 Mon Jan 15 08:45:01 1996 Jeffrey A Law <law@cygnus.com>
14992
14993 * tree.c (layout_basetypes): Call build_lang_field_decl instead
14994 of build_lang_decl if first arg is a FIELD_DECL.
14995
14996 Thu Jan 11 14:55:07 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14997
14998 * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
14999 non-empty.
15000 * except.c (expand_start_catch_block): Set TREE_USED to avoid
15001 warnings about the catch handler.
15002
15003 Mon Jan 8 17:35:12 1996 Jason Merrill <jason@yorick.cygnus.com>
15004
15005 * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
15006 expand_target_expr.
15007
15008 Thu Jan 4 12:30:32 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
15009
15010 Fix access control to use trees rather than integers.
15011 * class.c (access_{default, public, protected, private,
15012 default_virtual, public_virtual, private_virtual}_node): Add
15013 definitions.
15014 (init_class_processing): Do creation of those nodes.
15015 * cp-tree.h (access_type): Delete enum decl.
15016 (access_{default, public, protected, private, default_virtual,
15017 public_virtual, private_virtual}_node): Add decls.
15018 (compute_access): Change return type.
15019 * search.c (compute_access): Have tree return type, instead of enum.
15020 (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
15021 * lex.c (real_yylex): Use yylval.ttype for giving the value of the
15022 access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
15023 * parse.y (VISSPEC): Make ttype rather than itype.
15024 (base_class_access_list): Likewise.
15025 * *.[cy]: Change all refs of `access_public' to `access_public_node',
15026 etc.
15027 * call.c (build_method_call): Make ACCESS be a tree.
15028 * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
15029 * cvt.c (convert_to_aggr): Likewise.
15030 * init.c (build_offset_ref, resolve_offset_ref, build_delete):
15031 Likewise.
15032 * method.c (hack_identifier): Likewise.
15033 * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
15034
15035 Thu Jan 4 11:02:20 1996 Mike Stump <mrs@cygnus.com>
15036
15037 * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
15038 frontend, and make it more consistent with respect to
15039 warn_pointer_arith.
15040
15041 Tue Jan 2 00:13:38 1996 Rusty Russell <rusty@adelaide.maptek.com.au>
15042
15043 * decl.c (pushdecl): Check for duplicate parameter names.
15044
15045 Wed Jan 3 09:25:48 1996 Mike Stump <mrs@cygnus.com>
15046
15047 * decl.c (expand_static_init): Call assemble_external for atexit.
15048
15049 Wed Jan 3 07:55:19 1996 Mike Stump <mrs@cygnus.com>
15050
15051 * except.c (do_unwind): Remove some generated dead code.
15052 (eh_outer_context): New routine, factor out some common code from
15053 expand_builtin_throw and end_eh_unwinder. Add code to do return
15054 address masking for the PA.
15055 (expand_builtin_throw): Use eh_outer_context instead of open coding
15056 it here.
15057 (end_eh_unwinder): Likewise.
15058
15059 Tue Jan 2 17:00:56 1996 Mike Stump <mrs@cygnus.com>
15060
15061 * except.c (expand_throw): Call assemble_external for __empty, if we
15062 use it.
15063
15064 Thu Dec 28 11:13:15 1995 Mike Stump <mrs@cygnus.com>
15065
15066 * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
15067 NORMAL_RETURN_ADDR_OFFSET.
15068 (end_eh_unwinder): Likewise.
15069
15070 Wed Dec 27 22:18:16 1995 Mike Stump <mrs@cygnus.com>
15071
15072 * gc.c (build_dynamic_cast): Make sure we don't cast away const
15073 when dealing with references, and make sure we handle dynamic
15074 casting to a cv qualified reference.
15075
15076 Thu Dec 21 23:50:35 1995 Mike Stump <mrs@cygnus.com>
15077
15078 * except.c (struct eh_context): New structure top hold eh context
15079 information.
15080 (push_eh_context): New routine.
15081 (pop_eh_context): Likewise.
15082 * decl.c (push_cp_function_context): Use them.
15083 (pop_cp_function_context): Likewise.
15084
15085 Wed Dec 20 12:42:51 1995 Jason Merrill <jason@yorick.cygnus.com>
15086
15087 * decl2.c (finish_file): Also prune uninteresting functions in the
15088 inline emission loop.
15089
15090 Wed Dec 20 02:32:07 1995 Jeffrey A Law <law@cygnus.com>
15091
15092 * sig.c (build_signature_table_constructor): Mark functions
15093 in the signature as referenced.
15094
15095 Tue Dec 19 22:36:56 1995 Jason Merrill <jason@yorick.cygnus.com>
15096
15097 * decl2.c (finish_file): Do all the vtable/synthesis stuff before
15098 the inline emission stuff.
15099
15100 Mon Dec 18 15:51:33 1995 Jason Merrill <jason@yorick.cygnus.com>
15101
15102 * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
15103 weak symbols.
15104 * lang-options.h: Add -f{no-,}weak.
15105 * decl.c (init_decl_processing): If the target does not support weak
15106 symbols, don't use them.
15107 * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
15108
15109 Sun Dec 17 21:13:23 1995 Rusty Russell <rusty@adelaide.maptek.com.au>
15110
15111 * init.c (expand_member_init): warning for base init after members.
15112
15113 Fri Dec 15 15:32:18 1995 Jason Merrill <jason@yorick.cygnus.com>
15114
15115 * cvt.c (build_expr_type_conversion): Don't convert to a reference
15116 type.
15117
15118 Thu Dec 14 16:05:58 1995 Mike Stump <mrs@cygnus.com>
15119
15120 * method.c (report_type_mismatch): Improve wording for volatile
15121 mismatches.
15122
15123 Thu Dec 14 14:16:26 1995 Mike Stump <mrs@cygnus.com>
15124
15125 * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
15126 expand_assignment, as the later doesn't handle things that have
15127 copy constructors well. The compiler would do bitwise copying,
15128 instead of ctor calling in some cases.
15129
15130 Wed Dec 13 17:05:54 PST 1995 Paul Eggert <eggert@twinsun.com>
15131
15132 * g++.c (my_strerror): Return "cannot access" if errno is 0.
15133 (pfatal_with_name, perror_exec): Don't assume that
15134 the returned value from my_strerror contains no '%'s.
15135 (concat): Remove.
15136 (sys_nerror): Declare only if HAVE_STRERROR is not defined.
15137
15138 Wed Dec 13 16:22:38 1995 Jason Merrill <jason@yorick.cygnus.com>
15139
15140 Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
15141 TYPE_METHODS/TREE_CHAIN mean what they used to.
15142 * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
15143 instead of TYPE_METHODS.
15144 * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
15145 * tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
15146 * cp-tree.h (CLASSTYPE_METHODS): Lose.
15147 (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
15148 TYPE_METHODS.
15149 (struct lang_decl): Lose next_method field.
15150 (DECL_NEXT_METHOD): Lose.
15151 * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
15152 (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
15153 anymore.
15154 (finish_struct_methods): Don't mess with the TREE_CHAINs in
15155 fn_fields.
15156
15157 * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
15158 vector.
15159
15160 * call.c (build_method_call): Synthesize here even when not inlining.
15161 * typeck.c (build_function_call_real): Likewise.
15162
15163 Wed Dec 13 15:02:39 1995 Ian Lance Taylor <ian@cygnus.com>
15164
15165 * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
15166 == DBX_DEBUG, call dbxout_start_new_source_file and
15167 dbxout_resume_previous_source_file when appropriate.
15168
15169 Tue Dec 12 20:38:55 1995 Mike Stump <mrs@cygnus.com>
15170
15171 * except.c (start_anon_func): Push to the top level.
15172 (end_anon_func): Pop from the top level.
15173
15174 Mon Dec 11 18:56:14 1995 Mike Stump <mrs@cygnus.com>
15175
15176 * cp-tree.h (build_cleanup): New routine to build cleanups.
15177 * decl.c (expand_static_init): Use build_cleanup to build a cleanup
15178 call at ctor time and use atexit to run it later.
15179 * decl2.c (build_cleanup): New routine, taken from finish_file.
15180 (finish_file): Use build_cleanup instead, and don't put function
15181 local statics in global dtor list.
15182
15183 Wed Dec 6 14:34:29 1995 Mike Stump <mrs@cygnus.com>
15184
15185 * except.c (expand_throw): Ensure that we have cleanups, if we try
15186 and expand cleanups.
15187
15188 Wed Dec 6 11:48:21 1995 Mike Stump <mrs@cygnus.com>
15189
15190 * except.c (expand_throw): Add logic to manage dynamic cleanups for
15191 the EH object.
15192 (expand_end_catch_block): Use the magic of expand_goto, instead of
15193 emit_jump so that we get the cleanup for any catch clause parameter
15194 and the cleanup for the exception object. Update to reflect label
15195 changes.
15196 (push_eh_cleanup): New routine to register a cleanup for an
15197 exception object.
15198 (empty_fndecl): Used to default cleanup actions to
15199 nothing.
15200 (init_exception_processing): Setup empty_fndecl. Setup
15201 saved_cleanup.
15202 (expand_start_catch_block): Update to reflect label changes. Call
15203 push_eh_object to register the cleanup for the EH object.
15204 (start_anon_func): New routine to start building lambda expressions
15205 from trees.
15206 (end_anon_func): New routine to end them.
15207 (struct labelNode): Change so that we can use tree labels, or rtx
15208 labels.
15209 (saved_cleanup): Object to check for dynamic cleanups for the
15210 exception handling object.
15211 (push_label_entry): Change so that we can use tree labels, or rtx
15212 labels.
15213 (pop_label_entry): Likewise.
15214 (top_label_entry): Likewise.
15215 (expand_start_all_catch): Use tree label instead of rtx label, so
15216 that we can get the magic of expand_goto.
15217 (expand_end_all_catch): Update to reflect label changes.
15218
15219 * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
15220 use UNSAVE_EXPRs.
15221 * typeck.c (get_member_function_from_ptrfunc): Remove remnants of
15222 building_cleanup logic, as we now use UNSAVE_EXPRs.
15223 * cp-tree.h (unsave_expr): Declare it.
15224 * decl.c (building_cleanup): Remove.
15225 (maybe_build_cleanup): Remove building_cleanup logic, and use
15226 UNSAVE_EXPR instead.
15227
15228 Sun Dec 3 01:34:58 1995 Mike Stump <mrs@cygnus.com>
15229
15230 * gc.c (build_t_desc): Update error message to say <typeinfo>.
15231
15232 Thu Nov 30 12:30:05 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
15233
15234 * decl.c (pushdecl): Only warn about shadowing a local variable if
15235 warn_shadow is true.
15236
15237 Sun Nov 26 16:06:55 1995 Rusty Russell <rusty@adelaide.maptek.com.au>
15238
15239 * typeck.c (build_binary_op_nodefault): Added warning about
15240 comparisons between different enum types with -Wall, unless
15241 -fenum-int-equiv set.
15242
15243 Wed Nov 22 15:44:02 1995 Mike Stump <mrs@cygnus.com>
15244
15245 * class.c (finish_struct_1): Skip down to the inner type in
15246 multidimensional arrays. Ensures ctors will be made for types that
15247 need constructing.
15248
15249 Wed Nov 22 14:19:22 1995 Mike Stump <mrs@cygnus.com>
15250
15251 * decl.c (last_dtor_insn): New to track the last compiler generated
15252 insn in a dtor.
15253 (store_parm_decls): Set it.
15254 (finish_function): Use it to see if the dtor is empty. Avoid doing
15255 vtable setup all the time, if we can.
15256 (struct cp_function): Add last_dtor_insn.
15257 (push_cp_function_context): Save it.
15258 (pop_cp_function_context): Restore it.
15259
15260 Wed Nov 22 11:52:19 1995 Paul Russell <Rusty.Russell@adelaide.maptek.com.au>
15261
15262 * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
15263 warnings.
15264
15265 Tue Nov 21 17:15:23 1995 Mike Stump <mrs@cygnus.com>
15266
15267 * typeck.c (expand_target_expr): Make sure targets get put into the
15268 current temp_slot_level, so that the free_temp_slots call will reuse
15269 them.
15270
15271 Tue Nov 21 13:32:03 1995 Mike Stump <mrs@cygnus.com>
15272
15273 * class.c (finish_struct_1): Delay delta fixups for virtual bases
15274 until after we have done the hard virtuals, to avoid a bogus `every
15275 virtual function must have a unique final overrider' for virtual
15276 functions that are only overridden by hard virtuals.
15277
15278 Thu Nov 9 13:35:30 1995 Jason Merrill <jason@yorick.cygnus.com>
15279
15280 * pt.c (do_function_instantiation): Don't try to find a file-scope
15281 template for a member function.
15282
15283 Tue Nov 14 06:20:35 1995 Mike Stump <mrs@cygnus.com>
15284
15285 * g++.c (main): Add handling of -nodefaultlibs.
15286
15287 Mon Nov 13 15:45:34 1995 Mike Stump <mrs@cygnus.com>
15288
15289 * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
15290 distinguish between direct bindings of reference variables, and
15291 indirect bindings of reference variables.
15292 * cvt.c (build_up_reference): Use it.
15293 * typeck.c (convert_arguments): Use it to indicate this is an
15294 indirect binding.
15295 * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
15296 as they are unused.
15297 (expand_static_init): Likewise.
15298 (cplus_expand_expr_stmt): Likewise.
15299 * decl2.c (finish_file): Likewise.
15300 * init.c (perform_member_init): Likewise.
15301 (emit_base_init): Likewise.
15302 (expand_aggr_vbase_init_1): Likewise.
15303
15304 Fri Nov 10 09:18:09 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
15305
15306 * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
15307 get a DECL_LANG_SPECIFIC node.
15308 * cp-tree.h (lang_decl_flags): Add new member `level'.
15309 (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
15310 decl_flags level member.
15311
15312 Mon Nov 6 18:36:13 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
15313
15314 * call.c (build_method_call): Make sure instance has a
15315 TYPE_LANG_SPECIFIC node before we dive into it.
15316
15317 Sat Nov 4 20:01:52 1995 Jason Molenda <crash@phydeaux.cygnus.com>
15318
15319 * method.c (make_thunk): Use TREE_SET_CODE to set thunk's tree code.
15320
15321 Thu Nov 2 17:56:57 1995 Mike Stump <mrs@cygnus.com>
15322
15323 * decl.c (duplicate_decls): When smashing decls, smash staticness in
15324 the usual way.
15325
15326 Thu Nov 2 16:44:02 1995 Mike Stump <mrs@cygnus.com>
15327
15328 * decl.c (poplevel): Handle the merging of subblocks of cleanups
15329 when finishing blocks that have already been created (usually due to
15330 the fixup goto code). Fixes bad debugging information.
15331
15332 Wed Nov 1 12:33:53 1995 Jason Merrill <jason@yorick.cygnus.com>
15333
15334 * method.c (hack_identifier): Don't abort when we get a TREE_LIST
15335 that's not a list of overloaded functions.
15336
15337 Wed Nov 1 11:38:58 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
15338
15339 * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
15340 before trying to use DECL_ABSTRACT_VIRTUAL_P.
15341
15342 Tue Oct 31 11:56:55 1995 Jason Merrill <jason@yorick.cygnus.com>
15343
15344 * decl2.c (mark_used): New function for hooking into setting of
15345 TREE_USED on decls.
15346 * call.c (build_method_call): Use it.
15347 * class.c (instantiate_type): Likewise.
15348 * init.c (build_offset_ref): Likewise. Don't call assemble_external
15349 for all like-named functions.
15350 * method.c (hack_identifier): Likewise.
15351 (emit_thunk): Don't call assemble_external.
15352 (make_thunk): Create thunk as a FUNCTION_DECL so that it
15353 gets the right mode and ENCODE_SECTION_INFO works.
15354
15355 * parse.y: Use mark_used. Pass operator names to do_identifier.
15356 * lex.c (do_identifier): Handle operator names.
15357
15358 * decl2.c (grokclassfn): Tweak __in_chrg attributes.
15359
15360 Thu Oct 26 16:45:58 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
15361
15362 * errfn.c: Include stdio.h.
15363 (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
15364
15365 Wed Oct 25 18:58:41 1995 Mike Stump <mrs@cygnus.com>
15366
15367 * typeck2.c (digest_init): Always convert initializers to the
15368 right type.
15369
15370 Wed Oct 25 13:25:24 1995 Mike Stump <mrs@cygnus.com>
15371
15372 * init.c (member_init_ok_or_else): Don't allow member initializers
15373 for indirect members, as it is invalid.
15374
15375 Wed Oct 25 11:35:28 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
15376
15377 * decl.c (grokdeclarator): Don't allow `friend signed ()'.
15378
15379 Fri Oct 20 10:30:59 1995 Mike Stump <mrs@cygnus.com>
15380
15381 * parse.y (for.init.statement): Catch compound statements inside for
15382 initializations, if we're being pedantic.
15383
15384 Fri Oct 20 10:03:42 1995 Mike Stump <mrs@cygnus.com>
15385
15386 * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
15387 looking for.
15388
15389 Thu Oct 19 14:26:10 1995 Mike Stump <mrs@cygnus.com>
15390
15391 * error.c (dump_expr): Don't core dump when a boolean expression is
15392 used as a default argument.
15393
15394 Thu Oct 19 10:36:30 1995 Jason Merrill <jason@yorick.cygnus.com>
15395
15396 * class.c (finish_struct_bits): Check aggregate_value_p instead of
15397 RETURN_IN_MEMORY.
15398
15399 Wed Oct 18 18:12:32 1995 Jason Merrill <jason@yorick.cygnus.com>
15400
15401 * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
15402 BLKmode type that would otherwise be returned in registers.
15403
15404 Mon Oct 16 12:32:19 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
15405
15406 * g++.c (WITHLIBC): New macro.
15407 (main): Declare saw_libc. Use WITHLIBC if `-lc' was used; set
15408 saw_libc and pass it at the end if it was set.
15409
15410 Wed Oct 11 16:30:34 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
15411
15412 * parse.y (fn.def1): Call split_specs_attrs in
15413 declmods notype_declarator case.
This page took 0.67258 seconds and 6 git commands to generate.