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