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