3f1f604c649bf96f9776719b189ae5dd5952deac
[gcc.git] / gcc / cp / ChangeLog
1 Mon Mar 27 07:14:33 1995 Warner Losh <imp@village.org>
2
3 * g++.c: Removed __NetBSD__ from conditional.
4 Declare strerror if HAVE_STRERROR is defined; otherwise
5 declare sys_errlist and sys_nerr.
6 (my_strerror): New function.
7
8 Tue Mar 28 14:16:35 1995 Jason Merrill <jason@phydeaux.cygnus.com>
9
10 * search.c (get_binfo): Don't try to be so clever.
11
12 * tree.c (copy_to_permanent): Also suspend_momentary().
13
14 * cvt.c (cp_convert_to_pointer): Hand off to convert_fn_pointer even
15 if the types are the same.
16
17 * decl.c (start_function): Handle extern inlines more like C++ says
18 we should.
19
20 * init.c (build_member_call): Hand constructor calls off to
21 build_functional_cast.
22
23 * typeck2.c (build_functional_cast): Use DECL_NESTED_TYPENAME to get
24 the name of the type.
25
26 Tue Mar 28 13:13:56 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
27
28 * decl.c (grokdeclarator): Check for the decl returned by
29 grokfndecl to be null before using build_decl_attribute_variant.
30
31 Mon Mar 27 18:04:41 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
32
33 * init.c (build_new): Use build_pointer_type instead of
34 TYPE_POINTER_TO.
35
36 Fri Mar 24 12:11:24 1995 Jason Merrill <jason@phydeaux.cygnus.com>
37
38 * typeck.c (build_conditional_expr): Handle pmfs.
39 (convert_for_assignment): Fix pmf support.
40
41 * cvt.c (convert_fn_ptr): Support !flag_vtable_thunks.
42 (cp_convert_to_pointer): Handle pmfs.
43 (cp_convert): Pass pmfs to cp_convert_to_pointer.
44
45 * typeck.c (common_type): Handle inheritance for pmfs.
46
47 * typeck2.c (build_m_component_ref): Do access control.
48
49 * typeck.c (comp_target_types): Check for conversion to void *
50 before checking trickier conversions.
51
52 * decl.c (duplicate_decls): Propagate DECL_ABSTRACT_VIRTUAL_P.
53
54 * pt.c (push_tinst_level): Complain if template instantiation depth
55 is greater than max_tinst_depth.
56
57 * typeck.c (common_type): Assume that we can call common_type to
58 unify the target type of a pointer.
59
60 Thu Mar 23 00:48:44 1995 Jason Merrill <jason@phydeaux.cygnus.com>
61
62 * decl2.c (finish_file): Don't synthesize methods at
63 finish_vtable_prevardecl time. Do synthesize methods that are not
64 used, but are public and not external.
65
66 * cvt.c (build_type_conversion): Only give an error if for_sure.
67
68 * typeck.c (comp_target_types): Only support pointer conversions if
69 nptrs > 0.
70
71 Wed Mar 22 19:30:15 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
72
73 * init.c (build_new): Catch use of an initializer list where it
74 shouldn't be.
75
76 Wed Mar 22 16:21:07 1995 Jason Merrill <jason@phydeaux.cygnus.com>
77
78 * init.c (build_new): Wrap alloc_expr in an RTL_EXPR if nelts is
79 non-constant.
80
81 * decl2.c: temp_name_counter is now public.
82
83 * decl.c (struct cp_function): Add temp_name_counter field.
84 (push_cp_function_context): Save it.
85 (pop_cp_function_context): Restore it.
86
87 * typeck.c (common_type): Handle unifying function types, and unify
88 unmatched things to void* with a compiler_error, rather than
89 silently like before.
90
91 Wed Mar 22 15:10:34 1995 Mike Stump <mrs@cygnus.com>
92
93 * decl2.c (finish_prevtable_vardecl, finish_vtable_vardecl): Revert
94 Brendan's last change and fix latent problem that causes TD entries
95 to not come out when the things that need them has yet to be
96 expanded.
97
98 Wed Mar 22 15:12:00 1995 Jason Merrill <jason@phydeaux.cygnus.com>
99
100 * typeck.c (build_binary_op_nodefault, comparison ops): Update type0
101 and type1, since we might have changed op0 or op1.
102
103 Wed Mar 22 13:33:45 1995 Jason Merrill <jason@python.cygnus.com>
104
105 * typeck.c (common_type): Don't mess up templates.
106
107 Wed Mar 22 04:56:00 1995 Jason Merrill <jason@phydeaux.cygnus.com>
108
109 * typeck.c (common_type): Handle ptms properly. Also handle
110 T* -> void*.
111 (build_binary_op_nodefault): New variable build_type controls what
112 type is given to the expression when it is created. Set this to
113 boolean_type_node for comparison ops instead of using result_type.
114 (comp_target_types): Allow T * -> void *.
115
116 * cvt.c (cp_convert_to_pointer): Do access control when converting
117 ptms, too.
118
119 Tue Mar 21 17:25:06 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
120
121 * parse.y (extern_lang_string): Catch use of linkage specs that
122 aren't all naming the same language.
123
124 * class.c (finish_struct): Delete accidental duplicate code.
125
126 Tue Mar 21 14:00:57 1995 Jason Merrill <jason@phydeaux.cygnus.com>
127
128 * typeck.c (build_binary_op_nodefault): Disable pedwarns about
129 comparing functions and incomplete types.
130
131 * decl.c (finish_function): Only unset current_function_decl if
132 !nested.
133 (duplicate_decls): Last change went too far; we only want to stop
134 checking for value/reference ambiguity.
135
136 Tue Mar 21 01:26:39 1995 Mike Stump <mrs@cygnus.com>
137
138 * gc.c (build_generic_desc): Zap the DECL_SIZE so that we can lay it
139 out fresh, as the new type may be larger.
140
141 Mon Mar 20 19:01:10 1995 Jason Merrill <jason@phydeaux.cygnus.com>
142
143 * expr.c (extract_init): Try to expand the RTL for the
144 initialization and figure out what it will look like so we can avoid
145 run-time initialization. Disabled for now.
146 (extract_scalar_init): Helper for scalar initialization.
147 (extract_aggr_init): Helper for aggregate initialization.
148
149 * decl.c (duplicate_decls): Don't complain about ambiguous
150 declarations.
151 (obscure_complex_init): Now returns a tree. Call extract_init if
152 we're optimizing and this is a toplevel decl.
153 (finish_decl): Update accordingly.
154
155 * lex.c (check_newline): If we're just changing files (not pushing
156 or popping), update input_file_stack->name.
157
158 Mon Mar 20 17:55:04 1995 Mike Stump <mrs@cygnus.com>
159
160 * pt.c (type_unification): Only TEMPLATE_DECLs are handled right now
161 in the transitive unification code.
162
163 Mon Mar 20 16:07:50 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
164
165 * decl.c (shadow_tag): Don't allow inline, virtual, or explicit on
166 non-functions.
167 (grokdeclarator): Don't allow friends to be defined in local classes.
168
169 Sat Mar 18 04:03:33 1995 Jason Merrill <jason@phydeaux.cygnus.com>
170
171 * decl2.c (finish_prevtable_vardecl): Use DECL_DECLARED_STATIC
172 rather than DECL_SAVED_INSNS to decide whether or not this method
173 was declared inline.
174
175 * method.c (synthesize_method): Turn off DECL_INLINE if
176 function_cannot_inline_p thinks we're too large.
177
178 * typeck.c (build_indirect_ref): Use build_expr_type_conversion.
179
180 Fri Mar 17 17:47:36 1995 Jason Merrill <jason@phydeaux.cygnus.com>
181
182 * class.c (instantiate_type): Handle pmfs.
183
184 * typeck.c (convert_for_assignment): Check types when assigning one
185 pmf to another.
186
187 * decl.c (define_label): Fix logic for printing out the name of the
188 label in an error message.
189
190 * error.c (dump_expr): Support ARRAY_REF.
191
192 Fri Mar 17 17:43:02 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
193
194 * decl2.c (finish_vtable_vardecl): Call build_t_desc here.
195 (finish_prevtable_vardecl): Instead of here.
196
197 Fri Mar 17 14:40:45 1995 Jason Merrill <jason@phydeaux.cygnus.com>
198
199 * decl.c (expand_static_init): Also use expand_aggr_init if the
200 initializer is a TREE_LIST.
201 (grokdeclarator): Only pedwarn about extra qualification if -pedantic.
202
203 * pt.c (unify): Fix unification of return type.
204
205 * expr.c (fixup_result_decl): Use store_expr, rather than
206 emit_move_insn, to move the return value into the place where
207 callers will expect it.
208
209 Thu Mar 16 22:05:25 1995 Jason Merrill <jason@phydeaux.cygnus.com>
210
211 * init.c (build_offset_ref): Call assmble_external on functions.
212 * typeck.c (build_component_ref): Ditto.
213
214 Thu Mar 16 20:28:16 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
215
216 * decl.c (struct saved_scope): Add members base_init_list and
217 member_init_list.
218 (push_to_top_level): Save current_base_init_list and
219 current_member_init_list to them.
220 (pop_from_top_level): Put it back.
221
222 Thu Mar 16 19:21:14 1995 Jason Merrill <jason@phydeaux.cygnus.com>
223
224 * pt.c (instantiate_template): Call assemble_external.
225
226 Thu Mar 16 18:07:54 1995 Brendan Kehoe (brendan@phydeaux.cygnus.com)
227
228 * class.c: Include rtl.h, to get NULL_RTX.
229 (finish_struct): Also zero out DECL_SAVED_INSNS, to avoid problems
230 on hosts with different sizes for each part of the union.
231 * tree.c: Also include rtl.h.
232 (layout_basetypes): Same change for DECL_SAVED_INSNS.
233
234 Thu Mar 16 13:57:36 1995 Jason Merrill <jason@phydeaux.cygnus.com>
235
236 * pt.c (unify): Fix array domain unification for 64-bit targets.
237
238 * decl2.c (finish_file): Push bizarre type decl before walking the
239 vtables the first time.
240 (walk_vtables): OK, don't set prev to vars if the vardecl_fn messed
241 with TREE_CHAIN (prev).
242
243 * init.c (emit_base_init): Use convert_pointer_to_real instead of
244 convert_pointer_to when converting to a direct base.
245
246 Wed Mar 15 20:26:29 1995 Mike Stump <mrs@cygnus.com>
247
248 * pt.c (type_unification): Handle transitive unification better.
249
250 Wed Mar 15 13:56:16 1995 Jason Merrill <jason@phydeaux.cygnus.com>
251
252 * decl2.c (walk_vtables): Always set prev to vars.
253 (mark_vtable_entries): Call assemble_external on the vtable entries.
254
255 * class.c (finish_struct): Set the vtable's size to NULL_TREE before
256 calling layout_decl, so that it gets updated properly.
257
258 Finally re-enable dynamic synthesis. This time it works.
259 * method.c (synthesize_method): Pass decl_function_context (fndecl)
260 to {push,pop}_cp_function_context.
261 * decl.c (push_cp_function_context): Now takes a tree argument.
262 (pop_cp_function_context): Ditto.
263 * call.c (build_method_call): Enable synthesis.
264 * lex.c (cons_up_default_function): Ditto.
265
266 Tue Mar 14 19:14:19 1995 Doug Evans <dje@chestnut.cygnus.com>
267
268 * parse.y (setattrs): Chain onto prefix_attributes rather than
269 setting it.
270
271 Wed Mar 15 13:00:00 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
272
273 * decl.c (pushdecl): Check if the type of the VAR_DECL is an
274 error_mark_node before trying to read TYPE_LANG_SPECIFIC.
275
276 Mon Mar 13 21:00:28 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
277
278 * decl.c (grokdeclarator, case ARRAY_REF): Wrap the exp with fold,
279 and convert the size and integer_one_node to the index type.
280
281 Mon Mar 13 08:01:02 1995 Jason Merrill <jason@phydeaux.cygnus.com>
282
283 * typeck.c (get_member_function_from_ptrfunc): Save the instance
284 argument, and tack it onto the front of the COND_EXPR to make the
285 semantics come out right. Grab the instance argument from
286 '*instance_ptrptr', rather than having it passed in separately.
287
288 * various: Change various consed-up comparison operations to have
289 boolean type. Remove the instance argument in calls to
290 get_member_function_from_ptrfunc.
291
292 * error.c (dump_expr): Dump true and false as "true" and "false".
293
294 * decl2.c (finish_file): Also set DECL_STATIC_FUNCTION_P on the
295 global init function.
296
297 * decl.c (finish_function): Only set DECL_EXTERNAL here if the
298 inline function is public.
299
300 Sat Mar 11 00:58:03 1995 Jason Merrill <jason@phydeaux.cygnus.com>
301
302 * init.c (is_friend): Be more careful about checking
303 DECL_CLASS_CONTEXT on non-member functions.
304
305 * decl2.c (finish_vtable_vardecl): Don't bother calling
306 assemble_external here.
307 (prune_vtable_vardecl): New function that just splices out the
308 vtable decl from the top-level decls.
309 (import_export_inline): Unset DECL_EXTERNAL at first.
310 (finish_file): Don't bother calling assemble_external here. Do
311 splice out all of the vtables.
312
313 Fri Mar 10 14:42:29 1995 Jason Merrill <jason@phydeaux.cygnus.com>
314
315 * decl.c (finish_function): If we're not emitting the function yet,
316 call assemble_external for it.
317
318 * decl2.c (finish_prevtable_vardecl): Don't call mark_vtable_entries
319 here.
320 (finish_vtable_vardecl): Don't do the linkage deduction thing here.
321 Also don't splice out the current vtable if it is unused.
322 (finish_file): Move the second walk_vtables and the synthesis check
323 inside the 'reconsider' loop. Move thunk emission after the
324 'reconsider' loop.
325
326 Thu Mar 9 16:28:16 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
327
328 * pt.c (tsubst): Don't bother calling cp_build_type_variant, since it
329 was passing bogus values for readonly and volatile from the original
330 template decl, not the resultant type of the tsubst call.
331
332 * class.c (duplicate_tag_error): Use cp_error_at to point out the
333 previous definition of the tag.
334
335 Thu Mar 9 10:46:17 1995 Jason Merrill <jason@phydeaux.cygnus.com>
336
337 * decl.c (start_function): Clear base_init_insns and protect_list.
338 (struct cp_function): Add base_init_insns field.
339 (push_cp_function_context): Also save base_init_insns.
340 (pop_cp_function_context): Also restore base_init_insns.
341
342 Wed Mar 8 13:31:44 1995 Jason Merrill <jason@phydeaux.cygnus.com>
343
344 * init.c (member_init_ok_or_else): Check for initializing a static
345 member here.
346 (emit_base_init): Instead of here.
347
348 Tue Mar 7 16:03:26 1995 Jason Merrill <jason@phydeaux.cygnus.com>
349
350 * call.c (build_method_call): Disable synthesis as needed.
351 * lex.c (cons_up_default_function): Ditto.
352
353 Tue Mar 7 10:14:29 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
354
355 * parse.y: New rules to allow attributes in a prefix position.
356 (prefix_attributes): New variable. Pass it into cplus_decl_attributes.
357 (setattr): New rule.
358 (reserved_declspecs, declmods): Catch attributes here.
359 * decl2.c (cplus_decl_attributes): Add PREFIX_ATTRIBUTES argument.
360 * decl.c (duplicate_decls): Pass DECL_MACHINE_ATTRIBUTES to
361 descendent typedef.
362 (grokdeclarator): Added code to support machine attributes.
363 * Makefile.in (stamp-parse): Expect 5 shift/reduce failures.
364
365 Mon Mar 6 15:07:02 1995 Jason Merrill <jason@phydeaux.cygnus.com>
366
367 * call.c (build_method_call): Don't synthesize methods outside of a
368 function.
369
370 Make base initialization more re-entrant so that synthesis on the
371 fly will work (and, eventually, template instantation on the fly).
372 * init.c (sort_member_init): Don't bother with members that can't be
373 initialized. Reorganize a bit. Don't initialize base members here.
374 (sort_base_init): New function, like sort_member_init, but for base
375 classes. Steals some code from emit_base_init.
376 (emit_base_init): Simplify. Call sort_{member,base}_init before
377 doing any initialization, so we don't have to save
378 current_{member,base}_init_list in push_cp_function_context.
379 (expand_aggr_vbase_init_1): Adjust for sort_base_init.
380 (expand_aggr_vbase_init): Simplify.
381 * decl.c (struct cp_function): Add protect_list field.
382 (push_cp_function_context): Also save protect_list.
383 (pop_cp_function_context): Also restore protect_list.
384 * call.c (build_method_call): Enable synthesis at point of call.
385 * lex.c (cons_up_default_function): Ditto.
386
387 * parse.y: Turn -ansi checks back into -pedantic checks.
388
389 * init.c (build_new): Fix -fcheck-new for array new.
390
391 Sat Mar 4 15:55:42 1995 Fergus Henderson <fjh@cs.mu.oz.au>
392
393 * typeck.c (build_compound_expr): warn if left-hand operand of
394 comma expression has no side-effects.
395
396 Fri Mar 3 15:16:45 1995 Jason Merrill <jason@phydeaux.cygnus.com>
397
398 * parse.y (primary): Change 'object qualified_id *' rules to 'object
399 overqualified_id *'.
400
401 Fri Mar 3 12:48:17 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
402
403 * parse.y (unary_expr): Catch doing sizeof an overloaded function.
404 Make the error look the same as the one we issue in c_sizeof.
405
406 * typeck.c (build_binary_op_nodefault): Give an error for trying
407 to compare a pointer-to-member to `void *'.
408
409 Fri Mar 3 11:28:50 1995 Jason Merrill <jason@phydeaux.cygnus.com>
410
411 * typeck.c (build_unary_op): Handle bool increment with smoke and
412 mirrors here, rather than in expand_increment where it belongs,
413 because Kenner doesn't agree with me.
414
415 Fri Mar 3 00:08:10 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
416
417 * decl.c (grokparms): Catch a PARM_DECL being used for a default
418 argument as well.
419
420 Thu Mar 2 20:05:54 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
421
422 * init.c (build_new): Don't allow new on a function type.
423
424 * parse.y (primary): Avoid a crash when seeing if the arg is of
425 the same type as that given for the typespec in an explicit dtor call.
426
427 Thu Mar 2 00:49:38 1995 Jason Merrill <jason@phydeaux.cygnus.com>
428
429 * decl.c (finish_function): Change test for calling
430 mark_inline_for_output.
431
432 Wed Mar 1 11:23:46 1995 Jason Merrill <jason@phydeaux.cygnus.com>
433
434 * typeck.c (build_modify_expr): Complain if
435 build_default_binary_type_conversion fails.
436
437 * init.c (expand_default_init): Handle arguments of unknown type
438 properly.
439
440 * cvt.c (build_expr_type_conversion): Only complain about ambiguity
441 if 'complain'.
442 * various: Pass 'complain'.
443
444 * typeck.c (comptypes): Be more picky about comparing UPTs.
445
446 Wed Mar 1 11:03:41 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
447
448 * decl.c (grokdeclarator): If declarator is null, say that the
449 type used has an incomplete type.
450
451 Wed Mar 1 10:06:20 1995 Jason Merrill <jason@phydeaux.cygnus.com>
452
453 * pt.c (instantiate_template): Copy the template arguments to the
454 permanent_obstack. Also use simple_cst_equal to compare them when
455 looking for a previous instantiation.
456
457 * tree.c (make_deep_copy): Support copying INTEGER_TYPEs (assuming
458 they are array domain types).
459
460 Tue Feb 28 23:24:55 1995 Jason Merrill <jason@phydeaux.cygnus.com>
461
462 * cp-tree.h: Define WANT_* constants for passing to
463 build_expr_type_conversion.
464 * cvt.c (build_expr_type_conversion): New function to build
465 conversion to one of a group of suitable types.
466 (build_default_binary_type_conversion): Use it.
467 * decl2.c (grok_array_decl): Ditto.
468 * typeck.c (build_unary_op): Ditto.
469 (build_array_ref): Tidy up a bit.
470 (build_binary_op): Ditto.
471
472 Tue Feb 28 19:57:31 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
473
474 * decl.c (grokdeclarator): Don't allow decl of an argument as `void'.
475
476 Tue Feb 28 17:23:36 1995 Jason Merrill <jason@phydeaux.cygnus.com>
477
478 * parse.y (typed_declspecs1): Add 'typespec reserved_typespecquals
479 reserved_declspecs' rule.
480
481 * parse.y (expr_or_declarator): Remove notype_qualified_id rule.
482 (direct_notype_declarator): Ditto.
483 (complex_direct_notype_declarator): Add notype_qualified_id rule.
484
485 * lex.c (real_yylex): Handle :> digraph properly.
486
487 Tue Feb 28 12:26:29 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
488
489 * decl.c (grokdeclarator): Check if it's a friend, not if it's
490 non-virtual, that's being initialized. Move the check up to
491 before FRIENDP would get cleared. Catch an unnamed var/field
492 being declared void. Say just `field' instead of `structure field'
493 in the error message. Only go for the operator name if DECLARATOR
494 is non-null.
495
496 Tue Feb 28 00:08:01 1995 Jason Merrill <jason@phydeaux.cygnus.com>
497
498 * decl.c (start_function): Complain about abstract return type.
499 (grokdeclarator): Complain about declaring constructors and
500 destructors to be const or volatile. Complain about declaring
501 destructors to be static.
502
503 * pt.c (uses_template_parms): Handle pmfs.
504
505 * decl.c (grokdeclarator): Don't call variable_size for array bounds
506 that only depend on template constant parameters.
507
508 Mon Feb 27 15:38:16 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
509
510 * error.c (dump_decl): Only look to see if it's a vtable if we
511 actually have a name to check out.
512
513 Mon Feb 27 13:37:53 1995 Jason Merrill <jason@phydeaux.cygnus.com>
514
515 * cvt.c (convert_to_aggr): Lose misleading shortcut.
516
517 Sun Feb 26 17:27:32 1995 Doug Evans <dje@canuck.cygnus.com>
518
519 * decl.c (set_nested_typename): Always set DECL_IGNORED_P,
520 not just for dwarf.
521
522 Sun Feb 26 00:10:18 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
523
524 * decl.c (grokdeclarator): Don't allow a static member to be
525 declared `register'.
526
527 * init.c (make_friend_class): Move up to a pedwarn for the warning
528 about a class declaring friends with itself.
529
530 * decl.c (grokdeclarator): You can't do `volatile friend class foo'
531 or `inline friend class foo'. Only try to make a friend out of
532 TYPE if we didn't already reset it to integer_type_node.
533
534 Sat Feb 25 22:32:03 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
535
536 * decl.c (grokdeclarator): Don't allow initialization of a
537 non-virtual function.
538
539 * decl.c (start_function): Do a pedwarn if we're changing `main'
540 to have an int return type.
541
542 Sat Feb 25 00:02:05 1995 Jason Merrill <jason@phydeaux.cygnus.com>
543
544 * typeck.c (build_modify_expr): Handle simple assignment from
545 TARGET_EXPRs by building up an RTL_EXPR to force expansion. Whew.
546
547 Fri Feb 24 18:27:14 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
548
549 * decl.c (grokdeclarator): Also don't allow virtual outside of a
550 class decl for a scope method definition performed at global binding.
551
552 * init.c (build_offset_ref): Don't allow creation of an OFFSET_REF
553 of a bitfield.
554
555 * decl.c (grokdeclarator): Don't allow a const to be declared mutable.
556
557 * typeck.c (build_binary_op): Return an error_mark_node if either
558 one of the args turned into an error_mark_node when we tried to
559 use default_conversion.
560
561 * typeck.c (build_unary_op): Forbid using postfix -- on a bool.
562
563 * decl.c (grokdeclarator): Allow `signed' and `unsigned' to be
564 used on `__wchar_t'.
565
566 Fri Feb 24 13:59:53 1995 Mike Stump <mrs@cygnus.com>
567
568 * except.c (end_protect_partials): Do it the right way.
569
570 Wed Feb 22 15:42:56 1995 Jason Merrill <jason@phydeaux.cygnus.com>
571
572 * typeck.c (build_binary_op_nodefault): Upgrade warning about
573 comparing distinct pointer types to pedwarn.
574
575 * typeck2.c (digest_init): Cope with extra braces.
576
577 * typeck.c (build_binary_op_nodefault): Use tree_int_cst_sgn instead
578 of INT_CST_LT (..., interger_zero_node).
579
580 Wed Feb 22 14:45:52 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
581
582 * except.c [!TRY_NEW_EH] (end_protect_partials): Define dummy
583 function for systems that don't have EH.
584
585 Tue Feb 21 19:18:31 1995 Jason Merrill <jason@phydeaux.cygnus.com>
586
587 * call.c (can_convert_arg): Like can_convert, but takes an arg as
588 well.
589
590 * pt.c (type_unification): Allow implicit conversions for parameters
591 that do not depend on template parameters.
592
593 Tue Feb 21 18:43:48 1995 Douglas Rupp (drupp@cs.washington.edu)
594
595 * Make-lang.in, config-lang.in: ($exeext): New macro.
596 * Make-lang.in: Try a "cp" if "ln" fails.
597 * cp-tree.h (decl_attributes): Added argument.
598 * decl2.c (cplus_decl_attribute): Add arg to decl_attributes.
599 * cp/g++.c: Added #ifdefs for sys/file.h and process.h for NT.
600 Modified spawnvp to have to correct number of arguments for OS/2, NT.
601
602 Tue Feb 21 18:36:55 1995 Mike Stump <mrs@cygnus.com>
603
604 * decl.c (finish_function): Add calls to end_protect_partials to end
605 the exception region that protects constructors so that partially
606 constructed objects can be partially destructed when the constructor
607 throws an exception.
608 * init.c (perform_member_init, sort_member_init, emit_base_init):
609 Added support for partially constructed objects.
610 * init.c (build_partial_cleanup_for): New routine to do partial
611 cleanups of a base class.
612 * decl2.c (finish_file): Move the emitting of the exception table
613 down, after we emit all code that might have exception regions in
614 them.
615 * except.c (end_protect_partials, might_have_exceptions_p): New
616 routines.
617 (emit_exception_table): Always output table if called.
618 * cp-tree.h (protect_list, end_protect_partials,
619 might_have_exceptions_p, emit_exception_table): Added.
620
621 Tue Feb 21 16:05:59 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
622
623 * gc.c (build_typeid): Pass a NULL_TREE, not the bogus, unused
624 address of a local variable.
625 * class.c (build_vfn_ref): Only try to build the PLUS_EXPR if we
626 were given a non-null PTR_TO_INSTPTR.
627
628 Tue Feb 21 01:53:18 1995 Jason Merrill <jason@phydeaux.cygnus.com>
629
630 * decl.c (duplicate_decls): Always lay out the merged decl.
631
632 * decl2.c (finish_vtable_vardecl): Don't do vtable hack on templates.
633 (finish_prevtable_vardecl): Ditto.
634
635 * method.c (synthesize_method): Set interface_{unknown,only}
636 according to the settings for our class, not the file where it comes
637 from.
638
639 Sat Feb 18 12:26:48 1995 Mike Stump <mrs@cygnus.com>
640
641 * except.c: Handle systems that define __i386__ but not __i386.
642
643 Fri Feb 17 15:31:31 1995 Jason Merrill <jason@phydeaux.cygnus.com>
644
645 * decl2.c (reparse_decl_as_expr): Support being called without a
646 type argument.
647
648 * parse.y (primary): Add '(' expr_or_declarator ')'. Adds 4 r/r
649 conflicts. Sigh.
650
651 Fri Feb 17 12:02:06 1995 Mike Stump <mrs@cygnus.com>
652
653 * parse.y (template_def, fndef, fn.def1, return_init, condition,
654 initdcl0, initdcl, notype_initdcl0, nomods_initdcl0,
655 component_decl_1, after_type_component_declarator0,
656 notype_component_declarator0, after_type_component_declarator,
657 notype_component_declarator, after_type_component_declarator,
658 full_parm, maybe_raises, exception_specification_opt): Fix up,
659 include exception_specification_opt maybeasm maybe_attribute and
660 maybe_init if missing. Rename maybe_raises to
661 exception_specification_opt to match draft wording. Use maybe_init
662 to simplify rules.
663
664 Fri Feb 17 01:54:46 1995 Jason Merrill <jason@phydeaux.cygnus.com>
665
666 * init.c (build_new): Set TREE_NO_UNUSED_WARNING on COMPOUND_EXPRs
667 built for news of scalar types.
668
669 Thu Feb 16 17:48:28 1995 Jason Merrill <jason@phydeaux.cygnus.com>
670
671 * typeck.c (build_binary_op_nodefault): Update code for warning
672 about signed/unsigned comparisons from C frontend. Realize that the
673 code in the C frontend is, if anything, even more bogus. Fix it.
674 (build_binary_op): Undo default_conversion if it wasn't useful.
675
676 * typeck.c (build_unary_op, ADDR_EXPR): Lose bogus special case for
677 PRE*CREMENT_EXPR.
678
679 * decl2.c (import_export_vtable): Don't try the vtable hack
680 if the class doesn't have any real non-inline virtual functions.
681 (finish_vtable_vardecl): Don't bother trying to find a non-inline
682 virtual function in a non-polymorphic class.
683 (finish_prevtable_vardecl): Ditto.
684
685 * decl2.c (import_export_vtable): Use and set DECL_INTERFACE_KNOWN.
686
687 * cp-tree.h (DECL_INTERFACE_KNOWN): Use DECL_LANG_FLAG_5.
688
689 * init.c (expand_virtual_init): Always call assemble_external.
690
691 * class.c (build_vfn_ref): Always call assemble_external.
692 (build_vtable): Always call import_export_vtable.
693 (prepare_fresh_vtable): Ditto.
694 (add_virtual_function): Don't bother setting TREE_ADDRESSABLE.
695
696 Thu Feb 16 03:28:49 1995 Jason Merrill <jason@phydeaux.cygnus.com>
697
698 * class.c (finish_struct): Use TYPE_{MIN,MAX}_VALUE to determine
699 whether an enumerated type fits in a bitfield.
700
701 Wed Feb 15 15:38:12 1995 Jason Merrill <jason@phydeaux.cygnus.com>
702
703 * class.c (grow_method): Update method_vec after growing the class
704 obstack.
705
706 Wed Feb 15 13:42:59 1995 Mike Stump <mrs@cygnus.com>
707
708 * parse.y (handler_seq): Push a level for the catch parameters.
709
710 Wed Feb 15 12:42:57 1995 Jason Merrill <jason@phydeaux.cygnus.com>
711
712 * init.c (emit_base_init): Update BINFO_INHERITANCE_CHAIN on my
713 bases, in case they've been clobbered.
714
715 Wed Feb 15 12:07:29 1995 Mike Stump <mrs@cygnus.com>
716
717 * class.c (finish_base_struct): Set up BINFO_INHERITANCE_CHAIN here,
718 so that one day it will always be valid.
719 * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
720
721 * cp-tree.h (copy_binfo): Removed, unused.
722 * tree.c (copy_binfo): Ditto.
723
724 Wed Feb 15 00:05:30 1995 Jason Merrill <jason@phydeaux.cygnus.com>
725
726 * init.c (build_new): Save the allocation before calling
727 expand_vec_init on it.
728
729 * decl.c (finish_enum): The TYPE_PRECISION of the enum type mush
730 match the TYPE_PRECISION of the underlying type for constant folding
731 to work.
732
733 Tue Feb 14 15:31:25 1995 Mike Stump <mrs@cygnus.com>
734
735 * except.c (push_eh_entry, expand_start_all_catch,
736 expand_leftover_cleanups, expand_end_catch_block): Keep track of
737 the context in which the exception region occurs.
738 (build_exception_table): If the region was not output, don't output
739 the entry in the eh table for it.
740
741 Tue Feb 14 02:15:43 1995 Jason Merrill <jason@phydeaux.cygnus.com>
742
743 * init.c (expand_default_init): Only use a previous constructor call
744 if it's a call to our constructor. Does the word "Duh" mean
745 anything to you?
746
747 * decl.c (grokparms): Fine, just don't call
748 convert_for_initialization at all. OK? Happy now?
749
750 Mon Feb 13 02:23:44 1995 Jason Merrill <jason@phydeaux.cygnus.com>
751
752 * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Make sure that the class
753 method vector has a second element before returning it.
754
755 * decl.c (grokparms): Don't strip REFERENCE_TYPE before calling
756 convert_for_initialization.
757
758 Sun Feb 12 03:57:06 1995 Jason Merrill <jason@phydeaux.cygnus.com>
759
760 * typeck.c (build_modify_expr): Compare function name to
761 constructor_name (current_class_type) instead of current_class_name.
762
763 * decl.c (grokparms): Don't do anything with the return value of
764 convert_for_initialization.
765
766 * error.c (dump_decl): Also dump_readonly_or_volatile on the decl.
767
768 * decl.c (duplicate_decls): Tweak error message.
769
770 * typeck.c (build_const_cast): Implement checking.
771 (build_reinterpret_cast): Implement some checking.
772
773 * cp-tree.h (CONV_FORCE_TEMP): Require a new temporary when
774 converting to the same aggregate type.
775 (CONV_STATIC_CAST): Include it.
776 (CONV_C_CAST): Ditto.
777 * cvt.c (convert_force): Use CONV_C_CAST instead of CONV_OLD_CONVERT.
778 (cp_convert): Only force a new temporary if CONV_FORCE_TEMP.
779
780 Fri Feb 10 16:18:52 1995 Jason Merrill <jason@phydeaux.cygnus.com>
781
782 * typeck.c (build_c_cast): Use non_lvalue to tack something on
783 where necessary.
784
785 * decl.c (auto_function): Now a function.
786 * except.c (init_exception_processing): terminate, unexpected,
787 set_terminate, and set_unexpected have C++ linkage.
788
789 * typeck.c (build_unary_op, TRUTH_NOT_EXPR): Use convert instead of
790 truthvalue_conversion for converting to bool, as it handles
791 user-defined conversions properly.
792 (condition_conversion): Ditto.
793
794 * except.c (expand_throw): Don't call convert_to_reference.
795 Pass the correct parameters to build_new.
796
797 * method.c (do_build_assign_ref): Don't use access control when
798 converting to a base reference here.
799 (do_build_copy_constructor): Or here.
800
801 * init.c (build_new): Unset TREE_READONLY on the dereferenced
802 pointer before assigning to it.
803
804 * decl.c (maybe_build_cleanup): Don't bother stripping const here.
805
806 * decl2.c (delete_sanity): You can now delete pointer to const.
807
808 Fri Feb 10 13:28:38 1995 Jason Merrill <jason@python.cygnus.com>
809
810 * decl.c (finish_function): Don't rely on actual parameters being
811 evaluated left-to-right.
812 * except.c (expand_end_catch_block): Ditto.
813
814 Fri Feb 10 00:52:04 1995 Jason Merrill <jason@phydeaux.cygnus.com>
815
816 * tree.c (real_lvalue_p): Like lvalue_p, but class temps aren't
817 considered lvalues.
818 * cvt.c (convert_to_reference): Use real_lvalue_p instead of
819 lvalue_p.
820
821 * cvt.c (build_type_conversion_1): Don't call convert on aggregate
822 types.
823 (convert_to_reference): Fix erroneous text substitution.
824
825 * typeck2.c (initializer_constant_valid_p): Update from C frontend.
826 Add new argument to all callers.
827
828 * typeck.c (convert_arguments): Check for error_mark_node before
829 trying to do anything with the actual parameter.
830
831 * typeck.c (condition_conversion): Build up a CLEANUP_POINT_EXPR and
832 fold it.
833 (bool_truthvalue_conversion): Remove. Fix all callers to call
834 truthvalue_conversion instead.
835 (various): Fold CLEANUP_POINT_EXPRs.
836
837 * parse.y (conditions): Call condition_conversion rather than
838 building up a CLEANUP_POINT_EXPR.
839
840 * pt.c (end_template_decl): Don't warn_if_unknown_interface here
841 under -falt-external-templates.
842
843 Thu Feb 9 05:24:10 1995 Jason Merrill <jason@phydeaux.cygnus.com>
844
845 * init.c (build_new): Complain about new of const type without
846 initializer. Other cleanup.
847
848 * call.c (compute_conversion_costs): Don't call
849 build_type_conversion with a reference type; convert to the target
850 type and check its lvaluetude.
851 * cvt.c (convert_to_reference): Ditto.
852
853 * cvt.c (build_type_conversion_1): There will never be any need to
854 dereference references here now.
855
856 Thu Feb 9 00:37:47 1995 Mike Stump <mrs@cygnus.com>
857
858 * except.c (expand_builtin_throw): Make sure we only `use' the
859 value of return_val_rtx.
860
861 Wed Feb 8 15:45:55 1995 Jason Merrill <jason@phydeaux.cygnus.com>
862
863 * parse.y (structsp): Don't complain about declaring a type being
864 defined to be a friend.
865
866 * decl2.c (warn_if_unknown_interface): Note the template in question
867 and the point of instantiation, for -falt-external-templates.
868 * lex.c (reinit_parse_for_method): Pass the decl to
869 warn_if_unknown_interface.
870 * pt.c (instantiate_template): Ditto.
871 (end_template_decl): Ditto.
872
873 * decl.c (set_nested_typename): Set IDENTIFIER_TYPE_VALUE on the
874 nested name again, to make local classes work a bit better.
875
876 * typeck.c (build_function_call_real): Dereference reference after
877 checking for incomplete type.
878
879 * init.c (build_new): Accept new of const and volatile types.
880
881 Wed Feb 8 14:04:16 1995 Jason Merrill <jason@deneb.cygnus.com>
882
883 * decl.c (grokdeclarator): Fix error message.
884
885 Wed Feb 8 03:16:15 1995 Jason Merrill <jason@phydeaux.cygnus.com>
886
887 * typeck.c (convert_for_initialization): Do bash arrays when
888 converting to a reference to non-array.
889
890 Tue Feb 7 15:50:33 1995 Jason Merrill <jason@phydeaux.cygnus.com>
891
892 * cvt.c (cp_convert): Don't call convert_to_reference, or
893 automatically dereference references. Do pass reference conversions
894 to cp_convert_to_pointer.
895 (cp_convert_to_pointer): Support references.
896
897 * call.c (build_method_call): Don't build up a reference to the
898 parameter here; let build_overload_call handle that.
899
900 * typeck.c (build_c_cast): Call convert_to_reference directly if
901 converting to a reference type.
902 * method.c (do_build_copy_constructor): Ditto.
903 * method.c (do_build_copy_constructor): Ditto.
904 (do_build_assign_ref): Ditto.
905
906 * call.c (build_method_call): Dereference a returned reference.
907 * typeck.c (build_function_call_real): Ditto.
908
909 * decl.c (xref_basetypes): Check for unions with basetypes here.
910 (xref_tag): Instead of here.
911
912 * pt.c (process_template_parm): Template type parm decls are
913 artificial.
914
915 Mon Feb 6 04:32:09 1995 Jason Merrill <jason@phydeaux.cygnus.com>
916
917 * parse.y (typed_declspecs): Add missing semicolon.
918 (do_xref_defn): Resurrect.
919 (named_class_head_sans_basetype): Move template specialization
920 definition cases to named_class_head_sans_basetype_defn.
921
922 * decl2.c (grokfield): Call pushdecl_class_level after setting the
923 TYPE_NAME, not before.
924
925 Sun Feb 5 02:50:45 1995 Jason Merrill <jason@phydeaux.cygnus.com>
926
927 * call.c (convert_harshness): Don't call sorry here. Don't allow
928 conversions between function pointer types if pedantic.
929
930 * pt.c (overload_template_name): Pass globalize=1 to xref_tag.
931
932 * lex.c (cons_up_default_function): Use the full name for the return
933 type of op=.
934
935 * decl.c (set_nested_typename): Don't worry about anonymous types,
936 as they already have a unique name.
937 (pushdecl): Remove redundant set_nested_typename
938 (xref_tag): Split out base handling into xref_basetypes.
939
940 * cp-tree.h (TYPE_INCOMPLETE): New macro; TEMPLATE_TYPE_PARMs are
941 not considered incomplete even though their definition is unknown.
942
943 * decl.c (xref_defn_tag): Lose.
944 (xref_tag): xref_next_defn = ! globalize.
945 (pushdecl): Don't set DECL_NESTED_TYPENAME on artificial decls. The
946 ones that should have it set will have it set by pushtag.
947 (pushdecl_class_level): Ditto.
948 (pushtag): Tidy up a bit.
949 (set_nested_typename): Push a decl for the nested typename from
950 here, rather than from xref_defn_tag.
951
952 * parse.y (do_xref): Lose.
953 (named_class_head): If we see 'class foo:' we know it's a
954 definition, so don't worry about base lists for non-definitions.
955
956 * pt.c (push_template_decls): Template parm decls are artificial.
957
958 * decl.c (duplicate_decls): Restore check for qualifier
959 disagreement for non-functions.
960 (decls_match): Remove check for qualifier disagreement.
961
962 Fri Feb 3 14:58:58 1995 Jason Merrill <jason@phydeaux.cygnus.com>
963
964 * decl.c (grok_reference_init): Convert initializer from
965 reference.
966 * typeck.c (convert_for_initialization): Ditto.
967
968 * decl.c (duplicate_decls): Propagate DECL_NESTED_TYPENAME.
969
970 * cvt.c (cp_convert): Don't convert to the same class type by just
971 tacking on a NOP_EXPR.
972 (convert_to_reference): Use comp_target_types instead of comptypes
973 so that we don't allow conversions two levels down.
974
975 Thu Feb 2 15:07:58 1995 Jason Merrill <jason@phydeaux.cygnus.com>
976
977 * class.c (build_vbase_path): Bash types to make the backend happy.
978 * cvt.c (build_up_reference): Bash the types bashed by
979 build_vbase_path to be reference types instead of pointer types.
980 (convert_to_reference): Ditto.
981
982 * typeck.c (build_c_cast): Don't strip NOPs if we're converting to a
983 reference type.
984
985 * parse.y (structsp): Put back error for 'struct B: public A;'.
986
987 Wed Feb 1 23:02:06 1995 Mike Stump <mrs@cygnus.com>
988
989 * except.c: Add support for mips systems that don't define __mips
990 but do define mips, like Ultrix.
991
992 Wed Feb 1 22:39:07 1995 Mike Stump <mrs@cygnus.com>
993
994 * except.c: Add support for exception handling on the Alpha.
995
996 Wed Feb 1 10:12:14 1995 Mike Stump <mrs@cygnus.com>
997
998 * decl2.c (finish_file): Fix bug in Jan 31st change.
999
1000 Tue Jan 31 16:59:15 1995 Gerald Baumgartner (gb@lorenzo.cs.purdue.edu)
1001
1002 * sig.c (build_signature_pointer_or_reference_type): Don't set
1003 IS_AGGR_TYPE for signature pointers/reference so expand_default_init
1004 doesn't expect to find a copy constructor.
1005 * call.c (build_method_call): Treat signature pointers/reference
1006 as if IS_AGGR_TYPE were set.
1007
1008 Tue Jan 31 13:28:56 1995 Mike Stump <mrs@cygnus.com>
1009
1010 * gc.c (get_typeid): Pawn off error messages to build_t_desc.
1011 (build_t_desc): Inform the user here if they try and build
1012 with -frtti and don't include <typeinfo.h>.
1013
1014 * decl2.c (finish_prevtable_vardecl): Support rescanning.
1015 (finish_file): Move finish_prevtable_vardecl up to before the global
1016 initializers are done as tdecls are initialized in the global
1017 initializer. Also Pick up any new tdecls or vtables needed by
1018 synthesized methods.
1019
1020 * class.c (finish_struct): Simplify. We have to do rtti scanning at
1021 end, so we might as well do all of it there.
1022
1023 Tue Jan 31 05:35:02 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1024
1025 * call.c (build_method_call): Fix -fthis-is-variable for 32-bit
1026 targets, too.
1027
1028 Tue Jan 31 00:11:04 1995 Mike Stump <mrs@cygnus.com>
1029
1030 * decl2.c (finish_prevtable_vardecl): New routine, mostly split from
1031 finish_vtable_vardecl. It has the first half functionality from
1032 that routine.
1033 * decl2.c (finish_vtable_vardecl): Update to not include stuff not
1034 in finish_prevtable_vardecl.
1035 * decl2.c (finish_file): Call finish_prevtable_vardecl.
1036 * gc.c (build_generic_desc): Allow it to be called when not at the
1037 global binding layer, but behave as if we were.
1038 (build_t_desc): Rearrange a bit so that it really works and is
1039 easier to follow.
1040 * class.c (finish_struct): Don't decide on tdecls here, as we have
1041 to wait until the end of the file in general to decide whether or
1042 not they come out.
1043
1044 Mon Jan 30 01:00:40 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1045
1046 * init.c (build_delete): Check access to operator delete before
1047 calling the destructor.
1048 * method.c (build_opfncall, DELETE_EXPR): build_method is allowed to
1049 return error_mark_node.
1050 * call.c (build_method_call): Use the one-argument op delete even if
1051 it's an error.
1052
1053 * init.c (build_new): Fix -fthis-is-variable support.
1054 * call.c (build_method_call): Ditto.
1055
1056 * call.c (convert_harshness): Make conversion from a pointer to bool
1057 worse than conversion to another pointer.
1058
1059 Sat Jan 28 16:46:10 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1060
1061 * init.c (build_new): Check new return value if -fcheck-new.
1062
1063 * lex.c (check_newline): Clear end_of_file when we're done, too.
1064
1065 Sat Jan 28 10:38:39 1995 Mike Stump <mrs@cygnus.com>
1066
1067 * decl2.c (finish_vtable_vardecl): Make rtti TD tables follow
1068 vtables whereever they go.
1069
1070 * gc.c (build_t_desc): Remove old way of setting it up, as it wasn't
1071 right.
1072
1073 Sat Jan 28 09:10:44 1995 Mike Stump <mrs@cygnus.com>
1074
1075 * decl2.c (finish_vtable_vardecl): Now set the
1076 interface/implementation of vtables on the first virtual function,
1077 if one exists, otherwise we use the old method. This is a major win
1078 in terms of cutting down the size of objects and executables in
1079 terms of text space and data space. Now most of the savings that
1080 #pragma interface/implementation gives is automatic in a fair number
1081 of cases.
1082
1083 Sat Jan 28 04:57:33 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1084
1085 * decl.c (grokdeclarator): Discard the template parameters in a
1086 template constructor declaration so that the function is always
1087 named constructor_name (ctype).
1088
1089 * lex.c (check_newline): Use ungetc to put back the character before
1090 calling HANDLE_PRAGMA.
1091
1092 Fri Jan 27 17:23:47 1995 Mike Stump <mrs@cygnus.com>
1093
1094 * decl2.c (check_classfn): If the cname is T<int> and fn_name is T,
1095 make sure we still match them.
1096
1097 Fri Jan 27 16:32:10 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1098
1099 * parse.y: Add END_OF_LINE token.
1100
1101 * lex.c (check_newline): Set linemode when we see a # directive, and
1102 unset it when we're done. Turn all 'return's into 'goto skipline'.
1103 Fix all uses of '\n', since we won't see it anymore. Put back the
1104 character we read before checking for a sysv or target pragma.
1105 (real_yylex): If we see an EOF in linemode, return END_OF_LINE.
1106 (handle_sysv_pragma): Don't look at the input stream; quit when we
1107 see an END_OF_LINE token.
1108
1109 * input.c (getch): Return EOF if we're in line mode and at the end
1110 of a line.
1111 (put_back): Don't put back an EOF.
1112
1113 Thu Jan 26 19:26:34 1995 Mike Stump <mrs@cygnus.com>
1114
1115 * except.c (expand_throw): Do the newing of the exception object
1116 before we load the type descriptor or the address so that we don't
1117 wipe any of the values out.
1118
1119 Thu Jan 26 19:20:00 1995 Mike Stump <mrs@cygnus.com>
1120
1121 * except.c (init_exception_processing): Don't use r12 on the rs6000.
1122
1123 Tue Jan 24 16:36:31 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1124
1125 * decl.c (grokparms): Don't try to build up a reference at this point.
1126
1127 * typeck2.c (build_functional_cast): Don't assume that a NOP_EXPR
1128 will suffice to convert from integer_zero_node.
1129
1130 Wed Jan 25 15:02:09 1995 David S. Miller (davem@nadzieja.rutgers.edu)
1131
1132 * class.c (instantiate_type): Change error message text.
1133 * typeck2.c (store_init_value): Likewise.
1134
1135 Mon Jan 23 21:57:14 1995 Mike Stump <mrs@cygnus.com>
1136
1137 * pt.c (tsubst): When we copy a node, don't forget to copy
1138 TREE_CHAIN, we use it later.
1139
1140 Mon Jan 23 03:33:47 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1141
1142 * typeck.c (convert_for_assignment): Initialize variable before use.
1143
1144 Fri Jan 20 01:17:59 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1145
1146 * g++.c (main): Link with both libstdc++ and libg++ if called as
1147 something ending with "g++", otherwise only libstdc++. Move -lm to
1148 the end of the line.
1149
1150 Thu Jan 19 15:43:11 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1151
1152 * call.c (build_method_call): Don't mess with 'this' before calling
1153 compute_conversion_costs.
1154
1155 Wed Jan 18 15:40:55 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1156
1157 * search.c (get_matching_virtual): Give line number for previous
1158 declaration.
1159
1160 * call.c (convert_harshness): Handle conversions to references
1161 better.
1162
1163 * cvt.c (build_up_reference): OK, handle {MIN,MAX}_EXPR *properly*.
1164
1165 Wed Jan 18 15:21:38 1995 Mike Stump <mrs@cygnus.com>
1166
1167 * class.c (instantiate_type): Use DECL_CHAIN to walk lists instead,
1168 as the TREE_CHAIN for methods will take us to the next differently
1169 named function, DECL_CHAIN won't.
1170
1171 Wed Jan 18 14:26:59 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1172
1173 * tree.c (lvalue_p): Handle {MIN,MAX}_EXPR.
1174
1175 * decl2.c (lang_decode_option): -Wall implies -Wparentheses.
1176 warn_parentheses defaults to 0.
1177
1178 * decl.c (grokparms): Put back call to require_instantiated_type.
1179
1180 Tue Jan 17 19:56:15 1995 Mike Stump <mrs@cygnus.com>
1181
1182 * except.c (exception_section): Use the data section on the rs6000.
1183 Change calling convention for named_section.
1184
1185 Wed Jan 17 18:20:57 1994 Fergus Henderson <fjh@munta.cs.mu.oz.au>
1186
1187 * cp-tree.h : Make if (x=0) warn with wall
1188 * parse.y : Make if (x=0) warn with wall
1189
1190 Tue Jan 17 14:12:00 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1191
1192 * decl.c (BOOL_TYPE_SIZE): BITS_PER_WORD if SLOW_BYTE_ACCESS,
1193 BITS_PER_UNIT otherwise.
1194
1195 * search.c (get_matching_virtual): Don't check the binfo if the
1196 types are the same.
1197
1198 * cvt.c (cp_convert): Just call truthvalue_conversion to convert to
1199 bool.
1200
1201 Mon Jan 16 13:28:48 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1202
1203 * various: Use boolean_type_node, boolean_true_node,
1204 boolean_false_node.
1205
1206 * search.c (get_matching_virtual): Allow covariant returns that
1207 don't require pointer adjustment.
1208
1209 * typeck.c (build_conditional_expr): Don't call default_conversion
1210 on ifexp.
1211
1212 * cvt.c (build_up_reference): Handle MIN_EXPR and MAX_EXPR.
1213
1214 * decl.c (grokdeclarator): Upgrade warning about &const to pedwarn.
1215
1216 Sun Jan 15 22:17:32 1995 dcb@lovat.fmrco.COM (David Binderman)
1217
1218 * pt.c (do_function_instantiation): Free targs once we're done.
1219
1220 Sun Jan 15 22:17:32 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1221
1222 * decl.c (BOOL_TYPE_SIZE): Defaults to BITS_PER_WORD.
1223 (init_decl_processing): Use BOOL_TYPE_SIZE instead of CHAR_TYPE_SIZE
1224 for bool.
1225
1226 Sat Jan 14 05:33:55 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1227
1228 * decl2.c (finish_file): We need to mess up if there are any
1229 variables in the list, not just if there is one with a constructor.
1230
1231 Fri Jan 13 14:42:55 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1232
1233 * decl.c (duplicate_decls): Propagate DECL_STATIC_{CON,DE}STRUCTOR.
1234 (finish_function): Handle DECL_STATIC_{CON,DE}STRUCTOR.
1235 (finish_function): Trust rest_of_compilation.
1236
1237 * decl2.c (finish_file): Also call functions designated as static
1238 constructors/destructors.
1239
1240 * decl.c (grokdeclarator): Allow access decls of operator functions.
1241 (grokparms): Only do convert_for_initialization if the initializer
1242 has a type.
1243 (duplicate_decls): Put back push_obstacks_nochange call.
1244
1245 * lex.c (real_yylex): Downgrade complaint about the escape sequence
1246 being too large from pedwarn to warning.
1247
1248 * decl.c (grokdeclarator): Don't complain about long long in system
1249 headers.
1250
1251 * lex.c (real_yylex): Handle digraphs.
1252
1253 Thu Jan 12 12:17:24 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1254
1255 * decl.c (init_decl_processing): -f{no-,}strict-prototype only
1256 affects C linkage declarations now.
1257
1258 * typeck.c (comp_target_types): Grok simple contravariant conversions.
1259 (common_type): t1 and t2 are interchangeable.
1260
1261 * various: Test return value of comp_target_types differently in
1262 different places; it now returns -1 for a contravariant conversion
1263 (which is fine in symmetric cases).
1264
1265 (common_type): Prefer long double to double even when
1266 they have the same precision.
1267
1268 * decl.c (grokparms): Call convert_for_initialization to check
1269 default arguments.
1270
1271 * init.c (build_new): void_type_node has a size (of 0).
1272
1273 * decl.c (decls_match): Also check for agreement of TREE_READONLY
1274 and TREE_THIS_VOLATILE.
1275 (push_class_level_binding): Properly handle shadowing of
1276 nested tags by fields.
1277
1278 * search.c (dfs_pushdecls): Ditto.
1279
1280 * decl2.c (finish_file): Don't second-guess self-initialization.
1281
1282 * cvt.c (convert_to_reference): Work with expr directly, rather than
1283 a copy.
1284
1285 * decl.c (push_overloaded_decl): Only shadow artificial TYPE_DECLs.
1286
1287 * init.c (add_friend): Downgrade duplicate friend message from
1288 pedwarn to warning.
1289
1290 * decl.c (duplicate_decls): Push obstacks before calling common_type.
1291
1292 Thu Jan 12 17:15:21 1995 Michael Ben-Gershon <mybg@cs.huji.ac.il>
1293
1294 * except.c (push_eh_entry): set LABEL_PRESERVE_P flag for
1295 exception table labels.
1296 (expand_start_all_catch): Ditto.
1297 (expand_leftover_cleanups): Ditto.
1298 (expand_end_catch_block): Ditto.
1299 * except.c (make_first_label): new function.
1300 (expand_start_all_catch): add a call to make_first_label() before
1301 using a label as a jump destination.
1302 (expand_end_all_catch): Ditto.
1303 (expand_leftover_cleanups): Ditto.
1304 (expand_end_catch_block): Ditto.
1305 (expand_builtin_throw): Ditto.
1306 (expand_throw): Ditto.
1307 * except.c: Add ARM processor support for exception handling.
1308
1309 Thu Jan 12 12:17:24 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1310
1311 (complete_array_type): Copy code from C frontend.
1312
1313 * lex.c (real_yylex): Don't multiply the length of a wide string
1314 literal by WCHAR_BYTES.
1315
1316 * decl.c (pushdecl): Check for redeclaration of wchar_t here.
1317 (duplicate_decls): Instead of here.
1318 (define_label): Complain about a label named wchar_t.
1319 (grokdeclarator): Complain about declarations of
1320 operator-function-ids as non-functions.
1321
1322 * typeck.c (unary_complex_lvalue): Also wrap prefix -- and ++ in
1323 COMPOUND_EXPRs.
1324 (build_unary_op): Wrap unary plus in a NON_LVALUE_EXPR.
1325
1326 * lex.c (real_yylex): Don't skip whitespace when reading the next
1327 character after ->.
1328
1329 Wed Jan 11 16:32:49 1995 Mike Stump <mrs@cygnus.com>
1330
1331 * except.c: Allow cc1plus to be built with native compiler on rs6000.
1332 (expand_start_all_catch): Add assemble_external calls for various
1333 routines we call.
1334 (expand_leftover_cleanups): Ditto.
1335 (expand_start_catch_block): Ditto.
1336 (do_unwind): Ditto.
1337 (expand_builtin_throw): Ditto.
1338
1339 Wed Jan 11 01:05:42 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1340
1341 * decl.c (pushtag): Only look for a previous decl in the current
1342 binding level. Use explicit global scope in DECL_NESTED_TYPENAME.
1343
1344 * gxx.gperf: Add __signature__ and __sigof__ keywords.
1345
1346 * decl2.c (lang_decode_option): -ansi does not set flag_no_asm. It
1347 does set flag_no_gnu_keywords and flag_operator_names.
1348
1349 * lex.c (init_lex): 'overload' is not a keyword unless -traditional.
1350 Unset extension keywords if -fno-gnu-keywords.
1351 Allow operator names ('bitand') if -foperator-names.
1352 Never unset 'asm'; -fno-asm only affects 'typeof'.
1353
1354 * decl.c (lookup_name_real): The got_object special lookup only
1355 applies to types.
1356
1357 Tue Jan 10 18:07:51 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1358
1359 * spew.c (yylex): Also use DECL_NESTED_TYPENAME if got_object is set.
1360
1361 * parse.y (primary): Unset got_object after all rules that use the
1362 'object' nonterminal.
1363 (object): Set got_object.
1364
1365 * lex.h: Declare got_object.
1366
1367 * decl.c (lookup_name_real): Also lookup names in the context of an
1368 object specified.
1369
1370 Tue Jan 10 14:30:30 1995 Mike Stump <mrs@cygnus.com>
1371
1372 * typeck.c (get_member_function_from_ptrfunc): Use ptrdiff_type_node
1373 for things that have to be added to pointers, not size_type. Cures
1374 problems with pointer to members on Alphas.
1375 (build_binary_op_nodefault): Ditto.
1376 (get_delta_difference_: Ditto.
1377 (build_ptrmemfunc): Ditto.
1378
1379 Tue Jan 10 01:49:25 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1380
1381 * decl.c (pushtag): Stick the new decl in TYPE_NAME before pushing
1382 it.
1383
1384 * typeck.c (build_component_ref): Don't build up a COMPONENT_REF
1385 when dealing with overloaded member functions; just act like
1386 build_offset_ref.
1387 (commonparms): Remove misleading comment.
1388
1389 * decl.c (duplicate_decls): Complain about repeated default
1390 arguments here.
1391 (redeclaration_error_message): Instead of here.
1392 (pushdecl): Complain about missing default arguments here.
1393 (grokparms): Instead of here.
1394 (lookup_name_current_level): Also match on DECL_ASSEMBLER_NAME.
1395 (grok_reference_init): Do not complain about missing initializer if
1396 declared 'extern'.
1397
1398 * search.c (lookup_field): Don't return a TYPE_DECL if there is a
1399 function alternative and want_type is not set.
1400
1401 Mon Jan 9 18:16:23 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1402
1403 * decl.c (pushtag): Don't set TYPE_NAME to an identifier. Do push
1404 the decl when the type has no TYPE_NAME.
1405 (lookup_nested_type): Don't assume that type has TYPE_NAME set.
1406 (lookup_name_real): Call lookup_field with want_type =
1407 prefer_type.
1408
1409 * search.c (lookup_field): Handle want_type properly in the presence
1410 of fields with the same name.
1411
1412 * decl.c (set_nested_typename): Set nested name for file-scope types
1413 to include leading ::.
1414 (pushdecl): Set the nested typename if the decl doesn't have one,
1415 rather than if the type's canonical decl doesn't have one.
1416
1417 Mon Jan 9 16:48:16 1995 Steve Chamberlain (sac@jonny.cygnus.com)
1418
1419 * typeck.c (pointer_int_sum): Use offset size when calculating
1420 index expression.
1421
1422 Mon Jan 9 03:44:33 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1423
1424 * typeck.c (convert_for_assignment): Complain about contravariance
1425 violation here.
1426 (comp_target_types): Instead of here.
1427 (build_unary_op): resolve_offset_ref before checking for a valid
1428 type.
1429
1430 * spew.c (yylex): Decrement looking_for_typename after we see a
1431 _DEFN.
1432
1433 * decl.c (pushdecl): Don't install an artificial TYPE_DECL in
1434 IDENTIFIER_LOCAL_VALUE if we already have a decl with that name.
1435
1436 * typeck.c (convert_for_assignment): Converting pointers to bool
1437 does not need a cast.
1438
1439 Sun Jan 8 18:16:45 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1440
1441 * class.c (instantiate_type): Initialize nsubsts parm.
1442
1443 * pt.c (do_function_instantiation): Ditto.
1444
1445 Sat Jan 7 14:37:05 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1446
1447 * pt.c (tsubst): Use TREE_STATIC instead of DECL_INLINE &&
1448 DECL_SAVED_INSNS to determine whether or not we've seen a definition
1449 of this function.
1450 (instantiate_template): Ditto.
1451
1452 * call.c (convert_harshness): Allow const reference binding when
1453 called from the overloading code, but not when called from
1454 can_convert (since it isn't a conversion).
1455 (convert_harshness): Put back some disabled code.
1456
1457 Fri Jan 6 14:10:57 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1458
1459 * call.c (convert_harshness): There is no implicit conversion from
1460 void* to other pointer types (unless the parameter is (void*)0).
1461 (convert_harshness): Non-lvalues do not convert to reference types.
1462
1463 * class.c (finish_struct_methods): Still set
1464 TYPE_HAS_{INT,REAL}_CONVERSION.
1465
1466 * call.c (can_convert): Don't use aggregate initialization.
1467
1468 * cp-tree.h: Declare lookup_conversions.
1469
1470 Thu Jan 5 21:08:00 1995 Mike Stump <mrs@cygnus.com>
1471
1472 * parse.y (simple_stmt): Fix duplicate case value error messages to
1473 be more readable.
1474
1475 Wed Jan 4 16:44:19 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1476
1477 * cvt.c (build_type_conversion): Total rewrite to use
1478 convert_harshness instead of reproducing conversion logic here. Now
1479 much shorter.
1480
1481 * call.c (convert_harshness): Support conversions to bool.
1482 (can_convert): Checks whether a conversion is less harsh
1483 than USER_CODE, for build_type_conversion.
1484
1485 * search.c (add_conversions): Function for passing to dfs_walk which
1486 adds all the type conversion operators in the current type to a list.
1487 (lookup_conversions): Calls dfs_walk with add_conversions and return
1488 the list.
1489 (dfs_walk): Don't require a qfn.
1490
1491 * cp-tree.h: Lose CLASSTYPE_CONVERSIONS hackery.
1492 (CLASSTYPE_FIRST_CONVERSION): Points to elt 1 of CLASSTYPE_METHOD_VEC.
1493
1494 * class.c (finish_struct_bits): Lose CLASSTYPE_CONVERSIONS hackery.
1495 (grow_method): A separate function for building onto the growing
1496 method vector.
1497 (finish_struct_methods): Use it. Put all type conversion operators
1498 right after the constructors. Perhaps we should sort the methods
1499 alphabetically?
1500
1501 Mon Jan 2 14:42:58 1995 Jason Merrill <jason@phydeaux.cygnus.com>
1502
1503 * call.c (build_method_call): Lose another misleading shortcut.
1504
1505 Fri Dec 30 17:57:30 1994 Mike Stump <mrs@cygnus.com>
1506
1507 * gc.c (build_bltn_desc): Handle bool as a built-in type.
1508
1509 Fri Dec 30 14:20:21 1994 Mike Stump <mrs@cygnus.com>
1510
1511 * tree.c (layout_vbasetypes): Ensure that we don't loose alignment
1512 on the complete type because of small virtual bases.
1513
1514 Fri Dec 30 12:22:29 1994 Mike Stump <mrs@cygnus.com>
1515
1516 * decl.c (n_incomplete): Bump n_incomplete up to int to match C
1517 front end.
1518 (pushdecl): Also count decls pushed that are of a type being defined
1519 as incomplete things.
1520 * class.c (finish_struct): Move hack_incomplete_structures up to
1521 just after we set it as not being defined, so that the decls we
1522 build for RTTI don't count as incomplete.
1523
1524 Thu Dec 29 18:20:57 1994 Mike Stump <mrs@cygnus.com>
1525
1526 * pt.c (tsubst): Fix problem with defining constructors in templated
1527 classes with virtual bases.
1528
1529 Wed Dec 28 08:31:00 1994 Mike Stump <mrs@cygnus.com>
1530
1531 * parse.y (TYPEID): Strip top-level cv-qualifiers on typeid
1532 expressions.
1533 * gc.c (build_typeid): Ditto.
1534
1535 Thu Dec 22 17:26:33 1994 Mike Stump <mrs@cygnus.com>
1536
1537 * cvt.c (build_up_reference): Fix breakage introduced on Nov 29,
1538 don't assert on complex AGGR inits.
1539
1540 Thu Dec 22 14:32:31 1994 Mike Stump <mrs@cygnus.com>
1541
1542 * method.c (build_overload_value): Handle pointer to members as
1543 template arguments.
1544
1545 Thu Dec 22 13:09:07 1994 Mike Stump <mrs@cygnus.com>
1546
1547 * typeck.c (unary_complex_lvalue): Don't call sorry if we know how
1548 to do take the address of a data member for a pointer to data
1549 member.
1550
1551 Thu Dec 22 10:04:19 1994 Mike Stump <mrs@cygnus.com>
1552
1553 * decl.c (grokdeclarator): Use the typedef name for linkage if the
1554 type doesn't otherwise have a name.
1555
1556 * decl2.c (grokfield): Ditto.
1557
1558 * class.c (finish_struct): Since we reuse the TYPE_DECL for the
1559 DECL_NAME of enums, structs and classes, we have to avoid trying to
1560 put it in the TYPE_FIELDS again.
1561
1562 Wed Dec 21 11:07:05 1994 Mike Stump <mrs@cygnus.com>
1563
1564 * decl2.c (check_classfn): Ignore this parameter on static functions
1565 when checking to see if we match.
1566
1567 Tue Dec 20 17:47:02 1994 Mike Stump <mrs@cygnus.com>
1568
1569 * typeck.c (unary_complex_lvalue): Handle address of non-left most
1570 pointers to members by calling get_delta_difference.
1571
1572 Mon Dec 19 22:40:53 1994 Mike Stump <mrs@cygnus.com>
1573
1574 * decl2.c (check_classfn): Don't use decls_match yet, as it modifies
1575 static functions to early.
1576
1577 Thu Dec 19 22:37:48 1994 Mike Stump <mrs@cygnus.com>
1578
1579 * method.c (make_thunk): Handle encoding of positive thunk offsets.
1580
1581 Sat Dec 17 13:29:50 1994 Doug Evans <dje@canuck.cygnus.com>
1582
1583 * Make-lang.in (.PHONY): Tell GNU make C++ and c++ are phony targets.
1584
1585 Thu Dec 15 16:32:12 1994 Mike Stump <mrs@cygnus.com>
1586
1587 * decl2.c (check_classfn): Use decls_match to check if this has
1588 already been declared, as the DECL_ASSEMBLER_NAME may have been
1589 changed via asm("new_name").
1590 * decl.c (decls_match): Make public.
1591
1592 Thu Dec 15 15:17:55 1994 Mike Stump <mrs@cygnus.com>
1593
1594 * *.[chy] (expand_aggr_init) Add fourth argument to handle
1595 distinction between = init and (init) style of initializations.
1596 * *.[chy] (finish_decl): Add fifth argument to to handle
1597 distinction between = init and (init) style of initializations.
1598
1599 Tue Dec 13 19:16:05 1994 Mike Stump <mrs@cygnus.com>
1600
1601 Fix some random `explicit' bugs.
1602
1603 * cvt.c (convert_to_reference): Add third parameter to
1604 convert_force.
1605 (convert_force): Ditto.
1606 * call.c (build_method_call): Ditto.
1607 * decl2.c (setup_vtbl_ptr): Ditto.
1608 * init.c (expand_virtual_init): Ditto.
1609 (build_member_call): Ditto.
1610 (build_delete): Ditto.
1611 (build_vbase_delete): Ditto.
1612 * typeck.c (build_component_addr): Ditto.
1613 (build_c_cast): Ditto.
1614 (build_modify_expr): Ditto.
1615 * cp-tree.h (CONV_NONCONVERTING): Ditto. Add so that we can
1616 distinguish the context in which the conversion appears. Add thrid
1617 argument to build_c_cast.
1618 * cvt.c (cp_convert): Pass whether or not we want to consider
1619 non-converting constructors down to build_method_call.
1620 * decl2.c (reparse_absdcl_as_casts): Add third argument to
1621 build_c_cast.
1622 * gc.c (build_m_desc): Ditto.
1623 * init.c (build_new): Ditto.
1624 * parse.y (expr_no_commas): Ditto.
1625 (primary): Ditto.
1626 * typeck.c (build_x_function_call): Ditto.
1627 (build_static_cast): Ditto.
1628 (build_reinterpret_cast): Ditto.
1629 (build_const_cast): Ditto.
1630 (build_c_cast): Ditto.
1631 (build_ptrmemfunc): Ditto.
1632 * typeck2.c (build_functional_cast): Ditto.
1633 * init.c (expand_aggr_init): Added LOOKUP_ONLYCONVERTING to
1634 expand_aggr_init_1 as inits are converted to the destination type.
1635
1636 Tue Dec 13 16:18:57 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1637
1638 * Make-lang.in (cc1plus): Depends on c-pragma.o.
1639
1640 * Makefile.in (OBJ{DEP,}S): Add ../c-pragma.o.
1641
1642 * lex.c (check_newline): If the #pragma is not recognized by g++,
1643 try machine-specific ones too.
1644 (handle_sysv_pragma): Copied from c-lex.c.
1645
1646 Mon Dec 12 23:53:06 1994 Mike Stump <mrs@cygnus.com>
1647
1648 * except.c (expand_throw): Fix Dec 6th change, build_new likes a
1649 reference better.
1650
1651 Mon Dec 12 18:01:00 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1652
1653 * typeck.c (build_binary_op): Lose checks on TYPE_PTRMEMFUNC_P with
1654 IS_AGGR_TYPE, since now they will not both be set on the same type.
1655
1656 * pt.c (do_pending_expansions): Don't clear TREE_PUBLIC on
1657 instantiations controlled by -fexternal-templates.
1658
1659 * decl.c (duplicate_decls): Don't complain about different values of
1660 __attribute__ ((const)) and ((noreturn)).
1661
1662 Fri Dec 9 18:17:37 1994 Doug Evans <dje@cygnus.com>
1663
1664 * Makefile.in (BISONFLAGS): Delete --yacc.
1665 (PARSE_H): Depend on $(PARSE_C), for parallel makes.
1666 (PARSE_C): Undo last patch.
1667
1668 Fri Dec 2 10:44:36 1994 Mike Stump (mrs@wombat.gnu.ai.mit.edu)
1669
1670 * Makefile.in (BISONFLAGS): Add --yacc so that output winds up in
1671 y.tab.c.
1672
1673 Thu Dec 8 17:39:46 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1674
1675 * decl.c (finish_decl): Don't call obscure_complex_init for decls
1676 of indeterminate size.
1677
1678 Wed Dec 7 16:49:22 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1679
1680 * decl.c (obscure_complex_init): Function to tweak the decl to
1681 prevent expand_decl from tring to initialize it.
1682 (finish_decl): Use it rather than writing the same code in three
1683 different places.
1684
1685 * parse.y (bad_parm): Stop trying to support parms without types.
1686
1687 Wed Dec 7 12:06:56 1994 Mike Stump <mrs@cygnus.com>
1688
1689 * decl2.c (grokfield): Make asm specs on static member functions
1690 work.
1691
1692 Tue Dec 6 15:43:20 1994 Mike Stump <mrs@cygnus.com>
1693
1694 * except.c (expand_throw): Make a copy of the thrown object.
1695
1696 Tue Dec 6 14:16:34 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1697
1698 * parse.y: : has lower precedence than =.
1699
1700 Tue Dec 6 12:46:17 1994 Mike Stump <mrs@cygnus.com>
1701
1702 * decl.c (pushdecl): Use DECL_NAME of VAR_DECLs to avoid namespace
1703 manglings.
1704 (grokvardecl): Add namespace into variable name.
1705
1706 Tue Dec 6 11:26:55 1994 Mike Stump <mrs@cygnus.com>
1707
1708 * decl2.c (current_namespace_id): New routine to transform a simple
1709 name into a name in a namespace.
1710 * decl.c (grokdeclarator): Use it.
1711 * decl2.c (get_namespace_id): Find the name of the current
1712 namespace.
1713 (push_namespace, pop_namespace): Complete out missing
1714 functionality.
1715
1716 Mon Dec 5 17:11:51 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1717
1718 * class.c (finish_struct): Don't use LONG_LONG_TYPE_SIZE, as it may
1719 not be defined. Fix warning message for enums and restore warning
1720 for non-enums.
1721
1722 * decl2.c (push_namespace): Dummy function.
1723 (pop_namespace): Ditto.
1724 (do_namespace_alias): Ditto.
1725 (do_using_decl): Ditto.
1726 (do_using_directive): Ditto.
1727
1728 * parse.y: New token NSNAME for namespace names.
1729 (extdef): Add namespace, using definitions.
1730 (using_decl): New rule for using declarations.
1731 (any_id): New rule for identifiers with any degree of scoping.
1732 (identifier): Add NSNAME.
1733 (notype_identifier): Ditto.
1734 (component_decl): Add using_decl.
1735 (nested_name_specifier): Add NSNAME SCOPE.
1736
1737 * typeck.c (convert_for_assignment): Handle conversions between
1738 enums and bool.
1739
1740 * decl.c (duplicate_decls): Only propagate DECL_MAIN_VARIANT on
1741 FUNCTION_DECLs.
1742
1743 Mon Dec 5 13:03:16 1994 Mike Stump <mrs@cygnus.com>
1744
1745 * class.c (finish_struct): Give an error if one tries to declare a
1746 bit-field's size greater than a long long, as the backend will dump.
1747 It is not an error to declare an enum bit-field greater than its
1748 precision. Warn if an enum bit-field is too small to hold all
1749 its values.
1750
1751 Mon Dec 5 11:41:50 1994 Mike Stump <mrs@cygnus.com>
1752
1753 * typeck.c (convert_for_assignment): Use cp_convert instead of
1754 convert so that we don't get static casts.
1755
1756 Sun Dec 4 11:59:01 1994 Mike Stump <mrs@cygnus.com>
1757
1758 * cvt.c (cp_convert): Don't complain about int->enum conversion if
1759 we are doing static casts.
1760
1761 Fri Dec 2 18:32:41 1994 Mike Stump <mrs@cygnus.com>
1762
1763 * error.c (dump_expr): Do something more intelligent with SAVE_EXPRs
1764 when dumping expressions in error messages.
1765
1766 Fri Dec 2 17:04:27 1994 Mike Stump <mrs@cygnus.com>
1767
1768 * gc.c (build_dynamic_cast): Change interface to libg++, ensure that
1769 the return type is the right type, and make references work.
1770
1771 Fri Dec 2 16:36:43 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1772
1773 * decl.c (poplevel): Don't be confused by function-scope
1774 declarations of non-nested functions.
1775 (duplicate_decls): Propagate DECL_MAIN_VARIANT.
1776 (pushdecl): Use duplicate_decls to copy info from old decl into new
1777 function-scope one rather than doing it here.
1778
1779 * decl2.c (mark_inline_for_output): Deal with the DECL_MAIN_VARIANT
1780 of this decl, in case this is a function-scope declaration.
1781
1782 * decl.c (finish_enum): Make sure that the type has the right
1783 precision when we call fixup_*_type.
1784
1785 Tue Nov 29 19:12:07 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1786
1787 * cvt.c (build_up_reference): Strip superfluous NOP_EXPRs; we do
1788 want to build up references to rvalues if possible.
1789 (cp_convert): Stick on a NOP_EXPR when converting to the same type.
1790
1791 Tue Nov 29 11:28:59 1994 Mike Stump <mrs@cygnus.com>
1792
1793 * parse.y (maybe_raises): Handle throw ().
1794 * parse.y (ansi_raise_identifier): grok type-ids in exception
1795 specifications.
1796 * tree.c (build_exception_variant): Use list compare to check if
1797 two exception specifications match.
1798 * decl.c (duplicate_decls, bad_specifiers): Enhance wording on error
1799 messages.
1800 * call.c (build_method_call): Remove TREE_RAISES.
1801 * cvt.c (convert_to_aggr): Ditto.
1802 * typeck.c (build_function_call_real, convert_arguments): Ditto.
1803 * init.c (expand_aggr_init_1): Ditto.
1804
1805 Tue Nov 29 09:50:39 1994 Mike Stump <mrs@cygnus.com>
1806
1807 * except.c: Add support for m68k and mips exception handling
1808 support.
1809
1810 Tue Nov 29 08:48:33 1994 Mike Stump <mrs@cygnus.com>
1811
1812 * except.c (expand_end_all_catch): Throw into outer context, if we
1813 fall off end of catch handlers.
1814
1815 Mon Nov 28 16:44:41 1994 Mike Stump <mrs@cygnus.com>
1816
1817 * Makefile.in: Make is easier to decide where parse.[ch] will be
1818 built.
1819
1820 Thu Nov 17 20:11:24 1994 Doug Evans <dje@cygnus.com>
1821
1822 * cp/Make-lang.in (CXX_INSTALL_NAME) Use program_transform_name.
1823 (GXX_INSTALL_NAME) Likewise.
1824 (CXX_CROSS_NAME) Use program_transform_cross_name.
1825 (GXX_CROSS_NAME) Likewise.
1826 (c++.install-man): Use program_transform_name on g++.1.
1827 (c++.uninstall): Likewise.
1828
1829 Thu Nov 3 18:48:19 1994 Paul Eggert <eggert@twinsun.com>
1830
1831 * Makefile.in (spew.o, lex.o, pt.o):
1832 Depend on $(srcdir)/parse.h, not parse.h.
1833
1834 Mon Nov 28 13:53:03 1994 Mike Stump <mrs@cygnus.com>
1835
1836 * parse.y (THROW): Fix precedence of throw expressions.
1837
1838 Mon Nov 28 13:15:16 1994 Mike Stump <mrs@cygnus.com>
1839
1840 * typeck.c (build_unary_op): Allow promotions from bool to int on
1841 unary ~.
1842
1843 Sun Nov 27 00:16:21 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1844
1845 * method.c (build_overload_name): Use DECL_ASSEMBLER_NAME for
1846 classes when appropriate.
1847 (build_overload_nested_name): When dealing with a function context,
1848 use ASM_FORMAT_PRIVATE_NAME to tweak the name of the function to
1849 avoid conflicts between local classes of the same name.
1850
1851 Wed Nov 23 17:59:42 1994 Mike Stump <mrs@cygnus.com>
1852
1853 * gxx.gperf, parse.y, lex.h, hash.h, lex.c (init_lex), delc.c
1854 (duplicate_decls, grokdeclarator), cp-tree.h: Add support for
1855 `explicit'.
1856 * cvt.c (convert_to_reference, cp_convert, build_type_conversion_1,
1857 build_type_conversion): Use LOOKUP_ONLYCONVERTING in
1858 build_method_calls so that non-converting constructors are not used.
1859 * call.c (build_method_call): If we shouldn't use a non-converting
1860 constructor, then don't.
1861
1862 Wed Nov 23 14:46:56 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1863
1864 * call.c (build_method_call): Don't try to synthesize methods yet.
1865
1866 Tue Nov 22 12:45:21 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1867
1868 * pt.c (push_template_decls): Create CONST_DECLs for template
1869 constant parameters, not VAR_DECLs.
1870
1871 Sat Nov 19 15:28:31 1994 Jim Wilson (wilson@chestnut.cygnus.com)
1872
1873 * typeck.c (build_binary_op_nodefault): Can shorten shift only if
1874 shift count is less than size in bits of arg0.
1875
1876 Thu Nov 17 15:30:50 1994 Mike Stump <mrs@cygnus.com>
1877
1878 * gxx.gperf, hash.h, lex.c (init_lex, real_yylex), parse.y: Add new
1879 ANSI keywords and, and_eq, bitand, bitor, explicit, namespace, not,
1880 not_eq, or, or_eq, typename, using, xor, xor_eq to g++. Still need
1881 to add support for explicit, namespace, typename, and using, support
1882 for the rest is already in.
1883
1884 Thu Nov 17 10:56:50 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1885
1886 * typeck2.c (build_m_component_ref): Check the basetype of the
1887 member pointer against the main variant of the object type.
1888
1889 Mon Nov 14 14:21:52 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1890
1891 * cvt.c (convert_to_reference): Make sure that the original expr
1892 gets its type back when converting a reference.
1893
1894 * method.c (build_overload_name): Clear numeric_outputed_need_bar here.
1895 (build_decl_overload): Instead of here.
1896
1897 Tue Nov 8 17:11:24 1994 Jason Merrill <jason@phydeaux.cygnus.com>
1898
1899 * cvt.c (cp_convert): Don't build a TARGET_EXPR if we're not in a
1900 function.
1901
1902 * typeck.c (convert_for_initialization): Handle initialization from
1903 a TARGET_EXPR.
1904
1905 Sun Nov 6 01:34:24 1994 Jason Merrill (jason@phydeaux.cygnus.com)
1906
1907 * pt.c (lookup_nested_type_by_name): Fix list-walking logic.
1908 (tsubst): When replacing a TEMPLATE_TYPE_PARM, propagate
1909 TYPE_READONLY and TYPE_VOLATILE from the argument.
1910 (unify): When unifying with a TEMPLATE_TYPE_PARM, remove cv-quals
1911 present in parm from arg.
1912 (type_unification): Strip REFERENCE_TYPE from the argument type.
1913 (unify): Don't strip REFERENCE_TYPE from the argument type.
1914
1915 Sat Nov 5 22:42:15 1994 Greg McGary (gkm@magilla.cichlid.com)
1916
1917 * pt.c (do_type_instantiation): Check to see if there's a
1918 IDENTIFIER_TEMPLATE on a class before calling
1919 instantiate_member_templates().
1920
1921 Fri Nov 4 19:04:18 1994 Mike Stump <mrs@cygnus.com>
1922
1923 * gc.c (get_bad_cast_node): New routine to support compile time
1924 throws of bad_cast.
1925 * gc.c (build_dynamic_cast): Support throwing of bad_cast at compile
1926 time.
1927
1928 Fri Nov 4 11:12:00 1994 Mike Stump <mrs@cygnus.com>
1929
1930 * except.c: Add hppa support.
1931
1932 Fri Nov 4 10:50:50 1994 Mike Stump <mrs@cygnus.com>
1933
1934 * except.c: Add rs6000 support.
1935
1936 Thu Nov 3 14:24:23 1994 Mike Stump <mrs@cygnus.com>
1937
1938 * except.c (do_unwind): Add i[34]86 support.
1939
1940 Thu Nov 3 00:10:46 1994 Jason Merrill (jason@phydeaux.cygnus.com)
1941
1942 * pt.c (do_pending_expansions): Unset TREE_PUBLIC on implicit
1943 instantiations.
1944
1945 Wed Nov 2 15:08:24 1994 Kung Hsu (kung@mexican.cygnus.com)
1946
1947 * decl.c (finish_function): emit types used in method parameters
1948 into symbol table.
1949
1950 Wed Nov 2 15:05:47 1994 Jason Merrill (jason@phydeaux.cygnus.com)
1951
1952 * pt.c (process_template_parm): Allow pointer to member function
1953 template parameter types.
1954 (uses_template_parms): Handle pointer to member function
1955 CONSTRUCTORs.
1956
1957 * g++.c (main): Cast first argument of bzero to (char *).
1958 Pass -lstdc++ instead of -lg++ unless we are invoked as 'g++'.
1959
1960 Mon Oct 31 14:50:48 1994 Kung Hsu (kung@mexican.cygnus.com)
1961
1962 * gc.c (build_dynamic_cast): rewrite to make it work.
1963 * class.c (finish_vtbls): build more vtables if flag_rtti is on.
1964 * class.c (modify_all_direct_vtables): ditto.
1965 * init.c (expand_direct_vtbls_init): expand more vtables if
1966 flag_rtti is on.
1967 * decl.c (init_type_desc): add default return.
1968
1969 Tue Oct 25 17:13:09 1994 Kung Hsu (kung@mexican.cygnus.com)
1970
1971 * tree.c (debug_binfo): get rid of the initial size entry of
1972 vtable.
1973 * cp-tree.h: change flag_dossier to flag rtti, define type
1974 descriptor type nodes.
1975 * decl.c (init_type_desc): new function to initialize type
1976 descriptor type nodes.
1977 * decl.c (record_builtin_type): change flag_dossier to flag_rtti.
1978 * lex.c (init_lex): ditto.
1979 * decl.c : change variable flag_dossier to flag_rtti.
1980 * decl.c (duplicate_decls): get rid initial size entry of vtable.
1981 * decl.c (hack_incomplete_structures): take out assert 164.
1982 * search.c (get_abstract_virtuals_1): ditto.
1983 * search.c (dfs_init_vbase_pointers): change CLASSTYPE_DOSSIER to
1984 CLASSTYPE_RTTI.
1985 * parse.y: ditto.
1986 * class.c (prepare_fresh_vtable): for virtual bases, get right
1987 offset.
1988 * class.c (add_virtual_function): change flag_dossier to
1989 flag_rtti.
1990 * class.c (modify_one_vtable): modify the right rtti entry.
1991 * class.c (override_one_vtable): get rid of size entry.
1992 * class.c (finish_struct): change flag_dossier to flag_rtti, and
1993 build extra vtables, build type descriptors for polymorphic
1994 classes.
1995 * gc.c (build_headof): make headof() works correctly with new
1996 rtti.
1997 * gc.c (build_typeid): make this function work with new rtti.
1998 * gc.c (get_typeid): make this function work with new rtti.
1999 * gc.c (build_bltn_desc): new function for new rtti.
2000 * gc.c (build_user_desc): ditto.
2001 * gc.c (build_class_desc): ditto.
2002 * gc.c (build_ptr_desc): ditto.
2003 * gc.c (build_attr_desc): ditto.
2004 * gc.c (build_func_desc): ditto.
2005 * gc.c (build_ptmf_desc): ditto.
2006 * gc.c (build_ptmd_desc): ditto.
2007 * gc.c (build_t_desc): ditto.
2008 * gc.c : comment out old build_t_desc, build_i_desc, build_m_desc.
2009
2010 Tue Oct 25 13:37:41 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2011
2012 * call.c (convert_harshness): Check for TREE_UNSIGNED differences
2013 after checking for integral conversions.
2014
2015 Sun Oct 23 13:19:55 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2016
2017 * decl2.c: Declare flag_access_control.
2018 (struct lang_f_options): Add access-control.
2019 * expr.c (cplus_expand_expr, NEW_EXPR): Unset flag_access_control
2020 for the call to expand_aggr_init to copy the object out of the
2021 pcc_struct_return slot.
2022 * search.c (compute_access): if (!flag_access_control) return
2023 access_public.
2024
2025 Fri Oct 21 00:32:54 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2026
2027 * lex.c (cons_up_default_function): Don't try to defer method
2028 synthesis now.
2029
2030 * decl.c (init_decl_processing): Use __pure_virtual for abort_fndecl
2031 instead of abort, since the OSF/1 dynamic linker doesn't like to see
2032 relocation entries for abort.
2033
2034 * tree.c (array_type_nelts_total): Use sizetype, not
2035 integer_type_node.
2036 (array_type_nelts_top): Ditto.
2037
2038 Thu Oct 20 15:48:27 1994 Mike Stump <mrs@cygnus.com>
2039
2040 * decl.c (grokdeclarator): Added handling for catch parameters
2041 (CATCHPARM).
2042 * except.c (expand_start_catch_block): Use the new CATCHPARM context
2043 instead of NORMAL.
2044 * except.c (expand_throw): Don't let convert_to_reference complain
2045 about what we are doing.
2046
2047 Thu Oct 20 12:55:24 1994 Jim Wilson (wilson@cygnus.com)
2048
2049 * method.c (emit_thunk): Call instantiate_virtual_regs.
2050
2051 Wed Oct 19 14:15:33 1994 Mike Stump <mrs@cygnus.com>
2052
2053 * except.c (expand_exception_blocks): Make sure throw code doesn't
2054 get put in function that won't be output.
2055
2056 Mon Oct 17 18:03:15 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2057
2058 * decl.c (init_decl_processing): Make alloca a builtin.
2059
2060 Thu Oct 27 21:10:25 1994 Craig Burley (craig@burley)
2061
2062 * g++.c (main): Only decrement "added" and set "library" to
2063 NULL when "library" != NULL (just like 940829 fix).
2064
2065 Mon Oct 17 15:56:11 1994 Mike Stump <mrs@cygnus.com>
2066
2067 * except.c (expand_start_catch_block): Make sure the false label
2068 gets onto the permanent obstack, as it is used for the exception
2069 table.
2070
2071 Fri Oct 14 18:54:48 1994 Mike Stump <mrs@cygnus.com>
2072
2073 * class.c (modify_one_vtable): Since the DECL_CONTEXT of fndecl can
2074 be set just below, use current_fndecl instead.
2075
2076 Fri Oct 14 15:12:22 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2077
2078 * init.c (expand_aggr_vbase_init_1): Don't call expand_aggr_init_1
2079 with LOOKUP_SPECULATIVELY.
2080 (expand_default_init): Abort if build_method_call returns NULL_TREE.
2081
2082 * typeck.c (build_modify_expr): Don't just build a MODIFY_EXPR if
2083 the rhs is a TARGET_EXPR.
2084
2085 * parse.y (left_curly): Anonymous types are not affected by #pragma
2086 interface/implementation.
2087
2088 * method.c (synthesize_method): Don't call setup_vtbl_ptr for the
2089 default constructor if it isn't needed.
2090
2091 * lex.c (cons_up_default_function): Do synthesize methods for
2092 anonymous types if necessary.
2093
2094 Thu Oct 13 17:44:55 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2095
2096 * method.c (build_decl_overload): Set numeric_outputed_need_bar to 0.
2097
2098 Wed Oct 12 13:27:57 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2099
2100 * typeck.c (build_modify_expr): Understand how to copy an aggregate.
2101
2102 * init.c (expand_default_init): Ditto. Also remove some of the
2103 crufty code that assumes methods will not be synthesized properly.
2104
2105 * lex.c (cons_up_default_function): If the containing type has no
2106 name, these functions should never need to be called, so just
2107 declare them.
2108
2109 * lex.c (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the
2110 bitmask for lexing character constants.
2111
2112 * call.c (build_method_call): Disable code that tries to do tricky
2113 stuff with a default parameter that is a constructor call, but
2114 actually does other tricky stuff that breaks things.
2115
2116 Wed Oct 12 16:14:01 1994 Benoit Belley <belley@cae.ca>
2117
2118 * decl.c (finish_enum): Disable code which forces enums to be signed,
2119 since this conflicts with their use as bitfields. type_promotes_to
2120 handles promotion of enums of underlying unsigned types to signed
2121 integer types.
2122
2123 Wed Oct 12 13:24:03 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2124
2125 * cvt.c (type_promotes_to): Also promote enums to long if
2126 appropriate.
2127
2128 * typeck.c (default_conversion): Don't expect type_promotes_to to
2129 return a main variant.
2130
2131 Wed Oct 12 12:19:45 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2132
2133 * call.c (build_scoped_method_call): Don't lose side effects in the
2134 object expression when calling a non-existent destructor.
2135
2136 Fri Sep 2 19:05:21 1994 Rohan Lenard (rjl@iassf.easams.com.au)
2137
2138 * call.c (build_scoped_method_call): Remove erroneous error message
2139 when destructor call is written as a scoped call.
2140
2141 Tue Oct 11 23:48:31 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2142
2143 * various: Cast pointer arguments to bzero and bcopy to char *.
2144
2145 Tue Oct 11 19:34:32 1994 Mike Stump <mrs@cygnus.com>
2146
2147 * class.c (get_derived_offset): Added a type parameter to limit how
2148 far up the CLASSTYPE_VFIELD_PARENT chain we search.
2149 * class.c (modify_one_vtable, fixup_vtable_deltas): When forming the
2150 offset to put into the vtable for the this parameter, make sure we
2151 don't offset from a parent of the DECL_CONTEXT of the function.
2152
2153 Tue Oct 11 16:10:52 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2154
2155 * pt.c (do_function_instantiation): Set DECL_EXTERNAL and
2156 TREE_STATIC when setting DECL_INTERFACE_KNOWN.
2157 (do_type_instantiation): Ditto.
2158
2159 * lex.c (cons_up_default_function): Set DECL_INTERFACE_KNOWN,
2160 DECL_EXTERNAL and TREE_STATIC as appropriate.
2161
2162 * decl2.c (finish_file): Also synthesize methods that don't have
2163 DECL_EXTERNAL set. Set interface_unknown before doing so.
2164
2165 * decl.c (start_function): If DECL_INTERFACE_KNOWN is set on the
2166 function decl, don't muck with TREE_PUBLIC and DECL_EXTERNAL.
2167
2168 Mon Oct 10 00:56:53 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2169
2170 * lex.c (cons_up_default_function): Mark methods in a template class
2171 as template instances. Store the values of interface_unknown and
2172 interface_only for do_pending_inlines.
2173 (do_pending_inlines): Use them.
2174
2175 * decl2.c (finish_file): If we haven't seen a definition of a
2176 function declared static, make the decl non-PUBLIC so compile_file
2177 can give an error.
2178
2179 Sun Oct 9 02:42:29 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2180
2181 * method.c (do_build_copy_constructor): Handle anonymous unions.
2182 (do_build_assign_ref): Ditto.
2183 (largest_union_member): Move from lex.c.
2184
2185 Sat Oct 8 14:59:43 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2186
2187 Re-implement g++'s vague linkage independent of TREE_PUBLIC.
2188 * pt.c (instantiate_member_templates): Lose redundant
2189 -fexternal-templates handling.
2190 (tsubst): Set TREE_PUBLIC and DECL_EXTERNAL on new decls. Don't set
2191 TREE_STATIC or DECL_INTERFACE_KNOWN.
2192 (do_pending_expansions): Predicate on DECL_INTERFACE_KNOWN instead
2193 of DECL_EXTERNAL for explicit instantiations.
2194 (do_function_instantiation): Do the new thing.
2195 (do_type_instantiation): Ditto.
2196 (instantiate_template): Deal with member templates defined in a .cc
2197 file with -fexternal-templates.
2198 * except.c (expand_exception_blocks): Use DECL_LINKAGE_KNOWN to
2199 decide whether to stick builtin_throw here.
2200 * decl2.c (import_export_inline): Predicate on DECL_INTERFACE_KNOWN
2201 rather than TREE_PUBLIC. Generally fix rules.
2202 (finish_file): Use DECL_INITIAL to determine whether or not a method
2203 has been synthesized, rather than TREE_ASM_WRITTEN.
2204 * decl.c (warn_extern_redeclared_static): Use DECL_PUBLIC instead of
2205 TREE_PUBLIC.
2206 (pushdecl): Ditto.
2207 (duplicate_decls): Ditto. Deal with DECL_DECLARED_STATIC and
2208 DECL_INTERFACE_KNOWN.
2209 (redeclaration_error_message): Fix checking for conflicting linkage.
2210 (define_function): Set DECL_INTERFACE_KNOWN.
2211 (grokfndecl): Function decls are PUBLIC until we are sure about
2212 their linkage. Set DECL_DECLARED_STATIC as needed.
2213 (start_function): Deal with linkage. Move pushdecl after linkage
2214 magic.
2215 (finish_function): Don't set TREE_ASM_WRITTEN on discarded inlines.
2216 * cp-tree.h (lang_decl_flags): Add interface_known and
2217 declared_static.
2218 (DECL_INTERFACE_KNOWN): New macro.
2219 (DECL_DECLARED_STATIC): New macro.
2220 (DECL_PUBLIC): New macro.
2221
2222 Clean up bogus use of TREE_PUBLIC.
2223 * class.c (alter_access): Fix mistaken use of TREE_PUBLIC (it
2224 doesn't correspond to TREE_PROTECTED and TREE_PRIVATE).
2225 * init.c (do_friend): Don't arbitrarily set TREE_PUBLIC.
2226
2227 Wed Oct 5 13:44:41 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2228
2229 * call.c (build_overload_call_real): Don't immediately do
2230 array->pointer conversion.
2231
2232 * pt.c (type_unification): If not passing to a reference, strip
2233 cv-quals. Also handle array->pointer conversion.
2234
2235 Tue Oct 4 17:45:37 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2236
2237 * decl.c (grokdeclarator): Don't warn about applying const to a
2238 const typedef or template type parameter.
2239
2240 * decl2.c (finish_file): Also synthesize methods after walking the
2241 vtables. Ugly ugly ugly.
2242
2243 Mon Oct 3 15:02:41 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2244
2245 * various: Remove lingering remnants of old exception handling code.
2246
2247 * decl2.c (finish_file): Synthesize methods before walking the
2248 vtables, so that the vtables get emitted as needed.
2249
2250 * decl.c (shadow_tag): Remove obsolete code for pushing tags and
2251 dealing with exceptions.
2252
2253 Mon Oct 3 13:05:27 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
2254
2255 * Make-lang.in (g++-cross): Depend upon version.o and $(LIBDEPS).
2256
2257 Mon Oct 3 02:59:28 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2258
2259 * decl2.c (finish_file): Fix inline handling.
2260
2261 Sun Oct 2 00:21:56 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2262
2263 * decl.c (grokdeclarator): Handle redundant scope even better.
2264 ({push,pop}_cp_function_context): Take toplev parameter.
2265
2266 * method.c (synthesize_method): Pass toplev parameter to
2267 {push,pop}_cp_function_context depending on decl_function_context
2268 (fndecl).
2269
2270 * typeck.c (build_x_unary_op): Unary & on OFFSET_REFs is always the
2271 built-in version.
2272
2273 * method.c (synthesize_method): Don't be confused by __in_chrg
2274 parameter.
2275
2276 * class.c (popclass): Set C_C_D like start_function does.
2277
2278 * decl.c (grokdeclarator): Handle redundant scope better.
2279
2280 * parse.y (expr_or_declarator): Add '(' expr_or_declarator ')' rule.
2281 (direct_notype_declarator): Ditto.
2282 (complex_direct_notype_declarator): Remove it here.
2283
2284 Sat Oct 1 21:42:18 1994 Jason Merrill (jason@deneb.cygnus.com)
2285
2286 * init.c (resolve_offset_ref): Fix types used in resolving .*
2287 expressions.
2288
2289 Sat Oct 1 15:18:49 1994 Jason Merrill (jason@phydeaux.cygnus.com)
2290
2291 Beginnings of work to synthesize methods only when needed.
2292 * call.c (build_method_call): Synthesize methods as necessary
2293 (currently never necessary).
2294 * class.c (popclass): Don't try to set C_C_D here, as it'll end up
2295 on the wrong obstack.
2296 * decl.c (push_cp_function_context): Mostly copied from
2297 push_c_function_context.
2298 (pop_cp_function_context): Similarly.
2299 (finish_function): Reverse order of poplevel and pop_nested_class so
2300 that current_class_decl is restored properly.
2301 (start_function): Ditto.
2302 (finish_function): Add parameter 'nested'. Don't call
2303 permanent_allocation if (nested).
2304 * various: Pass extra parameter to finish_function.
2305 * decl2.c (finish_file): Reorganize end-of-file inline handling,
2306 synthesizing methods as necessary.
2307 * lex.c (cons_up_default_function): Call mark_inline_for_output.
2308 Only synthesize methods immediately if #pragma implementation
2309 (currently disabled).
2310 (do_pending_inlines): Call synthesize_method.
2311 * method.c (synthesize_method): New function; all method synthesis
2312 goes through here. Calls do_build_assign_ref and
2313 do_build_copy_constructor.
2314 (build_default_constructor): Remove.
2315 (build_dtor): Ditto.
2316 (build_assign_ref): Rename to do_build_assign_ref and remove stuff
2317 done by synthesize_method.
2318 (build_copy_constructor): Similarly.
2319
2320 Thu Sep 29 16:58:52 1994 Mike Stump <mrs@cygnus.com>
2321
2322 * typeck.c (c_expand_return): Use magic so the backend can fixup the
2323 assignment into the return register, so cleanups won't clobber it.
2324
2325 Thu Sep 29 13:08:50 1994 Jason Merrill (jason@deneb.cygnus.com)
2326
2327 * method.c (hack_identifier): Don't call assemble_external for
2328 template decls.
2329
2330 * decl.c (finish_decl): Also end temporary allocation if the decl in
2331 question has a type of error_mark_node.
2332
2333 Wed Sep 28 21:45:00 1994 Mike Stump <mrs@cygnus.com>
2334
2335 * typeck.c (build_modify_expr): When optimizing ?: on lhs, make sure
2336 that if the ?: was a reference type, that the subparts will be also.
2337
2338 Wed Sep 28 16:14:04 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
2339
2340 * except.c (register_exception_table): Use Pmode, not PTRmode.
2341
2342 Fri Sep 23 13:54:27 1994 Jason Merrill (jason@deneb.cygnus.com)
2343
2344 * lex.c (do_pending_inlines): Do method synthesis after the
2345 pending_inlines have been reversed.
2346
2347 Thu Sep 22 12:53:03 1994 Per Bothner (bothner@kalessin.cygnus.com)
2348
2349 * decl2.c (finish_file): Fix Brendan's fix: Only call
2350 register_exception_table if there is a non-empty exception table.
2351
2352 Thu Sep 22 12:03:46 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
2353
2354 * decl2.c (finish_file): Only do register_exception_table if
2355 -fhandle-exceptions is being used.
2356
2357 Wed Sep 21 19:01:51 1994 Per Bothner (bothner@kalessin.cygnus.com)
2358
2359 * except.c (output_exception_table_entry): Simplify
2360 by using assemble_integer.
2361 (build_exception_table): Change to return a count.
2362 Cleanup to use standard macros, instead of hard-wired
2363 sparc asm format. Don't make __EXCEPTION_TABLE__ global.
2364 (register_exception_table): New function. Generate call to builtin.
2365 * decl2.c (finish_file): Call register_exception_table.
2366 * cp-tree.h (build_exception_table): Fix prototype.
2367
2368 Wed Sep 21 13:20:42 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
2369
2370 * tree.c (break_out_calls): Don't try to duplicate the DECL_INITIAL.
2371
2372 * decl2.c (delete_sanity): Give an error at trying to delete a
2373 function.
2374
2375 Wed Sep 21 11:47:10 1994 Jason Merrill (jason@deneb.cygnus.com)
2376
2377 * lex.c (cons_up_default_function): Mark synthesized destructors
2378 inline.
2379
2380 * decl.c (duplicate_decls): Ignore redeclarations of wchar_t as
2381 something other than __wchar_t, complaining if -pedantic and not in
2382 a system header.
2383
2384 Tue Sep 20 09:43:28 1994 Jason Merrill (jason@deneb.cygnus.com)
2385
2386 * decl.c (xref_tag): Set up BINFO_INHERITANCE_CHAIN on base binfos
2387 here.
2388
2389 * typeck.c (build_modify_expr): Require complete type after checking
2390 for error_mark_node.
2391
2392 * call.c (build_method_call): Print parmtypes when complaining of
2393 ambiguous call.
2394
2395 * typeck.c (build_modify_expr): Handle assignment to array from
2396 non-array.
2397
2398 * decl.c (lookup_name_real): Deal with got_scope == error_mark_node.
2399
2400 * call.c (build_method_call): Don't bother with the exact match.
2401
2402 Mon Sep 19 00:51:39 1994 Jason Merrill (jason@deneb.cygnus.com)
2403
2404 * init.c (expand_aggr_init): If we munge the type of the variable,
2405 also munge the type of the initializer.
2406
2407 * decl.c (grokdeclarator): Use <= when comparing to RID_LAST_MODIFIER.
2408 (init_decl_processing): Push artificial declaration of wchar_t so
2409 people don't have to declare it before they can use it.
2410
2411 * error.c (cp_line_of): return lineno in lieu of 0.
2412
2413 * typeck.c (convert_for_assignment): Handle conversion of pmfs to
2414 int and bool.
2415 (build_component_ref): Fold the COMPONENT_REF in case it can be
2416 reduced.
2417
2418 * typeck2.c (store_init_value): Don't pedwarn about non-constant
2419 bracketed initializers for automatic variables.
2420
2421 Sun Sep 18 10:12:12 1994 Jason Merrill (jason@deneb.cygnus.com)
2422
2423 * error.c (dump_decl): Don't say `typedef enum foo foo'.
2424
2425 * decl.c (start_decl): Don't set TREE_PUBLIC on template decls just
2426 because they're affected by #pragma i/i. We'll deal with that when
2427 they get instantiated.
2428
2429 * typeck.c (build_unary_op): Clean up cruft in ADDR_EXPR case.
2430
2431 * class.c (instantiate_type): Set TREE_CONSTANT on instantiated
2432 ADDR_EXPRs if appropriate.
2433
2434 * decl.c (build_ptrmemfunc_type): Unset IS_AGGR_TYPE on pmf types.
2435
2436 * typeck.c (build_ptrmemfunc): Handle &overloaded_method as an
2437 initializer properly.
2438 * typeck2.c (digest_init): Ditto.
2439
2440 * tree.c (cp_build_type_variant): Like c_build_type_variant, except
2441 it uses build_cplus_array_type.
2442 * *.c: Use cp_build_type_variant instead of c_build_type_variant.
2443
2444 * pt.c (do_type_instantiation): Don't try to instantiate nested
2445 enums.
2446
2447 Tue Sep 13 10:56:58 1994 Jason Merrill (jason@deneb.cygnus.com)
2448
2449 * cvt.c (build_up_reference): Handle preincrement and predecrement
2450 properly.
2451
2452 Tue Sep 13 09:51:59 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
2453
2454 * decl.c (finish_decl): Only lay out the rtl for DECL if it is, in
2455 fact, static.
2456
2457 Mon Sep 12 14:40:30 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
2458
2459 * decl.c (finish_decl): Lay out the rtl for DECL before doing
2460 grok_reference_init, in case it's static.
2461
2462 Mon Sep 12 12:45:38 1994 Jason Merrill (jason@deneb.cygnus.com)
2463
2464 * class.c (finish_struct): Don't synthesize constructors if the
2465 class has a field with the same name as the class. Don't die on
2466 classes with no constructors or destructors. Don't die if the head
2467 and tail of the class are in different files.
2468
2469 * decl.c (grokdeclarator): Don't treat a function pointer field
2470 with the same name as the class as a constructor.
2471
2472 Fri Sep 9 13:17:00 1994 Jason Merrill (jason@deneb.cygnus.com)
2473
2474 * typeck.c (build_c_cast): Pull constant values out of their
2475 variables here.
2476
2477 * decl.c (duplicate_decls): Only propagate DECL_CHAIN in
2478 FUNCTION_DECLs and TEMPLATE_DECLs.
2479
2480 Thu Sep 8 10:07:48 1994 Jason Merrill (jason@deneb.cygnus.com)
2481
2482 * decl.c (duplicate_decls): Propagate DECL_CHAIN in all DECLs that
2483 have it.
2484
2485 * pt.c (unify): REALs and INTEGERs only unify with their own genus.
2486 (instantiate_member_templates): Don't muck with DECL_EXTERNAL and
2487 TREE_PUBLIC unless -fexternal-templates.
2488
2489 Wed Sep 7 13:17:10 1994 Jason Merrill (jason@deneb.cygnus.com)
2490
2491 * pt.c (do_type_instantiation): Call instantiate_member_templates.
2492 Deal with specializations.
2493 (tsubst): Don't stick the mangled name in DECL_NAME for function
2494 instantiations. Don't push them, either.
2495
2496 * decl2.c (grokfield): Move code for generating the
2497 DECL_ASSEMBLER_NAME for static members from here.
2498 * method.c (build_static_name): To here.
2499 * decl.c (grokvardecl): Call build_static_name.
2500 (duplicate_decls): Keep old DECL_ASSEMBLER_NAME.
2501
2502 Mon Sep 5 12:49:18 1994 Jason Merrill (jason@deneb.cygnus.com)
2503
2504 * call.c (build_method_call): if -Wsynth, warn when selecting
2505 synthesized op= over user-supplied one cfront would select.
2506 * decl2.c (lang_decode_option): Handle -Wsynth.
2507
2508 Fri Sep 2 15:11:59 1994 Jason Merrill (jason@deneb.cygnus.com)
2509
2510 * decl.c (finish_enum): Overhaul to fix several bugs.
2511 (start_enum): Disable useless code.
2512
2513 Thu Sep 1 16:04:54 1994 Jason Merrill (jason@deneb.cygnus.com)
2514
2515 * typeck.c (c_expand_return): Warn about returning a reference to a
2516 temporary.
2517 (convert_arguments): Increment argument counter when using default
2518 arguments, too.
2519
2520 Wed Aug 31 14:29:22 1994 Jason Merrill (jason@deneb.cygnus.com)
2521
2522 * decl.c (finish_decl): If the type of decl is error_mark_node,
2523 don't bother trying to do anything.
2524
2525 * typeck.c (convert_for_initialization): If the rhs contains a
2526 constructor call, pretend the lhs type needs to be constructed.
2527
2528 * init.c (expand_default_init): If we stick the object inside the
2529 initializer, mark the initializer used.
2530
2531 Tue Aug 30 13:50:18 1994 Jason Merrill (jason@deneb.cygnus.com)
2532
2533 * method.c (build_assign_ref): return *this;
2534 (build_assign_ref): Fix base assignment order.
2535 (build_copy_constructor): Fix member init order.
2536
2537 Mon Aug 29 13:54:39 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
2538
2539 * g++.c (main): Remember to clear out SAW_SPECLANG after we see
2540 its argument.
2541
2542 Sat Aug 27 09:36:03 1994 Jason Merrill (jason@deneb.cygnus.com)
2543
2544 * method.c (build_copy_constructor): Also copy virtual bases.
2545
2546 Fri Aug 26 17:05:15 1994 Jason Merrill (jason@deneb.cygnus.com)
2547
2548 * lex.c (do_pending_inlines): Clear out pending_inlines before doing
2549 any synthesis. Also first set deja_vu on all pending_inlines.
2550
2551 * method.c (build_assign_ref): Use build_member_call to invoke base
2552 operator=, rather than build_modify_expr. And use
2553 build_reference_type instead of TYPE_REFERENCE_TO.
2554 (build_copy_constructor): Use TYPE_NESTED_NAME to identify the
2555 basetype.
2556
2557 * decl2.c (grokfield): Don't complain about undefined local class
2558 methods.
2559
2560 * class.c (finish_struct): Don't try to synthesize methods here.
2561 * lex.c (do_pending_inlines): Instead, synthesize them here.
2562 (init_lex): Initialize synth_obstack.
2563 (cons_up_default_function): Stick synthesis request on
2564 pending_inlines.
2565
2566 Fri Aug 26 12:24:14 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
2567
2568 * call.c (build_method_call) [PCC_STATIC_STRUCT_RETURN]: Also
2569 accept an RTL_EXPR in what we're about to use for the instance,
2570 since anything which would end up with pcc_struct_return set
2571 inside cplus_expand_expr.
2572
2573 * cp-tree.h (cons_up_default_function): Note change of prototype.
2574
2575 Thu Aug 25 23:05:30 1994 Gerald Baumgartner (gb@cs.purdue.edu)
2576
2577 * class.c (finish_struct): Undid change from Aug 21 testing
2578 CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
2579 * parse.y (left_curly): Ditto, undid change from Aug 21.
2580 * decl.c (xref_tag): Undid change from Aug 21, set
2581 CLASSTYPE_INTERFACE correctly, and added comments.
2582
2583 Thu Aug 25 00:36:31 1994 Jason Merrill (jason@deneb.cygnus.com)
2584
2585 Rework approach to synthesized methods; don't go through the parser
2586 anymore.
2587 * class.c (finish_struct): Use new synthesis approach.
2588 * lex.c (cons_up_default_function): Now just creates declaration,
2589 not code.
2590 (largest_union_member): #if 0 out.
2591 (default_assign_ref_body): Ditto.
2592 (default_copy_constructor_body): Ditto.
2593 * method.c (build_default_constructor): New function to synthesize X().
2594 (build_copy_constructor): Synthesize X(X&).
2595 (build_assign_ref): Synthesize X::operator=(X&).
2596 (build_dtor): Synthesize ~X().
2597
2598 * error.c (cp_line_of): If we're dealing with an artificial
2599 TYPE_DECL, look at the type instead.
2600
2601 Wed Aug 24 11:11:50 1994 Jason Merrill (jason@deneb.cygnus.com)
2602
2603 * init.c (sort_member_init): Check warn_reorder.
2604 * decl2.c (lang_decode_option): Handle -W{no-,}reorder.
2605
2606 * cp-tree.h (CLASSTYPE_SOURCE_LINE): New macro.
2607 * error.c (cp_line_of): Use CLASSTYPE_SOURCE_LINE for aggregates.
2608 * class.c (finish_struct): Set CLASSTYPE_SOURCE_LINE.
2609
2610 Tue Aug 23 09:28:35 1994 Mike Stump <mrs@cygnus.com>
2611
2612 * error.c (dump_decl): Improve wording, so that error messages
2613 dont't read template<, class foo>...
2614
2615 Mon Aug 22 15:30:51 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
2616
2617 * parse.y (label_colon): Also match a TYPENAME as a label name,
2618 since they may have declared a class by that name but have also
2619 tried to have a local label under the same name.
2620
2621 * pt.c (coerce_template_parms): Call cp_error, not cp_error_at,
2622 for the message so they know at what point it was instantiated.
2623
2624 Sun Aug 21 23:07:35 1994 Gerald Baumgartner (gb@cs.purdue.edu)
2625
2626 * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
2627 CLASSTYPE_VTABLE_NEEDS_WRITING for signatures up to left_curly time.
2628 * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
2629 CLASSTYPE_VTABLE_NEEDS_WRITING for signatures down to left_curly time.
2630 * parse.y (left_curly): New final resting place for setting
2631 CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING for signatures.
2632
2633 * class.c (finish_struct): Don't test for function/field name
2634 conflicts in signatures, since all the fields are compiler-constructed.
2635
2636 Fri Aug 19 14:04:47 1994 Kung Hsu (kung@mexican.cygnus.com)
2637
2638 * method.c (build_overload_nested_name): in qualified name
2639 mangling, the template with value instantiation will have numeric
2640 at end and may mixed with the name length of next nested level.
2641 Add a '_' in between.
2642 * method.c (build_overload_name): ditto.
2643 * method.c (build_overload_identifier): ditto.
2644
2645 Thu Aug 18 16:24:43 1994 Mike Stump <mrs@cygnus.com>
2646
2647 * error.c (dump_decl): Handle NULL args.
2648
2649 Thu Sep 29 16:15:36 1994 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu>
2650
2651 * g++.c: Rework last change so it's done like collect.c (and
2652 gcc.c).
2653
2654 Wed Sep 14 10:17:27 1994 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu>
2655
2656 * g++.c: Include <sys/errno.h> in case `errno' is a macro
2657 as permitted by ANSI C.
2658
2659 Thu Aug 18 12:48:09 1994 Mike Stump <mrs@cygnus.com>
2660
2661 * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
2662 CLASSTYPE_VTABLE_NEEDS_WRITING up to left_curly time.
2663 * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
2664 CLASSTYPE_VTABLE_NEEDS_WRITING down to left_curly time.
2665 * parse.y (left_curly): New final resting place for setting
2666 CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
2667
2668 Thu Aug 11 11:32:42 1994 H.J. Lu (hjl@nynexst.com)
2669
2670 * g++.c (main): Only decrement "added" and set "library" to
2671 NULL when "library" != NULL.
2672
2673 Sat Aug 13 00:14:52 1994 Jason Merrill (jason@deneb.cygnus.com)
2674
2675 * decl.c (grokdeclarator): Don't set TREE_PUBLIC on a function decl
2676 just because its class has a known interface.
2677 (decls_match): Deal with new format of template parms.
2678
2679 * lex.c (cons_up_default_function): Don't play with TREE_PUBLIC and
2680 DECL_EXTERNAL here.
2681
2682 Fri Aug 12 01:55:15 1994 Jason Merrill (jason@deneb.cygnus.com)
2683
2684 * decl.c (pushtag): SET_DECL_ARTIFICIAL on gratuitous typedefs.
2685 (xref_defn_tag): Ditto.
2686 (pushdecl): Only allow artificial typedefs to be shadowed.
2687
2688 * init.c (emit_base_init): Pass the right binfos to
2689 expand_aggr_init_1.
2690
2691 * class.c (delete_duplicate_fields_1): Make it work right.
2692 (finish_struct): Catch function/field name conflict.
2693
2694 * decl2.c (check_classfn): Pass the function to cp_error, not just
2695 the name.
2696
2697 * init.c (sort_member_init): Warn when order of member initializers
2698 does not match order of member declarations.
2699 (emit_base_init): Call expand_aggr_init_1 with LOOKUP_PROTECT.
2700
2701 * error.c (dump_expr): Handle lists of functions.
2702
2703 * decl.c (start_function): #pragma interface only affects functions
2704 that would otherwise be static.
2705 (finish_decl): Don't warn about an unused variable if it has both
2706 constructor and destructor, since the 'resource allocation is
2707 initialization' idiom is relatively common.
2708
2709 * typeck.c (comp_target_types): Don't handle TEMPLATE_TYPE_PARMs.
2710 (comp_target_parms): Ditto.
2711 (compparms): Never consider default parms.
2712 (common_base_type): Don't choose a virtual baseclass if there is a
2713 more derived class in common.
2714 (build_conditional_expr): If pedantic, pedwarn about conversion to
2715 common base in conditional expr.
2716
2717 * class.c (instantiate_type): Handle template instantiation better.
2718
2719 * typeck.c (convert_arguments): Don't try to get tricky and convert
2720 to int directly when PROMOTE_PROTOTYPES is set, as it breaks
2721 user-defined conversions.
2722
2723 * lex.c (check_for_missing_semicolon): Also give error at end of
2724 file.
2725
2726 * call.c (build_method_call): Don't promote arrays to pointers here.
2727
2728 * typeck.c (convert_arguments): Don't require the actual parameter
2729 to be of a complete type if the formal parameter is a reference.
2730
2731 Thu Aug 11 15:21:40 1994 Jason Merrill (jason@deneb.cygnus.com)
2732
2733 * decl.c (grokdeclarator): Soften 'static' on member function error
2734 to pedwarn.
2735
2736 * init.c (build_new): Don't automatically save rval.
2737 (build_offset_ref): Do field lookup with proper basetype_path.
2738
2739 Thu Aug 11 12:46:54 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
2740
2741 * errfn.c (cp_silent): Declare to mark when we should avoid
2742 emitting warnings and errors.
2743 (cp_error): Check it.
2744 (cp_warning): Likewise.
2745 (cp_pedwarn): Likewise.
2746 (cp_compiler_error): Likewise.
2747 (cp_error_at): Likewise.
2748 (cp_warning_at): Likewise.
2749 (cp_pedwarn_at): Likewise.
2750 * call.c (compute_conversion_costs): Set CP_SILENT when we start
2751 out, and make sure we turn it off before we leave.
2752
2753 Thu Aug 11 00:02:54 1994 Jason Merrill (jason@deneb.cygnus.com)
2754
2755 * decl2.c (grok_array_decl): Try computing *(A+B) if neither
2756 argument is obviously an array.
2757
2758 Wed Aug 10 15:32:04 1994 Jason Merrill (jason@deneb.cygnus.com)
2759
2760 * typeck.c (c_expand_start_case): Do cleanups here.
2761
2762 * parse.y (xcond): Do bool conversion here, too.
2763 (simple_stmt, SWITCH case): Don't do cleanups here.
2764
2765 * decl.c (duplicate_decls): Don't treat builtins that have been
2766 explicitly declared specially.
2767
2768 Tue Aug 9 01:16:09 1994 Jason Merrill (jason@deneb.cygnus.com)
2769
2770 * tree.c (make_deep_copy): Support copying pointer, reference,
2771 function, array, offset and method types.
2772
2773 * decl.c (init_decl_processing): Mark exit and abort as
2774 BUILT_IN_NONANSI so that duplicate_decls is kinder about
2775 redeclaration.
2776 (duplicate_decls): Don't give two errors for redeclaring a C
2777 function with the same parms but a different return type.
2778
2779 * parse.y (paren_cond_or_null): Do cleanup and bool conversion here.
2780 (condition): Instead of here.
2781 (simple_stmt, SWITCH case): Also do cleanup here.
2782
2783 * decl2.c (finish_anon_union): Only break out FIELD_DECLs.
2784
2785 * call.c (build_method_call): Don't throw away the side effects of
2786 the object in a call to a non-existent constructor.
2787 * parse.y (primary): Ditto.
2788
2789 * method.c (build_decl_overload): Oop.
2790
2791 * decl2.c (lang_decode_option): Deal with flag_no_nonansi_builtin,
2792 warn about uselessness of specifying -fansi-overloading.
2793
2794 * method.c (build_decl_overload): Treat any non-member new with one
2795 parameter as __builtin_new.
2796
2797 * decl.c (init_decl_processing): Setup built-in meanings of exit,
2798 _exit and abort.
2799
2800 Mon Aug 8 15:03:30 1994 Jason Merrill (jason@deneb.cygnus.com)
2801
2802 * error.c (dump_readonly_or_volatile): Put a space between const and
2803 volatile if both apply.
2804
2805 * init.c (perform_member_init): Clean up after this initialization.
2806 (emit_base_init): Clean up after each base init, not after all have
2807 been done.
2808 (expand_aggr_vbase_init_1): Clean up after this init.
2809
2810 Sun Aug 7 14:55:05 1994 Jason Merrill (jason@deneb.cygnus.com)
2811
2812 * call.c (build_method_call): Deal with destroying references.
2813
2814 * parse.y (condition): Do bool_truthvalue_conversion here.
2815 (paren_expr_or_null): And here.
2816 (simple_if): Not here.
2817 (simple_stmt): Or here.
2818
2819 Sat Aug 6 22:29:45 1994 Jason Merrill (jason@deneb.cygnus.com)
2820
2821 * parse.y (paren_expr_or_null): Wrap the expression in a
2822 CLEANUP_POINT_EXPR.
2823 (condition): Ditto.
2824
2825 Sat Aug 6 19:46:37 1994 Rohan Lenard (rjl@easams.com.au)
2826
2827 * call.c (build_scoped_method_call): Fix error message when
2828 destructor call refers to a nonexistent type.
2829
2830 Sat Apr 16 22:43:30 1993 Gerald Baumgartner (gb@cs.purdue.edu)
2831
2832 * lex.h (rid): Deleted RID_RAISES, it's never used.
2833 Moved RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_EXCEPTION,
2834 RID_TEMPLATE and RID_SIGNATURE to the end of the enumeration,
2835 they don't need to be touched in `grokdeclarator.'
2836 (RID_LAST_MODIFIER): Defined macro to be RID_MUTABLE.
2837
2838 * decl.c (grokdeclarator): Use RID_LAST_MODIFIER instead of
2839 RID_MAX as loop limit for finding declaration specifiers.
2840
2841 Sat Apr 3 21:59:07 1993 Gerald Baumgartner (gb@cs.purdue.edu)
2842
2843 * lex.c (debug_yytranslate): Moved to parse.y since it needs to
2844 access `yytname,' which is static in parse.c.
2845
2846 Fri Apr 2 23:36:57 1993 Gerald Baumgarnter (gb@cs.purdue.edu)
2847
2848 * cp-tree.h (GNU_xref_ref): Fixed typo in extern declaration, it
2849 was `GNU_xref_def' instead of `GNU_xref_ref.'
2850
2851 Fri Aug 5 14:20:16 1994 Jason Merrill (jason@deneb.cygnus.com)
2852
2853 * pt.c (do_function_instantiation): Don't set TREE_PUBLIC and
2854 DECL_EXTERNAL on 'extern' instantiations; wait until EOF to do that.
2855 (do_type_instantiation): Ditto.
2856
2857 * decl2.c (import_export_inline): Decides at EOF what an inline's
2858 linkage should be.
2859 (finish_file): Call it.
2860
2861 * decl.c (start_function): Don't rely on the settings of TREE_PUBLIC
2862 and DECL_EXTERNAL from do_*_instantiation. Only set
2863 DECL_DEFER_OUTPUT on inlines whose linkage might actually change.
2864 (finish_function): Use DECL_DEFER_OUTPUT to decide which inlines to
2865 mark for later consideration, rather than DECL_FUNCTION_MEMBER_P.
2866
2867 Fri Aug 5 01:12:20 1994 Mike Stump <mrs@cygnus.com>
2868
2869 * class.c (get_class_offset_1, get_class_offset): New routine to
2870 find the offset of the class where a virtual function is defined,
2871 from the complete type.
2872 * class.c (modify_one_vtable, fixup_vtable_deltas): Use
2873 get_class_offset instead of virtual_offset as get_class_offset will
2874 always provide the right answer.
2875 * tree.c (virtual_offset): Remove. It only ever worked some of the
2876 time.
2877
2878 Tue Aug 2 12:44:21 1994 Jason Merrill (jason@deneb.cygnus.com)
2879
2880 * call.c (build_method_call): Put back unary_complex_lvalue call
2881 that I thought was redundant.
2882
2883 * typeck.c (c_expand_return): Fix a case I missed before.
2884
2885 Sun Jul 31 17:54:02 1994 Jason Merrill (jason@deneb.cygnus.com)
2886
2887 * pt.c (unify): Strip cv-quals from template type arguments (when
2888 'const T*' is matched to 'const char*', that does not mean that T is
2889 'const char').
2890
2891 Fri Jul 29 01:03:06 1994 Jason Merrill (jason@deneb.cygnus.com)
2892
2893 * pt.c (do_type_instantiation): Instantiate nested TAGS, not
2894 typedefs. Third time's the charm?
2895
2896 * parse.y (template_parm): Support default template parms.
2897 * pt.c (process_template_parm): Ditto.
2898 (end_template_parm_list): Ditto.
2899 (coerce_template_parms): Ditto.
2900 (mangle_class_name_for_template): Ditto.
2901 (push_template_decls): Ditto.
2902 (unify): Ditto.
2903 * method.c (build_overload_identifier): Ditto.
2904 * error.c (dump_decl): Ditto.
2905
2906 Wed Jul 27 17:47:00 1994 Jason Merrill (jason@deneb.cygnus.com)
2907
2908 * pt.c (do_type_instantiation): Only instantiate nested *classes*.
2909
2910 Tue Jul 26 13:22:40 1994 Jason Merrill (jason@deneb.cygnus.com)
2911
2912 * search.c (note_debug_info_needed): Also emit debugging information
2913 for the types of fields.
2914
2915 Mon Jul 25 00:34:44 1994 Jason Merrill (jason@deneb.cygnus.com)
2916
2917 * pt.c (lookup_template_class): Pass 'template' to
2918 coerce_template_parms instead of 'in_decl', since it's a more
2919 meaningful context.
2920
2921 * typeck.c (c_expand_return): Make sure any cleanups for the return
2922 expression get run.
2923 (build_c_cast): Use CONVERT_EXPR for conversion to void.
2924
2925 * pt.c (do_type_instantiation): Also instantiate nested types.
2926
2927 * typeck.c (convert_for_assignment): Don't die when comparing
2928 pointers with different levels of indirection.
2929
2930 * decl.c (grokdeclarator): The sub-call to grokdeclarator for
2931 class-local typedefs sets DECL_ARGUMENTS, so we need to clear it
2932 out.
2933
2934 * decl2.c (finish_anon_union): Don't die if the union has no
2935 members.
2936
2937 * decl.c (grokdeclarator): Undo changes to declspecs when we're done
2938 so that 'typedef int foo, bar;' will work.
2939
2940 * decl2.c (finish_file): Don't call expand_aggr_init for
2941 non-aggregates.
2942
2943 Mon Jul 25 00:03:10 1994 Teemu Torma (tot@trema.fi)
2944
2945 * decl.c (finish_function): We can't inline constructors and
2946 destructors under some conditions with -fpic, but don't unset
2947 DECL_INLINE.
2948
2949 Mon Jul 25 00:03:10 1994 Jason Merrill (jason@deneb.cygnus.com)
2950
2951 * typeck.c (build_object_ref): Make sure 'datum' is a valid object.
2952
2953 Sun Jul 24 14:19:31 1994 Jason Merrill (jason@deneb.cygnus.com)
2954
2955 * class.c (finish_struct): Don't set DECL_FIELD_BITPOS on
2956 non-fields.
2957 (finish_struct_methods): Use copy_assignment_arg_p.
2958
2959 * cvt.c (cp_convert): If expr is an OFFSET_REF, resolve it instead
2960 of giving an error.
2961
2962 * typeck.c (build_binary_op_nodefault): Don't set result_type if we
2963 don't know how to compare the operands.
2964
2965 * decl.c (grokdeclarator): Avoid seg fault when someone uses '__op'
2966 as a declarator-id in their program. Like the Linux headers do.
2967 Arrgh.
2968
2969 * tree.c (lvalue_p): Treat calls to functions returning objects by
2970 value as lvalues again.
2971
2972 * typeck.c (build_component_addr): Use convert_force to convert the
2973 pointer in case the component type is also a private base class.
2974
2975 * search.c (get_matching_virtual): Fix bogus warning of overloaded
2976 virtual.
2977
2978 * pt.c (overload_template_name): Set DECL_ARTIFICIAL on the created
2979 TYPE_DECL to fix bogus shadowing warnings.
2980
2981 Fri Jul 22 01:15:32 1994 Jason Merrill (jason@deneb.cygnus.com)
2982
2983 * init.c (expand_aggr_init_1): const and volatile mismatches do not
2984 prevent a TARGET_EXPR from initializing an object directly.
2985
2986 Tue Jul 19 17:55:37 1994 Jason Merrill (jason@deneb.cygnus.com)
2987
2988 * cvt.c (build_up_reference): Allow building up references to
2989 `this', don't warn about making references to artificial variables
2990 (like `this').
2991
2992 * tree.c (lvalue_p): `this' is not an lvalue.
2993
2994 * call.c (build_method_call): Accept using a typedef name (or
2995 template type parameter) for explicit destructor calls.
2996
2997 Wed Jul 13 03:57:54 1994 Jason Merrill (jason@deneb.cygnus.com)
2998
2999 * method.c (hack_identifier): Put back old code so lists of
3000 non-functions will be handled properly.
3001
3002 * cp-tree.h (TYPE_NEEDS_CONSTRUCTING): #if 0 out; this macro is now
3003 defined in the language-independent tree.h.
3004
3005 * tree.c (count_functions): Avoid bogus warning when compiling this
3006 function.
3007
3008 Mon Jul 11 18:37:20 1994 Jason Merrill (jason@deneb.cygnus.com)
3009
3010 * decl.c (grok_reference_init): Always save the initializer of a
3011 reference.
3012
3013 Fri Jul 8 17:41:46 1994 Mike Stump <mrs@cygnus.com>
3014
3015 * decl.c (cplus_expand_expr_stmt): Wrap statement expressions inside
3016 CLEANUP_POINT_EXPRs so that the stack slots can be reused.
3017 (disabled for now)
3018
3019 Fri Jul 8 12:59:38 1994 Jason Merrill (jason@deneb.cygnus.com)
3020
3021 * method.c (hack_identifier): Fix for new overloading.
3022
3023 * typeck.c (build_binary_op_nodefault): Don't mess with division by
3024 zero.
3025
3026 Fri Jul 8 13:20:28 1994 Gerald Baumgartner (gb@cs.purdue.edu)
3027
3028 * decl2.c (finish_file): Only call walk_sigtables, if
3029 flag_handle_signatures is turned on, don't waste time otherwise.
3030
3031 Fri Jul 8 02:27:41 1994 Jason Merrill (jason@deneb.cygnus.com)
3032
3033 * decl.c (push_overloaded_decl): Don't create overloads of one when
3034 shadowing a class type.
3035 * typeck.c (build_x_function_call): Complain about overloads of one.
3036
3037 * decl.c (grokdeclarator): Don't try to treat a char* as a tree.
3038 (grokdeclarator): Fix setting of TREE_STATIC.
3039 (start_decl): Clear DECL_IN_AGGR_P after calling duplicate_decls.
3040
3041 Thu Jul 7 22:20:46 1994 Gerald Baumgartner (gb@andros.cygnus.com)
3042
3043 * cp-tree.h (walk_sigtables): Created extern declaration.
3044 * decl2.c (walk_sigtables): Created function, patterned after
3045 walk_vtables, even though we only need it to write out sigtables.
3046 (finish_sigtable_vardecl): Created function.
3047 (finish_vtable_vardecl): Changed 0 to NULL_PTR.
3048 (finish_file): Call walk_sigtables.
3049
3050 * sig.c (build_signature_table_constructor): Mark class member
3051 function pointed to from signature table entry as addressable.
3052
3053 Thu Jul 7 13:39:37 1994 Jason Merrill (jason@deneb.cygnus.com)
3054
3055 * decl.c (start_decl): Check new decl of static member variable
3056 against the declaration in the class here.
3057 (grokvardecl): Instead of here.
3058
3059 * class.c (prepare_fresh_vtable): Call import_export_vtable if not
3060 -fvtable-thunks.
3061 (build_vtable): Ditto.
3062
3063 * decl2.c (import_export_vtable): Move logic for deciding the
3064 interface of a template class from here.
3065 (import_export_template): To here.
3066 (finish_vtable_vardecl): Call import_export_template before
3067 import_export_vtable.
3068
3069 Wed Jul 6 20:25:48 1994 Mike Stump <mrs@cygnus.com>
3070
3071 * except.c (init_exception_processing): Setup interim_eh_hook to
3072 call lang_interim_eh.
3073 * except.c (do_unwind): Propagate throw object value across
3074 stack unwinding.
3075 * except.c (saved_throw_value): Used to hold the value of the object
3076 being thrown. It is always a reference to the real value.
3077 * except.c (expand_start_catch_block): Add handling for the
3078 value of the exception object.
3079 * except.c (expand_start_catch_block): Add handler for the handler,
3080 so that throws inside the handler go to the outer block.
3081 * except.c (expand_end_catch_block): Ditto.
3082 * parse.y (handler_args): Use parm instead, as the other doesn't yet
3083 handle references correctly.
3084
3085 Wed Jul 6 17:55:32 1994 Per Bothner (bothner@kalessin.cygnus.com)
3086
3087 * decl2.c (mark_vtable_entries): If -ftable-thunks, set the
3088 vtable entry properly to abort.
3089
3090 Tue Jul 5 14:07:54 1994 Jason Merrill (jason@deneb.cygnus.com)
3091
3092 * typeck.c (build_binary_op_nodefault): Downgrade division by zero
3093 errors to warnings.
3094
3095 * call.c (build_overload_call_real): Handle fnname being a list of
3096 functions.
3097 * typeck.c (build_x_function_call): Pass list of functions to
3098 build_overload_call, not just the name.
3099 * tree.c (count_functions): Complain when called for invalid
3100 argument.
3101
3102 * decl.c (grokdeclarator): Fix settings of TREE_STATIC, TREE_PUBLIC
3103 and DECL_EXTERNAL on static members and initialized const members.
3104 * decl2.c (grokfield): Reflect this change.
3105
3106 Fri Jul 1 09:35:51 1994 Jason Merrill (jason@deneb.cygnus.com)
3107
3108 * parse.y (init): ANSI C++ does not forbid { }.
3109
3110 Thu Jun 30 00:35:22 1994 Jason Merrill (jason@deneb.cygnus.com)
3111
3112 * decl2.c (lang_decode_option): Set warn_nonvdtor along with -Wall.
3113 warn_nonvdtor defaults to off.
3114
3115 * class.c (instantiate_type): Use comptypes rather than relying on
3116 types to satisfy ==.
3117
3118 * decl.c (start_function): Set DECL_DEFER_OUTPUT on all inlines that
3119 might be static.
3120
3121 * tree.c (build_cplus_new): Never build WITH_CLEANUP_EXPRs.
3122
3123 * decl.c (grok_reference_init): Deal with ADDR_EXPRs of TARGET_EXPRs.
3124
3125 * cvt.c (cp_convert): Pass 0 to with_cleanup_p arg of
3126 build_cplus_new.
3127
3128 Wed Jun 29 22:31:09 1994 Jason Merrill (jason@deneb.cygnus.com)
3129
3130 * decl2.c (finish_file): Maybe consider static inlines multiple
3131 times, in case they reference each other.
3132
3133 Tue Jun 28 11:58:38 1994 Gerald Baumgartner (gb@cs.purdue.edu)
3134
3135 * class.c (finish_struct): Don't `cons_up_default_function's
3136 for signatures.
3137 (finish_struct): Handle an empty method_vec correctly.
3138
3139 * decl.c (grokdeclarator): Don't warn about a signature being
3140 empty in a signature pointer declaration if we only saw a
3141 forward declaration of the signature. Changed `warning's into
3142 `cp_warning's.
3143
3144 * sig.c (build_sigtable): Don't die if a null signature table
3145 constructor is returned.
3146 (build_signature_pointer_constructor): If the signature table
3147 constructor is null, the _sptr field is set to a null pointer
3148 and cast to the appropriate type. Make copies of all null
3149 pointers so that the type null_pointer_node doesn't get changed.
3150 (build_signature_table_constructor): Added comments.
3151
3152 * sig.c (build_signature_pointer_constructor): Complain if we
3153 try to assign to/initialize a signature pointer/reference of
3154 an undefined signature.
3155
3156 Mon Jun 27 14:05:16 1994 Gerald Baumgartner (gb@cs.purdue.edu)
3157
3158 * typeck2.c (store_init_value): Don't be pedantic about
3159 non-constant initializers of signature tables/pointers/references.
3160
3161 Fri Jun 24 16:49:41 1994 Gerald Baumgartner (gb@cs.purdue.edu)
3162
3163 * decl.c (grokdeclarator): If we are grokking an opaque typedef
3164 in a signature, don't complain about it begin static.
3165
3166 Wed Jun 29 16:44:45 1994 Mike Stump <mrs@cygnus.com>
3167
3168 Fixes a problem of the this pointer being wrong in virtual calls to
3169 methods that are not overridden in more derived classes.
3170
3171 * class.c (fixup_vtable_delta): New routine. It will fixup the
3172 delta entries in vtables, wheever they need updating.
3173 * class.c (finish_struct): Call the new routine for all virtual
3174 bases, as they can have different offsets, than those used in base
3175 classes that we derive our vtable from.
3176
3177 Tue Jun 28 23:49:28 1994 Jason Merrill (jason@deneb.cygnus.com)
3178
3179 * typeck.c (build_binary_op): Use the types before default
3180 conversions in the error message.
3181
3182 * *.c: Use c_build_type_variant instead of build_type_variant where
3183 the type might be an array.
3184
3185 * call.c (build_method_call): Call build_type_variant and
3186 build_reference_type in the right order.
3187 * decl.c (record_builtin_type): Ditto.
3188
3189 Wed Jun 29 16:58:53 1994 Jason Merrill (jason@deneb.cygnus.com)
3190
3191 * call.c (build_method_call): Call build_type_variant and
3192 build_reference_type in the right order.
3193 * decl.c (record_builtin_type): Ditto.
3194
3195 Tue Jun 28 23:49:28 1994 Jason Merrill (jason@deneb.cygnus.com)
3196
3197 * typeck.c (build_binary_op): Use the types before default
3198 conversions in the error message.
3199
3200 * *.c: Use c_build_type_variant instead of build_type_variant where
3201 the type might be an array.
3202
3203 Sat Jun 25 11:50:54 1994 Jason Merrill (jason@deneb.cygnus.com)
3204
3205 * cvt.c (convert_to_reference): Try UDC's before doing the
3206 reinterpret_cast thang, though.
3207
3208 Fri Jun 24 01:24:01 1994 Jason Merrill (jason@deneb.cygnus.com)
3209
3210 * typeck.c (c_expand_return): Don't USE the return value location
3211 after we've expanded the jump.
3212
3213 * decl2.c (finish_file): Make sure DECL_SAVED_INSNS is not 0 before
3214 trying to write out an inline.
3215
3216 * cvt.c (build_up_reference): Also do address adjustment when the
3217 target type uses MI.
3218 (convert_to_reference): Try UDCs only after built-in conversions.
3219 (build_type_conversion_1): Don't play games with the argument to the
3220 method.
3221 (build_type_conversion): #if 0 out code for binding to reference.
3222
3223 Thu Jun 23 00:22:28 1994 Jason Merrill (jason@deneb.cygnus.com)
3224
3225 * decl2.c (finish_file): Use TREE_SYMBOL_REFERENCED to decide
3226 whether to emit inlines.
3227
3228 * decl.c (grokdeclarator): Set explicit_int for decls that just
3229 specify, say, 'long'.
3230
3231 * init.c (do_friend): Do overload C functions (or call pushdecl,
3232 anyaway).
3233
3234 Wed Jun 22 13:40:49 1994 Jason Merrill (jason@deneb.cygnus.com)
3235
3236 * cvt.c (build_up_reference): Don't call readonly_error.
3237 (convert_to_reference): Propagate const and volatile from expr to
3238 its type.
3239
3240 * tree.c (lvalue_p): Random CALL_EXPRs are not lvalues.
3241
3242 * cvt.c (build_up_reference): Break out WITH_CLEANUP_EXPR when
3243 creating a temporary.
3244 (convert_to_reference): Lose excessive and incorrect trickiness.
3245 (cp_convert): Call build_cplus_new with with_cleanup_p set.
3246
3247 * typeck2.c (build_functional_cast): Ditto.
3248
3249 Tue Jun 21 17:38:38 1994 Jason Merrill (jason@deneb.cygnus.com)
3250
3251 * decl.c (grokdeclarator): signed, unsigned, long and short all
3252 imply 'int'.
3253
3254 * decl.c (grokdeclarator): Allow "this is a type" syntax.
3255 (grok_reference_init): Simplify and fix.
3256
3257 Sun Jun 19 17:08:48 1994 Jason Merrill (jason@deneb.cygnus.com)
3258
3259 * decl.c (grokdeclarator): pedwarn about a typedef that specifies no
3260 type.
3261
3262 Sat Jun 18 04:16:50 1994 Jason Merrill (jason@deneb.cygnus.com)
3263
3264 * decl.c (start_function): Move TREE_PUBLIC and DECL_EXTERNAL
3265 tinkering to after call to pushdecl.
3266
3267 Fri Jun 17 14:48:28 1994 Jason Merrill (jason@deneb.cygnus.com)
3268
3269 * call.c (build_method_call): Handle destructors for non-aggregate
3270 types properly.
3271
3272 Thu Jun 16 16:48:05 1994 Jason Merrill (jason@deneb.cygnus.com)
3273
3274 * call.c (build_method_call): Make sure that the name given for the
3275 destructor matches the constructor_name of the instance.
3276
3277 * pt.c (do_function_instantiation): A non-extern instantiation
3278 overrides a later extern one.
3279 (do_type_instantiation): Ditto.
3280
3281 Wed Jun 15 19:34:54 1994 Jason Merrill (jason@deneb.cygnus.com)
3282
3283 * init.c (expand_aggr_init): Use TYPE_MAIN_VARIANT to get the
3284 unqualified array type.
3285
3286 * cp-tree.h (EMPTY_CONSTRUCTOR_P): Tests whether NODE is a
3287 CONSTRUCTOR with no elements.
3288
3289 * decl.c (various): Lose empty_init_node.
3290 (finish_decl): Use EMPTY_CONSTRUCTOR_P, do the empty CONSTRUCTOR
3291 thing depending on the value of DECL_COMMON instead of
3292 flag_conserve_space, do the empty CONSTRUCTOR thing for types that
3293 don't have constructors, don't treat a real empty CONSTRUCTOR
3294 specially.
3295
3296 * typeck2.c (process_init_constructor): Don't treat empty_init_node
3297 specially.
3298
3299 Wed Jun 15 19:05:25 1994 Mike Stump <mrs@cygnus.com>
3300
3301 * class.c (override_one_vtable): Don't forget to merge in an old
3302 overrider when we wanted to reuse a vtable, but couldn't.
3303
3304 Wed Jun 15 15:03:16 1994 Jason Merrill (jason@deneb.cygnus.com)
3305
3306 * decl.c (start_decl): Put statics in common again.
3307
3308 * decl.c (grokdeclarator): Return NULL_TREE for an error rather than
3309 setting the type to error_mark_node.
3310
3311 * typeck.c (build_modify_expr): Build up a COMPOUND_EXPR for enum
3312 bitfield assignments.
3313
3314 Tue Jun 14 12:23:38 1994 Jason Merrill (jason@deneb.cygnus.com)
3315
3316 * decl.c (grok_op_properties): Const objects can be passed by value.
3317
3318 Mon Jun 13 03:10:59 1994 Jason Merrill (jason@deneb.cygnus.com)
3319
3320 * decl2.c (import_export_vtable): Force implicit instantiations to
3321 be interface_only when -fno-implicit-templates.
3322
3323 * decl.c (duplicate_decls): Redeclaring a class template name is an
3324 error.
3325
3326 * pt.c (end_template_decl): Call GNU_xref_decl for class templates.
3327 * xref.c (GNU_xref_decl): Support templates.
3328
3329 Sat Jun 11 17:09:05 1994 Jason Merrill (jason@deneb.cygnus.com)
3330
3331 * decl.c (grok_op_properties): Split out checking for whether this
3332 function should suppress the default assignment operator.
3333 * decl2.c (grok_function_init): Ditto.
3334 (copy_assignment_arg_p): New function do do just that.
3335 Now considers virtual assignment operators that take a base as an
3336 argument to count as copy assignment operators.
3337
3338 * search.c (dfs_debug_mark): Lose checks for DWARF_DEBUG and
3339 TREE_ASM_WRITTEN, as they are redundant.
3340
3341 * pt.c (end_template_decl): Don't try to set DECL_CLASS_CONTEXT on a
3342 decl that has no LANG_SPECIFIC part.
3343 (do_type_instantiation): Force the debugging information for this
3344 type to be emitted.
3345
3346 * decl.c (start_decl): Clear up uses of various types of templates
3347 (say sorry for static data members, rather than "invalid template").
3348 (expand_static_init): Fix initialization of static data members of
3349 template classes.
3350
3351 Fri Jun 10 00:41:19 1994 Jason Merrill (jason@deneb.cygnus.com)
3352
3353 * decl.c (grokdeclarator): Set DECL_CONTEXT on static data members.
3354
3355 * g++.c (main): Use -xc++-cpp-output for .i files.
3356
3357 * pt.c (tsubst): Give meaningful error about declaring template for
3358 a copy constructor which was not declared in the class template.
3359 (do_type_instantiation): Explicit instantiation before the class
3360 template is an error.
3361 (instantiate_template): Don't die if tsubst returns error_mark_node.
3362
3363 Thu Jun 9 19:04:59 1994 Jason Merrill (jason@deneb.cygnus.com)
3364
3365 Don't synthesize the copy assignment operator if the one in a base
3366 class is pure virtual.
3367 * cp-tree.h (TYPE_HAS_ABSTRACT_ASSIGN_REF): New macro to indicate
3368 whether the type has a pure virtual copy assignment operator.
3369 * class.c (finish_base_struct): Don't generate the copy assignment
3370 operator if a base class has a pure virtual one.
3371 * decl.c (grok_op_properties): Add disabled code to set
3372 TYPE_HAS_ABSTRACT_ASSIGN_REF with comment pointing to where it is
3373 actually set.
3374 * decl2.c (grok_function_init): Set TYPE_HAS_ABSTRACT_ASSIGN_REF.
3375
3376 * decl2.c (import_export_vtable): Always treat template
3377 instantiations as if write_virtuals >= 2, and treat implicit
3378 instantiations as external if -fno-implicit-templates.
3379 (finish_file): Output all pending inlines if
3380 flag_keep_inline_functions.
3381
3382 Wed Jun 8 20:48:02 1994 Mike Stump <mrs@cygnus.com>
3383
3384 * tree.c (layout_vbasetypes): Align virtual base classes inside
3385 complete objects, so that we don't core dump on machines such as
3386 SPARCs when we access members that require larger than normal
3387 alignments, such as a double. Also, we bump up the total alignment
3388 on the complete type, as necessary.
3389
3390 Wed Jun 8 16:18:14 1994 Jason Merrill (jason@deneb.cygnus.com)
3391
3392 * gxxint.texi (Free Store): New section with code for examining
3393 cookie.
3394 (Limitations of g++): Remove operator delete entry, since it is no
3395 longer accurate. Fix access control entry.
3396
3397 * typeck.c (build_unary_op): Pedwarn about taking the address of or
3398 incrementing a cast to non-reference type.
3399 (build_modify_expr): Use convert instead of convert_force again.
3400
3401 * search.c (get_base_distance): Use IS_AGGR_TYPE_CODE to check for
3402 class type, not == RECORD_TYPE.
3403
3404 * decl.c (grokdeclarator): Cope with grokfndecl returning NULL_TREE.
3405
3406 * typeck2.c (report_case_error): #if 0 out.
3407 * lex.c (real_yylex): Lose RANGE.
3408 * parse.y: Ditto.
3409
3410 Tue Jun 7 18:17:35 1994 Jason Merrill (jason@deneb.cygnus.com)
3411
3412 * parse.y (simple_stmt, case ranges): Use ELLIPSIS instead of RANGE.
3413
3414 Mon Jun 6 19:39:57 1994 Jason Merrill (jason@deneb.cygnus.com)
3415
3416 * typeck.c (build_c_cast): Don't shortcut conversions to the same
3417 type. Don't replace consts with their values here, since that's now
3418 done in cp_convert.
3419
3420 * cvt.c (cp_convert): When converting to bool, take
3421 integer_zero_node to false_node and all other INTEGER_CSTs to
3422 true_node.
3423 (build_type_conversion): Don't complain about multiple conversions
3424 to float if we're not really converting.
3425
3426 Fri Jun 3 02:10:56 1994 Jason Merrill (jason@deneb.cygnus.com)
3427
3428 Implement 'extern template class A<int>;' syntax for suppressing
3429 specific implicit instantiations.
3430 * cp-tree.h: Update prototypes for do_*_instantiation.
3431 * pt.c (do_pending_expansions): Don't compile 'extern' explicit
3432 instantiations.
3433 (do_function_instantiation): Set DECL_EXTERNAL on 'extern' explicit
3434 instantiations.
3435 (do_type_instantiation): Ditto.
3436 * parse.y (explicit_instantiation): Support 'extern template class
3437 A<int>;' syntax.
3438 * decl.c (start_function): Don't modify the settings of TREE_PUBLIC
3439 and DECL_EXTERNAL on explicit instantiations.
3440
3441 * cvt.c (cp_convert): Replace constants with their values before
3442 converting.
3443 (cp_convert): Consistently use 'e' instead of 'expr'.
3444
3445 Thu Jun 2 03:53:30 1994 Jason Merrill (jason@deneb.cygnus.com)
3446
3447 * typeck2.c (build_x_arrow): Resolve OFFSET_REFs first.
3448
3449 Wed Jun 1 18:57:35 1994 Jason Merrill (jason@deneb.cygnus.com)
3450
3451 * typeck2.c (digest_init): Handle initializing a pmf with an
3452 overloaded method.
3453 * typeck.c (build_ptrmemfunc): Handle overloaded methods.
3454
3455 * decl.c (pushtag): Use build_decl to make TYPE_DECLs.
3456 (xref_defn_tag): Ditto.
3457 * pt.c (process_template_parm): Ditto.
3458 (lookup_template_class): Ditto.
3459 (push_template_decls): Ditto.
3460 (instantiate_class_template): Ditto.
3461 (create_nested_upt): Ditto.
3462 * class.c (finish_struct): Don't try to set DECL_CLASS_CONTEXT on
3463 TYPE_DECLs.
3464
3465 * typeck.c (convert_arguments): Make sure type is not NULL before
3466 checking its TREE_CODE.
3467
3468 Wed Jun 1 17:40:39 1994 Mike Stump <mrs@cygnus.com>
3469
3470 * class.c (get_derived_offset): New routine.
3471 * class.c (finish_base_struct): Make sure we set BINFO_VTABLE and
3472 BINFO_VIRTUALS when we choose a new base class to inherit from.
3473 * class.c (modify_one_vtable): Use get_derived_offset to get the
3474 offset to the most base class subobject that we derived this binfo
3475 from.
3476 * class.c (finish_struct): Move code to calculate the
3477 DECL_FIELD_BITPOS of the vfield up, as we need might need it for
3478 new calls to get_derived_offset in modify_one_vtable.
3479
3480 Wed Jun 1 16:50:59 1994 Jason Merrill (jason@deneb.cygnus.com)
3481
3482 * init.c (build_member_call): Use build_pointer_type instead of
3483 TYPE_POINTER_TO.
3484
3485 Wed Jun 1 11:11:15 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
3486
3487 * decl.c (grokdeclarator): Make sure we have a DNAME set before we
3488 try to use it in an error.
3489
3490 Wed Jun 1 09:48:49 1994 Mike Stump <mrs@cygnus.com>
3491
3492 * typeck.c (convert_arguments, convert_for_initialization): Don't
3493 strip NOP_EXPRs, when we are converting to a reference.
3494
3495 Wed Jun 1 01:11:38 1994 Jason Merrill (jason@deneb.cygnus.com)
3496
3497 * typeck.c (build_modify_expr): Don't dereference references when
3498 initializing them.
3499
3500 * decl2.c (grokfield): Don't check for grokdeclarator returning
3501 error_mark_node any more.
3502
3503 * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
3504 (start_method): Return void_type_node instead of error_mark_node.
3505
3506 * typeck.c (build_modify_expr): Resolve offset refs earlier.
3507
3508 Tue May 31 16:06:58 1994 Jason Merrill (jason@deneb.cygnus.com)
3509
3510 * call.c (build_method_call): Resolve OFFSET_REFs in the object.
3511
3512 * typeck.c (build_modify_expr): Dereference references before trying
3513 to assign to them.
3514
3515 * call.c (build_method_call): Don't confuse type conversion
3516 operators with constructors.
3517 * typeck2.c (build_functional_cast): Just call build_c_cast if there
3518 was only one parameter.
3519 * method.c (build_typename_overload): Don't set
3520 IDENTIFIER_GLOBAL_VALUE on these identifiers.
3521 * decl.c (grok_op_properties): Warn about defining a type conversion
3522 operator that converts to a base class (or reference to it).
3523 * cvt.c (cp_convert): Don't try to use a type conversion operator
3524 when converting to a base class.
3525 (build_type_conversion_1): Don't call constructor_name_full on an
3526 identifier.
3527 * cp-tree.h (DERIVED_FROM_P): Should be self-explanatory.
3528
3529 * decl.c (start_decl): Don't complain that error_mark_node is an
3530 incomplete type.
3531 (finish_decl): Check for type == error_mark_node.
3532
3533 Mon May 30 23:38:55 1994 Jason Merrill (jason@deneb.cygnus.com)
3534
3535 * decl.c (start_function): Set DECL_DEFER_OUTPUT on implicit
3536 instantiations and inline members.
3537
3538 * spew.c (yylex): Set looking_for_template if the next token is a '<'.
3539
3540 * lex.h: Declare looking_for_template.
3541
3542 * decl.c (lookup_name_real): Use looking_for_template to arbitrate
3543 between type and template interpretations of an identifier.
3544
3545 Sat May 28 04:07:40 1994 Jason Merrill (jason@deneb.cygnus.com)
3546
3547 * pt.c (instantiate_template): Zero out p if we found a
3548 specialization.
3549
3550 * decl.c (grokdeclarator): Elucidate warning.
3551 (grokdeclarator): If pedantic AND -ansi, complain about long long.
3552
3553 Make explicit instantiation work reasonably. It is now appropriate
3554 to deprecate the use of -fexternal-templates.
3555 * pt.c (instantiate_template): Set DECL_TEMPLATE_SPECIALIZATION or
3556 DECL_IMPLICIT_INSTANTIATION on fndecl as appropriate.
3557 (end_template_instantiation): Reflect changes in USE_TEMPLATE
3558 semantics.
3559 (do_pending_expansions): if (!flag_implicit_templates) DECIDE(0);
3560 (do_function_instantiation): Don't set EXPLICIT_INST if
3561 flag_external_templates is set. Do set TREE_PUBLIC and DECL_EXTERN
3562 appropriately otherwise.
3563 (do_type_instantiation): Set interface info for class. Set
3564 TREE_PUBLIC and DECL_EXTERN for methods. Do none of this if
3565 flag_external_templates is set.
3566 * parse.y: Reflect changes in USE_TEMPLATE semantics.
3567 * decl2.c: New flag flag_implicit_templates determines whether or
3568 not implicit instantiations get emitted. This flag currently
3569 defaults to true, and must be true for -fexternal-templates to work.
3570 (finish_file): Consider flag_implement_inlines when
3571 setting DECL_EXTERNAL. Consider flag_implicit_templates when
3572 deciding whether or not to emit a static copy.
3573 * decl.c (start_function): Set TREE_PUBLIC and DECL_EXTERNAL
3574 properly for template instantiations.
3575 (start_method): Set DECL_IMPLICIT_INSTANTIATION on methods of a
3576 template class.
3577 * cp-tree.h (CLASSTYPE_USE_TEMPLATE): Change semantics.
3578 (DECL_USE_TEMPLATE): Parallel macro for FUNCTION and VAR_DECLs.
3579 (various others): Accessor macros for the above.
3580
3581 Fri May 27 13:57:40 1994 Jason Merrill (jason@deneb.cygnus.com)
3582
3583 * typeck.c (build_binary_op_nodefault): Division by constant zero is
3584 an error.
3585
3586 Fri May 27 13:50:15 1994 Mike Stump <mrs@cygnus.com>
3587
3588 * class.c (override_one_vtable): Don't modify things we don't own.
3589
3590 Fri May 27 01:42:58 1994 Jason Merrill (jason@deneb.cygnus.com)
3591
3592 * decl.c (finish_decl): Don't postpone processing the initializer of
3593 a decl with DECL_EXTERNAL set, and do call rest_of_compilation for a
3594 PUBLIC const at toplevel.
3595 (grokdeclarator): pedwarn about initializing non-const or
3596 non-integral statics in the class body.
3597
3598 * decl.c (pushtag): Don't try to set DECL_CLASS_CONTEXT on a
3599 TYPE_DECL.
3600
3601 * call.c (convert_harshness): Dereference reference on rhs before
3602 proceeding, properly grok passing const things to non-const
3603 references.
3604
3605 * typeck.c (build_unary_op): Soften error about taking the address
3606 of main() to a pedwarn.
3607
3608 * lex.c (default_copy_constructor_body): Unambiguously specify base
3609 classes (i.e. A((const class ::A&)_ctor_arg) ).
3610 (default_assign_ref_body): Ditto.
3611
3612 Thu May 26 13:13:55 1994 Gerald Baumgartner (gb@mexican.cygnus.com)
3613
3614 * decl2.c (grokfield): Don't complain about local signature
3615 method declaration without definition.
3616
3617 * call.c (convert_harshness): If `type' is a signature pointer
3618 and `parmtype' is a pointer to a signature, just return 0. We
3619 don't really convert in this case; it's a result of making the
3620 `this' parameter of a signature method a signature pointer.
3621
3622 * call.c (build_method_call): Distinguish calling the default copy
3623 constructor of a signature pointer/reference from a signature
3624 member function call.
3625
3626 Thu May 26 12:56:25 1994 Jason Merrill (jason@deneb.cygnus.com)
3627
3628 * decl2.c (grokfield): Don't set TREE_PUBLIC on member function
3629 declarations.
3630
3631 * decl.c (duplicate_decls): A previous function declaration as
3632 static overrides a subsequent non-static definition.
3633 (grokdeclarator): Don't set TREE_PUBLIC on inline method
3634 declarations.
3635
3636 Wed May 25 14:36:38 1994 Jason Merrill (jason@deneb.cygnus.com)
3637
3638 * decl.c (grokdeclarator): Handle initialization of static const
3639 members.
3640 (finish_decl): Ditto.
3641
3642 * decl2.c (grokfield): Allow initialization of static const members
3643 even when pedantic.
3644
3645 * decl2.c (grokfield): Deal with grokdeclarator returning
3646 error_mark_node.
3647
3648 * decl.c (grok_ctor_properties): Return 0 for A(A) constructor.
3649 (grokfndecl): Check the return value of grok_ctor_properties.
3650 (start_method): Ditto.
3651
3652 * parse.y (absdcl): Expand type_quals inline.
3653
3654 Tue May 24 19:10:32 1994 Jason Merrill (jason@deneb.cygnus.com)
3655
3656 * decl.c (pushtag): Use IS_AGGR_TYPE rather than checking for a
3657 RECORD_TYPE.
3658
3659 Tue May 24 18:09:16 1994 Per Bothner (bothner@kalessin.cygnus.com)
3660
3661 * cp-tree.h (VTABLE_NAME_FORMAT): If flag_vtable_thunks,
3662 always use "__vt_%s".
3663 * decl2.c (finish_vtable_vardecl): Don't consider abstract virtuals
3664 when looking for a "sentinal" method (to decide on emitting vtables).
3665 * decl2.c (finish_file): Scan all decls for thunks that need
3666 to be emitted.
3667 * decl2.c (finish_vtable_vardecl): Don't bother calling emit_thunk.
3668 * method.c (make_thunk): Use a more meaningful label. If there
3669 exists a matching top-level THUNK_DECL re-use it; otherwise
3670 create a new THUNK_DECL (and declare it).
3671 * method.c (emit_thunk): Make thunk external/public depending
3672 on the underlying method.
3673
3674 Tue May 24 00:22:04 1994 Jason Merrill (jason@deneb.cygnus.com)
3675
3676 * pt.c (tsubst): Use lookup_name_nonclass to find guiding decls, not
3677 lookup_name.
3678
3679 * call.c (build_overload_call_real): Don't immediately pick a
3680 function which matches perfectly.
3681
3682 * decl.c (grokdeclarator): Use c_build_type_variant for arrays.
3683 (grokdeclarator): Warn about, and throw away, cv-quals attached to a
3684 reference (like 'int &const j').
3685
3686 * typeck.c (convert_arguments): Don't mess with i for methods.
3687 * call.c (build_method_call): Pass the function decl to
3688 convert_arguments.
3689
3690 * typeck.c (comp_ptr_ttypes_real): New function. Implements the
3691 checking for which multi-level pointer conversions are allowed.
3692 (comp_target_types): Call it.
3693 (convert_for_assignment): Check const parity on the ultimate target
3694 type, too. And make those warnings pedwarns.
3695
3696 Mon May 23 14:11:24 1994 Jason Merrill (jason@deneb.cygnus.com)
3697
3698 * error.c (dump_char): Use TARGET_* for character constants.
3699
3700 Mon May 23 13:03:03 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
3701
3702 * tree.c (debug_no_list_hash): Make static.
3703
3704 * decl.c (decls_match): Say the types don't match if newdecl ends up
3705 with a null type, after we've checked if olddecl does.
3706 (pushdecl): Check if the decls themselves match before looking for
3707 an extern redeclared as static, to avoid inappropriate and incorrect
3708 warnings.
3709
3710 Fri May 20 14:04:34 1994 Jason Merrill (jason@deneb.cygnus.com)
3711
3712 * decl.c (grokdeclarator): Make warning about duplicate short, etc.
3713 a pedwarn.
3714
3715 * typeck.c (build_c_cast): Casting to function or method type is an
3716 error.
3717
3718 * class.c (finish_struct): Make warning for anonymous class with no
3719 instances a pedwarn.
3720
3721 * Makefile.in (stamp-parse): Expect a s/r conflict.
3722
3723 * typeck.c (build_modify_expr): pedwarn about using a non-lvalue
3724 cast as an lvalue.
3725
3726 Thu May 19 12:08:48 1994 Jason Merrill (jason@deneb.cygnus.com)
3727
3728 * cvt.c (type_promotes_to): Make sure bool promotes to int rather
3729 than unsigned on platforms where sizeof(char)==sizeof(int).
3730
3731 Wed May 18 14:27:06 1994 Jason Merrill (jason@deneb.cygnus.com)
3732
3733 * typeck.c (build_c_cast): Tack on a NOP_EXPR when casting to
3734 another variant.
3735 (build_modify_expr): Don't strip NOP_EXPRs, and don't get tricky
3736 and treat them as lvalues.
3737
3738 * decl.c (shadow_tag): Do complain about forward declarations of
3739 enums and empty declarations.
3740 * parse.y: Don't complain about forward declarations of enums and
3741 empty declarations.
3742
3743 * typeck.c (convert_for_assignment): Complain about changing
3744 the signedness of a pointer's target type.
3745
3746 * parse.y (stmt): Move duplicated code for checking case values from
3747 here.
3748 * decl2.c (check_cp_case_value): To here. And add a call to
3749 constant_expression_warning.
3750
3751 * typeck.c (convert_for_assignment): Don't complain about assigning
3752 a negative value to bool.
3753
3754 * decl.c (init_decl_processing): Make bool unsigned.
3755
3756 * class.c (finish_struct): Allow bool bitfields.
3757
3758 Wed May 18 12:35:27 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
3759
3760 * Make-lang.in (c++.install-man): Get g++.1 from $(srcdir)/cp.
3761
3762 Wed May 18 03:28:35 1994 Jason Merrill (jason@deneb.cygnus.com)
3763
3764 * cvt.c (build_type_conversion): Lose special handling of
3765 truthvalues.
3766
3767 * search.c (dfs_pushdecls): Improve shadowing warning.
3768
3769 Tue May 17 13:34:46 1994 Jason Merrill (jason@deneb.cygnus.com)
3770
3771 * init.c (build_delete): Throw away const and volatile on `this'.
3772
3773 * decl.c (finish_enum): Put the constants in TYPE_VALUES again,
3774 rather than the enumerators.
3775 (pushtag): s/cdecl/c_decl/g
3776
3777 Mon May 16 23:04:01 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
3778
3779 * cp/typeck.c (common_type): Attribute merging.
3780 (comp_types): Utilise COMP_TYPE_ATTRIBUTES macro.
3781
3782 * cp/parse.y: Revamp attribute parsing.
3783
3784 Mon May 16 01:40:34 1994 Jason Merrill (jason@deneb.cygnus.com)
3785
3786 * decl.c (shadow_tag): Also check for inappropriate use of auto and
3787 register.
3788
3789 * method.c (build_overload_name): Clarify that the illegal case is a
3790 pointer or reference to array of unknown bound.
3791
3792 * error.c (dump_type_prefix): Print references to arrays properly.
3793
3794 * typeck.c (various): Be more helpful in pointer
3795 comparison diagnostics.
3796
3797 * tree.c (lvalue_p): MODIFY_EXPRs are lvalues again. Isn't this
3798 fun?
3799
3800 * parse.y: Also catch an error after valid stmts.
3801
3802 * search.c (dfs_init_vbase_pointers): Don't abort because `this' is
3803 const.
3804
3805 * typeck.c (convert_for_initialization): If call to
3806 convert_to_reference generated a diagnostic, print out the parm
3807 number and function decl if any.
3808
3809 * errfn.c (cp_thing): Check atarg1 to determine whether or not we're
3810 specifying a line, not atarg.
3811
3812 * tree.c (build_cplus_method_type): Always make `this' const.
3813
3814 * decl2.c (grokclassfn): If -fthis-is-variable and this function is
3815 a constructor or destructor, make `this' non-const.
3816
3817 * typeck.c (build_modify_expr): Don't warn specially about
3818 assignment to `this' here anymore, since it will be caught by the
3819 usual machinery.
3820
3821 * various: Disallow specific GNU extensions (variable-size arrays,
3822 etc.) when flag_ansi is set, not necessarily when pedantic is set,
3823 so that people can compile with -pedantic-errors for tighter const
3824 checking and such without losing desirable extensions.
3825
3826 * typeck2.c (build_functional_cast): Call build_method_call with
3827 LOOKUP_PROTECT.
3828 (process_init_constructor): Only process FIELD_DECLs.
3829
3830 * decl.c (finish_decl): Also force static consts with no explicit
3831 initializer that need constructing into the data segment.
3832
3833 * init.c (build_delete): Undo last patch, as it interferes with
3834 automatic cleanups.
3835
3836 Sat May 14 01:59:31 1994 Jason Merrill (jason@deneb.cygnus.com)
3837
3838 * call.c, class.h, cp-tree.h, cvt.c, decl2.c: Lose old overloading
3839 code.
3840
3841 * init.c (build_delete): pedwarn about using plain delete to delete
3842 an array.
3843
3844 Fri May 13 16:45:07 1994 Jason Merrill (jason@deneb.cygnus.com)
3845
3846 * typeck.c (comp_target_types): Be more helpful in contravariance
3847 warnings, and make them pedwarns.
3848
3849 * decl.c (grokdeclarator): Use decl_context to decide whether or not
3850 this is an access declaration.
3851
3852 * class.c (finish_struct_bits): Set TYPE_HAS_INT_CONVERSION if it
3853 has a conversion to enum or bool, too.
3854
3855 Fri May 13 16:31:27 1994 Mike Stump <mrs@cygnus.com>
3856
3857 * method.c (emit_thunk): Make declaration for
3858 current_call_is_indirect local (needed for hppa).
3859
3860 Fri May 13 16:16:37 1994 Jason Merrill (jason@deneb.cygnus.com)
3861
3862 * pt.c (uses_template_parms): Grok BOOLEAN_TYPE.
3863 (tsubst): Ditto.
3864
3865 Fri May 13 16:23:32 1994 Mike Stump <mrs@cygnus.com>
3866
3867 * pt.c (tsubst): If there is already a function for this expansion,
3868 use it.
3869 * pt.c (instantiate_template): Ditto.
3870
3871 Fri May 13 10:30:42 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
3872
3873 * parse.y (implicitly_scoped_stmt, simple_stmt case): Use
3874 kept_level_p for MARK_ENDS argument to expand_end_bindings, to avoid
3875 generating debug info for unemitted symbols on some systems.
3876
3877 * cp-tree.h (build_static_cast, build_reinterpret_cast,
3878 build_const_cast): Add declarations.
3879
3880 Fri May 13 09:50:31 1994 Mike Stump <mrs@cygnus.com>
3881
3882 * search.c (expand_indirect_vtbls_init): Fix breakage from Apr 27
3883 fix. We now try get_binfo, and if that doesn't find what we want,
3884 we go back to the old method, which still sometimes fails.
3885
3886 Fri May 13 01:43:18 1994 Jason Merrill (jason@deneb.cygnus.com)
3887
3888 * parse.y (initdcl): Call cplus_decl_attributes on the right
3889 variable.
3890 * decl2.c (cplus_decl_attributes): Don't call decl_attributes for
3891 void_type_node.
3892
3893 * typeck.c (build_binary_op_nodefault): Change result_type for
3894 comparison ops to bool.
3895 (build_binary_op): Convert args of && and || to bool.
3896 * cvt.c (build_default_binary_type_conversion): Convert args of &&
3897 and || to bool.
3898 (build_default_unary_type_conversion): Convert arg of ! to bool.
3899 (type_promotes_to): bool promotes to int.
3900
3901 Fri May 13 01:43:18 1994 Mike Stump <mrs@cygnus.com>
3902
3903 Implement the new builtin `bool' type.
3904 * typeck.c (build_binary_op_nodefault): Convert args of && and || to
3905 bool.
3906 (build_unary_op): Convert arg of ! to bool.
3907 * parse.y: Know true and false. Use bool_truthvalue_conversion.
3908 * method.c (build_overload_value): Know bool.
3909 (build_overload_name): Ditto.
3910 * lex.c (init_lex): Set up RID_BOOL.
3911 * gxx.gperf: Add bool, true, false.
3912 * error.c (*): Know bool.
3913 * decl.c (init_decl_processing): Set up bool, true, false.
3914 * cvt.c (cp_convert): Handle conversion to bool.
3915 (build_type_conversion): Ditto.
3916 * *.c: Accept bool where integers and enums are accepted (use
3917 INTEGRAL_CODE_P macro).
3918
3919 Thu May 12 19:13:54 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk)
3920
3921 * g++.c: Use #ifdef for __MSDOS__, not #if.
3922
3923 Thu May 12 18:05:18 1994 Mike Stump <mrs@cygnus.com>
3924
3925 * decl2.c (lang_f_options): Handle -fshort-temps. -fshort-temps
3926 gives old behavior , and destroys temporaries earlier. Default
3927 behavior now conforms to the ANSI working paper.
3928
3929 Thu May 12 14:45:35 1994 Jason Merrill (jason@deneb.cygnus.com)
3930
3931 * typeck.c (build_modify_expr): Understand MODIFY_EXPR as an lvalue.
3932 Use convert_force to convert the result of a recursive call when we
3933 are dealing with a NOP_EXPR. Don't automatically wrap MODIFY_EXPRs
3934 in COMPOUND_EXPRs any more.
3935 (various): Lose pedantic_lvalue_warning.
3936 (unary_complex_lvalue): Understand MODIFY_EXPR.
3937
3938 * cvt.c (convert_to_reference): Allow DECL to be error_mark_node if
3939 we don't know what we're initializing.
3940
3941 Wed May 11 01:59:36 1994 Jason Merrill (jason@deneb.cygnus.com)
3942
3943 * cvt.c (convert_to_reference): Modify to use convtype parameter.
3944 Only create temporaries when initializing a reference, not when
3945 casting.
3946 (cp_convert): New main function.
3947 (convert): Call cp_convert.
3948 * cvt.c, decl.c, typeck.c: Fix calls to convert_to_reference.
3949 * cp-tree.h (CONV_*): New constants used by conversion code for
3950 selecting conversions to perform.
3951
3952 * tree.c (lvalue_p): MODIFY_EXPRs are no longer lvalues.
3953
3954 * typeck.c (build_{static,reinterpret,const_cast): Stubs that just
3955 call build_c_cast.
3956 * parse.y: Add {static,reinterpret,const}_cast.
3957 * gxx.gperf: Ditto.
3958
3959 * typeck.c (common_type): Allow methods with basetypes of different
3960 UPTs.
3961 (comptypes): Deal with UPTs.
3962 (build_modify_expr): Wrap all MODIFY_EXPRs in a COMPOUND_EXPR.
3963
3964 * pt.c (end_template_decl): Check for multiple definitions of member
3965 templates.
3966
3967 * call.c (build_method_call): Complain about calling an abstract
3968 virtual from a constructor.
3969
3970 * typeck.c (pointer_int_sum): Check for the integer operand being 0
3971 after checking the validity of the pointer operand.
3972
3973 * typeck2.c (digest_init): Pedwarn about string initializer being
3974 too long.
3975
3976 Tue May 10 12:10:28 1994 Jason Merrill (jason@deneb.cygnus.com)
3977
3978 * decl.c (push_overloaded_decl): Only throw away a builtin if the
3979 decl in question is the artificial one.
3980
3981 * parse.y (simple_stmt, switch): Use implicitly_scoped_stmt because
3982 expand_{start,end}_case cannot happen in the middle of a block.
3983
3984 * cvt.c (build_type_conversion_1): Use convert again.
3985
3986 Tue May 10 11:52:04 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
3987
3988 * typeck2.c (digest_init): Make sure we check for signed and
3989 unsigned chars as well when warning about string initializers.
3990
3991 * init.c (emit_base_init): Check if there's a DECL_NAME on the
3992 member before trying to do an initialization for it.
3993
3994 Tue May 10 11:34:37 1994 Mike Stump <mrs@cygnus.com>
3995
3996 * except.c: Don't do anything useful when cross compiling.
3997
3998 Tue May 10 03:04:13 1994 Jason Merrill (jason@deneb.cygnus.com)
3999
4000 * decl.c (duplicate_decls): Fix up handling of builtins yet again.
4001 (push_overloaded_decl): Ditto.
4002
4003 * cvt.c (convert): Don't look for void type conversion.
4004
4005 Mon May 9 18:05:41 1994 Jason Merrill (jason@deneb.cygnus.com)
4006
4007 * init.c (do_friend): Only do a pushdecl for friends, not
4008 pushdecl_top_level.
4009
4010 Mon May 9 13:36:34 1994 Jim Wilson (wilson@sphagnum.cygnus.com)
4011
4012 * decl.c (lookup_name_current_level): Put empty statement after
4013 the label OUT to make the code valid C.
4014
4015 Mon May 9 12:20:57 1994 Jason Merrill (jason@deneb.cygnus.com)
4016
4017 * typeck.c (build_binary_op_nodefault): Only complain about
4018 comparing void * and a function pointer if void * is smaller.
4019
4020 Sun May 8 01:29:13 1994 Jason Merrill (jason@deneb.cygnus.com)
4021
4022 * decl.c (lookup_name_current_level): Move through temporary binding
4023 levels.
4024
4025 * parse.y (already_scoped_stmt): Revive.
4026 (simple_stmt): Use it again.
4027
4028 * decl.c (poplevel): Always call poplevel recursively if we're
4029 dealing with a temporary binding level.
4030
4031 Sat May 7 10:52:28 1994 Mike Stump <mrs@cygnus.com>
4032
4033 * decl.c (finish_decl): Make sure we run cleanups for initial values
4034 of decls. Cures memory leak.
4035 * decl.c (expand_static_init): Ditto for static variables.
4036 * decl2.c (finish_file): Ditto for globals.
4037
4038 Sat May 7 03:57:44 1994 Jason Merrill (jason@deneb.cygnus.com)
4039
4040 * typeck.c (commonparms): Don't complain about redefining default
4041 args.
4042
4043 * decl.c (duplicate_decls): Don't complain twice about conflicting
4044 function decls.
4045 (decls_match): Don't look at default args.
4046 (redeclaration_error_message): Complain about redefining default
4047 args.
4048
4049 * call.c (build_overload_call_real): Also deal with guiding
4050 declarations coming BEFORE the template decl.
4051
4052 * pt.c (unify): Allow different parms to have different
4053 cv-qualifiers.
4054 (unify): Allow trivial conversions on non-template parms.
4055
4056 Fri May 6 03:53:23 1994 Jason Merrill (jason@deneb.cygnus.com)
4057
4058 * pt.c (tsubst): Support OFFSET_TYPEs.
4059 (unify): Ditto.
4060
4061 * decl2.c (finish_decl_parsing): Call push_nested_class with a type.
4062
4063 * init.c (build_offset_ref): Fix error message.
4064 * search.c (lookup_field): Ditto.
4065
4066 * call.c (build_scoped_method_call): Pass binfo to
4067 build_method_call.
4068 * typeck.c (build_object_ref): Ditto.
4069
4070 * typeck2.c (binfo_or_else): Don't return a _TYPE.
4071
4072 * class.c (finish_struct): Don't complain about re-use of inherited
4073 names or shadowing of type decls.
4074 * decl.c (pushdecl_class_level): Ditto.
4075
4076 * decl.c (finish_enum): Set the type of all the enums.
4077
4078 * class.c (finish_struct): Don't get confused by access decls.
4079
4080 * cp-tree.h (TYPE_MAIN_DECL): New macro to get the _DECL for a
4081 _TYPE. You can stop using TYPE_NAME for that now.
4082
4083 * parse.y: Lose doing_explicit (check $0 instead).
4084 * gxx.gperf: 'template' now has a RID.
4085 * lex.h (rid): Ditto.
4086 * lex.c (init_lex): Set up the RID for 'template'.
4087
4088 * parse.y (type_specifier_seq): typed_typespecs or
4089 nonempty_type_quals. Use it.
4090 (handler_args): Fix bogus syntax.
4091 (raise_identifier{,s}, optional_identifier): Lose.
4092 * except.c (expand_start_catch_block): Use grokdeclarator to parse
4093 the catch variable.
4094 (init_exception_processing): The second argument to
4095 __throw_type_match is ptr_type_node.
4096
4097 Fri May 6 07:18:54 1994 Chip Salzenberg (chip@fin)
4098
4099 [ change propagated from c-decl.c of snapshot 940429 ]
4100 * cp/decl.c (finish_decl): Setting asmspec_tree should not
4101 zero out the old RTL.
4102
4103 Fri May 6 01:25:38 1994 Mike Stump <mrs@cygnus.com>
4104
4105 Add alpha exception handling support to the compiler.
4106 Quick and dirty backend in except.c.
4107
4108 * cp/*: Remove most remnants of old exception handling support.
4109 * decl.c (finish_function): Call expand_exception_blocks to put
4110 the exception hanlding blocks at the end of the function.
4111 * dec.c (hack_incomplete_structures): Make sure expand_decl_cleanup
4112 comes after expand_decl_init.
4113 * except.c: Reimplementation.
4114 * expr.c (cplus_expand_expr): Handle THROW_EXPRs.
4115 * lex.c (init_lex): Always have catch, try and throw be reserved
4116 words, so that we may always parse exception handling.
4117 * parse.y: Cleanup to support new interface into exception handling.
4118 * tree.def (THROW_EXPR): Add.
4119
4120 Thu May 5 17:35:37 1994 Jason Merrill (jason@deneb.cygnus.com)
4121
4122 * parse.y (simple_stmt, for loops): Use implicitly_scoped_stmt.
4123 (various): Lose .kindof_pushlevel and partially_scoped_stmt.
4124
4125 Thu May 5 16:17:27 1994 Kung Hsu (kung@mexican.cygnus.com)
4126
4127 * parse.y (already_scoped_stmt): move expand_end_binding() to
4128 fix the unmatched LBB/LBE in stabs.
4129
4130 Thu May 5 14:36:17 1994 Jason Merrill (jason@deneb.cygnus.com)
4131
4132 * decl.c (set_nested_typename): Set TREE_MANGLED on the new
4133 identifiers.
4134 (pushdecl): Check TREE_MANGLED.
4135 (xref_tag): Ditto.
4136 * cp-tree.h (TREE_MANGLED): This identifier is a
4137 DECL_NESTED_TYPENAME (named to allow for future use to denote
4138 mangled function names as well).
4139
4140 Implement inconsistency checking specified in [class.scope0].
4141 * decl.c (lookup_name_real): Don't set ICV here after all.
4142 (finish_enum): Also set the type of the enumerators themselves.
4143 (build_enumerator): Put the CONST_DECL in the list instead of its
4144 initial value.
4145 (pushdecl_class_level): Check inconsistent use of a name in the
4146 class body.
4147 * class.c (finish_struct): Check inconsistent use of a name in the
4148 class body. Don't set DECL_CONTEXT on types here anymore.
4149 * parse.y (qualified_type_name): Note that the identifier has now
4150 been used (as a type) in the class body.
4151 * lex.c (do_identifier): Note that the identifier has now been used
4152 (as a constant) in the class body.
4153 * error.c (dump_decl): Print type and enum decls better.
4154
4155 Thu May 5 09:35:35 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
4156
4157 * typeck.c (build_modify_expr): Warn about assignment to `this'.
4158
4159 Wed May 4 15:55:49 1994 Jason Merrill (jason@deneb.cygnus.com)
4160
4161 * init.c (build_delete): Use the global operator delete when
4162 requested.
4163
4164 * decl.c (lookup_name_real): If we find the type we're looking in a
4165 base class while defining a class, set IDENTIFIER_CLASS_VALUE for
4166 the type.
4167
4168 * class.c (finish_struct): Remove a couple of dependencies on
4169 language linkage.
4170
4171 * decl.c (pushtag): Classes do nest in extern "C" blocks.
4172 (pushdecl): Only set DECL_NESTED_TYPENAME on the canonical one for
4173 the type.
4174 (pushtag): Remove another dependency on the language linkage.
4175
4176 * lex.c (cons_up_default_function): Don't set DECL_CLASS_CONTEXT to
4177 a const-qualified type.
4178
4179 * decl.c (push_overloaded_decl): Throw away built-in decls here.
4180 (duplicate_decls): Instead of here.
4181
4182 Wed May 4 15:27:40 1994 Per Bothner (bothner@kalessin.cygnus.com)
4183
4184 * typeck.c (get_member_function_from_ptrfunc): Do The Right
4185 Thing (I hope) if we're using thunks.
4186
4187 Wed May 4 13:52:38 1994 Jason Merrill (jason@deneb.cygnus.com)
4188
4189 * parse.y (specialization): aggr template_type_name ';'.
4190 (named_class_head_sans_basetype): Use it.
4191 (explicit_instantiation): Ditto.
4192 (tmpl.2): Revert.
4193
4194 * cvt.c (build_type_conversion_1): Use convert_for_initialization,
4195 rather than convert, to do conversions after the UDC.
4196
4197 * cp-tree.h (SHARED_MEMBER_P): This member is shared between all
4198 instances of the class.
4199
4200 * search.c (lookup_field): If the entity found by two routes is the
4201 same, it's not ambiguous.
4202
4203 Wed May 4 12:10:00 1994 Per Bothner (bothner@kalessin.cygnus.com)
4204
4205 * decl.c (lookup_name_real): Check for a NULL TREE_VALUE,
4206 to prevent the compiler from crashing ...
4207
4208 Wed May 4 11:19:45 1994 Jason Merrill (jason@deneb.cygnus.com)
4209
4210 * call.c (build_method_call): If we don't have an object, check
4211 basetype_path to figure out where to look up the function.
4212
4213 * typeck.c (convert_for_initialization): Pass TYPE_BINFO (type) to
4214 build_method_call in case exp is NULL_TREE.
4215
4216 Tue May 3 16:02:53 1994 Per Bothner (bothner@kalessin.cygnus.com)
4217
4218 Give a vtable entries a unique named type, for the sake of gdb.
4219 * class.c (build_vtable_entry): The addres of a thunk now has
4220 type vtable_entry_type, not ptr_type_node.
4221 * method.c (make_thunk): Fix type of THUNK_DECL.
4222 * class.c (add_virtual_function, override_one_vtable): Use
4223 vfunc_ptr_type_node, instead of ptr_type_node.
4224 * cp-tree.h (vfunc_ptr_type_node): New macro.
4225 * decl.c (init_decl_processing): Make vtable_entry_type
4226 be a unique type of pointer to a unique function type.
4227
4228 Tue May 3 09:20:44 1994 Jason Merrill (jason@deneb.cygnus.com)
4229
4230 * parse.y (do_explicit): Sets doing_explicit to 1.
4231 (explicit_instantiation): Use do_explicit rather than TEMPLATE
4232 directly, add "do_explicit error" rule.
4233 (datadef): Set doing_explicit to 0 after an explicit instantiation.
4234 (tmpl.2): Don't instantiate if we see a ';' unless we're doing an
4235 explicit instantiation.
4236 (named_class_head_sans_basetype): Remove aggr template_type_name
4237 ';' again.
4238
4239 Mon May 2 23:17:21 1994 Jason Merrill (jason@deneb.cygnus.com)
4240
4241 * search.c (lookup_nested_tag): Lose.
4242
4243 * decl2.c (grokfield): Set DECL_CONTEXT on TYPE_DECLs.
4244 (lookup_name_nonclass): Lose.
4245
4246 * decl.c (poplevel_class): Add force parameter.
4247 (lookup_name_real): Fix handling of explicit scoping which specifies
4248 a class currently being defined. Add 'nonclass' argument.
4249 (lookup_name, lookup_name_nonclass): Shells for lookup_name_real.
4250
4251 * class.c (finish_struct): Don't unset IDENTIFIER_CLASS_VALUEs here.
4252 (popclass): Force clearing of IDENTIFIER_CLASS_VALUEs if we're being
4253 called from finish_struct.
4254
4255 Mon May 2 19:06:21 1994 Per Bothner (bothner@kalessin.cygnus.com)
4256
4257 * decl.c (init_decl_processing), cp-tree.h: Removed memptr_type.
4258 (It seeems redundant, given build_ptrmemfunc_type.)
4259 * typeck.c (get_member_function_from_ptrfunc), gc.c (build_headof,
4260 build_classof): Use vtable_entry_type instead of memptr_type.
4261 * method.c (emit_thunk): Call poplevel with functionbody==0
4262 to prevent DECL_INITIAL being set to a BLOCK.
4263
4264 Mon May 2 15:02:11 1994 Jason Merrill (jason@deneb.cygnus.com)
4265
4266 * parse.y (named_class_head_sans_basetype): Add "aggr
4267 template_type_name ';'" rule for forward declaration of
4268 specializations.
4269
4270 Mon May 2 15:02:11 1994 Jason Merrill (jason@deneb.cygnus.com)
4271
4272 * class.c (instantiate_type): Deal with pmf's.
4273
4274 * Make-lang.in (cc1plus): Don't depend on OBJS or BC_OBJS, since
4275 stamp-objlist does.
4276
4277 * Makefile.in (../cc1plus): Depend on OBJDEPS.
4278 (OBJDEPS): Dependency version of OBJS.
4279
4280 Mon May 2 12:51:31 1994 Kung Hsu (kung@mexican.cygnus.com)
4281
4282 * search.c (dfs_debug_mark): unmark TYPE_DECL_SUPPRESS_DEBUG, not
4283 DECL_IGNORED_P.
4284
4285 Fri Apr 29 12:29:56 1994 Jason Merrill (jason@deneb.cygnus.com)
4286
4287 * class.c (finish_struct): Clear out memory of local tags. And
4288 typedefs.
4289
4290 * decl2.c (grokclassfn): Don't set DECL_CONTEXT to a cv-qualified
4291 type.
4292 * search.c (get_matching_virtual): Be more helpful in error message.
4293
4294 * *: Use DECL_ARTIFICIAL (renamed from DECL_SYNTHESIZED).
4295
4296 * lex.c (default_assign_ref_body): Expect TYPE_NESTED_NAME to work.
4297 (default_copy_constructor_body): Ditto.
4298
4299 * class.c (finish_struct): Don't gratuitously create multiple decls
4300 for nested classes.
4301
4302 Thu Apr 28 23:39:38 1994 Jason Merrill (jason@deneb.cygnus.com)
4303
4304 Avoid clobbering the arg types of other functions when reverting
4305 static member functions.
4306 * decl.c (revert_static_member_fn): Rearrange arguments, don't
4307 require values for 'fn' and 'argtypes', add warning to comment
4308 above.
4309 (decls_match): Rearrange arguments in call to rsmf.
4310 (grok_op_properties): Don't pass values for fn and argtypes.
4311 * pt.c (instantiate_template): Don't pass values for fn and argtypes.
4312
4313 Thu Apr 28 16:29:11 1994 Doug Evans (dje@canuck.cygnus.com)
4314
4315 * Make-lang.in (cc1plus): Depend on stamp-objlist.
4316 * Makefile.in (BC_OBJS): Delete.
4317 (OBJS): Cat ../stamp-objlist to get language independent files.
4318 Include ../c-common.o.
4319 (../cc1plus): Delete reference to BC_OBJS.
4320
4321 Thu Apr 28 02:12:08 1994 Jason Merrill (jason@deneb.cygnus.com)
4322
4323 * search.c (compute_access): No really, deal with static members
4324 properly. Would I lie to you?
4325
4326 Implement lexical hiding of function declarations.
4327 * pt.c (tsubst): Use lookup_name to look for function decls to guide
4328 instantiation.
4329 * method.c (build_opfncall): Use lookup_name_nonclass to look for
4330 non-member functions.
4331 * init.c (do_friend): Use lookup_name_nonclass to look for
4332 functions.
4333 * error.c (ident_fndecl): Use lookup_name to look for functions.
4334 * decl2.c (lookup_name_nonclass): New function, skips over
4335 CLASS_VALUE.
4336 * decl.c (struct binding_level): Lose overloads_shadowed field.
4337 (poplevel): Don't deal with overloads_shadowed.
4338 (push_overloaded_decl): Do lexical hiding for functions.
4339 * class.c (instantiate_type): Don't check non-members if we have
4340 members with the same name.
4341 * call.c (build_method_call): Use lookup_name_nonclass instead of
4342 IDENTIFIER_GLOBAL_VALUE to check for non-member functions.
4343 (build_overload_call_real): Ditto.
4344
4345 * decl.c (duplicate_decls): Check for ambiguous overloads here.
4346 (push_overloaded_decl): Instead of here.
4347
4348 * decl.c (pushdecl): Back out Chip's last change.
4349
4350 * decl.c (grok_op_properties): operators cannot be static members.
4351
4352 * cp-tree.h (DECL_SYNTHESIZED): DECL_SOURCE_LINE == 0
4353 (SET_DECL_SYNTHESIZED): DECL_SOURCE_LINE = 0
4354 * lex.c (cons_up_default_function): Use SET_DECL_SYNTHESIZED.
4355
4356 * method.c (do_inline_function_hair): Don't put friends of local
4357 classes into global scope, either.
4358
4359 * typeck2.c (build_functional_cast): Don't look for a function call
4360 interpretation.
4361
4362 Thu Apr 28 15:19:46 1994 Mike Stump <mrs@cygnus.com>
4363
4364 * cp-tree.h: disable use of backend EH.
4365
4366 Wed Apr 27 21:01:24 1994 Doug Evans (dje@canuck.cygnus.com)
4367
4368 * Make-lang.in (c++.distdir): mkdir tmp/cp first.
4369 * Makefile.in (INCLUDES): Move definition to same place as
4370 parent makefile.
4371 (ALLOCA): Define.
4372 (OLDAR_FLAGS): Delete.
4373 (OLDCC): Define.
4374 (DIR): Delete.
4375 (CLIB): Define.
4376 (####site): Delete.
4377 (SUBDIR_USE_ALLOCA): Don't use ALLOCA if compiling with gcc.
4378
4379 Wed Apr 27 19:10:04 1994 Kung Hsu (kung@mexican.cygnus.com)
4380
4381 * decl.c (xref_tag): not to use strstr(), it's not available on
4382 all platforms.
4383
4384 Wed Apr 27 18:10:12 1994 Jason Merrill (jason@deneb.cygnus.com)
4385
4386 * class.c (finish_struct): Resolve yet another class/pmf confusion.
4387
4388 * call.c (build_overload_call_real): Don't take the single-function
4389 shortcut if we're dealing with an overloaded operator.
4390
4391 Wed Apr 27 17:35:37 1994 Mike Stump <mrs@cygnus.com>
4392
4393 * search.c (get_base_distance): Search the virtual base class
4394 binfos, incase someone wants to convert to a real virtual base
4395 class.
4396 * search.c (expand_indirect_vtbls_init): Use convert_pointer_to_real
4397 instead of convert_pointer_to, as it now will work.
4398
4399 Wed Apr 27 15:36:49 1994 Jason Merrill (jason@deneb.cygnus.com)
4400
4401 * cvt.c (convert_to_reference): Don't complain about casting away
4402 const and volatile.
4403
4404 * typeck.c (build_unary_op): References are too lvalues.
4405
4406 Wed Apr 27 13:58:05 1994 Mike Stump <mrs@cygnus.com>
4407
4408 * class.c (override_one_vtable): We have to prepare_fresh_vtable
4409 before we modify it, not after, also, we cannot reuse an old vtable,
4410 once we commit to a new vtable. Implement ambiguous overrides in
4411 virtual bases as abstract. Hack until we make the class
4412 ill-formed.
4413
4414 Wed Apr 27 01:17:08 1994 Jason Merrill (jason@deneb.cygnus.com)
4415
4416 * parse.y (unary_expr): Expand new_placement[opt] and
4417 new_initializer[opt] inline.
4418
4419 * search.c (lookup_fnfields): Don't throw away the inheritance
4420 information here, either.
4421 (compute_access): Handle static members properly.
4422
4423 * init.c (build_member_call): Always set basetype_path, and pass it
4424 to lookup_fnfields.
4425
4426 * search.c (lookup_field): Deal properly with the case where
4427 xbasetype is a chain of binfos; don't throw away the inheritance
4428 information.
4429 (compute_access): protected_ok always starts out at 0.
4430
4431 * init.c (resolve_offset_ref): Don't cast `this' to the base type
4432 until we've got our basetype_path.
4433
4434 * cp-tree.h (IS_OVERLOAD_TYPE): aggregate or enum.
4435
4436 * cvt.c (build_up_reference): Use build_pointer_type rather than
4437 TYPE_POINTER_TO.
4438
4439 * call.c (convert_harshness_ansi): Call type_promotes_to for reals
4440 as well.
4441
4442 * cvt.c (type_promotes_to): Retain const and volatile, add
4443 float->double promotion.
4444
4445 * decl.c (grokdeclarator): Don't bash references to arrays into
4446 references to pointers in function parms. Use type_promotes_to.
4447
4448 Tue Apr 26 23:44:36 1994 Mike Stump <mrs@cygnus.com>
4449
4450 Finish off Apr 19th work.
4451
4452 * class.c (finish_struct_bits): Rename has_abstract_virtuals to
4453 might_have_abstract_virtuals.
4454 * class.c (strictly_overrides, override_one_vtable,
4455 merge_overrides): New routines to handle virtual base overrides.
4456 * class.c (finish_struct): Call merge_overrides to handle overrides
4457 in virtual bases.
4458
4459 Tue Apr 26 12:45:53 1994 Jason Merrill (jason@deneb.cygnus.com)
4460
4461 * typeck.c (build_function_call): Call build_function_call_real with
4462 LOOKUP_NORMAL.
4463
4464 * *: Don't deal with TYPE_EXPRs.
4465
4466 * tree.c (lvalue_p): If the type of the expression is a reference,
4467 it's an lvalue.
4468
4469 * cvt.c (convert_to_reference): Complain about passing const
4470 lvalues to non-const references.
4471 (convert_from_reference): Don't arbitrarily throw away const and
4472 volatile on the target type.
4473
4474 * parse.y: Simplify and fix rules for `new'.
4475
4476 * decl.c (grok_op_properties): operator void is illegal.
4477
4478 Mon Apr 25 02:36:28 1994 Jason Merrill (jason@deneb.cygnus.com)
4479
4480 * parse.y (components): Anonymous bitfields can still have declspecs.
4481
4482 * decl.c (pushdecl): Postpone handling of function templates like we
4483 do C functions.
4484
4485 * search.c (expand_indirect_vtbls_init): Fix infinite loop when
4486 convert_pointer_to fails.
4487
4488 * call.c (compute_conversion_costs_ansi): A user-defined conversion
4489 by itself is better than that UDC followed by standard conversions.
4490 Don't treat integers and reals specially.
4491
4492 * cp-tree.h: Declare flag_ansi.
4493
4494 * typeck.c (c_expand_return): pedwarn on return in void function
4495 even if the expression is of type void.
4496 (build_c_cast): Don't do as much checking for casts to void.
4497 (build_modify_expr): pedwarn about array assignment if this code
4498 wasn't generated by the compiler.
4499
4500 * tree.c (lvalue_p): A comma expression is an lvalue if its second
4501 operand is.
4502
4503 * typeck.c (default_conversion): Move code for promoting enums and
4504 ints from here.
4505 * cvt.c (type_promotes_to): To here.
4506 * call.c (convert_harshness_ansi): Use type_promotes_to. Also fix
4507 promotion semantics for reals.
4508
4509 Sun Apr 24 16:52:51 1994 Doug Evans (dje@canuck.cygnus.com)
4510
4511 * Make-lang.in (c++.install-common): Check for g++-cross.
4512 * Makefile.in: Remove Cygnus cruft.
4513 (config.status): Delete.
4514 (RTL_H): Define.
4515 (TREE_H): Use complete pathname, some native makes have minimal
4516 VPATH support.
4517 (*.o): Use complete pathname to headers in parent dir.
4518 (doc, info, dvi): Delete.
4519
4520 Sun Apr 24 16:52:51 1994 Doug Evans (dje@canuck.cygnus.com)
4521
4522 * Make-lang.in (c++.install-common): Check for g++-cross.
4523 * Makefile.in: Remove Cygnus cruft.
4524 (config.status): Delete.
4525 (RTL_H): Define.
4526 (TREE_H): Use complete pathname, some native makes have minimal
4527 VPATH support.
4528 (*.o): Use complete pathname to headers in parent dir.
4529 (doc, info, dvi): Delete.
4530
4531 Sun Apr 24 00:47:49 1994 Jason Merrill (jason@deneb.cygnus.com)
4532
4533 * decl.c (pushdecl): Avoid redundant warning on redeclaring function
4534 with different return type.
4535 (decls_match): Compare return types strictly.
4536
4537 Fri Apr 22 12:55:42 1994 Jason Merrill (jason@deneb.cygnus.com)
4538
4539 * cvt.c (build_type_conversion): Do try to convert through other
4540 pointers. This will fail if the class defines multiple pointer
4541 conversions.
4542
4543 * error.c (dump_type_prefix): Print out pointers to arrays properly.
4544 (dump_type_suffix): Ditto. (was 'int *[]', now 'int (*)[]')
4545
4546 * typeck.c (build_unary_op): Disallow ++/-- on pointers to
4547 incomplete type.
4548
4549 * decl.c (duplicate_decls): Check mismatched TREE_CODES after
4550 checking for shadowing a builtin. If we're redeclaring a builtin
4551 function, bash the old decl to avoid an ambiguous overload.
4552
4553 * cvt.c (convert_to_reference): Don't force arrays to decay here.
4554
4555 * tree.c (lvalue_p): A MODIFY_EXPR is an lvalue.
4556
4557 * decl.c (duplicate_decls): Don't assume that the decls will have
4558 types.
4559
4560 Mon Apr 18 11:35:32 1994 Chip Salzenberg (chip@fin.uucp)
4561
4562 [ cp/* changes propagated from c-* changes in 940318 snapshot ]
4563 * c-decl.c (pushdecl): Warn if type mismatch with another external decl
4564 in a global scope.
4565
4566 Fri Apr 22 06:38:56 1994 Chip Salzenberg (chip@fin.uucp)
4567
4568 * cp/typeck2.c (signature_error): Use cp_error for "%T".
4569
4570 Mon Apr 18 11:59:59 1994 Chip Salzenberg (chip@fin.uucp)
4571
4572 [ cp/* changes propagated from c-* changes in 940415 snapshot ]
4573 * cp/decl.c (duplicate_decls, pushdecl, builtin_function):
4574 Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE.
4575
4576 Mon Apr 18 11:55:18 1994 Chip Salzenberg (chip@fin.uucp)
4577
4578 [ cp/* changes propagated from c-* changes in 940409 snapshot ]
4579 * cp/decl.c (duplicate_decls): Put new type in same obstack as
4580 old ones, or permanent if old ones in different obstacks.
4581
4582 Mon Apr 18 11:48:49 1994 Chip Salzenberg (chip@fin.uucp)
4583
4584 [ cp/* changes propagated from c-* changes in 940401 snapshot ]
4585 * cp/parse.y (attrib): Handle string args as expressions,
4586 merging the two rules. `mode' attribute now takes a string arg.
4587 Delete the rule for an identifier as arg.
4588
4589 Mon Apr 18 11:24:00 1994 Chip Salzenberg (chip@fin.uucp)
4590
4591 [ cp/* changes propagated from c-* changes in 940312 snapshot ]
4592 * cp/typeck.c (pointer_int_sum): Multiplication should be done signed.
4593 (pointer_diff): Likewise the division.
4594
4595 Sun Mar 6 19:43:39 1994 Chip Salzenberg (chip@fin.uucp)
4596
4597 [ cp/* changes propagated from c-* changes in 940304 snapshot ]
4598 * cp/decl.c (finish_decl): Issue warning for large objects,
4599 if requested.
4600
4601 Sat Feb 19 22:20:32 1994 Chip Salzenberg (chip@fin.uucp)
4602
4603 [ cp/* changes propagated from c-* changes in 940218 snapshot ]
4604 * cp/parse.y (attrib): Handle attribute ((section ("string"))).
4605 * cp/decl.c (duplicate_decls): Merge section name into new decl.
4606
4607 Tue Feb 8 09:49:17 1994 Chip Salzenberg (chip@fin.uucp)
4608
4609 [ cp/* changes propagated from c-* changes in 940206 snapshot ]
4610 * cp/typeck.c (signed_or_unsigned_type): Check for any
4611 INTEGRAL_TYPE_P not just INTEGER_TYPE.
4612
4613 Mon Dec 6 13:35:31 1993 Norbert Kiesel (norbert@i3.INformatik.rwth-aachen.DE)
4614
4615 * cp/decl.c (finish_enum): Start from 0 when determining precision
4616 for short enums.
4617
4618 Fri Dec 3 17:07:58 1993 Ralph Campbell (ralphc@pyramid.COM)
4619
4620 * cp/parse.y (unary_expr): Look at $1 for tree_code rather than
4621 casting $$.
4622
4623 Wed Nov 17 19:22:09 1993 Chip Salzenberg (chip@fin.uucp)
4624
4625 * cp/typeck.c (build_binary_op_nodefault): Propagate code
4626 from C front-end to optimize unsigned short division.
4627 (build_conditional_expr): Fix bug in "1 ? 42 : (void *) 8".
4628
4629 Wed Nov 17 19:17:18 1993 Chip Salzenberg (chip@fin.uucp)
4630
4631 * cp/call.c (convert_harshness_ansi): Given an (e.g.) char
4632 constant, prefer 'const char &' to 'int'.
4633
4634 Wed Feb 3 13:11:48 1993 Chip Salzenberg (chip@fin.uucp)
4635
4636 * cp/class.c (finish_struct_methods): Handle multiple
4637 constructors in fn_fields list.
4638
4639 Fri Apr 22 12:48:10 1994 Kung Hsu (kung@mexican.cygnus.com)
4640
4641 * class.c (finish_struct): use TYPE_DECL_SUPPRESS_DEBUG to flag
4642 types not to be dumped in stabs, like types in #pragma interface.
4643 * decl.c (init_decl_processing): use TYPE_DECL_SUPPRESS_DEBUG to
4644 mark unknown type.
4645
4646 Fri Apr 22 03:27:26 1994 Doug Evans (dje@cygnus.com)
4647
4648 * Language directory reorganization.
4649 See parent makefile.
4650
4651 Thu Apr 21 18:27:57 1994 Per Bothner (bothner@kalessin.cygnus.com)
4652
4653 * cp-tree.h (THUNK_DELTA): It is normally negative, so
4654 use signed .i variant of frame_size rather than unsigned .u.
4655 * cp-tree.h (VTABLE_NAME_FORMAT): If flag_vtable_thunks,
4656 use "VT" rather than "vt" due to binary incompatibility.
4657 * class.c (get_vtable_name): Use strlen of VTABLE_NAME_FORMAT,
4658 rather than sizeof, since it is now an expression.
4659 * class.c (modify_one_vtable): Modify to skip initial element
4660 containing a count of the vtable.
4661
4662 Thu Apr 21 00:09:02 1994 Jason Merrill (jason@deneb.cygnus.com)
4663
4664 * lex.c (check_newline): Force interface_unknown on main input file.
4665
4666 * pt.c (do_pending_expansions): Always emit functions that have been
4667 explicitly instantiated.
4668 (do_function_instantiation): Set DECL_EXPLICITLY_INSTANTIATED.
4669 (do_type_instantiation): Set CLASSTYPE_VTABLE_NEEDS_WRITING and
4670 DECL_EXPLICITLY_INSTANTIATED on all my methods.
4671 * parse.y (explicit_instantiation): Call do_type_instantiation for
4672 types.
4673 * decl2.c (finish_vtable_vardecl): Call import_export_vtable.
4674 * decl.c (start_function): Don't set DECL_EXTERNAL on a function
4675 that has been explicitly instantiated.
4676 * cp-tree.h (DECL_EXPLICITLY_INSTANTIATED): Alias for
4677 DECL_LANG_FLAG_4.
4678 * class.c: Move import_export_vtable to decl2.c, and comment out all
4679 uses.
4680
4681 Wed Apr 20 16:51:06 1994 Jason Merrill (jason@deneb.cygnus.com)
4682
4683 * lex.c (process_next_inline): Don't muck with DECL_INLINE.
4684 (do_pending_inlines): Ditto.
4685
4686 Tue Apr 19 22:25:41 1994 Mike Stump <mrs@cygnus.com>
4687
4688 Reimplement vtable building, and most vtable pointer setting.
4689 Allows for earier maintenance, easier understandability, and most
4690 importantly, correct semantics.
4691
4692 * class.c (build_vtable): Removed unneeded
4693 SET_BINFO_VTABLE_PATH_MARKED.
4694 * class.c (prepare_fresh_vtable): Ditto. Added argument.
4695 * class.c (modify_vtable_entry): General cleanup.
4696 * class.c (related_vslot, is_normal, modify_other_vtable_entries,
4697 modify_vtable_entries): Removed.
4698 * class.c (add_virtual_function): General cleanup.
4699 * class.c (finish_base_struct): Setup BINFO_VTABLE and
4700 BINFO_VIRTUALS as early as we can, so that modify_all_vtables can
4701 work.
4702 * class.c (finish_vtbls): New routine, mostly from
4703 unmark_finished_struct.
4704 * class.c (overrides): New routine.
4705 * class.c (modify_one_vtable): New routine, mostly from
4706 modify_other_vtable_entries and modify_vtable_entries.
4707 * class.c (modify_all_direct_vtables, modify_all_indirect_vtables,
4708 modify_all_vtables): New routines.
4709 * class.c (finish_struct): Added arguemnt to prepare_fresh_vtable
4710 call. General cleanup on how pending_hard_virtuals are handled.
4711 General cleanup on modifying vtables. Use finish_vtbls, instead of
4712 unmark_finished_struct.
4713 * cp-tree.h (init_vtbl_ptrs, expand_direct_vtbls_init,
4714 get_first_matching_virtual, get_matching_virtual,
4715 expand_vbase_vtables_init, expand_indirect_vtbls_init): Update.
4716 * cvt.c (convert_pointer_to_real): cleanup error message.
4717 * decl.c (grokfndecl): General cleanup.
4718 * decl.c (finish_function): Change init_vtbl_ptrs call to
4719 expand_direct_vtbls_init. Change expand_vbase_vtables_init call to
4720 expand_indirect_vtbls_init.
4721 * init.c (expand_virtual_init): Remove unneeded argument.
4722 * init.c (init_vtbl_ptrs): Rename to expand_direct_vtbls_init, added
4723 two arguments to make more general. Made more general. Now can be
4724 used for vtable pointer initialization from virtual bases.
4725 * init.c (emit_base_init): Change expand_vbase_vtables_init call to
4726 expand_indirect_vtbls_init. Change init_vtbl_ptrs call to
4727 expand_direct_vtbls_init.
4728 * init.c (expand_virtual_init): General cleanup.
4729 * init.c (expand_default_init): Change expand_vbase_vtables_init
4730 call to expand_indirect_vtbls_init.
4731 * init.c (expand_recursive_init_1): Change expand_vbase_vtables_init
4732 call to expand_indirect_vtbls_init.
4733 * init.c (expand_recursive_init): Change expand_vbase_vtables_init
4734 call to expand_indirect_vtbls_init.
4735 * search.c (get_first_matching_virtual): Rename to
4736 get_matching_virtual. General cleanup and remove setting of
4737 DECL_CONTEXT. That is now done in a cleaner way in
4738 modify_vtable_entry and add_virtual_function.
4739 * search.c (expand_vbase_vtables_init): Rename to
4740 expand_indirect_vtbls_init. General cleanup. Use
4741 expand_direct_vtbls_init to do hard work. Ensures that _all_ vtable
4742 pointers from virtual bases are set up.
4743 * search.c (bfs_unmark_finished_struct, unmark_finished_struct):
4744 Removed.
4745
4746 * *.[chy]: Remove support for VTABLE_USES_MASK.
4747
4748 Tue Apr 19 12:51:59 1994 Jason Merrill (jason@deneb.cygnus.com)
4749
4750 * cvt.c (convert_to_reference): Use NOP_EXPRs to switch between
4751 reference and pointer types instead of bashing the types directly.
4752
4753 * call.c (build_overload_call_real): Use the TREE_CODE to determine
4754 whether the function is overloaded or not, rather than
4755 TREE_OVERLOADED.
4756 * *: Remove all uses of TREE_OVERLOADED.
4757
4758 * decl.c (grokdeclarator): Only complain about initializing const
4759 fields when -ansi or -pedantic.
4760
4761 Tue Apr 19 12:42:42 1994 Doug Evans (dje@canuck.cygnus.com)
4762
4763 * cp-tree.h (THUNK_DELTA): frame_size is now a union.
4764
4765 Mon Apr 18 00:17:13 1994 Jason Merrill (jason@deneb.cygnus.com)
4766
4767 Do overloading on a block-by-block basis, not function-by-function.
4768 * decl.c: Lose overloads_to_forget.
4769 (struct binding_level): Add overloads_shadowed field.
4770 (poplevel): Restore overloads_shadowed.
4771 (push_overloaded_decl): Use overloads_shadowed instead of
4772 overloads_to_forget.
4773 (finish_function): Don't look at overloads_to_forget.
4774
4775 Copy enum_overflow logic from c-decl.c.
4776 * decl.c (start_enum): Initialize enum_overflow.
4777 (build_enumerator): Use enum_overflow. Also use current_scope().
4778
4779 * search.c (current_scope): Move Brendan's comment from
4780 build_enumerator here.
4781
4782 * typeck.c (convert_for_assignment): Change warnings to pedwarns for
4783 discarding const/volatile.
4784
4785 Sat Apr 16 01:18:21 1994 Jason Merrill (jason@deneb.cygnus.com)
4786
4787 * typeck.c (comp_target_parms): Accept TEMPLATE_TYPE_PARMs on the rhs.
4788 (comp_target_types): Ditto.
4789
4790 * decl.c (lookup_name): Don't unset got_scope here.
4791
4792 * spew.c (yylex): Only replace yylval with the TYPE_NESTED_NAME if
4793 got_scope != NULL_TREE.
4794
4795 Fri Apr 15 16:36:33 1994 Jason Merrill (jason@deneb.cygnus.com)
4796
4797 Horrible kludge to prevent templates from being instantiated by
4798 their base classes.
4799 * parse.y (template_instantiate_once): Unset TYPE_BEING_DEFINED
4800 before we get to left_curly.
4801 * pt.c (instantiate_class_template): Set TYPE_BEING_DEFINED.
4802
4803 * error.c (dump_decl): If it's a typedef, print out the name of the
4804 decl, not just the underlying type.
4805
4806 * decl.c (pushdecl): If the old duplicate decl was a TYPE_DECL,
4807 update the IDENTIFIER_TYPE_VALUE of its name.
4808
4809 * decl2.c (finish_file): When processing the initializer for a
4810 static member, pretend that the dummy function is a member of the
4811 same class.
4812
4813 Fri Apr 15 15:56:35 1994 Kung Hsu (kung@mexican.cygnus.com)
4814
4815 * class.c (build_vtable_entry): revert Apr 4 change.
4816 * decl2.c (mark_vtable_entries): replace pure virtual function
4817 decl with abort's.
4818
4819 Fri Apr 15 13:49:33 1994 Jason Merrill (jason@deneb.cygnus.com)
4820
4821 * typeck.c (build_conditional_expr): Pedwarn on pointer/integer
4822 mismatch, and don't pedwarn on 0/function pointer mismatch.
4823
4824 * typeck2.c (digest_init): Lose code for special handling of unions.
4825 (process_init_constructor): Since they're handled just fine here.
4826 Pedwarn on excess elements.
4827
4828 * decl2.c (grokfield): Complain about local class method declaration
4829 without definition.
4830
4831 Fri Apr 15 13:19:40 1994 Per Bothner (bothner@kalessin.cygnus.com)
4832
4833 * method.c (emit_thunk): Add extern declaration for
4834 current_call_is_indirect (needed for hppa).
4835
4836 Thu Apr 14 16:12:31 1994 Jason Merrill (jason@deneb.cygnus.com)
4837
4838 Improve local class support; allow classes in different blocks to
4839 have the same name.
4840 * decl.c (pushtag): Support local classes better.
4841 (pushdecl_nonclass_level): New function for pushing mangled decls of
4842 nested types into the appropriate scope.
4843 (xref_defn_tag): Use pushdecl_nonclass_level instead of
4844 pushdecl_top_level.
4845 (grokfndecl): Don't mess with IDENTIFIER_GLOBAL_VALUE for local
4846 class methods.
4847 * method.c (do_inline_function_hair): Ditto.
4848
4849 * class.c (finish_struct): It is legal for a class with no
4850 constructors to have nonstatic const and reference members.
4851
4852 Thu Apr 14 07:15:11 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
4853
4854 * decl.c (push_overloaded_decl): Avoid giving errors about
4855 built-ins, since duplicate_decls will have given warnings/errors
4856 for them.
4857
4858 Thu Apr 14 03:45:12 1994 Jason Merrill (jason@deneb.cygnus.com)
4859
4860 * cvt.c (convert_to_reference): Warn about casting pointer type to
4861 reference type when this is probably not what they wanted.
4862
4863 Wed Apr 13 13:12:35 1994 Per Bothner (bothner@kalessin.cygnus.com)
4864
4865 * decl.c (finish_decl): Don't mindlessly set TREE_USED for
4866 static consts any more (toplev.c has now been modified to
4867 not emit warnings if they are unused).
4868
4869 Wed Apr 13 00:22:35 1994 Jason Merrill (jason@deneb.cygnus.com)
4870
4871 * decl.c (grok_op_properties): If op new/delete get here with
4872 METHOD_TYPEs, do a revert_static_member_fn.
4873
4874 * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Lose.
4875 * init.c (is_aggr_typedef): Don't look at
4876 IDENTIFIER_CLASS_TYPE_VALUE.
4877 (get_aggr_from_typedef): Ditto.
4878 (get_type_value): Ditto.
4879 * call.c (build_scoped_method_call): Don't rely on overloaded
4880 template names having IDENTIFIER_CLASS_VALUE set.
4881
4882 * parse.y (component_decl_1, fn.def2): Revert rules for
4883 constructors.
4884 (component_decl_1, fn.def2): Use $1 instead of $$, since $$ is being
4885 clobbered.
4886
4887 * decl.c (start_function): Only warn about `void main()' if pedantic
4888 || warn_return_type.
4889
4890 Tue Apr 12 02:14:17 1994 Jason Merrill (jason@deneb.cygnus.com)
4891
4892 Clean up overloading of the template name.
4893 * class.c (pushclass): overload the template name whenever pushing
4894 into the scope of a template class, not just if it is
4895 uninstantiated.
4896 (popclass): Correspondingly.
4897 * search.c (push_class_decls): Don't overload_template_name.
4898 * pt.c (overload_template_name): Don't set IDENTIFIER_LOCAL_VALUE or
4899 DECL_CONTEXT on things.
4900 * parse.y (left_curly): Don't overload_template_name.
4901 * class.c (finish_struct): Don't undo_template_name_overload.
4902
4903 * method.c (build_opfncall): Only pass one argument to global op
4904 delete.
4905
4906 * call.c (build_method_call): Use TYPE_VEC_DELETE_TAKES_SIZE to
4907 decide how many arguments to use for vec delete.
4908
4909 * decl.c (grok_op_properties): Be consistent in modifying
4910 current_class_type.
4911 (grokdeclarator): Only complain about function decls with no return
4912 type if we're being pedantic.
4913
4914 Mon Apr 11 00:10:53 1994 Jason Merrill (jason@deneb.cygnus.com)
4915
4916 Add support for operator new [] and operator delete [].
4917
4918 * tree.def: Add VEC_NEW_EXPR and VEC_DELETE_EXPR.
4919 * ptree.c (print_lang_type): Indicate vec new/delete.
4920 * parse.y: Support vec new/delete.
4921 * method.c (build_decl_overload): Deal with vec new/delete.
4922 (build_opfncall): Ditto.
4923 * lex.c (init_lex): Set up values of ansi_opname and opname_tab for
4924 vec new/delete. vec new uses "__vn", and vec delete uses "__vd".
4925 * init.c (init_init_processing): Set up BIVN and BIVD.
4926 (do_friend): Don't clean up after mistaken setting of TREE_GETS_NEW,
4927 since it doesn't happen any more.
4928 (build_new): Support vec new. Always call something.
4929 (build_x_delete): Support vec delete.
4930 (build_vec_delete): Lose dtor_dummy argument, add use_global_delete,
4931 and pass it to build_x_delete.
4932 * decl2.c (delete_sanity): Don't change behavior by whether or not
4933 the type has a destructor. Pass use_global_delete to
4934 build_vec_delete.
4935 (coerce_delete_type): Make sure that the type returned has a first
4936 argument of ptr_type_node.
4937 * decl.c (init_decl_processing): Also declare the global vec
4938 new/delete.
4939 (grokdeclarator): Also force vec new/delete to be static.
4940 (grok_op_properties): Note presence of vec new/delete, and play with
4941 their args. If vec delete takes the optional size_t argument, set
4942 TYPE_VEC_DELETE_TAKES_SIZE.
4943 * cp-tree.h (TYPE_GETS_{REG,VEC}_DELETE): New macros to simplify
4944 checking for one delete or the other.
4945 (lang_type): gets_new and gets_delete are now two bits long. The
4946 low bit is for the non-array version. Lose gets_placed_new.
4947 (TYPE_VEC_DELETE_TAKES_SIZE): New macro indicating that the vec
4948 delete defined by this class wants to know how much space it is
4949 deleting.
4950 (TYPE_VEC_NEW_USES_COOKIE): New macro to indicate when vec new must
4951 add a header containing the number of elements in the vector; i.e.
4952 when the elements need to be destroyed or vec delete wants to know
4953 the size.
4954 * class.c (finish_struct_methods): Also check for overloading vec
4955 delete.
4956 * call.c (build_method_call): Also delete second argument for vec
4957 delete.
4958
4959 * decl.c (grokdeclarator): Correct complaints again.
4960 (grokdeclarator): Fix segfault on null declarator.
4961 (decls_match): Also accept redeclaration with no arguments if both
4962 declarations were in C context. Bash TREE_TYPE (newdecl) here.
4963 (duplicate_decls): Instead of here.
4964
4965 * parse.y (nested_name_specifier_1): Lose rules for dealing with
4966 syntax errors nicely, since they break parsing of 'const i;'.
4967
4968 * decl.c (lookup_name): if (got_scope == current_class_type)
4969 val = IDENTIFIER_CLASS_VALUE (name).
4970
4971 * search.c (lookup_nested_tag): Look in enclosing classes, too.
4972
4973 * spew.c (yylex): Only look one character ahead when checking for a
4974 SCOPE.
4975
4976 * lex.c (check_newline): Read first nonwhite char before
4977 incrementing lineno.
4978
4979 * decl.c (grokdeclarator): Don't claim that typedefs are variables
4980 in warning.
4981
4982 * parse.y: Divide up uses of unqualified_id into
4983 notype_unqualified_id and unqualified_id, so that TYPENAME can be
4984 used as an identifier after an object.
4985
4986 * class.c (push_nested_class): Don't push into non-class scope.
4987
4988 * decl.c (grokdeclarator): If an identifier could be a type
4989 conversion operator, but has no associated type, it's not a type
4990 conversion operator.
4991
4992 * pt.c (unify): Check for equality of constants better.
4993
4994 * decl.c (grokdeclarator): Don't complain about access decls.
4995
4996 Sun Apr 10 02:39:55 1994 Jason Merrill (jason@deneb.cygnus.com)
4997
4998 * decl.c (grokdeclarator): pedwarn about data definitions without
4999 types here.
5000
5001 * parse.y (datadef): Don't pedwarn about decls without types here,
5002 since that is valid for functions.
5003 (fn.def2, component_decl): Support constructors with declmods again.
5004 (nomods_initdecls): For decls without any mods, so that we don't try
5005 to get declspecs from some arbitrary $0.
5006
5007 * search.c (lookup_field): Use cp_error.
5008
5009 * parse.y (nested_name_specifier_1): Don't check aggr/non-aggr type
5010 here; it breaks destructors for non-aggr types.
5011
5012 * decl.c (lookup_name): Only look for TYPE_DECLs in base classes of
5013 a type being defined, like the comment says.
5014 If got_scope is not an aggregate, just return NULL_TREE.
5015
5016 * pt.c (create_nested_upt): Kung's code for creating types nested
5017 within uninstantiated templates now lives here (it used to live in
5018 hack_more_ids). It needs to be expanded.
5019
5020 * parse.y: Stop calling see_typename so much.
5021
5022 * decl.c (lookup_name): Deal with TTPs and UPTs.
5023
5024 * lex.c (real_yylex): Don't set looking_for_typename just because we
5025 saw a 'new'.
5026 (dont_see_typename): #if 0 out.
5027
5028 * spew.c (yylex): Increment looking_for_typename if the next
5029 character is SCOPE, rather than setting it to 1; this way, the value
5030 from seeing an aggr specifier will not be lost. This kinda relies
5031 on looking_for_typename never being < 0, which is now true.
5032
5033 * parse.y (nested_name_specifier_1): Accept TEMPLATE_TYPE_PARMs,
5034 too.
5035 (named_class_head_sans_basetype): Accept template types, too. Oops.
5036
5037 Fri Apr 8 16:39:35 1994 Jason Merrill (jason@deneb.cygnus.com)
5038
5039 * decl2.c (reparse_decl_as_expr1): Handle SCOPE_REFs.
5040
5041 * parse.y: Lose START_DECLARATOR.
5042
5043 * search.c (lookup_nested_tag): New function to scan CLASSTYPE_TAGS
5044 for a class.
5045
5046 * parse.y: Simplify fn.def2 and component_decl. Support 'enum
5047 A::foo' syntax. Catch invalid scopes better.
5048
5049 * parse.y, lex.c: lose TYPENAME_COLON.
5050
5051 * decl2.c (groktypefield): #if 0 out.
5052
5053 * decl.c (lookup_name): If the type denoted by got_scope is
5054 currently being defined, look in CLASSTYPE_TAGS rather than FIELDS.
5055
5056 * class.c (push_nested_class): Don't try to push into
5057 error_mark_node.
5058
5059 Fri Apr 8 07:26:36 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
5060
5061 * Makefile.in (stamp-parse): Update count of conflicts to 33.
5062
5063 Thu Apr 7 17:47:53 1994 Jason Merrill (jason@deneb.cygnus.com)
5064
5065 A saner implementation of nested types that treats template types
5066 no differently from non-template types. There are still some
5067 shortcomings of our system; most notably, it is difficult to look
5068 for a nested type that is hidden by another name, because of the way
5069 we keep track of hidden types. But this shouldn't be a problem for
5070 just about anyone. Perhaps lookup_field should be fixed up a bit.
5071
5072 * spew.c: Moved handling of nested types/scoping from the lexer
5073 into the parser. Removed variable template_type_seen_before_scope.
5074 Removed functions frob_identifier, hack_more_ids, and various cruft
5075 that was #if 0'd out in the past, reducing the size of the file from
5076 1146 lines to 450 lines. We can't quite do away with spew.c yet,
5077 though; we still need it for do_aggr () and checking for SCOPE after
5078 the current identifier. And setting lastiddecl.
5079
5080 * parse.y: Moved handling of nested types/scoping from the lexer
5081 into the parser, using a new global variable `got_scope'. Reduced
5082 the number of states by 53. Implemented all uses of explicit global
5083 scope. Removed terminals SCOPED_TYPENAME and SCOPED_NAME. Removed
5084 nonterminals tmpl.1, scoped_base_class, id_scope, typename_scope,
5085 scoped_typename. Added nonterminals nested_type,
5086 qualified_type_name, complete_type_name, qualified_id, ptr_to_mem,
5087 nested_name_specifier, global_scope, overqualified_id, type_name.
5088 Changed many others. Added 9 new reduce/reduce conflicts, which are
5089 nested type parallels of 9 that were already in the grammar for
5090 non-nested types. Eight of the now 33 conflicts should be removed
5091 in the process of resolving the late binding between variable and
5092 function decls.
5093
5094 * gxxint.texi (Parser): Update.
5095
5096 * cp-tree.h (IS_AGGR_TYPE_CODE): Add UNINSTANTIATED_P_TYPE.
5097
5098 * lex.h: Add decl for got_scope.
5099
5100 * lex.c (see_typename): Claim to be the lexer when calling
5101 lookup_name.
5102
5103 * decl.c (lookup_name): When called from the lexer, look at
5104 got_scope and looking_at_typename; otherwise don't.
5105
5106 Thu Apr 7 22:05:47 1994 Mike Stump <mrs@cygnus.com>
5107
5108 31th Cygnus<->FSF merge.
5109
5110 Thu Apr 7 17:47:53 1994 Jason Merrill (jason@deneb.cygnus.com)
5111
5112 * decl2.c (mark_vtable_entries): Call this to mark all the
5113 entries in the vtable addressable.
5114 (finish_decl_parsing): Handle SCOPE_REFs.
5115
5116 * decl.c (decls_match): Always call compparms with strict == 1.
5117 Handle the special case of C function redecl here.
5118 (duplicate_decls): Only keep the old type if the new decl takes no
5119 arguments.
5120
5121 * typeck.c (compparms): Also allow t1 to be ... if strict == 0.
5122
5123 Thu Apr 7 16:17:50 1994 Mike Stump <mrs@cygnus.com>
5124
5125 * class.c (build_vtable_entry): Fix breakage introduced Apr 5
5126 17:48:41.
5127
5128 Wed Apr 6 16:05:10 1994 Per Bothner (bothner@kalessin.cygnus.com)
5129
5130 * init.c (build_virtual_init), search.c (build_vbase_vtables_init),
5131 ch-tree.h: Every place these functions were called, the result was
5132 immediately passed to expand_expr_stmt. Reduce redundancy by
5133 calling expand_expr_init *inside* these functions. These
5134 makes for a simpler interface, and we don't have to build
5135 compound expressions. Hence, rename these function to:
5136 expand_virtual_init and expand_vbase_vtables_init respectively.
5137 * init.c, decl.c: Change callers of these functions.
5138 * init.c, cp-tree.h (expand_virtual_init): Make static.
5139
5140 * decl2.c (finish_file): Check TREE_PUBLIC||TREE_ADDRESSABLE
5141 rather than DECL_SAVED_INSNS before emitting inlines.
5142
5143 Wed Apr 6 13:06:39 1994 Jason Merrill (jason@deneb.cygnus.com)
5144
5145 * spew.c (init_spew): #if 0 out stuff used by arbitrate_lookup.
5146
5147 * decl.c (duplicate_decls): If this is a new declaration of an
5148 extern "C" function, keep the type (for the argtypes).
5149 (redeclaration_error_message): Don't check DECL_LANGUAGE here.
5150 (decls_match): Call compparms with a value of strict dependent on
5151 the value of strict_prototypes for DECL_LANGUAGE (oldecl).
5152
5153 * typeck.c (compparms): ... is only equivalent to non-promoting
5154 parms if we're not being strict.
5155
5156 * parse.y (empty_parms): Don't check flag_ansi || pedantic here.
5157
5158 * decl.c (init_decl_processing): if (flag_ansi || pedantic)
5159 strict_prototypes_lang_c = strict_prototypes_lang_cplusplus;
5160
5161 * decl2.c (grok_function_init): Don't set DECL_INITIAL on pure
5162 virtuals.
5163
5164 Tue Apr 5 17:48:41 1994 Per Bothner (bothner@kalessin.cygnus.com)
5165
5166 Support for implementing vtables with thunks.
5167 * tree.def (THUNK_DECL): New TREE_CODE.
5168 * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY), tree.c
5169 (fnaddr_from_vtable_entry): Handle flag_vtable_thunks case.
5170 * cp-tree.h (memptr_type): New variable.
5171 * class.c (build_vtable_entry): Build thunk if necessary.
5172 * class.c (build_vfn_ref): If using thunks, don't need
5173 to add delta field from vtable (there is none!).
5174 * decl.c: Add memptr_type as well as vtable_entry_type.
5175 If using thunks, the latter is just ptr_type_node.
5176 * gc.c, typeck.c: Use memptr_typeChange, not vtable_entry_type.
5177 * decl2.c (finish_vtable_vardecl): Handle thunks.
5178 * expr.c (cplus_expand_expr): Support THUNK_DECL.
5179
5180 * decl.c (grokdeclarator): Set DECL_THIS_EXTERN if "extern".
5181 * decl.c (start_function): Set current_extern_inline based on
5182 DECL_THIS_EXTERN, not TREE_PUBLIC.
5183 * decl.c (finish_function): Call mark_inline_for_output if needed,
5184
5185 Improve intelligence about when to emit inlines.
5186 * cp-tree.h (lang_decl_flags): New field saved_inline.
5187 * cp-tree.h (DECL_SAVED_INLINE): New macro.
5188 * class.c (add_virtual_function): Don't set TREE_ADDRESSABLE.
5189 * decl.h, decl.c (pending_addressable_inlines): Removed.
5190 * decl2.c (pending_addressable_inlines): Renamed to saved_inlines.
5191 * decl2.c (mark_inline_for_output): Do nothing if
5192 DECL_SAVED_INLINE; otherwise set it (and add to saved_inlines list).
5193 * decl2.c (finish_vtable_vardecl): SET_CLASSTYPE_INTERFACE_KNOWN
5194 and set CLASSTYPE_INTERFACE_ONLY if there is a non-inline virtual.
5195 * decl2.c (finish_file): Writing out inlines later, so we can
5196 also handle the ones needed for vtbales.
5197 * decl2.c (write_vtable_entries, finish_vtable_typedecl): Removed.
5198
5199 * cp-tree.h, class.c, decl2.c, search.c: Remove -fvtable-hack
5200 and flag_vtable_hack. Use -fvtable-thunks and flag_vtable_thunks
5201 instead. (The rationale is that these optimizations both break binary
5202 compatibility, but should become the default in a future release.)
5203
5204 Wed Apr 6 10:53:56 1994 Mike Stump <mrs@cygnus.com>
5205
5206 * class.c (modify_vtable_entries): Never reset the DECL_CONTEXT
5207 of a fndecl, as we might not be from that vfield.
5208
5209 Tue Apr 5 17:43:35 1994 Kung Hsu (kung@mexican.cygnus.com)
5210
5211 * class.c (add_virtual_function): fix bug for pure virtual, so
5212 that DECL_VINDEX of the dummy decl copied won't be error.
5213 (see also Apr 4 change)
5214
5215 Tue Apr 5 17:23:45 1994 Per Bothner (bothner@kalessin.cygnus.com)
5216
5217 * typeck.c (c_expand_return): Before checking that we're not
5218 returning the address of a local, make sure it's a VAR_DECL.
5219 (And don't worry about it being a TREE_LIST.)
5220
5221 Tue Apr 5 13:26:42 1994 Jason Merrill (jason@deneb.cygnus.com)
5222
5223 * parse.y (YYDEBUG): Always define.
5224 * lex.c (YYDEBUG): Ditto.
5225
5226 Mon Apr 4 11:28:17 1994 Kung Hsu (kung@mexican.cygnus.com)
5227
5228 * class.c (finish_struct): backup out the change below, put the
5229 new change for the same purpose. The change below breaks code.
5230
5231 * class.c (finish_struct): if pure virtual, copy node and make
5232 RTL point to abort, then put in virtual table.
5233 * decl2.c (grok_function_iit): reinstate Mar 31 change.
5234
5235 Sat Apr 2 03:12:58 1994 Jason Merrill (jason@deneb.cygnus.com)
5236
5237 * init.c (build_new): pedwarn about newing const and volatile
5238 types.
5239
5240 * tree.c (get_identifier_list): Only do the special handling
5241 thing if we're dealing with the main variant of the record type.
5242
5243 * cvt.c (convert_to_reference): When converting between
5244 compatible reference types, use the pointer conversion machinery.
5245 Don't just blindly overwrite the old type.
5246
5247 Fri Apr 1 17:14:42 1994 Jason Merrill (jason@deneb.cygnus.com)
5248
5249 * call.c (build_method_call): When looking at global functions,
5250 be sure to use instance_ptr for the first argument, not some version
5251 of it that has been cast to a base class. Also do this before
5252 comparing candidates.
5253
5254 Thu Mar 31 19:50:35 1994 Jason Merrill (jason@deneb.cygnus.com)
5255
5256 * call.c (build_method_call): Constructors can be called for
5257 const objects.
5258
5259 Thu Mar 31 16:20:16 1994 Kung Hsu (kung@mexican.cygnus.com)
5260
5261 * decl2.c (grok_func_init): do not abort as rtl for pur virtual
5262 fucntions. They can be defined somewhere else.
5263
5264 Sat Jan 23 23:23:26 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
5265
5266 * decl.c (init_decl_processing): Declare __builtin_return_address
5267 and __builtin_frame_address for C++ as well.
5268
5269 Thu Mar 31 12:35:49 1994 Mike Stump <mrs@cygnus.com>
5270
5271 * typeck2.c (store_init_value): Integral constant variables are
5272 always constant, even when doing -fpic.
5273
5274 Sat Jan 23 23:23:26 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de)
5275
5276 * decl.c (redeclaration_error_message): Pass the types to
5277 comptypes.
5278
5279 Wed Mar 30 21:29:25 1994 Mike Stump <mrs@cygnus.com>
5280
5281 Cures incorrect errors about pure virtuals in a class, when they
5282 have been overridden in a derived class.
5283
5284 * search.c (get_abstract_virtuals): Reimplement.
5285 * search.c (get_abstract_virtuals_1): New routine.
5286
5287 Wed Mar 30 14:10:04 1994 Jason Merrill (jason@deneb.cygnus.com)
5288
5289 * pt.c (push_template_decls): Make the pushed level pseudo
5290 global.
5291
5292 * parse.y (extdefs): Don't pop everything if the current binding
5293 level is pseudo_global.
5294
5295 * decl.c (pop_everything): Stop on reaching a pseudo-global
5296 binding level.
5297
5298 * cp-tree.h (DECL_FUNCTION_MEMBER_P): Change to more reliable test.
5299
5300 * decl.c (duplicate_decls): Only copy DECL_SOURCE_{FILE_LINE} if
5301 the old decl actually had an initializer.
5302
5303 * {various}: Clean up gcc -W complaints.
5304
5305 * cp-tree.h (DECL_FUNCTION_MEMBER_P): Currently defined to be
5306 (DECL_CONTEXT (NODE) != NULL_TREE).
5307
5308 * parse.y (lang_extdef): Call pop_everything if necessary.
5309
5310 * decl.c (pop_everything): New function for popping binding
5311 levels left over after a syntax error.
5312 (pushdecl): Use DECL_FUNCTION_MEMBER_P to decide whether or not
5313 a function is a member.
5314
5315 Wed Mar 30 14:20:50 1994 Mike Stump <mrs@cygnus.com>
5316
5317 Cures calling a more base base class function, when a more derived
5318 base class member should be called in some MI situations.
5319
5320 * search.c (make_binfo): Use more the more specialized base
5321 binfos from the binfo given as the second argument to make_binfo,
5322 instead of the unspecialized ones from the TYPE_BINFO.
5323 * class.c (finish_base_struct): Ditto, update callers.
5324 * search.c (dfs_get_vbase_types): Ditto.
5325 * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
5326 * decl.c (xref_tag): Use NULL_TREE instead of 0.
5327 * lex.c (make_lang_type): Ditto.
5328
5329 Wed Mar 30 14:10:04 1994 Jason Merrill (jason@deneb.cygnus.com)
5330
5331 * decl.c (pushdecl): If pushing a C-linkage function, only do a
5332 push_overloaded_decl.
5333 (duplicate_decls): Standard overloading does not shadow built-ins.
5334
5335 Tue Mar 29 00:54:18 1994 Jason Merrill (jason@deneb.cygnus.com)
5336
5337 * pt.c (end_template_decl): Don't call push_overloaded_decl.
5338
5339 * init.c (do_friend): Don't call push_overloaded_decl.
5340
5341 * decl.c (pushdecl): Call push_overloaded_decl for functions and
5342 function templates.
5343 (duplicate_decls): functions and function templates are not
5344 duplicates, but don't complain about calling this function to
5345 compare them.
5346 (push_overloaded_decl): Don't deal with linkage. Call
5347 duplicate_decls.
5348 (redeclaration_error_message): Deal with linkage.
5349
5350 * decl.c (start_function): If push_overloaded_decl returns an
5351 older version of the function, deal with it.
5352
5353 * decl.c (start_function): Be sure only to push_overloaded_decl
5354 for non-members.
5355
5356 * decl.c (grokfndecl): Put back clearing of DECL_CHAIN for
5357 methods.
5358 (start_function): Lose broken and redundant code for checking old
5359 decl.
5360
5361 * init.c (add_friend): Give line numbers of both friend decls
5362 when warning about re-friending.
5363
5364 * pt.c (tsubst): Use comptypes rather than == to compare the
5365 types of the method as declared and as defined, since default
5366 parameters may be different.
5367
5368 * call.c (build_method_call): Use brendan's candidate printing
5369 routine.
5370
5371 * decl.c (start_method): Methods defined in the class body are
5372 inline whether or not it's a template class.
5373
5374 Mon Mar 28 16:39:26 1994 Jason Merrill (jason@deneb.cygnus.com)
5375
5376 * parse.y (initdcl0): Add "extern" to current_declspecs if
5377 have_extern_spec && ! used_extern_spcec.
5378
5379 * tree.c (really_overloaded_fn): A fn with more than one
5380 overload.
5381
5382 * pt.c (end_template_decl): Use really_overloaded_fn.
5383
5384 * decl.c (duplicate_decls): When smashing a decl into a previous
5385 definition, keep the old file and line.
5386 Don't deal with overloaded functions.
5387 Lose old code for checking arg types of functions.
5388 Check for overloaded C functions.
5389 (pushdecl): Deal with overloaded functions.
5390 (start_decl): Expect pushdecl to return an appropriate function decl.
5391 (start_function): Ditto.
5392 (push_overloaded_decl): Don't check for overloaded C functions.
5393
5394 * *.c: Stop using DECL_OVERLOADED, it being archaic.
5395 TREE_OVERLOADED should probably go, too.
5396
5397 Mon Mar 28 14:00:45 1994 Ron Guilmette (rfg@netcom.com)
5398
5399 * typeck.c (comp_target_types): Call comp_target_parms with
5400 strict == 1.
5401
5402 Sun Mar 27 00:07:45 1994 Jason Merrill (jason@deneb.cygnus.com)
5403
5404 * parse.y (empty_parms): Don't parse () as (...) in extern "C"
5405 sections if we're compiling with -ansi or -pedantic.
5406
5407 * decl.c (decls_match): Don't treat (int) and (int&) as matching.
5408
5409 * decl2.c (grokfield): Don't pedwarn twice about initializing
5410 field.
5411
5412 * decl.c (push_overloaded_decl): Warn about shadowing
5413 constructor.
5414 (redeclaration_error_message): Don't allow 'int a; int a;'
5415
5416 * cvt.c (build_up_reference): Only check for valid upcast if
5417 LOOKUP_PROTECT is set, not just any flag.
5418
5419 Fri Mar 25 01:22:31 1994 Jason Merrill (jason@deneb.cygnus.com)
5420
5421 * lex.c (check_newline): When we see a #pragma implementation,
5422 also set it for the main input file.
5423
5424 * init.c (build_new): Convert array size argument to size_t.
5425
5426 * parse.y (primary): If we're doing a parenthesized type-id, call
5427 groktypename before passing it to build_new.
5428
5429 * call.c (build_method_call): Deal properly with const and
5430 volatile for instances of reference type.
5431
5432 * decl.c (store_return_init): Change 'if (pedantic) error' to 'if
5433 (pedantic) pedwarn'.
5434
5435 * decl.c (grokdeclarator): Don't complain about putting `static'
5436 and `inline' on template function decls.
5437
5438 Thu Mar 24 23:18:19 1994 Jason Merrill (jason@deneb.cygnus.com)
5439
5440 * call.c (build_method_call): Preserve const & volatile on
5441 `this'.
5442
5443 Thu Mar 24 16:21:52 1994 Mike Stump <mrs@cygnus.com>
5444
5445 * init.c (build_new, build_vec_delete): Use global new and delete
5446 for arrays.
5447 * decl2.c (delete_sanity): Ditto.
5448
5449 Thu Mar 24 02:10:46 1994 Jason Merrill (jason@deneb.cygnus.com)
5450
5451 * cvt.c (convert_to_reference): If i is an lvalue,
5452 (int &)i -> *(int*)&i, as per 5.2.8p9 of the latest WP.
5453 (convert_force): Call convert_to_reference with LOOKUP_COMPLAIN.
5454
5455 Wed Mar 23 17:45:37 1994 Jason Merrill (jason@deneb.cygnus.com)
5456
5457 * decl.c (duplicate_decls): Also propagate DECL_TEMPLATE_MEMBERS
5458 and DECL_TEMPLATE_INSTANTIATIONS.
5459
5460 * init.c (build_new): Handle array typedefs properly.
5461
5462 Wed Mar 23 18:23:33 1994 Mike Stump <mrs@cygnus.com>
5463
5464 30th Cygnus<->FSF merge.
5465
5466 Wed Mar 23 00:46:24 1994 Mike Stump <mrs@cygnus.com>
5467
5468 * class.c (modify_vtable_entries): Avoid running off the end of the
5469 virtuals list when processing a virtual destructor.
5470 * class.c (get_vtable_entry): Ditto.
5471
5472 Wed Mar 23 00:23:59 1994 Jason Merrill (jason@deneb.cygnus.com)
5473
5474 * decl.c (duplicate_decls): If two template decls don't match,
5475 just return 0.
5476
5477 Tue Mar 22 23:49:41 1994 Jason Merrill (jason@deneb.cygnus.com)
5478
5479 * typeck.c (convert_for_assignment): Don't pedwarn about
5480 converting function pointer to void *.
5481
5482 Tue Mar 22 22:23:19 1994 Mike Stump <mrs@cygnus.com>
5483
5484 Major revamp of pointer to member functions. Cures major
5485 nonfunctionality when used in casts, and MI situations.
5486
5487 * cvt.c (convert_force): Update call site of build_ptrmemfunc.
5488 * typeck.c (convert_for_assignment): Ditto.
5489 * typeck2.c (digest_init): Ditto.
5490 * typeck2.c (process_init_constructor): Simplify by moving code into
5491 digest_init.
5492 * typeck2.c (digest_init): Do default_conversions on init value, if
5493 we are processing pointer to member functions.
5494 * class.c (get_vfield_offset): Now non-static. Convert bit offset
5495 into byte offset.
5496 * cp-tree.h (get_vfield_offset): Ditto.
5497 * typeck.c (get_member_function_from_ptrfunc): Convert down to right
5498 instance, before fetching vtable pointer.
5499 * typeck.c (get_delta_difference): New routine.
5500 * typeck.c (build_ptrmemfunc): Revamp to handle casting better, also
5501 get vtable pointer out of right subobject.
5502
5503 Tue Mar 22 17:56:48 1994 Mike Stump <mrs@cygnus.com>
5504
5505 * search.c (get_binfo): Return NULL instead of aborting, when
5506 passed a UNION_TYPE.
5507
5508 Tue Mar 22 12:44:54 1994 Jason Merrill (jason@deneb.cygnus.com)
5509
5510 These patches implement handling of redefinition/redeclaration of
5511 templates.
5512
5513 * typeck.c (comptypes): Simplify. All TEMPLATE_TYPE_PARMs are
5514 considered compatible.
5515
5516 * parse.y (template_def): Pass defn argument to end_template_decl.
5517
5518 * pt.c (end_template_decl): Add defn argument. Check for
5519 redefinition. Simplify.
5520
5521 * error.c (OB_UNPUT): New macro, to remove mistakes.
5522 (aggr_variety): Subroutine of dump_aggr_type.
5523
5524 * decl.c (decls_match): Support templates.
5525 (duplicate_decls): No longer static. Don't try to lay out template
5526 decls.
5527 (pushdecl): Simplify.
5528
5529 * cp-tree.h (DECL_TEMPLATE_MEMBERS): Use DECL_SIZE instead of
5530 DECL_INITIAL.
5531
5532 Mon Mar 21 11:46:55 1994 Jason Merrill (jason@deneb.cygnus.com)
5533
5534 * error.c (dump_decl): Support class template decls.
5535 (dump_type): Don't adorn template type parms.
5536
5537 * decl.c (duplicate_decls): Save DECL_TEMPLATE_INFO from old decl
5538 if it was a definition.
5539 (redeclaration_error_message): Do the cp_error thang, and reject
5540 redefinition of templates.
5541
5542 Mon Mar 21 19:36:06 1994 Per Bothner (bothner@kalessin.cygnus.com)
5543
5544 * decl.c (grokdeclarator): Set TREE_PUBLIC for METHOD_TYPE
5545 in FIELD context, when appropriate. Also,
5546 CLASSTYPE_INTERFACE_ONLY is irrelevant to setting TREE_PUBLIC.
5547 Also, simplify check for bogus return specifiers.
5548
5549 Mon Mar 21 11:46:55 1994 Jason Merrill (jason@deneb.cygnus.com)
5550
5551 * parse.y (after_type_declarator1): Expand type_quals.
5552 (notype_declarator1): Ditto.
5553 (absdcl1): Ditto.
5554
5555 Sat Mar 19 01:05:17 1994 Jason Merrill (jason@deneb.cygnus.com)
5556
5557 * decl.c (grokdeclarator): Treat class-local typedefs like static
5558 members; i.e. 'typedef int f();' means that f is a function type,
5559 not a method type.
5560
5561 * parse.y (decl): Change direct_* back to *.
5562 (type_id): Change direct_abstract_declarator to absdcl.
5563 (direct_declarator, direct_initdecls, direct_initdcl0): Remove again.
5564
5565 Fri Mar 18 12:47:59 1994 Jason Merrill (jason@deneb.cygnus.com)
5566
5567 These two patches fix crashes on instantiating a template inside a
5568 function with C linkage or containing labels.
5569
5570 * class.c (current_lang_stacksize): No longer static.
5571
5572 * decl.c (struct saved_scope): Add lang_base, lang_stack,
5573 lang_name, lang_stacksize, and named_labels.
5574 (push_to_top_level): Save them.
5575 (pop_from_top_level): Restore them.
5576
5577 * gxxint.texi (Parser): Update.
5578
5579 These two patches finish moving the task of expr/declarator
5580 ambiguity resolution from the lexer to the parser, and add one more
5581 r/r conflict. START_DECLARATOR can now be nuked.
5582
5583 * parse.y (decl): Add "direct_" in typespec X rules.
5584 (direct_declarator): New nonterminal for
5585 direct_after_type_declarator and direct_notype_declarator.
5586 (direct_initdecls): Like initdecls, but uses direct_initdcl0.
5587 (direct_initdcl0): Like initdcl0, but uses direct_declarator.
5588 (named_parm): Add typespec direct_declarator rule.
5589
5590 * spew.c (yylex): #if 0 out START_DECLARATOR insertion.
5591
5592 These two patches disable some excessive cleverness on the part of
5593 g++; a non-class declaration always hides a class declaration in the
5594 same scope, and g++ was trying to unhide it depending on the
5595 enclosing expression.
5596
5597 * spew.c (arbitrate_lookup): #if 0 out.
5598
5599 * decl.c (lookup_name): Never call arbitrate_lookup.
5600
5601 * parse.y (complex_notype_declarator1): Add '*'
5602 complex_notype_declarator1 and '&' complex_notype_declarator1 rules.
5603
5604 * parse.y (complex_direct_notype_declarator): Restore id_scope
5605 see_typename TYPENAME rule, remove all other rules beginning with
5606 those tokens.
5607 (notype_unqualified_id): Add '~' see_typename IDENTIFIER rule.
5608
5609 Thu Mar 17 17:30:01 1994 Jason Merrill (jason@deneb.cygnus.com)
5610
5611 These changes fix the compiler's handling of the functional cast/
5612 object declaration ambiguities in section 6.8 of the ARM. They also
5613 add 11 reduce/reduce conflicts. Sigh.
5614
5615 * parse.y: Add precedence decls for OPERATOR and '~'.
5616 (notype_unqualified_id): New nonterminal, encompasses all of the
5617 ANSI unqualified-id nonterminal except TYPENAMEs.
5618 (expr_or_declarator): New nonterminal to delay parsing of code like
5619 `int (*a)'.
5620 (primary): Use notype_unqualified_id.
5621 (decl): Add typespec initdecls ';' and typespec declarator ';'
5622 rules.
5623 (initdcl0): Deal with the above.
5624 (complex_notype_declarator1): A notype_declarator that is not also
5625 an expr_or_declarator.
5626 (complex_direct_notype_declarator): A direct_notype_declarator that
5627 doesn't conflict with expr_or_declarator. Use
5628 notype_unqualified_id. Remove id_scope see_typename TYPENAME rule.
5629 (functional_cast): New nonterminal, for the three functional cast
5630 rules. So that they can be moved after
5631 complex_direct_notype_declarator.
5632 (see_typename): Don't accept type_quals any more.
5633
5634 * decl2.c (reparse_decl_as_expr): New function to deal with parse
5635 nodes for code like `int (*a)++;'.
5636 (reparse_decl_as_expr1): Recursive subroutine of the above.
5637 (finish_decl_parsing): New function to deal with parse nodes for
5638 code like `int (*a);'. See the difference?
5639
5640 Thu Mar 17 12:16:10 1994 Mike Stump <mrs@cygnus.com>
5641
5642 These changes break binary compatibility in code with classes
5643 that use virtual bases.
5644
5645 * search.c (dfs_get_vbase_types): Simplify and correct to make
5646 sure virtual bases are initialized in dfs ordering.
5647 * search.c (get_vbase_types): Simplify and make readable.
5648
5649 Thu Mar 17 12:01:10 1994 Jason Merrill (jason@deneb.cygnus.com)
5650
5651 * parse.y: s/ typename / type_id /g
5652
5653 Wed Mar 16 17:42:52 1994 Kung Hsu (kung@mexican.cygnus.com)
5654
5655 * parse.y (typespec): add SCOPE TYPENAME for global scoped
5656 type. e.g. ::B x.
5657
5658 * decl.c (complete_array_type): fix a bug that in -pendantic
5659 mode even there's no initializer, it will continue to build
5660 default index.
5661
5662 Wed Mar 16 17:43:07 1994 Jason Merrill (jason@deneb.cygnus.com)
5663
5664 * parse.y (direct_notype_declarator): Add PTYPENAME rule, remove
5665 all of the scoped PTYPENAME rules.
5666
5667 Wed Mar 16 16:39:02 1994 Mike Stump <mrs@cygnus.com>
5668
5669 * init.c (build_offset_ref): The value of A::typedef_name is
5670 always the TYPE_DECL, and never an error.
5671
5672 Tue Mar 15 20:02:35 1994 Jason Merrill (jason@deneb.cygnus.com)
5673
5674 * search.c (get_base_distance_recursive): Two binfos can only
5675 represent the same object if they are both via_virtual.
5676
5677 * class.c (finish_base_struct): Check vbases for ambiguity, too.
5678
5679 * search.c (get_vbase_types): Accept binfo argument, too.
5680
5681 Tue Mar 15 19:22:05 1994 Kung Hsu (kung@mexican.cygnus.com)
5682
5683 * decl.c (complete_array_type): complete TYPE_DOMAIN of the
5684 initializer also, because back-end requires it.
5685
5686 Tue Mar 15 15:33:31 1994 Jason Merrill (jason@deneb.cygnus.com)
5687
5688 * error.c (dump_expr): Support member functions (which show up as
5689 OFFSET_REFs).
5690
5691 Mon Mar 14 16:24:36 1994 Mike Stump <mrs@cygnus.com>
5692
5693 * init.c (build_new): Set the return type of multidimensional
5694 news correctly.
5695
5696 Fri Mar 11 15:35:39 1994 Kung Hsu (kung@mexican.cygnus.com)
5697
5698 * call.c (build_method_call): if basetype not equal to type
5699 of the instance, use the type of the instance in building
5700 destructor.
5701
5702 Thu Mar 10 17:07:10 1994 Kung Hsu (kung@mexican.cygnus.com)
5703
5704 * parse.y (direct_notype_declarator): add push_nested_type for
5705 'template_type SCOPED_NAME' rule.
5706
5707 Tue Mar 8 00:19:58 1994 Jason Merrill (jason@deneb.cygnus.com)
5708
5709 * parse.y (parm): Add typed_declspec1 {absdcl, epsilon} rules.
5710
5711 Sat Mar 5 04:47:48 1994 Jason Merrill (jason@deneb.cygnus.com)
5712
5713 * parse.y (regcast_or_absdcl): New nonterminal to implement late
5714 reduction of constructs like `int ((int)(int)(int))'.
5715 (cast_expr): Use it.
5716 (sub_cast_expr): Everything that can come after a cast.
5717 (typed_declspecs1): typed_declspecs that are not typed_typespecs.
5718 (direct_after_type_declarator): Lose PAREN_STAR_PAREN rule.
5719 (direct_abstract_declarator): Replace '(' parmlist ')' rule with
5720 '(' complex_parmlist ')' and regcast_or_absdcl.
5721 (parmlist): Split
5722 (complex_parmlist): Parmlists that are not also typenames.
5723 (parms_comma): Enabler.
5724 (named_parm): A parm that is not also a typename. Use declarator
5725 rather than dont_see_typename abs_or_notype_decl. Expand
5726 typed_declspecs inline.
5727 (abs_or_notype_decl): Lose.
5728 (dont_see_typename): Comment out.
5729 (bad_parm): Break out abs_or_notype_decl into two rules.
5730
5731 Fri Mar 4 18:22:39 1994 Jason Merrill (jason@deneb.cygnus.com)
5732
5733 * decl2.c (reparse_decl_as_casts): New function to change parse
5734 nodes for `(int)(int)(int)' from "function taking int and returning
5735 function taking int and returning function taking int" to "... cast
5736 to int, cast to int, cast to int".
5737
5738 * decl2.c (reparse_decl_as_expr): Recursive function to change
5739 parse nodes for `A()()' from "function returning function returning
5740 A" to "A().operator()".
5741
5742 * parse.y (primary): Replace `typespec LEFT_RIGHT' rule with
5743 `typespec fcast_or_absdcl' rule.
5744 (fcast_or_absdcl): New nonterminal to implement late reduction of
5745 constructs like `A()()()()'.
5746 (typename): Replace `typespec absdcl1' rule with
5747 `typespec direct_abstract_declarator' rule.
5748 (direct_abstract_declarator): Replace `LEFT_RIGHT type_quals' rule
5749 with `fcast_or_absdcl type_quals' rule.
5750
5751 Fri Mar 4 16:18:03 1994 Mike Stump <mrs@cygnus.com>
5752
5753 * tree.c (lvalue_p): Improve OFFSET_REF handling, so that it
5754 matches Section 5.5.
5755
5756 Fri Mar 4 14:01:59 1994 Jason Merrill (jason@deneb.cygnus.com)
5757
5758 * error.c (dump_type_prefix): Don't print basetype twice for
5759 pmfs.
5760
5761 Fri Mar 4 13:24:33 1994 Mike Stump <mrs@cygnus.com>
5762
5763 * typeck.c (convert_arguments): Handle setHandler(A::handlerFn)
5764 so that it is like setHandler(&A::handlerFn). Cures an `invalid
5765 lvalue in unary `&''.
5766
5767 Fri Mar 4 11:15:59 1994 Jason Merrill (jason@deneb.cygnus.com)
5768
5769 * gxxint.texi (Copying Objects): New section discussing default
5770 op= problems with virtual inheritance.
5771
5772 * decl2.c (grokoptypename): Just does grokdeclarator and
5773 build_typename_overload, since the parser can't call grokdeclarator
5774 directly.
5775
5776 * method.c (build_typename_overload): Set IDENTIFIER_GLOBAL_VALUE
5777 and TREE_TYPE on generated identifiers.
5778
5779 * decl.c (grokdeclarator): Don't deal with TYPE_EXPRs anymore.
5780
5781 * parse.y (parm): Convert `const char *' to `__opPCc' here.
5782
5783 * error.c (dump_decl): Say sorry rather than my_friendly_aborting
5784 if we can't figure out what to do.
5785 (dump_type*): Ditto.
5786
5787 * typeck2.c (build_m_component_ref): 'component' is an expr, not
5788 a decl. Also move the IS_AGGR_TYPE check after the stripping of
5789 REFERENCE_TYPE.
5790
5791 Fri Mar 4 04:46:05 1994 Mike Stump <mrs@cygnus.com>
5792
5793 * call.c (build_method_call): Handle b->setHandler(A::handlerFn)
5794 so that it is like b->setHandler(&A::handlerFn). Cures an `invalid
5795 lvalue in unary `&''.
5796
5797 Thu Mar 3 12:38:15 1994 Jason Merrill (jason@deneb.cygnus.com)
5798
5799 * parse.y: Add precedence specification for START_DECLARATOR.
5800 (type_quals): Move before primary.
5801 (typename): Move before typed_declspecs, add 'typespec absdcl1' rule.
5802
5803 * decl2.c (grokoptypename): Lose.
5804
5805 * decl.c (grokdeclarator): Parse TYPE_EXPRs in the initial scan,
5806 rather than waiting until later.
5807
5808 Wed Mar 2 14:12:23 1994 Jason Merrill (jason@deneb.cygnus.com)
5809
5810 * parse.y (unary_expr): Use 'typename' in 'new' rules, rather
5811 than expanding it inline.
5812 (typename): Expand empty option of (former) absdcl inline.
5813 (abs_or_notype_decl): Ditto.
5814 (absdcl): Lose empty rule.
5815 (conversion_declarator): New nonterminal for 'typename' of 'operator
5816 typename'.
5817 (operator_name): Use it instead of absdcl.
5818
5819 * parse.y: Add precedence declarations for SCOPED_TYPENAME,
5820 TYPEOF, and SIGOF.
5821 (typed_declspecs): Accept typed_typespecs, rather than typespec
5822 directly. Add rules with reserved_typespecquals.
5823 (reserved_declspecs): Don't accept typespecqual_reserved at the
5824 beginning of the list. The typed_declspecs rule will deal with this
5825 omission.
5826 (declmods): Accept nonempty_type_quals, rather than TYPE_QUAL
5827 directly.
5828
5829 * parse.y (direct_notype_declarator,
5830 direct_after_type_declarator, direct_abstract_declarator): Split up
5831 the declarator1 nonterminals to match the draft standard and avoid
5832 ambiguities.
5833 (new_type_id, new_declarator, direct_new_declarator,
5834 new_member_declarator): New nonterminals to implement the subset of
5835 'typename' allowed in new expressions.
5836 (unary_expr): Use new_type_id instead of typename.
5837 (after_type_declarator1, absdcl1): Fix semantics of member pointers.
5838 (abs_member_declarator, after_type_member_declarator): Lose.
5839
5840 * parse.y (absdcl1): Don't require parens around
5841 abs_member_declarator.
5842 (abs_member_declarator): Lose see_typename from rules.
5843 (after_type_member_declarator): Ditto.
5844
5845 * tree.c (get_identifier_list): New function, containing code
5846 previously duplicated in get_decl_list and list_hash_lookup_or_cons.
5847 (get_decl_list): Use it.
5848 (list_hash_lookup_or_cons): Ditto.
5849
5850 * parse.y (typed_declspecs, declmods): It's not necessary to hash
5851 the declspecs on class_obstack, so don't. This way typed_typespecs
5852 can reduce to typed_declspecs.
5853
5854 Wed Mar 2 14:29:18 1994 Jason Merrill (jason@cygnus.com)
5855
5856 * cvt.c (build_up_reference): If we aren't checking visibility,
5857 also allow base->derived conversions.
5858
5859 Mon Feb 28 15:14:29 1994 Per Bothner (bothner@kalessin.cygnus.com)
5860
5861 * typeck.c (build_c_cast): Remove bogus hack when converting
5862 to a reference type.
5863
5864 * cp-tree.h (lang_decl::vbase_init_list, DECL_VBASE_INIT_LIST):
5865 Removed, not used.
5866 (lang_stype::methods, lang_decl::next_method): New fields.
5867 (CLASSTYPE_METHODS, DECL_NEXT_METHOD): New macros.
5868 * decl.c (duplicate_decls): Preserve DECL_NEXT_METHOD.
5869
5870 * cp-tree.h, decl2.c (flag_vtable_hack): New flag.
5871 * decl2.c (finish_vtable_vardecl): If flag_vtable_hack,
5872 and !CLASSTYPE_INTERFACE_KNOWN, try to use the presence of
5873 a non-inline virtual function to control emitting of vtables.
5874 * class.c (finish_struct): Build CLASSTYPE_METHODS list.
5875 * search.c (build_vbase_vtables_init): Don't assemble_external
5876 (yet) if flag_vtable_hack.
5877 * class.c (build_vfn_ref): Ditto.
5878
5879 Mon Feb 28 14:54:13 1994 Jason Merrill (jason@deneb.cygnus.com)
5880
5881 * parse.y (component_decl): Don't include "typed_declspecs
5882 declarator ';'" speedup, since it breaks enums.
5883
5884 Fri Feb 25 15:43:44 1994 Per Bothner (bothner@kalessin.cygnus.com)
5885
5886 * class.c (finish_struct): Minor optimization for building
5887 fn_fields list.
5888
5889 Fri Feb 25 15:23:42 1994 Jason Merrill (jason@deneb.cygnus.com)
5890
5891 * decl.c (start_function): Fix detection of function overloading.
5892
5893 Thu Feb 24 22:26:19 1994 Mike Stump <mrs@cygnus.com>
5894
5895 * lex.c (check_newline): #pragma interface can take a string
5896 argument, just like #pragma implementation. #pragma implementation
5897 checks for garbage on the line, line #pragma interface does. Main
5898 input files do not auto implement like named files, #pragma
5899 implementation must be used explicitly.
5900
5901 Thu Feb 24 17:09:01 1994 Jason Merrill (jason@deneb.cygnus.com)
5902
5903 * parse.y (components): Handle list of one again.
5904 (notype_components): Ditto.
5905 (after_type_declarator1): Take maybe_raises out again.
5906
5907 * gxxint.texi (Parser): Document additional r/r conflict.
5908
5909 Wed Feb 23 14:42:55 1994 Jason Merrill (jason@deneb.cygnus.com)
5910
5911 * gxxint.texi (Parser): Add node.
5912
5913 * Makefile.in (stamp-parse): Update expected conflict count.
5914
5915 * parse.y (various): Replace "declmods declarator" with "declmods
5916 notype_declarator". The comment saying that "declmods declarator ';'"
5917 corresponds to "int i;" was wrong; it corresponds to "const i;".
5918 (component_decl): Add "typed_declspecs declarator ';'" rule; this
5919 *does* correspond to "int i;". Change "declmods components" to
5920 "declmods notype_components".
5921 (components): Don't deal with a list of one anymore.
5922 (notype_components): New nonterminal, corresponds to notype_declarator.
5923 ({after_,no}type_component_decl{,0}): More new nonterminals.
5924 ({after_,no}type_declarator): Fold in START_DECLARATOR token.
5925 Eliminates four reduce/reduce conflicts.
5926
5927 (expr): Depend on nontrivial_exprlist instead of nonnull_exprlist.
5928 (nontrivial_exprlist): New nonterminal: A list of at least two
5929 expr_no_commas's.
5930 (nonnull_exprlist): Depend on nontrival_exprlist.
5931 Eliminates four reduce/reduce conflicts.
5932
5933 (named_class_head): Move intermediate code block into separate
5934 nonterminal so that we can stick %prec EMPTY on it.
5935
5936 Add more %prec EMPTY's to eliminate remaining shift/reduce
5937 conflicts.
5938
5939 (after_type_declarator): Add maybe_raises to fndecl rules.
5940 (after_type_declarator_no_typename): Remove.
5941 For correctness.
5942
5943 Document remaining reduce/reduce conflicts.
5944
5945 Tue Feb 22 12:10:32 1994 Jason Merrill (jason@deneb.cygnus.com)
5946
5947 * search.c (get_base_distance): Only bash BINFO_INHERITANCE_CHAIN
5948 (TYPE_BINFO (type)) if we care about the path.
5949
5950 * tree.c (lvalue_p): A COND_EXPR is an lvalue if both of the
5951 options are.
5952
5953 Mon Feb 21 19:59:40 1994 Mike Stump <mrs@cygnus.com>
5954
5955 * Makefile.in (mostlyclean): lex.c is a source file, don't
5956 remove.
5957
5958 Sat Feb 19 01:27:14 1994 Jason Merrill (jason@deneb.cygnus.com)
5959
5960 * parse.y: Eliminate 20 shift/reduce conflicts.
5961
5962 Fri Feb 18 11:49:42 1994 Jason Merrill (jason@deneb.cygnus.com)
5963
5964 * pt.c (type_unification): Add subr argument; if set, it means
5965 that we are calling ourselves recursively, so a partial match is OK.
5966 (unify): Support pointers to methods and functions.
5967 (tsubst): Support method pointers.
5968 * decl.c (build_ptrmemfunc_type): No longer static, so that
5969 tsubst can get at it.
5970
5971 * init.c (is_aggr_typedef): Pretend template type parms are
5972 aggregates.
5973 * decl2.c (build_push_scope): If cname refers to a template type
5974 parm, just grin and nod.
5975
5976 * call.c (build_overload_call_real): Pass subr argument to
5977 type_unification.
5978 * pt.c (do_function_instantiation): Ditto.
5979 * class.c (instantiate_type): Ditto.
5980
5981 * search.c (get_base_distance): If BINFO is a binfo, use it and
5982 don't mess with its BINFO_INHERITANCE_CHAIN.
5983
5984 * cvt.c (convert_to_reference): Fix temporary generation.
5985 If ambiguous, return error_mark_node.
5986
5987 * init.c (build_new): Put back some necessary code.
5988
5989 Thu Feb 17 15:39:47 1994 Jason Merrill (jason@deneb.cygnus.com)
5990
5991 * init.c (build_new): Deal with array types properly.
5992
5993 * search.c (get_binfo): Become a shell for get_base_distance.
5994 (get_binfo_recursive): Lose.
5995 (get_base_distance_recursive): Find the path to the via_virtual base
5996 that provides the most access.
5997 (get_base_distance): Ditto.
5998
5999 * parse.y (explicit_instantiation): Syntax is 'template class
6000 A<int>', not 'template A<int>'.
6001
6002 * typeck.c (convert_for_initialization): Remove bogus warning.
6003
6004 * parse.y (datadef): Revert patch of Oct 27.
6005
6006 Thu Feb 17 15:12:29 1994 Per Bothner (bothner@kalessin.cygnus.com)
6007
6008 * class.c (build_vfn_ref): Cast delta field to ptrdiff_type_node,
6009 rather than integer_type_node. Does wonders for the Alpha.
6010
6011 Thu Feb 17 13:36:21 1994 Jason Merrill (jason@deneb.cygnus.com)
6012
6013 * decl.c (build_ptrmemfunc_type): Make sure that the pmf type
6014 goes onto the same obstack as its target type.
6015
6016 Wed Feb 16 00:34:46 1994 Jason Merrill (jason@deneb.cygnus.com)
6017
6018 * cvt.c (convert_to_reference): If converting via constructor
6019 on local level, go back to build_cplus_new approach.
6020
6021 * tree.c (build_cplus_new): If with_cleanup_p, set cleanup slot
6022 to error_mark_node to prevent expand_expr from building a cleanup
6023 for this variable.
6024
6025 * lex.c (default_assign_ref_body): Return *this from the memcpy
6026 version, too.
6027
6028 * decl.c (grok_reference_init): Just return if called with
6029 error_mark_node, don't worry about initializing non-const reference
6030 with temporary.
6031
6032 * cvt.c (convert_to_reference): Do the right thing for
6033 non-aggregate reference conversions, pedwarn when generating a
6034 non-const reference to a temporary.
6035
6036 * class.c (finish_struct): TYPE_HAS_COMPLEX_{INIT,ASSIGN}_REF and
6037 TYPE_NEEDS_CONSTRUCTING all depend on TYPE_USES_VIRTUAL_BASECLASSES
6038 again.
6039
6040 Tue Feb 15 19:47:19 1994 Jason Merrill (jason@deneb.cygnus.com)
6041
6042 * decl.c (grok_reference_init): Pawn off a lot of the work on
6043 convert_to_reference. Generally do the right thing.
6044
6045 * cvt.c (convert_to_reference): Conform to the initial comment;
6046 i.e. don't create temps if decl != error_mark_node. Handle
6047 cleanups better for temps that do get created. Don't pretend
6048 that we can use an 'A' to initialize a 'const double &' just by
6049 tacking on a NOP_EXPR. Support LOOKUP_SPECULATIVELY.
6050
6051 * call.c (build_method_call): Set TREE_HAS_CONSTRUCTOR on
6052 constructor calls.
6053
6054 Mon Feb 14 14:50:17 1994 Jason Merrill (jason@deneb.cygnus.com)
6055
6056 * decl.c (grok_reference_init): Make a temporary for initializing
6057 const reference from constant expression.
6058
6059 Mon Feb 14 11:31:31 1994 Per Bothner (bothner@kalessin.cygnus.com)
6060
6061 * cp-tree.h, decl.c (set_identifier_local_value): Deleted function.
6062 * decl.c (pushdecl): Define decl in correct binding_level
6063 (which isn't always the inner_binding_level).
6064
6065 * cvt.c (build_up_reference): Don't ever call expand_aggr_init.
6066 It's ugly, and I don't think it's the right thing to do.
6067
6068 * cp-tree.h, class.c, decl.c, decl2.c, sp/search.c:
6069 Remove NEW_CLASS_SCOPING, assuming it is always 1.
6070 * decl.c (pop_decl_level): Removed; manually inlined.
6071
6072 Sun Feb 13 19:04:56 1994 Jason Merrill (jason@deneb.cygnus.com)
6073
6074 * class.h (candidate): Add basetypes field.
6075
6076 * call.c (build_method_call): Do access checking after choosing a
6077 function, not before.
6078
6079 * Makefile.in (cvt.o, call.o, method.o): Depend on class.h.
6080 (mostlyclean): Remove ../cc1plus.
6081
6082 Fri Feb 11 11:52:26 1994 Jason Merrill (jason@deneb.cygnus.com)
6083
6084 * class.c (finish_struct): Don't allow adjusting access to a field
6085 of a base class if a local field has the same name.
6086
6087 * error.c (dump_type_prefix): Output basetype for METHOD_TYPEs.
6088
6089 hu Jan 13 17:55:51 EST 1994 Gnanasekaran Swaminathan (gs4t@virginia.edu)
6090
6091 * cp-tree.h (DESTRUCTOR_NAME_P): do not confuse AUTO_TEMP names
6092 with destructor names when either NO_DOLLAR_IN_LABEL or
6093 NO_DOT_IN_LABEL are not defined.
6094
6095 Now `template <class T, T f(T&), const T*> class A {...}' works.
6096
6097 * pt.c (grok_template_type): substitute template parm types
6098 with actual types in complex type as well.
6099 (coerce_template_parms): update the grok_template_type ()
6100 function call.
6101
6102 * pt.c (tsubst): Traverse method list using DECL_CHAIN.
6103
6104 * decl.c (grok_op_properties): Allow operator++/-- to have
6105 default arguments.
6106
6107 * typeck2.c (store_init_value): Don't abort when called to
6108 initialize a type that needs constructing with a CONSTRUCTOR.
6109
6110 * init.c (expand_aggr_init_1, CONSTRUCTOR case): If
6111 store_init_value fails, build and expand an INIT_EXPR. If
6112 store_init_value succeeds, call expand_decl_init.
6113
6114 Fri Feb 11 02:49:23 1994 Mike Stump <mrs@cygnus.com>
6115
6116 * class.c (build_vbase_path): Use complete_type_p instead of
6117 resolves_to_fixed_type_p to determine if the virtual bases are in
6118 their right place for the type of expr. Cures problem of thinking a
6119 virtual base class is one place, when it is in fact someplace else.
6120
6121 Fri Feb 11 00:26:46 1994 Mike Stump <mrs@cygnus.com>
6122
6123 * init.c (resolve_offset_ref): Make sure we first convert to
6124 intermediate type, if given, when dealing with members off `this'.
6125 Solves an incorrrect `type `foo' is not a base type for type
6126 `multiple'' when it is infact, a base type.
6127
6128 Thu Feb 10 21:49:35 1994 Mike Stump <mrs@cygnus.com>
6129
6130 * class.c (modify_other_vtable_entries): Use get_binfo, instead
6131 of binfo_value. Solves problem with compiler giving a `base class
6132 `B' ambiguous in binfo_value (compiler error)' on complex MI
6133 herarchies, when a virtual function is first defied in a virtual
6134 base class.
6135
6136 Thu Feb 10 17:19:32 1994 Mike Stump <mrs@cygnus.com>
6137
6138 * class.c (build_vbase_path): Don't complain about ambiguous
6139 intermediate conversion when converting down to a virtual base
6140 class, even if they might seem to be ambiguous.
6141
6142 Thu Feb 10 12:18:26 1994 Jason Merrill (jason@deneb.cygnus.com)
6143
6144 * typeck2.c (build_functional_cast): #if 0 out constructor
6145 inheritance code, improve error messages.
6146
6147 * class.c (finish_base_struct): Complain about base with only
6148 non-default constructors in derived class with no constructors.
6149
6150 * decl.c (grokdeclarator): Fix detection of virtual new/delete.
6151
6152 Wed Feb 9 22:02:32 1994 Mike Stump <mrs@cygnus.com>
6153
6154 * search.c (build_mi_virtuals, add_mi_virtuals,
6155 report_ambiguous_mi_virtuals): Removed unneeded code.
6156 * class.c (finish_struct_bits): Ditto.
6157
6158 Wed Feb 9 11:27:17 1994 Jason Merrill (jason@deneb.cygnus.com)
6159
6160 * pt.c (end_template_instantiation): Push decl before
6161 pop_from_top_level.
6162
6163 * typeck2.c (build_m_component_ref): Make sure datum is of
6164 aggregate type.
6165
6166 * init.c (get_type_value): New function, returns
6167 IDENTIFIER_TYPE_VALUE or IDENTIFIER_CLASS_TYPE_VALUE or NULL_TREE.
6168
6169 * call.c (build_method_call): Don't die on call to destructor for
6170 non-type.
6171
6172 * decl.c (grokdeclarator): Complain about virtual op new and op
6173 delete, make static virtuals unvirtual instead of unstatic.
6174
6175 * typeck.c (build_c_cast): Also call default_conversion on
6176 methods.
6177
6178 * decl.c (grokdeclarator): Don't complain about anonymous
6179 bitfields.
6180
6181 * parse.y (simple_stmt, for loops): Move the continue point after
6182 the cleanups.
6183
6184 * class.c (finish_struct): Fix setting of
6185 TYPE_HAS_COMPLEX_INIT_REF.
6186
6187 Tue Feb 8 13:21:40 1994 Jason Merrill (jason@deneb.cygnus.com)
6188
6189 * init.c (build_new): Deal with `new double (1)'.
6190
6191 * class.c (finish_struct): TYPE_HAS_COMPLEX_*_REF are supersets of
6192 TYPE_HAS_REAL_*_REF, but TYPE_HAS_COMPLEX_INIT_REF is independent of
6193 TYPE_NEEDS_CONSTRUCTING.
6194
6195 * decl.c (duplicate_decls): Propagate access decls.
6196
6197 * typeck2.c (process_init_constructor): Accept empty_init_node
6198 for initializing unions.
6199
6200 * class.c, lex.c, cp-tree.h: Use
6201 TYPE_HAS_COMPLEX_ASSIGN_REF where TYPE_HAS_REAL_ASSIGN_REF was used
6202 before, use TYPE_HAS_COMPLEX_INIT_REF for TYPE_NEEDS_CONSTRUCTING in
6203 some places.
6204
6205 * decl.c (finish_decl): Don't complain about uninitialized const
6206 if it was initialized before.
6207
6208 Mon Feb 7 18:12:34 1994 Jason Merrill (jason@deneb.cygnus.com)
6209
6210 * lex.c (default_assign_ref_body): Don't deal with vbases for
6211 now.
6212
6213 * decl.c (finish_decl): Fix reversed logic for objects and other
6214 things that need to be constructed but have no initializer.
6215
6216 * class.c (finish_struct): Don't set TYPE_HAS_* flags that are
6217 set by grok_op_properties or finish_decl.
6218
6219 * decl.c: Don't warn about extern redeclared inline unless
6220 -Wextern-inline is given.
6221 * decl2.c (lang_decode_option): Ditto.
6222 * cp-tree.h: Ditto.
6223
6224 Mon Feb 7 17:29:24 1994 Per Bothner (bothner@kalessin.cygnus.com)
6225
6226 * decl.c (pushdecl_with_scope): Fix thinko. Add forward
6227 declaration.
6228
6229 * decl.c (pushdecl_with_scope): New function.
6230 * decl.c (pushdecl_top_level): Use new function.
6231 * decl.c (pushtag): Initialize newdecl.
6232 * decl.c (pushtag): Push new type decl into correct scope.
6233
6234 Mon Feb 7 14:42:03 1994 Jason Merrill (jason@deneb.cygnus.com)
6235
6236 * call.c, cvt.c, init.c, search.c, cp-tree.h:
6237 Eradicate LOOKUP_PROTECTED_OK.
6238
6239 Mon Feb 7 13:57:19 1994 Per Bothner (bothner@kalessin.cygnus.com)
6240
6241 * decl.c (pushtag, xref_tag), cp-tree.h: Add extra parameter
6242 'globalize' to signify implicit declarations.
6243 * decl.c (globalize_nested_type, maybe_globalize_type): Removed.
6244 * decl.c (set_identifier_type_value_with_scope): New function.
6245 * decl.c (set_identifier_local_value): Simplify.
6246 * spew.c (yylex, do_addr): Modify to return a _DEFN if a
6247 forward declaration (followed by ';' and not preceded by 'friend').
6248 * class.c, decl.c, except.c, init.c, parse.y,
6249 pt.c, search.c: Add new argument to calls to xref_tag and
6250 pushtag.
6251
6252 Mon Feb 7 00:22:59 1994 Jason Merrill (jason@deneb.cygnus.com)
6253
6254 * cp-tree.h (ACCESSIBLY_UNIQUELY_DERIVED_P): New macro, means what
6255 ACCESSIBLY_DERIVED_FROM_P meant before.
6256 (ACCESSIBLY_DERIVED_FROM_P): Now disregards ambiguity.
6257
6258 * cvt.c (build_up_reference): Call get_binfo with PROTECT == 1.
6259
6260 * search.c (get_base_distance_recursive): Members and friends of
6261 a class X can implicitly convert an X* to a pointer to a private or
6262 protected immediate base class of X.
6263 (get_binfo_recursive): Ditto.
6264 (get_base_distance): Ignore ambiguity if PROTECT < 0.
6265 (get_binfo): Lose multiple values of PROTECT.
6266 (compute_access): Protected is OK if the start of the
6267 search is an accessible base class of current_class_type.
6268
6269 * method.c (build_opfncall): Do check access on operator new here.
6270
6271 * decl.c (finish_function): Don't check access on operator new
6272 here.
6273
6274 Sun Feb 6 14:06:58 1994 Jason Merrill (jason@deneb.cygnus.com)
6275
6276 * decl.c (xref_tag): The base of a derived struct is NOT always
6277 public. Duh.
6278
6279 * pt.c (do_explicit_instantiation): New function, called from
6280 parser to do explicit function instantiation.
6281 (type_unification): Allow the args list to be terminated with
6282 void_list_node.
6283 (do_pending_expansions): Look at i->interface for non-member
6284 templates.
6285
6286 * parse.y (datadef): Move explicit_instantiation here.
6287 (structsp): From here.
6288 (datadef): Complain about `int;'.
6289
6290 Sun Feb 6 12:33:18 1994 Per Bothner (bothner@kalessin.cygnus.com)
6291
6292 * pt.c (end_template_instantiation), cp-tree.h: Remove unused
6293 second parameter, and simplify first from a TREE_LIST where
6294 we only care about its TREE_VALUE to just the value (an IDENTIFIER).
6295 * pt.c (instantiate_member_templates): Simplify argument list
6296 from a TREE_LIST to just an IDENTIFIER.
6297 * lex.c (yyprint): PRE_PARSED_CLASS_DECL is now just an IDENTIFIER.
6298 * parse.y (template_instantiate_once): Simplify accordingly.
6299 * decl.c (inner_binding_level): New. Use various places to
6300 simplify.
6301
6302 Sun Feb 6 02:49:37 1994 Jason Merrill (jason@deneb.cygnus.com)
6303
6304 * typeck2.c (build_functional_cast): int() -> int(0).
6305
6306 Sat Feb 5 00:53:21 1994 Jason Merrill (jason@deneb.cygnus.com)
6307
6308 * class.c (finish_struct): Don't do a bitwise copy for op= if the
6309 class has a virtual function table.
6310
6311 * typeck.c (convert_for_initialization): Restore warnings about
6312 not using defined op=. Should really be my_friendly_aborts, I
6313 s'pose.
6314
6315 Fri Feb 4 14:21:00 1994 Jason Merrill (jason@deneb.cygnus.com)
6316
6317 * class.c (finish_struct): Tidy up conditions for doing bitwise
6318 copies of objects.
6319
6320 * decl.c (build_default_constructor): #if 0 out.
6321
6322 * *: Eradicate TYPE_GETS_{ASSIGNMENT,ASSIGN_REF,CONST_ASSIGN_REF,
6323 CONST_INIT_REF}, TYPE_HAS_REAL_CONSTRUCTOR.
6324
6325 * decl.c (grokdeclarator): Don't return void_type_node for
6326 friends being defined here.
6327
6328 * init.c (perform_member_init): Only do the init if it's useful.
6329
6330 * lex.c (default_copy_constructor_body): If we don't need to do
6331 memberwise init, just call __builtin_memcpy.
6332 (default_assign_ref_body): Ditto.
6333
6334 * decl.c (grokdeclarator): If friendp && virtualp, friendp = 0.
6335
6336 Fri Feb 4 13:02:56 1994 Mike Stump <mrs@cygnus.com>
6337
6338 * lex.c (reinit_parse_for_method, cons_up_default_function):
6339 Don't give warn_if_unknown_interface warning when it came from a
6340 system header file.
6341 * pt.c (end_template_decl, instantiate_template): Ditto.
6342 * decl.c (start_decl): Ditto.
6343
6344 Fri Feb 4 00:41:21 1994 Jason Merrill (jason@deneb.cygnus.com)
6345
6346 * decl.c (grokdeclarator): Don't try to set TYPE_WAS_ANONYMOUS on
6347 enums.
6348
6349 * decl2.c (constructor_name_full): Use IS_AGGR_TYPE_CODE instead of
6350 IS_AGGR_TYPE, since we don't know it's a type.
6351
6352 Thu Feb 3 11:36:46 1994 Jason Merrill (jason@deneb.cygnus.com)
6353
6354 * decl.c (grokdeclarator): Don't complain about anonymous unions.
6355
6356 * cp-tree.h (TYPE_WAS_ANONYMOUS): This struct was originally
6357 anonymous, but had a name given to it by a typedef.
6358
6359 * decl.c (grokdeclarator): When renaming an anonymous struct, set
6360 TYPE_WAS_ANONYMOUS.
6361
6362 * decl2.c (constructor_name_full): Use TYPE_WAS_ANONYMOUS.
6363
6364 * cp-tree.h (DECL_UNDEFINED_FRIENDS): #if 0 out.
6365
6366 * init.c (xref_friend): Don't set up DECL_UNDEFINED_FRIENDS.
6367 (embrace_waiting_friends): Don't use DECL_UNDEFINED_FRIENDS.
6368
6369 * decl.c (grokdeclarator): Set TYPE_NESTED_NAME properly on nested
6370 anonymous structs that get typedef'd.
6371
6372 * decl.c (grokdeclarator): Always return void_type_node for
6373 friends.
6374
6375 * error.c (dump_function_decl): Don't use DECL_CLASS_CONTEXT for
6376 friends.
6377 (dump_function_decl): Don't print out default args for
6378 a function used in an expression.
6379
6380 * decl.c (grokdeclarator): Give error on abstract declarator used
6381 in an invalid context (i.e. `void (*)();').
6382
6383 * error.c (cp_line_of): Support _TYPE nodes.
6384 (cp_file_of): Ditto.
6385
6386 * cvt.c (build_up_reference): Don't abort if passed a SAVE_EXPR;
6387 it can happen for the RHS of an assignment stmt where the LHS is
6388 a COND_EXPR.
6389
6390 * init.c (expand_aggr_init_1): Deal with bracketed initializer
6391 lists properly.
6392
6393 * class.c (finish_struct): Deal with enumerators and typedefs
6394 again.
6395
6396 Wed Feb 2 11:30:22 1994 Jason Merrill (jason@deneb.cygnus.com)
6397
6398 * class.c (finish_struct): Tidy up loop over fields.
6399
6400 * errfn.c (cp_thing): Don't advance twice after a format.
6401
6402 * class.c (finish_struct): Complain about needing a constructor
6403 if a member has only non-default constructors, and don't try to
6404 generate a default constructor.
6405
6406 * decl.c (finish_decl): Also do the constructor thing if
6407 TYPE_NEEDS_CONSTRUCTING is set (for arrays).
6408
6409 * search.c (unuse_fields): New function: mark all fields in this
6410 type unused.
6411 (dfs_unuse_fields): Helper function.
6412
6413 * class.c (pushclass): If the new class is the same as the old
6414 class, still unuse the fields.
6415 (unuse_fields): Move to search.c.
6416
6417 * decl.c (grok_op_properties): Add friendp argument.
6418 (grokfndecl): Pass it.
6419 (start_method): Ditto.
6420
6421 * decl2.c (delete_sanity): Add use_global_delete parameter to catch
6422 ::delete calls.
6423
6424 * parse.y (unary_expr): Pass new parameter to delete_sanity.
6425
6426 * lex.c (default_copy_constructor_body): Don't choke if the union
6427 has no fields.
6428 (default_assign_ref_body): Ditto.
6429
6430 * call.c (compute_conversion_costs_ansi): Do the right thing for
6431 ellipsis matches.
6432
6433 * decl.c (push_to_top_level): Optimize.
6434
6435 * decl.c (start_function): Look for the lexical scope of a friend
6436 in DECL_CLASS_CONTEXT.
6437
6438 * init.c (do_friend): Set DECL_CLASS_CONTEXT on global friends.
6439
6440 Tue Feb 1 15:59:24 1994 Jason Merrill (jason@deneb.cygnus.com)
6441
6442 * cp-tree.h (TREE_GETS_PLACED_NEW): New macro.
6443
6444 * init.c (init_init_processing): Don't assign BIN/BID to the
6445 IDENTIFIER_GLOBAL_VALUEs of their respective operators.
6446 (build_new): Check TREE_GETS_PLACED_NEW.
6447
6448 * decl.c (grok_op_properties): Don't set TREE_GETS_NEW for a decl of
6449 op new with placement, set TREE_GETS_PLACED_NEW.
6450
6451 * cp-tree.h (ANON_UNION_P): New macro. Applies to decls.
6452
6453 * class.c (finish_struct): Don't treat anonymous unions like
6454 other aggregate members. Do synthesize methods for unions without
6455 a name, since they may or may not be "anonymous unions".
6456
6457 * decl2.c (grok_x_components): Wipe out memory of synthesized methods
6458 in anonymous unions.
6459
6460 * lex.c (default_copy_constructor_body): Support unions.
6461 (default_assign_ref_body): Ditto.
6462
6463 Mon Jan 31 12:07:30 1994 Jason Merrill (jason@deneb.cygnus.com)
6464
6465 * cp-tree.h: Fix documentation of LOOKUP_GLOBAL, add prototypes.
6466
6467 * error.c (args_as_string): New function (%A), like type_as_string
6468 except NULL_TREE -> "..."
6469
6470 * call.c (build_overload_call_real): Fix for new overloading.
6471
6472 * decl.c (grok_op_properties): Set all of the TYPE_OVERLOADS_* flags
6473 here.
6474
6475 * parse.y (operator_name): Instead of here.
6476
6477 * typeck2.c (build_functional_cast): Treat a TREE_LIST as a list
6478 of functions.
6479
6480 * call.c (build_overload_call_real): Support LOOKUP_SPECULATIVELY.
6481
6482 * method.c (build_opfncall): Don't need to massage return value
6483 any more, call build_overload_call with all flags.
6484
6485 * typeck.c (build_x_binary_op): Put back speculative call to
6486 build_opfncall.
6487 (build_x_unary_op): Ditto.
6488 (build_x_conditional_expr): Ditto.
6489
6490 Mon Jan 31 10:00:30 1994 Mike Stump <mrs@cygnus.com>
6491
6492 * cvt.c (build_type_conversion_1): Change call to pedwarn into
6493 warning, and conditionalize upon warn_cast_qual.
6494
6495 Fri Jan 28 11:48:15 1994 Jason Merrill (jason@deneb.cygnus.com)
6496
6497 * search.c (lookup_field): If xbasetype is a binfo, copy it to
6498 avoid clobbering its inheritance info.
6499
6500 * call.c (build_method_call): Don't overwrite basetype_path with
6501 TYPE_BINFO (inst_ptr_basetype) if they have the same type.
6502
6503 * search.c (compute_access): Fix handling of protected inheritance
6504 and friendship with the enclosing class.
6505
6506 * typeck2.c (store_init_value): Allow passing of TREE_CHAIN for
6507 initialization of arbitrary variable.
6508
6509 * typeck2.c (build_functional_cast): Only try calling a method if
6510 one exists.
6511
6512 * decl.c (grokdeclarator): Move handling of constructor syntax
6513 initialization into first loop for generality.
6514 (parmlist_is_random): Lose.
6515
6516 * lex.c (cons_up_default_function): Set TREE_PARMLIST on arguments
6517 to default function.
6518
6519 Thu Jan 27 19:26:51 1994 Jason Merrill (jason@deneb.cygnus.com)
6520
6521 * decl.c (grokparms): Abort if we get called with something we don't
6522 expect.
6523
6524 Thu Jan 27 17:37:25 1994 Mike Stump <mrs@cygnus.com>
6525
6526 * call.c (build_overload_call_real): Change argument complain to
6527 flags to match style of rest of code. Pass it down to
6528 build_function_call_real as necessary.
6529 * call.c (build_overload_call, build_overload_call_maybe): Change
6530 argument complain to flags to match style of rest of code.
6531 * cp-tree.h (build_function_call_real): Added fourth flags
6532 argument.
6533 * cvt.c (convert_to_reference): Only give warning messages, if
6534 LOOKUP_COMPLAIN is set.
6535 * typeck.c (build_x_function_call): Change simple complain
6536 argument to build_overload_call_maybe and build_overload_call, to
6537 LOOKUP_COMPLAIN to match style of rest of code.
6538 * typeck2.c (build_functional_cast): Ditto.
6539 * typeck.c (build_function_call_real): Add flags, so that we can
6540 not complain, if we don't want to complain. Complain about
6541 arguments, if we are complaining, otherwise don't.
6542 * typeck.c (build_function_call, build_function_call_maybe):
6543 Stick in flags argument.
6544 * typeck.c (build_x_binary_op, build_x_unary_op,
6545 build_x_conditional_expr, build_x_compound_expr): Follow style of
6546 build_x_indirect_ref, as it is more correct and more common.
6547
6548 Thu Jan 27 14:36:20 1994 Jason Merrill (jason@deneb.cygnus.com)
6549
6550 * call.c (build_method_call): Don't check for being called with
6551 a pointer.
6552
6553 * decl2.c (finish_file): Don't play with DECL_CLASS_CONTEXT for the
6554 static initializer function.
6555
6556 * init.c (build_member_call): Use convert_force here, too.
6557
6558 * search.c (compute_access): Only treat static members specially
6559 if they are referenced directly.
6560
6561 Wed Jan 26 18:28:14 1994 Jason Merrill (jason@deneb.cygnus.com)
6562
6563 * gxxint.texi (Access Control): New node.
6564
6565 * search.c (current_scope): New function; returns whichever of
6566 current_class_type and current_function_decl is the most nested.
6567 (compute_access): Total overhaul to make it clearer and more
6568 correct. Don't use the cache for now; in the only situation where
6569 it was used before, it gained nothing. This frees up three of the
6570 DECL_LANG_FLAGs for possible other use!
6571
6572 * cp-tree.h: #if 0 out DECL_PUBLIC & friends.
6573
6574 * typeck.c (build_component_ref_1): Don't check DECL_PUBLIC.
6575
6576 * call.c (build_method_call): Use convert_force to cast `this' --
6577 rely on the access checking for the method itself.
6578
6579 * init.c (is_friend): Do the nesting thing, handle types. I am
6580 my own friend.
6581 (is_friend_type): Become a shell for is_friend.
6582 (add_friend): Never stick in ctype.
6583 Why are the friendship functions in init.c, anyway?
6584
6585 Wed Jan 26 17:50:00 1994 Mike Stump <mrs@cygnus.com>
6586
6587 * cvt.c (build_type_conversion_1): Don't conditionalize call to
6588 pedwarn upon pedantic.
6589
6590 Wed Jan 26 17:20:46 1994 Mike Stump <mrs@cygnus.com>
6591
6592 * cvt.c (convert_to_reference): Add 8.4.3 checking so that one
6593 gets a warning if one tries to initialize a non-const & from a
6594 non-lvalue.
6595 * cvt.c (convert_to_reference): Use %P format for argument
6596 numbers in warnings.
6597
6598 Wed Jan 26 14:35:06 1994 Mike Stump <mrs@cygnus.com>
6599
6600 * init.c (build_delete): Follow style in call.c to construct the
6601 virtual call to the desctructor, as that code is right. Fixes a
6602 problem of the compiler saying a pointer conversion is ambiguous.
6603
6604 Wed Jan 26 11:28:14 1994 Jason Merrill (jason@deneb.cygnus.com)
6605
6606 * cp-tree.h (VTABLE_NAME_P): Change other occurrence of
6607 VTABLE_NAME_FORMAT to VTABLE_NAME.
6608
6609 * *: s/visibility/access/g
6610
6611 Tue Jan 25 18:39:12 1994 Jason Merrill (jason@deneb.cygnus.com)
6612
6613 * typeck.c (build_modify_expr): Don't smash references if INIT_EXPR.
6614
6615 Tue Jan 25 13:54:29 1994 Mike Stump <mrs@cygnus.com>
6616
6617 * init.c (build_delete): Back out Jan 17th & 18th pacthes, as
6618 they break libg++.
6619
6620 Tue Jan 25 13:11:45 1994 Jason Merrill (jason@deneb.cygnus.com)
6621
6622 * decl.c (duplicate_decls): Fix pointer arithmetic.
6623
6624 Mon Jan 24 15:50:06 1994 Chip Salzenberg (chip@fin.uucp)
6625
6626 [ cp-* changes propagated from c-* changes in 940114 snapshot ]
6627 * cp-parse.y (maybe_attribute): Allow multiple __attribute__
6628 clauses on a declaration.
6629
6630 Mon Jan 24 17:06:23 1994 Jason Merrill (jason@deneb.cygnus.com)
6631
6632 * class.c (finish_struct): Do synthesize methods for anon
6633 structs, just not unions.
6634
6635 Mon Jan 24 13:50:13 1994 Kung Hsu (kung@mexican.cygnus.com)
6636
6637 * decl.c (xref_tag): handle anonymous nested type.
6638 * decl.c (globalize_nested_type): add no globalize bit check.
6639 * spew.c (hack_more_ids) : templated nested decl not push top
6640 level.
6641
6642 * parse.y : get rid of 'goto do_components'. It is much better
6643 for debugging.
6644
6645 * decl.c (is_anon_name): get rid of the function and use the
6646 macro ANON_AGGRNAME_P.
6647 * pt.c : ditto.
6648
6649 Fri Jan 21 14:06:02 1994 Jason Merrill (jason@deneb.cygnus.com)
6650
6651 * class.c (finish_struct): Don't synthesize any methods for
6652 anonymous structs/unions.
6653
6654 * typeck.c (build_modify_expr): Don't treat pmf's as class objects.
6655
6656 Thu Jan 20 18:56:46 1994 Jason Merrill (jason@deneb.cygnus.com)
6657
6658 * method.c (build_opfncall): Call build_indirect_ref on
6659 synthesized instance for operator delete.
6660
6661 * pt.c (type_unification): Don't abort if called with a list of
6662 types in ARGS.
6663
6664 * class.c (instantiate_type): Deal with function templates.
6665
6666 Thu Jan 20 16:55:35 1994 Jim Wilson (wilson@sphagnum.cygnus.com)
6667
6668 * Makefile.in (CC): Default to cc not gcc.
6669
6670 Thu Jan 20 13:47:54 1994 Jason Merrill (jason@deneb.cygnus.com)
6671
6672 * typeck.c (build_modify_expr): Call constructor if appropriate.
6673
6674 * decl.c (push_to_top_level): Clear out class-level bindings cache.
6675
6676 Wed Jan 19 13:51:22 1994 Jason Merrill (jason@deneb.cygnus.com)
6677
6678 * call.c (resolve_scope_to_name): Work recursively (previously only
6679 looked down one level).
6680
6681 * lex.c (do_pending_inlines): If we're still dealing with the last
6682 batch of inlines, don't start working on a new one.
6683
6684 * Makefile.in (stamp-parse): Update conflict count.
6685 (TAGS): Fix.
6686
6687 * parse.y (explicit_instantiation): New rule; implements
6688 'template A<int>' syntax (though not 'template foo(int)' yet).
6689 (structsp): Add explicit_instantiation.
6690
6691 Tue Jan 18 13:53:05 1994 Jason Merrill (jason@deneb.cygnus.com)
6692
6693 * class.c (finish_struct, etc.): Simplify decision to synthesize
6694 a destructor.
6695
6696 * call.c, class.c, cp-tree.h, decl.c, init.c,
6697 ptree.c, search.c, typeck.c, typeck2.c: Nuke
6698 TYPE_NEEDS_CONSTRUCTOR (change all calls to TYPE_NEEDS_CONSTRUCTING).
6699 * init.c (expand_aggr_init_1): Don't try non-constructor methods
6700 of initializing objects.
6701 (build_new): Don't try other methods if the constructor lookup fails.
6702
6703 * class.c (finish_base_struct): Set cant_have_default_ctor and
6704 cant_synth_copy_ctor properly.
6705 (finish_struct): Ditto.
6706
6707 Mon Jan 17 13:58:18 1994 Jason Merrill (jason@deneb.cygnus.com)
6708
6709 * typeck.c (build_modify_expr_1): #if 0 out again.
6710 (build_modify_expr): #if 0 out memberwise init code again.
6711
6712 * lex.c (default_copy_constructor_body): Be const-correct.
6713 (default_assign_ref_body): Ditto.
6714
6715 * init.c (perform_member_init): Use TYPE_HAS_CONSTRUCTOR to decide
6716 whether or not to use it, rather than TYPE_NEEDS_CONSTRUCTING.
6717 (expand_aggr_init): Disable silent conversion from initializer list
6718 to list of args for a constructor.
6719
6720 * class.c (base_info): Lose needs_default_ctor.
6721 (finish_base_struct): Ditto.
6722 (finish_struct): Ditto.
6723
6724 * decl.c (init_decl_processing): Don't turn off flag_default_inline
6725 just because flag_no_inline is on.
6726 (finish_decl): Use TYPE_HAS_CONSTRUCTOR to decide to use
6727 constructor.
6728
6729 * class.c (finish_struct): Synthesize default ctor whenever
6730 allowed.
6731
6732 * Makefile.in (TAGS): Don't try to run etags on cp-parse.y.
6733
6734 Sat Jan 15 18:34:33 1994 Mike Stump <mrs@cygnus.com>
6735
6736 * Makefile.in, configure: Handle the C++ front-end in a
6737 subdirectory.
6738 * cp-*: Move C++ front-end to cp/*.
6739
6740 Fri Jan 14 14:09:37 1994 Jason Merrill (jason@deneb.cygnus.com)
6741
6742 * cp-typeck.c (build_function_call_real): Modify to match other
6743 instances of taking the address of the function.
6744
6745 * cp-class.c (finish_struct): Set TYPE_HAS_REAL_CONSTRUCTOR to 1 if
6746 there are non-synthesized constructors.
6747 Only set TYPE_NEEDS_CONSTRUCTOR if TYPE_HAS_REAL_CONSTRUCTOR.
6748 Always generate copy constructor if possible.
6749
6750 * cp-tree.h (lang_type): Add has_real_constructor bitfield.
6751 (TYPE_HAS_REAL_CONSTRUCTOR): Define.
6752
6753 * cp-lex.c (default_copy_constructor_body): Use init syntax
6754 for all bases.
6755
6756 * cp-type2.c (store_init_value): Only give error for initializer list
6757 if TYPE_HAS_REAL_CONSTRUCTOR.
6758
6759 Thu Jan 13 15:38:29 1994 Jason Merrill (jason@deneb.cygnus.com)
6760
6761 * cp-tree.h (DECL_SYNTHESIZED): Add defn.
6762 (lang_decl): Add synthesized bitfield to decl_flags.
6763
6764 * cp-lex.c (cons_up_default_function): Use DECL_SYNTHESIZED to mark
6765 artificial methods, rather than a line # of 0.
6766
6767 Fri Jan 14 18:25:29 1994 Kung Hsu (kung@mexican.cygnus.com)
6768
6769 * cp-decl (xref_tag): fix a bug in conflict type.
6770 * cp-parse.y : add SCOPED_NAME for uninstantiated template nested
6771 type reference.
6772 * cp-spew.c (yylex) : generated SCOPED_NAME token.
6773 * cp-lex.c (yyprint): handle SCOPED_NAME.
6774
6775 Fri Jan 14 17:00:29 1994 Mike Stump <mrs@cygnus.com>
6776
6777 * cp-decl.c (pushdecl): Revert patch from Jan 11 19:33:03, as it is
6778 not right.
6779
6780 Thu Jan 13 14:00:35 1994 Kung Hsu (kung@mexican.cygnus.com)
6781
6782 * cp-decl2.c (grok_x_components): fix a bug that enum type does not
6783 have type_flags.
6784
6785 Thu Jan 13 11:39:34 1994 Mike Stump <mrs@cygnus.com>
6786
6787 Ensure that all vtable pointers are initialized with all the right
6788 values.
6789
6790 * cp-class.c (is_normal): Changed to reflect new meaning of
6791 CLASSTYPE_VFIELD_PARENT.
6792 * cp-class.c (maybe_fixup_vptrs): Use of
6793 CLASSTYPE_NEEDS_VIRTUAL_REINIT here is misguided. Use
6794 BINFO_MODIFIED instead.
6795 * cp-class.c (finish_struct): Changed to reflect new meaning of
6796 CLASSTYPE_VFIELD_PARENT.
6797 * cp-decl.c (get_binfo_from_vfield): Removed, unneeded now.
6798 * cp-decl.c (finish_function): Use init_vtbl_ptrs, instead of open
6799 coding it here.
6800 * cp-init.c (init_vfields): Changed name to init_vtbl_ptrs, and
6801 re-implement.
6802 * cp-init.c (emit_base_init): Use new name init_vtbl_ptrs.
6803 * cp-tree.h (vfield_parent): Changed to integer.
6804 * cp-tree.h (CLASSTYPE_VFIELD_PARENT): Changed docs to reflect new
6805 meaning.
6806 * cp-tree.h (init_vtbl_ptrs): Added init_vtbl_ptrs.
6807
6808 Wed Jan 12 18:24:16 1994 Kung Hsu (kung@mexican.cygnus.com)
6809
6810 * cp-decl.c (xref_tag): re-implement globalize nested type.
6811 * cp-decl2.c (grok_x_components): ditto.
6812 * cp-parse.y: ditto.
6813 * cp-tree.h (lang_type): add no_globalize bit in type_flags.
6814
6815 Wed Jan 12 14:08:09 1994 Jason Merrill (jason@deneb.cygnus.com)
6816
6817 * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC on friend
6818 decls with a definition attached.
6819
6820 * cp-typeck.c (build_modify_expr): Undo previous change in the case
6821 of INIT_EXPRs.
6822
6823 Tue Jan 11 19:33:03 1994 Jason Merrill (jason@deneb.cygnus.com)
6824
6825 * cp-typeck.c (build_modify_expr): Replace code for generating
6826 assignment semantics for classes with an error.
6827 (build_modify_expr_1): #if 0 out.
6828
6829 * cp-decl.c (pushdecl): Patch bogus design of pushdecl
6830 behavior for overloaded functions (it doesn't push anything).
6831
6832 * cp-class.c (finish_struct): When generating default op=,
6833 set TYPE_HAS_ASSIGNMENT.
6834
6835 Mon Jan 10 18:48:06 1994 Mike Stump <mrs@cygnus.com>
6836
6837 * cp-cvt.c (convert): Make {double, clashing enum} -> enum
6838 invalid.
6839 * cp-typeck.c (convert_for_assignment): Simplify.
6840 * cp-decl2.c (warn_enum_clash): Removed.
6841 * invoke.texi (-Wenum-clash): Removed.
6842 * toplev.c (-Wenum-clash): Removed.
6843
6844 Mon Jan 10 17:48:37 1994 Kung Hsu (kung@mexican.cygnus.com)
6845
6846 * cp-decl.c (finish_decl): fix incorrect popclass call.
6847
6848 * cp-decl.c (is_anon_name): new function, check whether the name
6849 is anonymous name generated by compiler.
6850 * cp-decl.c (grokdeclarator): allow nested SCOPE_REF
6851 * cp-spew.c (hack_more_ids): handle nested type in template.
6852 * cp-parse.y : handle nested type reference in uninstantiated
6853 template.
6854 * cp-call.c (build_method_call): handle uninstantiated template
6855 case.
6856 * cp-pt.c (search_nested_type_in_tmpl): new function, search nested
6857 type in template.
6858 * cp-pt.c (lookup_nested_type_by_name): new function, lookup nested
6859 type by name.
6860 * cp-pt.c (tsubst): handle nested type search by name.
6861
6862 Mon Jan 10 14:32:18 1994 Jason Merrill (jason@deneb.cygnus.com)
6863
6864 * cp-init.c (build_member_call): Propagate qualifiers to new type.
6865
6866 * cp-call.c (build_method_call): Count functions the new way.
6867
6868 Fri Jan 7 19:03:26 1994 Jason Merrill (jason@deneb.cygnus.com)
6869
6870 * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for nested classes,
6871 too.
6872
6873 Tue Jan 4 16:45:51 1994 Kung Hsu (kung@cirdan.cygnus.com)
6874
6875 * cp-parse.y: change to handle whether to globalize nested class.
6876 * cp-decl.c(xref_tag, maybe_globalize_type): Ditto.
6877
6878 Mon Jan 3 22:22:32 1994 Gerald Baumgartner (gb@cygnus.com)
6879
6880 * Makefile.in cp-call.c cp-class.c cp-cvt.c cp-decl.c cp-decl2.c
6881 cp-error.c cp-init.c cp-lex.c cp-lex.h cp-method.c cp-parse.y
6882 cp-spew.c cp-tree.c cp-tree.h cp-type2.c cp-typeck.c cp-xref.c
6883 gplus.gperf toplev.c: Incorporated C++ signature extension.
6884 * cp-sig.c: New file, contains most of signature processing.
6885 * cp-hash.h: Regenerated from gplus.gperf.
6886
6887 * gcc.1 g++.1: Added explanation for the `-fhandle-signatures'
6888 and `-fno-handle-signatures' command line flags.
6889
6890 * gcc.texi: Changed the last-modification date.
6891 * invoke.texi: Added `-fhandle-signatures' in the list of
6892 C++ language options. Added explanation for this option.
6893
6894 Tue Dec 28 21:10:03 1993 Mike Stump <mrs@cygnus.com>
6895
6896 * cp-init.c (expand_vec_init): Remove comptypes test, as it is too
6897 harsh here.
6898
6899 Tue Dec 28 13:42:22 1993 Mike Stump <mrs@cygnus.com>
6900
6901 * cp-pt.c (do_pending_expansions): Decide to expand a template
6902 member function, based upon it's class type, not the class type of
6903 the first place it was declared.
6904
6905 Tue Dec 28 05:42:31 1993 Mike Stump <mrs@cygnus.com>
6906
6907 * cp-class.c (is_normal): New routine, use to determine when the
6908 given binfo is the normal one. (The one that should have the simple
6909 vtable name.)
6910 * cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME
6911 to check if two fndecls are `the same'. Sometimes this routine can
6912 modify the main vtable, and normal should be 1, in that case, so use
6913 is_normal() to determine if this is the main vtable for the class.
6914 Don't recurse down virtual bases, as they are shared, and we take
6915 care of them elsewhere.
6916 * cp-class.c (modify_vtable_entries): If we have already updated the
6917 vtable with the new virtual, don't do it again.
6918 * cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as
6919 appropriate. Do virtual function overriding in virtual bases, after
6920 normal overriding, so that the base function list in DECL_VINDEX is
6921 not overridden, before we have a chance to run through the list.
6922 Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'.
6923 Make sure we pass the right address into modify_vtable_entries.
6924 * cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which
6925 binfo is the one that has the vtable that we based our vtable on.
6926
6927 Fri Dec 24 09:40:52 1993 Michael Tiemann (tiemann@blues.cygnus.com)
6928
6929 * cp-typeck.c (c_expand_start_case): Use default_conversion to
6930 convert expression from reference type if necessary.
6931
6932 Wed Dec 22 17:58:43 1993 Jason Merrill (jason@deneb.cygnus.com)
6933
6934 * cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before
6935 trying to read its TREE_VALUE.
6936
6937 * cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here.
6938 (finish_struct): Instead of here.
6939
6940 Tue Dec 21 14:34:25 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
6941
6942 * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't
6943 have TYPE_PTRMEMFUNC_P set before we try to build its
6944 CLASSTYPE_ID_AS_LIST.
6945 (get_decl_list): Likewise, when trying to read it.
6946
6947 * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined.
6948 (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT.
6949
6950 Mon Dec 20 13:35:03 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
6951
6952 * cp-typeck.c (rationalize_conditional_expr): New function.
6953 (unary_complex_lvalue): Use it.
6954 (build_modify_expr): Use it, since trying to do an ADDR_EXPR of it
6955 with build_unary_op won't cut it. Don't wrap the COND_EXPR with a
6956 SAVE_EXPR either.
6957
6958 * cp-decl2.c (explicit_warn_return_type): Deleted variable.
6959 (lang_decode_option): Set warn_return_type, not explicit_*, for
6960 -Wreturn-type and -Wall. This is what rest_of_compilation uses to
6961 decide if it should go into jump_optimize or not.
6962 * cp-tree.h (explicit_warn_return_type): Deleted.
6963 * cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*.
6964 (finish_function): Also complain about no return in a non-void fn if
6965 we're being pedantic (don't rely on use of -Wreturn-type).
6966
6967 Fri Dec 17 15:45:46 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
6968
6969 * cp-decl.c (grokdeclarator): Forbid declaration of a function as
6970 static if it's being done inside another function.
6971
6972 * cp-search.c (compute_visibility): Check for friendship both ways.
6973
6974 Fri Dec 17 14:28:25 1993 Jason Merrill (jason@deneb.cygnus.com)
6975
6976 * cp-cvt.c (build_default_binary_type_conversion): Make error
6977 messages more helpful.
6978
6979 * cp-error.c (op_as_string): New function, returns "operator =="
6980 given EQ_EXPR or suchlike.
6981
6982 Fri Dec 17 13:28:11 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
6983
6984 * cp-call.c (print_n_candidates): New function.
6985 (build_overload_call_real): Use it when we complain about a call
6986 being ambiguous.
6987
6988 Fri Dec 17 12:41:17 1993 Jason Merrill (jason@deneb.cygnus.com)
6989
6990 * cp-call.c (build_method_call): Fix checking for static call
6991 context.
6992
6993 * cp-method.c (build_opfncall): Call build_indirect_ref on argument
6994 to operator new.
6995
6996 * cp-init.c (build_new): Don't mess with rval when building
6997 indirect ref.
6998
6999 Thu Dec 16 16:48:05 1993 Kung Hsu (kung@cirdan.cygnus.com)
7000
7001 * cp-lex.c (default_assign_ref_body): add check when TYPE_NESTED_
7002 NAME(type) may not be exist. It's not a problem for old compiler.
7003
7004 Thu Dec 16 14:46:06 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
7005
7006 * cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's
7007 never used for anything.
7008 (struct lang_type, member type_flags): Delete field
7009 `alters_visibility', and up `dummy' by 1.
7010 * cp-class.c (finish_base_struct): Delete code that copies the
7011 setting of CLASSTYPE_ALTERS_VISIBILITIES_P.
7012 (finish_struct): Delete code that sets it.
7013
7014 Thu Dec 16 14:44:39 1993 Jason Merrill (jason@deneb.cygnus.com)
7015
7016 * cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to
7017 build_method_call that I messed up before.
7018
7019 * cp-search.c (get_base_distance): If protect > 1, allow immediate
7020 private base.
7021
7022 * cp-class.c (finish_base_struct): Set cant_synth_* correctly.
7023 (finish_struct): Ditto. Well, nigh-correctly; it won't deal
7024 properly with the case where a class contains an object of an
7025 ambiguous base class which has a protected op=. Should be fixed
7026 when the access control code gets overhauled.
7027 (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly.
7028
7029 Thu Dec 16 12:17:06 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
7030
7031 * cp-lex.c (real_yylex): Turn the code back on that deals with
7032 __FUNCTION__ and __PRETTY_FUNCTION__. Don't use lookup_name, to
7033 avoid the ambiguity problems that led to it being turned off in the
7034 first place.
7035
7036 * cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P
7037 to see if something is a method.
7038
7039 Wed Dec 15 18:35:58 1993 Mike Stump <mrs@cygnus.com>
7040
7041 * cp-typeck.c (build_modify_expr): Avoid error messages on small
7042 enum bit fields.
7043 * cp-typeck.c (convert_for_assignment): Add missing argument to
7044 cp_warning and cp_pedwarn calls.
7045
7046 Wed Dec 15 18:25:32 1993 Jason Merrill (jason@deneb.cygnus.com)
7047
7048 * cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base
7049 initializers; it's just anachronistic.
7050
7051 * cp-decl.c (finish_decl): Don't require external-linkage arrays
7052 to have a complete type at declaration time when pedantic.
7053
7054 Tue Dec 14 11:37:23 1993 Jason Merrill (jason@deneb.cygnus.com)
7055
7056 * cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set.
7057
7058 * cp-call.c (build_method_call): Don't dereference pointer given
7059 as instance.
7060
7061 * cp-decl.c (finish_function): Don't pass pointer to
7062 build_method_call.
7063 (finish_function): Ditto.
7064
7065 * cp-typeck.c (build_x_function_call): Ditto.
7066
7067 * cp-method.c (build_component_type_expr): Ditto.
7068
7069 * cp-init.c (build_member_call): Ditto.
7070 (build_new): Ditto.
7071
7072 Mon Dec 13 18:04:33 1993 Kung Hsu (kung@cirdan.cygnus.com)
7073
7074 * cp-decl.c (xref_tag): fix regression created by changes made
7075 in Dec. 7 1993.
7076 * cp-decl.c (xref_defn_tag): fix parallel nested class problem.
7077
7078 Fri Dec 10 12:40:25 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
7079
7080 * cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print
7081 out the final evaluation of the function, so we can see if ELLIPSIS,
7082 USER, and EVIL were set at the end.
7083
7084 * cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue,
7085 only go for setting TRIVIAL_CODE if we are dealing with types that
7086 are compatible.
7087
7088 Thu Dec 9 18:27:22 1993 Mike Stump <mrs@cygnus.com>
7089
7090 * cp-decl.c (flag_huge_objects): New flag to allow large objects.
7091 * toplev.c (lang_options): Ditto.
7092 * cp-decl2.c (flag_huge_objects, lang_f_options): Ditto.
7093 * cp-decl.c (delta_type_node): New type for delta entries.
7094 * cp-tree.h (delta_type_node): Ditto.
7095 * cp-decl.c (init_decl_processing): Setup delta_type_node.
7096 * cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use
7097 delta_type_node instead of short_integer_type_node.
7098 * cp-class.c (build_vtable_entry): Ditto.
7099
7100 Thu Dec 9 16:19:05 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
7101
7102 * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of
7103 NO_{DOLLAR,DOT} macro checks, so it always gets defined.
7104 (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL.
7105
7106 Wed Dec 8 17:38:06 1993 Mike Stump <mrs@cygnus.com>
7107
7108 * cp-decl.c (finish_decl): Make sure things that can go into
7109 "common", do go into common, if -fcommon is given.
7110
7111 Wed Dec 8 13:01:54 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
7112
7113 * cp-call.c (print_harshness) [DEBUG_MATCHING]: New function.
7114 (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out
7115 argument matching diagnostics to make instantly clear what the
7116 compiler is doing.
7117
7118 * cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue,
7119 then check to see if the penalty was increased due to
7120 signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't.
7121
7122 Tue Dec 7 18:29:14 1993 Kung Hsu (kung@cirdan.cygnus.com)
7123
7124 * cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution
7125 problem.
7126
7127 Tue Dec 7 16:09:34 1993 Jason Merrill (jason@deneb.cygnus.com)
7128
7129 * cp-class.c (finish_struct): Before synthesizing methods, if no
7130 methods have yet been declared then set nonprivate_method. Don't
7131 set non_private method after synthesizing a method.
7132
7133 * cp-lex.c (extract_interface_info): If flag_alt_external_templates
7134 is set, tie emitted code to the location of template instantiation,
7135 rather than definition.
7136
7137 * cp-tree.h: Declare flag_alt_external_templates.
7138
7139 * cp-decl2.c (lang_decode_option): Support -falt-external-templates.
7140
7141 * toplev.c (lang_options): Ditto.
7142
7143 Mon Oct 4 12:50:02 1993 Chip Salzenberg (chip@fin.uucp)
7144
7145 [changes propagated from 930810 snapshot]
7146 * cp-decl.c (init_decl_processing): Make long long available for use
7147 as SIZE_TYPE and PTRDIFF_TYPE.
7148 (finish_decl): Allow file-scope static incomplete array.
7149 (grokdeclarator): Don't pass on const and volatile fron function
7150 value type to function type.
7151 Warn here for volatile fn returning non-void type.
7152 * cp-parse.y (attrib): Accept attributes `volatile' with alias
7153 `noreturn', and `const'.
7154 * cp-typeck.c (default_conversion): Don't lose const and volatile.
7155 (build_binary_op_nodefault): Generate pedantic warning for comparison
7156 of complete pointer type with incomplete pointer type.
7157 (build_c_cast): Be careful that null pointer constant be INTEGER_CST.
7158
7159 Tue Dec 7 10:46:48 1993 Jason Merrill (jason@deneb.cygnus.com)
7160
7161 * cp-init.c (expand_vec_init): When creating a temporary for copying
7162 arrays, use the type of the source, not the target.
7163
7164 * cp-cvt.c (convert): Pass an argument for errtype to
7165 convert_to_reference.
7166
7167 * cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with
7168 methods, -> and `this'.
7169
7170 Mon Dec 6 17:12:33 1993 Jason Merrill (jason@deneb.cygnus.com)
7171
7172 * cp-error.c (parm_as_string): New function; returns `this' or arg
7173 number. Corresponds to %P.
7174 (dump_expr): Deal with method calls.
7175
7176 * cp-cvt.c (convert_to_reference): Stop using warn_for_assignment.
7177 * cp-typeck.c (convert_for_assignment): Ditto.
7178 (warn_for_assignment): Lose.
7179
7180 Mon Dec 6 11:33:35 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
7181
7182 * cp-call.c (ideal_candidate_ansi): Delete code that was never
7183 doing anything useful. Instead, sort once, and DO NOT wipe
7184 out any codes with EVIL_CODE, since that's what we use as a
7185 marker for the end of the list of candidates.
7186
7187 * cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN.
7188
7189 Mon Dec 6 12:49:17 1993 Jason Merrill (jason@deneb.cygnus.com)
7190
7191 * cp-init.c (get_aggr_from_typedef): New function, like
7192 is_aggr_typedef but returns the _TYPE.
7193
7194 * cp-call.c, cp-init.c, cp-method.c: Eradicate err_name.
7195
7196 Sun Dec 5 18:12:48 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
7197
7198 * cp-lex.c (readescape): Pedwarn when a hex escape is out of range.
7199
7200 Thu Nov 25 23:50:19 1993 Chip Salzenberg (chip@fin.uucp)
7201
7202 Delay language context change until beginning of next decl.
7203
7204 * cp-lex.h (c_header_level): Removed.
7205 (pending_lang_change): Declared.
7206 * cp-lex.c (c_header_level): Renamed from in_c_header, made static.
7207 (pending_lang_change): Defined.
7208 (check_newline): Rework code that recognizes line number and
7209 filename changes. Instead of pushing and popping lang context,
7210 increment and decrement pending_lang_change.
7211 (do_pending_lang_change): Push and pop lang context according
7212 to value of pending_lang_change.
7213 * cp-parse.y (extdefs): Use lang_extdef instead of extdef.
7214 (extdef): Same as extdef, but call do_pending_lang_change() first.
7215
7216 Mon Nov 15 15:39:15 1993 Chip Salzenberg (chip@fin.uucp)
7217
7218 * cp-typeck.c (build_binary_op_nodefault): Warn for ordered
7219 compare of ptr with 0 only if pedantic in both cases.
7220
7221 Thu Nov 25 13:31:37 1993 Chip Salzenberg (chip@fin.uucp)
7222
7223 Reinstate the below patch, which got lost in the Cygnus merge:
7224 Tue Nov 23 13:59:24 1993 Hallvard B Furuseth (hbf@durin.uio.no)
7225 * cp-parse.y (maybe_type_qual): Don't fail to set $$.
7226
7227 Wed Nov 17 19:03:30 1993 Chip Salzenberg (chip@fin.uucp)
7228
7229 * cp-parse.y (attrib): Allow "ident(ident)" like the C front end.
7230
7231 Fri Oct 22 20:43:37 1993 Paul Eggert (eggert@twinsun.com)
7232
7233 * cp-lex.c (real_yylex): Diagnose floating point constants
7234 that are too large.
7235
7236 Wed Nov 17 19:10:37 1993 Chip Salzenberg (chip@fin.uucp)
7237
7238 * cp-type2.c (build_functional_cast): ARM page 16: When a class
7239 and an object, function or enumerator are declared in the same
7240 scope with the same name, the class name is hidden.
7241
7242 Wed Nov 17 19:07:18 1993 Chip Salzenberg (chip@fin.uucp)
7243
7244 * cp-call.c (convert_harshness_ansi): Distinguish float, double,
7245 and long double from each other when overloading.
7246 (compute_conversion_costs_{ansi,old}, build_method_call,
7247 build_overlay_call_real, convert_to_aggr): Always set and
7248 always use H_LEN member of candidate structure.
7249
7250 Mon Oct 11 23:10:53 1993 Chip Salzenberg (chip@fin.uucp)
7251
7252 * cp-decl.c (duplicate_decls): Note redeclarations of library
7253 functions, and generate distinct warnings for them.
7254
7255 Mon Oct 4 12:26:49 1993 Chip Salzenberg (chip@fin.uucp)
7256
7257 Support format warnings in G++.
7258
7259 * cp-tree.h: Protect against multiple inclusion.
7260 Declare all public functions in c-common.c (copy from c-tree.h).
7261 (STDIO_PROTO): Define.
7262 (warn_format): Declare.
7263 (record_format_info): Remove declaration.
7264 * cp-decl.c (init_decl_processing): Call init_function_format_info.
7265 * cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format.
7266 * cp-typeck.c (build_function_call_real): Call check_function_format.
7267 (record_format_info): Remove -- obsolete stub.
7268
7269 Sat Jul 24 12:04:29 1993 Chip Salzenberg (chip@fin.uucp)
7270
7271 * cp-decl.c (duplicate_decls): Don't warn for non-extern var decl
7272 following an extern one (for -Wredundant-decls).
7273 * cp-parse.y (primary): In statement expression case, if compstmt
7274 returns something other than a BLOCK, return it unchanged.
7275
7276 Thu Dec 2 20:44:58 1993 Chip Salzenberg (chip@fin.uucp)
7277
7278 * cp-decl.c (warn_extern_redeclared_static): New function made
7279 from code extracted from pushdecl.
7280 (duplicate_decls, pushdecl): Call new function.
7281 (lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE
7282 to be a TREE_LIST when function is declared in 'extern "C" {}'.
7283
7284 Fri Dec 3 16:01:10 1993 Jason Merrill (jason@deneb.cygnus.com)
7285
7286 * cp-class.c (duplicate_tag_error): Use cp_error.
7287 (finish_base_struct): Check for ambiguity with direct base, and don't
7288 generate op= or copy ctor if it exists.
7289
7290 Fri Dec 3 15:32:34 1993 Kung Hsu (kung@cirdan.cygnus.com)
7291
7292 * cp-init.c (expand_member_init): when initializer name is null,
7293 don't try to build it now because emit_base_init will handle it.
7294
7295 Fri Dec 3 12:28:59 1993 Jason Merrill (jason@deneb.cygnus.com)
7296
7297 * cp-lex.c (init_lex): Initialize input_filename to "<internal>" for
7298 code such as ExceptionHandler::operator=.
7299
7300 Fri Dec 3 10:32:08 1993 Jason Merrill (jason@deneb.cygnus.com)
7301
7302 * cp-decl.c (grokdeclarator): Don't try to print out dname when
7303 complaining about arrays of references if decl_context==TYPENAME,
7304 since it will be null.
7305
7306 * cp-decl2.c: Default to flag_ansi_overloading.
7307
7308 Thu Dec 2 18:05:56 1993 Kung Hsu (kung@cirdan.cygnus.com)
7309
7310 * cp-call.c (build_method_call): use binfo from instance if it's
7311 different from binfo (basetype_path) passed from above.
7312
7313 Thu Dec 2 12:48:36 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
7314
7315 Wed Nov 17 19:14:29 1993 Chip Salzenberg (chip@fin.uucp)
7316
7317 cp-error.c (dump_expr): Use unsigned chars to output a
7318 TREE_REAL_CST in hex.
7319
7320 Thu Dec 2 11:05:48 1993 Jason Merrill (jason@deneb.cygnus.com)
7321
7322 * cp-class.c (finish_struct): Fix typo in setting
7323 cant_synth_asn_ref.
7324
7325 * cp-tree.h (TYPE_NESTED_NAME): New macro, does
7326 DECL_NESTED_TYPENAME (TYPE_NAME (NODE)).
7327
7328 * cp-lex.c (default_copy_constructor_body): Change
7329 DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype).
7330 (default_assign_ref_body): Ditto.
7331 (default_copy_constructor_body): Call operator= explicitly for
7332 base classes that have no constructor.
7333
7334 Thu Dec 2 10:47:15 1993 Michael Tiemann (tiemann@blues.cygnus.com)
7335
7336 * cp-call.c (build_method_call): If the instance variable is
7337 converted to error_mark_node when we're trying to convert it to the
7338 base type of a method we're looking up, return error_mark_node.
7339
7340 Thu Dec 2 10:41:16 1993 Torbjorn Granlund (tege@cygnus.com)
7341
7342 * cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR
7343 cases, tests for unsigned operands by peeking inside a NOP_EXPR.
7344
7345 Wed Dec 1 13:33:34 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
7346
7347 * cp-call.c (compute_conversion_costs_ansi): Use the size of struct
7348 harshness_code, not the size of short, for clearing out the
7349 ansi_harshness.
7350
7351 * cp-call.c (print_candidates): New function.
7352 (build_method_call): When we had some candidates, but didn't get a
7353 usable match, don't report that we got an error with the first
7354 candidate. Instead, say there were no matches, and list the
7355 candidates with print_candidates. In the second pass, make sure we
7356 clear out ever_seen, so we can accurately count the number of
7357 functions that qualified.
7358
7359 Wed Dec 1 09:53:59 1993 Torbjorn Granlund (tege@cygnus.com)
7360
7361 * cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR
7362 only if op1 is known to be != -1.
7363 (build_binary_op_nodefault): Handle *_DIV_EXPR likewise.
7364
7365 Tue Nov 30 14:07:26 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
7366
7367 * cp-method.c (hack_identifier): If the field itself is private, and
7368 not from a private base class, say so.
7369
7370 Mon Nov 29 03:00:56 1993 Jason Merrill (jason@deneb.cygnus.com)
7371
7372 * cp-decl.c (grokdeclarator): Always warn on initialization of
7373 const member.
7374
7375 Wed Nov 24 00:49:35 1993 Jason Merrill (jason@deneb.cygnus.com)
7376
7377 * cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly.
7378 (finish_base_struct): Set cant_synth_asn_ref properly.
7379
7380 * cp-lex.c (cons_up_default_function): Add section for operator=.
7381 (default_assign_ref_body): New function, mostly cribbed from
7382 default_copy_constructor_body.
7383
7384 * cp-class.c (base_info): Add members cant_synth_copy_ctor,
7385 cant_synth_asn_ref, no_const_asn_ref.
7386 (finish_base_struct): Update no_const_asn_ref, note that you should
7387 update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF.
7388 (finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and
7389 initialize them properly. Set no_const_asn_ref properly. Set
7390 cant_synth_* in some of the situations where they should be set.
7391 Propagate TYPE_GETS_ASSIGN_REF. Use cant_synth_copy_ctor. Add call
7392 to cons_up_default_function for operator=.
7393
7394 Tue Nov 23 20:24:58 1993 Mike Stump <mrs@cygnus.com>
7395
7396 * cp-cvt.c (convert_force): Add code to perform casting of pointer
7397 to member function types.
7398 * cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate
7399 when the conversion should be done, regardless.
7400 * cp-tree.h (build_ptrmemfunc): Ditto.
7401 * cp-type2.c (digest_init): Ditto.
7402 * cp-typeck.c (convert_for_assignment): Ditto.
7403
7404 Tue Nov 23 18:06:58 1993 Jason Merrill (jason@deneb.cygnus.com)
7405
7406 * cp-error.c (dump_expr): Do the right thing for variables of
7407 reference type.
7408
7409 * cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF
7410 and its kin properly.
7411 (xref_tag): Propagate TYPE_GETS_ASSIGN_REF.
7412
7413 Tue Nov 23 12:26:13 1993 Mike Stump <mrs@cygnus.com>
7414
7415 * cp-method.c (build_opfncall): Don't count pointer to member
7416 functions as aggregates here, as we don't want to look up methods in
7417 them. The compiler would core dump if we did, as they don't have
7418 normal names.
7419 * cp-typeck.c (build_indirect_ref): Improve wording on error
7420 message.
7421
7422 Mon Nov 22 14:22:23 1993 Jason Merrill (jason@deneb.cygnus.com)
7423
7424 * cp-decl.c (grok_op_properties): Allow operator?: with pedwarn
7425 (since it's supported in other compiler bits).
7426
7427 * cp-method.c (report_type_mismatch): Use cp_error; ignore err_name
7428 argument.
7429
7430 * cp-error.c (dump_function_decl): Don't print return type for
7431 constructors and destructors.
7432
7433 * cp-cvt.c (cp_convert_to_pointer): Import code from
7434 convert_to_pointer so we can return error_mark_node in the case of an
7435 error, and to allow more meaningful error messages.
7436 (build_type_conversion): Don't go through void* when trying
7437 to convert to a pointer type.
7438
7439 * cp-decl.c (grokfndecl): Move call to grok_op_properties back
7440 after grokclassfn so that it's dealing with the right decl.
7441 (grok_op_properties): Don't assert !methodp for op new and op delete.
7442
7443 * cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now
7444 no uses of it in the compiler).
7445
7446 * cp-call.c (build_scoped_method_call): Fix for destructors of simple
7447 types.
7448 (build_method_call): Ditto.
7449
7450 Fri Nov 19 12:59:38 1993 Jason Merrill (jason@deneb.cygnus.com)
7451
7452 * cp-tree.c (count_functions): Abstraction function.
7453
7454 * cp-call.c (build_overload_call_real): Deal with new overloading
7455 properly, remove dead code.
7456
7457 * gcc.c (default_compilers): Generate and use .ii files in the
7458 intermediate stage of compiling C++ source.
7459
7460 Fri Nov 19 11:26:09 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
7461
7462 * cp-expr.c (cplus_expand_expr): Make call_target a valid memory
7463 address before using it, so it can be later safely compared.
7464
7465 Fri Nov 12 15:30:27 1993 Jason Merrill (jason@deneb.cygnus.com)
7466
7467 * cp-pt.c (tsubst): Deal with new overloading.
7468
7469 * cp-typeck.c (fntype_p): is the arg function type?
7470 (comp_target_parms): pedwarn on conversion from (anything) to (...).
7471 (build_x_function_call): Deal with new overloading.
7472
7473 * cp-tree.c (decl_list_length): Deal with new overloading.
7474 (decl_value_member): Like value_member, but for DECL_CHAINs.
7475
7476 * cp-decl.c (duplicate_decls): Deal with new overloading.
7477 (start_decl): Ditto.
7478
7479 * cp-class.c (instantiate_type): Deal with new overloading.
7480
7481 * cp-call.c (convert_harshness_ansi): Deal with new overloading.
7482 (convert_harshness_old): Deal with new overloading.
7483 (build_overload_call_real): Ditto.
7484
7485 Mon Nov 8 13:50:49 1993 Jason Merrill (jason@deneb.cygnus.com)
7486
7487 * cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL
7488 if unambiguous, NULL_TREE otherwise.
7489 (get_first_fn): Returns the first appropriate FUNCTION_DECL.
7490 (is_overloaded_fn): Returns whether or not the passed tree is
7491 a function or list of functions.
7492
7493 * cp-init.c (init_init_processing): use `get_first_fn' to find
7494 the FUNCTION_DEFN for new and delete.
7495
7496 * cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut
7497 code size in half (I spit on special cases).
7498
7499 Tue Sep 7 20:03:33 1993 Jason Merrill (jason@deneb.cygnus.com)
7500
7501 * cp-decl.c: Allow references and template type parameters as well
7502
7503 Local Variables:
7504 eval: (auto-fill-mode)
7505 left-margin: 8
7506 fill-column: 76
7507 End: