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