Add configuration for semi-hosted ARM.
[official-gcc.git] / gcc / cp / ChangeLog
blobf5f47c6dec9c0a500263f880a31b01a4104566c0
1 Thu May 11 00:31:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3         * typeck.c (default_conversion): Don't check for BLKmode before
4         pulling out the decl_constant_value.
6         * decl.c (start_function): Clear named_labels and shadowed_labels.
8         * typeck.c (build_function_call_real): Also synthesize methods here.
10 Wed May 10 00:55:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
12         * decl2.c (finish_file): Synthesize exported methods before the
13         reconsider loop.
15         * parse.y: Move declaration of flag_new_for_scope to file scope.
17 Tue May  9 19:10:33 1995  Mike Stump  <mrs@cygnus.com>
19         * decl2.c: Add flag_new_for_scope for new -ffor-scope flag.
20         * parse.y (FOR): Conditionalize the pushing and poping of scope for
21         the for-init-statement upon the new flag_new_for_scope.
22         * parse.y (try_block): Simplify and use compstmt.
24 Mon May  8 12:41:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
26         * decl.c (define_function): Mark function decl artificial.
28 Sun May  7 00:51:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
30         * parse.y (simple_stmt, FOR): Put back push/pop for condition scope.
32         * decl2.c (grokclassfn): DECLs don't have cv-qualified types.
33         * tree.c (build_cplus_method_type): Ditto.
35         * cp-tree.h (SET_DECL_ARTIFICIAL): Just set DECL_ARTIFICIAL to 1.
37         * typeck.c (build_function_call_real): If convert_arguments failed,
38         just bail.
39         (convert_arguments): If one of the arguments is error_mark_node,
40         just bail.
42 Sat May  6 02:39:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
44         * decl.c (duplicate_decls): Don't check DECL_NOT_REALLY_EXTERN for
45         decls that don't include it.
47 Fri May  5 14:23:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
49         * decl.c (duplicate_decls): Decls that have DECL_INTERFACE_KNOWN or
50         DECL_NOT_REALLY_EXTERN set aren't extern decls.
52         * typeck.c (build_indirect_ref): Don't call default_conversion for a
53         parameter of reference_type.
54         * cvt.c (convert_from_reference): Just use build_indirect_ref.
56         * pt.c (do_type_instantiation): Only instantiate member functions
57         that actually come from templates.
59 Fri May  5 09:46:05 1995  Mike Stump  <mrs@cygnus.com>
61         * parse.y: Generalized cleanup of poplevels, and compound statements
62         and compound statements in try blocks.  Rewritten `for' rule so that
63         the scope of variables declared in the for clause is shortened to
64         span just to the end of the statement, instead of the whole
65         containing block.
67 Fri May  5 00:37:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
69         * call.c (convert_harshness): Handle pointers to members better.
71 Thu May  4 16:00:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
73         * decl2.c (delete_sanity): Do access control here.
74         * init.c (build_delete): Instead of here.
76         * Make-lang.in: Build c++filt.
78 Wed May  3 02:59:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
80         * decl2.c (cplus_decl_attributes): If we just modified a TYPE_DECL,
81         update our IDENTIFIER_TYPE_VALUE.
83 Fri Apr 28 07:58:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
85         * lex.c (cons_up_default_function): Fix linkage of #pragma
86         implemented functions.
88 Thu Apr 27 16:56:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
90         * method.c (build_overload_name): Simplify and fix repeated type
91         folding.
93         * decl.c (grokdeclarator): Prohibit pointers to void or reference
94         members.
96 Thu Apr 27 09:49:07 1995  Mike Stump  <mrs@cygnus.com>
98         * typeck2.c (process_init_constructor): Make sure initializers are
99         fully digested.
101 Thu Apr 27 01:11:55 1995  Jason Merrill  <jason@python.cygnus.com>
103         * lex.c (cons_up_default_function): Always defer synthesis.
105 Thu Apr 27 00:20:37 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
107         * decl2.c (mark_inline_for_output): Don't play with pending_inline
108         stuff.
110 Wed Apr 26 17:48:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
112         * call.c (user_harshness): New function; like build_type_conversion,
113         but doesn't actually build anything.
114         (compute_conversion_costs): Use it instead of build_type_conversion.
116 Wed Apr 26 17:11:25 1995  Jason Merrill  <jason@deneb.cygnus.com>
118         * typeck.c (build_function_call_real): Improve error message for
119         calling a non-function.
121         * method.c (hack_identifier): Lose check for calling a data member.
123 Wed Apr 26 16:59:13 1995  Mike Stump  <mrs@cygnus.com>
125         * typeck2.c (build_functional_cast): Remove very old cruft.
126         Seems like good code is generated without it.
128 Wed Apr 26 00:47:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
130         * method.c (do_build_assign_ref): Fix handling of anonymous unions.
131         (do_build_copy_constructor): Ditto.
133         * parse.y (simple_stmt, SWITCH): Call {push,pop}_switch.
135         * decl.c (push_switch): New function.
136         (pop_switch): Ditto.
137         (define_case_label): Check for jumping over initialization.
139         * call.c (build_method_call): Check for an inline function being
140         called before its definition has been seen.
141         * typeck.c (build_function_call_real): Ditto.
143         * decl.c (duplicate_decls): Check for a function being redeclared
144         inline after its address has been taken.
146         * typeck.c (build_conditional_expr): Handle related class lvalues.
148 Tue Apr 25 13:20:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
150         * pt.c (do_pending_expansions): Don't expand unused templates.
152         * parse.y (component_decl): Accept a lone semicolon.
154 Tue Apr 25 00:25:56 1995  Jason Merrill  <jason@rtl.cygnus.com>
156         * call.c (build_method_call): Don't allow an RTL_EXPR to serve as the
157         object parameter anymore.
159         * expr.c (cplus_expand_expr): Don't create RTL_EXPRs with no insns.
161 Mon Apr 24 12:35:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
163         * parse.y (simple_stmt, decl case): Clear prefix_attributes.
164         (lang_extdef): Ditto.
166         * parse.y (maybe_parmlist): New rule for use in declarators where
167         this could either be a list of expressions or parameters.  Calls
168         suspend_momentary before deciding which.
169         (direct_after_type_declarator): Use it.
170         (complex_direct_notype_declarator): Use it.
172         * pt.c (tsubst): Propagate attributes const and noreturn.
174         * typeck.c (build_modify_expr): If warn_synth, call build_opfncall
175         before doing the default thing.
177 Thu Apr 27 21:49:36 1995  Doug Evans  <dje@cygnus.com>
179         * typeck.c (common_type): Call lookup_attribute instead of
180         value_member.
182 Tue Apr 25 18:07:43 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
184         * Make-lang.in: Change "realclean" to "maintainer-clean".
186 Sun Apr 23 12:32:38 1995  Mike Stump  <mrs@cygnus.com>
188         * decl2.c (finish_file): Fix broken linked list handling.
190 Fri Apr 21 18:08:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
192         * class.c (finish_base_struct): Don't set TYPE_HAS_COMPLEX_*_REF
193         as often.
194         (finish_struct): Ditto.
196         * various: Use TYPE_HAS_TRIVIAL_* instead of TYPE_HAS_COMPLEX_*.
198         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): New macro.
199         (TYPE_HAS_TRIVIAL_ASSIGN_REF): New macro.
201 Fri Apr 21 15:52:22 1995  Jason Merrill  <jason@python.cygnus.com>
203         * typeck.c (c_expand_return): Only expand a returned TARGET_EXPR if
204         it is of the same type as the return value.
206 Fri Apr 21 03:01:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
208         * decl2.c (finish_file): Reconsider if synthesizing a method wrote
209         out its assembly.
211         * typeck.c (convert_for_initialization): Don't call a trivial copy
212         constructor.
214         * typeck2.c (store_init_value): Only abort if the type has a
215         non-trivial copy constructor.
217         * typeck.c (c_expand_return): If we're returning in a register and
218         the return value is a TARGET_EXPR, expand it.  Only do
219         expand_aggr_init if we're returning in memory.
220         (expand_target_expr): Function to expand a TARGET_EXPR.
221         (build_modify_expr): Use it.
223         * tree.c (build_cplus_new): Layout the slot.
225         * expr.c (cplus_expand_expr): Use expand_call to expand the call
226         under a NEW_EXPR, so the target is not discarded.
228 Thu Apr 20 14:59:31 1995  Mike Stump  <mrs@cygnus.com>
230         * gc.c (build_dynamic_cast): Tighten error checking.
232 Thu Apr 20 11:23:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
234         * expr.c (cplus_expand_expr): Only abort if the returned target is
235         different from what we expected if the type has a non-trivial copy
236         constructor.
238         * decl2.c (cplus_decl_attributes): Attributes applied to a template
239         really apply to the template's result.
241         * tree.c (lvalue_p): Check IS_AGGR_TYPE instead of TREE_ADDRESSABLE
242         to decide whether to consider a CALL_EXPR an lvalue.
244         * class.c (finish_struct_bits): Only set TREE_ADDRESSABLE if the
245         type has a non-trivial copy constructor.
247         * decl.c (start_function): If interface_known, unset
248         DECL_NOT_REALLY_EXTERN on the function.
250 Wed Apr 19 16:53:13 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
252         * pt.c (do_function_instantiation): Handle explicit instantiation of
253         member functions.
254         (do_type_instantiation): Handle 'inline template class foo<int>',
255         meaning just spit out the vtable.
257         * lex.c (cons_up_default_function): Set DECL_NOT_REALLY_EXTERN on
258         the consed functions.
260         * decl2.c (import_export_inline): Set DECL_INTERFACE_KNOWN.
262 Wed Apr 19 16:28:17 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
264         * call.c, class.c, decl2.c, gc.c, init.c, parse.y, pt.c, search.c,
265         typeck.c: Include output.h.
267 Wed Apr 19 14:57:21 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
269         * call.c (build_method_call): Allow a signature member functions to
270         be called from a default implementation.
272 Wed Apr 19 10:21:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
274         * repo.c (finish_repo): Remember what directory we are in.
276         * search.c (expand_upcast_fixups): Don't mess with abort_fndecl.
278         * repo.c: Use obstacks instead of fixed-size buffers.  Don't spit
279         out the second copy of the symbol name.  Don't remember COLLECT_GCC.
281 Wed Apr 19 02:32:40 1995  Mike Stump  <mrs@cygnus.com>
283         * search.c (virtual_context): New function to get the virtual
284         context of a function.
285         (expand_upcast_fixups): New function to generate runtime vtables.
286         (fixup_virtual_upcast_offsets): Ditto.
287         (expand_indirect_vtbls_init): Use fixup_virtual_upcast_offsets to
288         ensure that the this offsets for upcasts from virtual bases into
289         other virtual bases or non-virtual bases are correct at construction
290         time and destruction time.
291         * class.c (fixup_vtable_deltas): Modify to fixup all offsets in all
292         vtables in all virtual bases, instead of just one vtable in each
293         virtual base.
294         (fixup_vtable_deltas1): Ditto.
296 Tue Apr 18 03:57:35 1995  Michael Meissner  (meissner@cygnus.com)
298         * Makefile.in (lex.o): Add dependency on c-pragma.h.
300         * lex.c (handle_sysv_pragma): Use NULL_PTR and NULL_TREE as
301         appropriate, instead of 0.
303 Mon Apr 17 12:28:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
305         * decl.c (pushdecl): Use decls_match, not duplicate_decls, for
306         comparing local and global decls.
308 Fri Apr 14 01:46:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
310         * typeck.c (convert_arguments): Only prohibit passing to ... of
311         types with non-trivial copy constructors.
313         * repo.c (repo_template_used): Don't try to mess with no id.
315 Fri Apr 14 23:32:50 1995  Per Bothner  <bothner@rtl.cygnus.com>
317         * decl.c (duplicate_decls):  Use cp_warning_at for redundant-decls.
319 Thu Apr 13 15:37:42 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
321         * cp-tree.h (current_tinst_level): Delete declaration, since it's
322         static inside pt.c.
324         * typeck.c (build_modify_expr): Catch incompatible array assignment.
326         * parse.y (attribute_list, attrib): Rewrite actions to feed the
327         right stuff to decl_attributes.
329 Thu Apr 13 11:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
331         * search.c (dfs_debug_mark): Check for magic virtual like
332         import_export_vtable.
334         * typeck.c (build_binary_op_nodefault): Don't call cp_pedwarn with
335         four args.
337 Wed Apr 12 12:02:57 1995  Jason Merrill  <jason@deneb.cygnus.com>
339         * decl2.c (finish_file): Move prevtable pass before needs_messing_up
340         decision.
342 Tue Apr 11 11:20:27 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
344         * decl.c (finish_decl): If we're writing out a static data member of
345         a class, we want the debug info for that class.
347         * gc.c (build_t_desc): Check linkage of a class properly.
349         * class.c (finish_struct): Set the 'headof' offset for the main
350         vtable properly.
351         (prepare_fresh_vtable): Fix typeinfo pointer here.
352         (modify_one_vtable): Instead of here.
354 Mon Apr 10 12:15:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
356         * repo.c (repo_get_id): New function to return the interesting
357         identifier for a repo entity.
358         (repo_template_used): Use it.
359         (repo_template_instantiated): Mark the id as chosen.
360         (init_repo): Record whether or not the id was chosen.
361         (finish_repo): Note if an id was newly chosen.
363         * pt.c (do_function_instantiation): Call repo_template_instantiated.
364         (do_type_instantiation): Ditto.  Don't diagnose multiple
365         instantiation.
367         * decl2.c (finish_file): Use DECL_NOT_REALLY_EXTERN when deciding
368         whether or not to synthesize a method.
370         Undo these changes:
371         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
372         * class.c (modify_all_direct_vtables): ditto.
373         * init.c (expand_direct_vtbls_init): expand more vtables if
374         flag_rtti is on.
376 Sat Apr  8 17:45:41 1995  Mike Stump  <mrs@cygnus.com>
378         * gc.c (build_headof): Use ptrdiff_type_node instead of
379         integer_type_node on pointer arithmetic.
381 Sat Apr  8 11:57:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
383         * typeck.c (build_modify_expr): Undo previous change.
385 Thu Apr  6 01:23:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
387         * Makefile.in (compiler): Remove ../cc1plus before rebuilding it.
389         * repo.c (get_base_filename): Put the .rpo file in the directory
390         with the object file, not the source.
392         * typeck.c (build_conditional_expr): Handle pmf's better.
394         * repo.c (finish_repo): Also use ASM_OUTPUT_LABELREF to print out
395         the name of the symbol.
397 Wed Apr  5 15:24:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
399         * repo.c (open_repo_file): Make repo filename DOS-compliant.
400         (*): Also write a new repo file if some previously-used
401         templates are no longer used.  Only remember the identifier.
403         * lex.c (cons_up_default_function): If this function belongs to a
404         template class, call repo_template_used for it.
406         * repo.c (repo_template_used): Using a class means using its vtable,
407         if any.
408         (finish_repo): Ditto.
410         * typeck.c (build_modify_expr): Only wrap TARGET_EXPRs in RTL_EXPRs
411         if the type has a complex copy constructor.
413         * decl2.c (lang_decode_option): -frepo implies
414         -fno-implicit-templates.
416         * decl.c (start_function): Clear current_{base,member}_init_list.
418         * lex.c (init_lex): Also unset *_eq if ! flag_operator_names.
420 Tue Apr  4 16:11:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
422         * decl.c (struct cp_function): Add {base,member}_init_list.
423         (push_cp_function_context): Save current_{base,member}_init_list.
424         (pop_cp_function_context): Restore them.
426 Mon Apr  3 16:55:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
428         * repo.c (get_base_filename): Take filename parm, fix logic bug.
430         * typeck.c (build_compound_expr): Do not warn about a compound expr
431         in which the first expression has no side effects.
432         (build_x_compound_expr): Warn here instead.
433         (build_conditional_expr): Don't warn about a conditional expression
434         between an enum and the type it promotes to.
436         * init.c (build_new): Handle initialization of arrays of builtins
437         properly.
439 Mon Apr  3 15:08:04 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
441         * repo.c: Include config.h to get definitions of bcopy and rindex
442         on systems that don't have them (e.g., SVR4).
444 Mon Apr  3 14:41:55 1995  Mike Stump  <mrs@cygnus.com>
446         * decl2.c (finish_table): Pass NULL_TREE instead of init to
447         finish_decl so that it won't try and do error checking on the
448         initializer.
450 Mon Apr  3 10:45:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
452         * repo.c (get_base_filename): Analyze COLLECT_GCC_OPTIONS to
453         determine whether this compile used -c -o.
454         (open_repo_file): Use get_base_filename.  Remove the extension.
455         (finish_repo): Spit out the values of main_input_filename,
456         COLLECT_GCC and COLLECT_GCC_OPTIONS.
458         * parse.y (structsp): Add TYPENAME_KEYWORD complex_type_name.
460 Sun Apr  2 23:43:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
462         * search.c (compute_access): Don't try to do access control on
463         nested types.
465 Fri Mar 31 10:14:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
467         * repo.c: New file to handle things repo.
469         * pt.c (instantiate_template): Call repo_template_used if the
470         definition is accessible.
471         (mark_function_instantiated): Split out from
472         do_function_instantiation.
473         (mark_class_instantiated): Split out from do_type_instantiation.
475         * parse.y (template_instantiate_once): Call repo_template_used.
477         * lex.c (lang_init): Call init_repo.
479         * decl2.c: Handle flag_use_repository.
480         (finish_file): Call finish_repo.
482         * decl.c (start_method): Call repo_template_used if this is a
483         template method.
485         * Makefile.in (CXX_OBJS): Add repo.o.
486         (repo.o): Add dependencies.
488         * Make-lang.in (CXX_SRCS): Add repo.c.
490         * decl.c (start_function): If DECL_INTERFACE_KNOWN and
491         DECL_NOT_REALLY_EXTERN are both set, unset DECL_EXTERNAL.
493         * typeck.c (build_binary_op_nodefault): Identify the invalid operand
494         types used.
496         * decl.c (duplicate_decls): Propagate DECL_NOT_REALLY_EXTERN.
498 Thu Mar 30 17:54:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
500         * typeck.c (build_binary_op_nodefault): Tidy up use of build_type
501         and result_type.  When checking for comparison between signed
502         and unsigned, use result_type rather than the (possibly shortened)
503         type of op0.  Also, don't warn about equality comparison of a
504         signed operand to an unsigned constant that fits in the signed
505         type.
507         * method.c (do_build_copy_constructor): Reverse
508         current_base_init_list after we've built it up.
510 Thu Mar 30 14:35:18 1995  Mike Stump  <mrs@cygnus.com>
512         * except.c (build_throw): Never warn about the value of throw not
513         being used.
515 Thu Mar 30 13:16:54 1995  Mike Stump  <mrs@cygnus.com>
517         * except.c (expand_start_catch_block): Check for bad catch parameter
518         declarations.
520 Thu Mar 30 13:06:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
522         * decl.c (finish_function): Only set DECL_NOT_REALLY_EXTERN if
523         DECL_EXTERNAL is not already set.
525 Thu Mar 30 11:26:24 1995  Mike Stump  <mrs@cygnus.com>
527         * method.c (emit_thunk): Let poplevel know that the last level is
528         for a function so it can create a BLOCK_NODE and set DECL_INITIAL.
530 Thu Mar 30 11:15:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
532         * decl2.c (import_export_inline): Don't set DECL_NOT_REALLY_EXTERN
533         here.
535         * decl.c (grokdeclarator): OK, don't abort if we see a decl with
536         METHOD_TYPE.
537         (finish_function): Set DECL_EXTERNAL and DECL_NOT_REALLY_EXTERN on
538         all deferred inlines.
540 Wed Mar 29 19:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
542         * cp-tree.h (DECL_THIS_INLINE): New macro.
543         (DECL_NOT_REALLY_EXTERN): New macro.
544         (DECL_THIS_STATIC): New macro.
546         * decl.c: Lose all references to current_extern_inline.  Break
547         inline semantics into DECL_INLINE for actual inlining and
548         DECL_THIS_INLINE for the linkage wierdness.  Use DECL_THIS_STATIC.
549         * decl2.c: Use DECL_NOT_REALLY_EXTERN to indicate that we want to
550         emit an inline here.  Associated changes.
551         * lex.c: Ditto.
552         * pt.c: Ditto.
553         * typeck.c: Ditto.
555         * call.c (build_method_call): Don't bother trying to handle inlines
556         specially.
557         * cvt.c (convert_to_aggr): Ditto.
559         * pt.c (do_function_instantiation): Handle instantiation of
560         public inlines, too.
562 Wed Mar 29 16:04:25 1995  Mike Stump  <mrs@cygnus.com>
564         * except.c (init_exception_processing): Change the interface for
565         __throw_type_match and add decl for new rtti matching routine
566         __throw_type_match_rtti.
567         (build_eh_type): New routine to build a run time descriptor for the
568         expression given. 
569         (expand_start_catch_block): Update to use new calling convention for
570         the matcher.
571         (expand_throw): Update to use build_eh_type.
573 Mon Mar 27 07:14:33 1995  Warner Losh   <imp@village.org>
575         * g++.c: Removed __NetBSD__ from conditional.
576         Declare strerror if HAVE_STRERROR is defined; otherwise
577         declare sys_errlist and sys_nerr.
578         (my_strerror): New function.
580 Tue Mar 28 14:16:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
582         * search.c (get_binfo): Don't try to be so clever.
584         * tree.c (copy_to_permanent): Also suspend_momentary().
586         * cvt.c (cp_convert_to_pointer): Hand off to convert_fn_pointer even
587         if the types are the same.
589         * decl.c (start_function): Handle extern inlines more like C++ says
590         we should.
592         * init.c (build_member_call): Hand constructor calls off to
593         build_functional_cast.
595         * typeck2.c (build_functional_cast): Use DECL_NESTED_TYPENAME to get
596         the name of the type.
598 Tue Mar 28 13:13:56 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
600         * decl.c (grokdeclarator): Check for the decl returned by
601         grokfndecl to be null before using build_decl_attribute_variant.
603 Mon Mar 27 18:04:41 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
605         * init.c (build_new): Use build_pointer_type instead of
606         TYPE_POINTER_TO.
608 Fri Mar 24 12:11:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
610         * typeck.c (build_conditional_expr): Handle pmfs.
611         (convert_for_assignment): Fix pmf support.
613         * cvt.c (convert_fn_ptr): Support !flag_vtable_thunks.
614         (cp_convert_to_pointer): Handle pmfs.
615         (cp_convert): Pass pmfs to cp_convert_to_pointer.
617         * typeck.c (common_type): Handle inheritance for pmfs.
619         * typeck2.c (build_m_component_ref): Do access control.
621         * typeck.c (comp_target_types): Check for conversion to void *
622         before checking trickier conversions.
624         * decl.c (duplicate_decls): Propagate DECL_ABSTRACT_VIRTUAL_P.
626         * pt.c (push_tinst_level): Complain if template instantiation depth
627         is greater than max_tinst_depth.
629         * typeck.c (common_type): Assume that we can call common_type to
630         unify the target type of a pointer.
632 Thu Mar 23 00:48:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
634         * decl2.c (finish_file): Don't synthesize methods at
635         finish_vtable_prevardecl time.  Do synthesize methods that are not
636         used, but are public and not external.
638         * cvt.c (build_type_conversion): Only give an error if for_sure.
640         * typeck.c (comp_target_types): Only support pointer conversions if
641         nptrs > 0.
643 Wed Mar 22 19:30:15 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
645         * init.c (build_new): Catch use of an initializer list where it
646         shouldn't be.
648 Wed Mar 22 16:21:07 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
650         * init.c (build_new): Wrap alloc_expr in an RTL_EXPR if nelts is
651         non-constant.
653         * decl2.c: temp_name_counter is now public.
655         * decl.c (struct cp_function): Add temp_name_counter field.
656         (push_cp_function_context): Save it.
657         (pop_cp_function_context): Restore it.
659         * typeck.c (common_type): Handle unifying function types, and unify
660         unmatched things to void* with a compiler_error, rather than
661         silently like before.
663 Wed Mar 22 15:10:34 1995  Mike Stump  <mrs@cygnus.com>
665         * decl2.c (finish_prevtable_vardecl, finish_vtable_vardecl): Revert
666         Brendan's last change and fix latent problem that causes TD entries
667         to not come out when the things that need them has yet to be
668         expanded.
670 Wed Mar 22 15:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
672         * typeck.c (build_binary_op_nodefault, comparison ops): Update type0
673         and type1, since we might have changed op0 or op1.
675 Wed Mar 22 13:33:45 1995  Jason Merrill  <jason@python.cygnus.com>
677         * typeck.c (common_type): Don't mess up templates.
679 Wed Mar 22 04:56:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
681         * typeck.c (common_type): Handle ptms properly.  Also handle 
682         T* -> void*.
683         (build_binary_op_nodefault): New variable build_type controls what
684         type is given to the expression when it is created.  Set this to
685         boolean_type_node for comparison ops instead of using result_type.
686         (comp_target_types): Allow T * -> void *.
688         * cvt.c (cp_convert_to_pointer): Do access control when converting
689         ptms, too.
691 Tue Mar 21 17:25:06 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
693         * parse.y (extern_lang_string): Catch use of linkage specs that
694         aren't all naming the same language.
696         * class.c (finish_struct): Delete accidental duplicate code.
698 Tue Mar 21 14:00:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
700         * typeck.c (build_binary_op_nodefault): Disable pedwarns about
701         comparing functions and incomplete types.
703         * decl.c (finish_function): Only unset current_function_decl if
704         !nested.
705         (duplicate_decls): Last change went too far; we only want to stop
706         checking for value/reference ambiguity.
708 Tue Mar 21 01:26:39 1995  Mike Stump  <mrs@cygnus.com>
710         * gc.c (build_generic_desc): Zap the DECL_SIZE so that we can lay it
711         out fresh, as the new type may be larger.
713 Mon Mar 20 19:01:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
715         * expr.c (extract_init): Try to expand the RTL for the
716         initialization and figure out what it will look like so we can avoid
717         run-time initialization.  Disabled for now.
718         (extract_scalar_init): Helper for scalar initialization.
719         (extract_aggr_init): Helper for aggregate initialization.
721         * decl.c (duplicate_decls): Don't complain about ambiguous
722         declarations.
723         (obscure_complex_init): Now returns a tree.  Call extract_init if
724         we're optimizing and this is a toplevel decl.
725         (finish_decl): Update accordingly.
727         * lex.c (check_newline): If we're just changing files (not pushing
728         or popping), update input_file_stack->name.
730 Mon Mar 20 17:55:04 1995  Mike Stump  <mrs@cygnus.com>
732         * pt.c (type_unification): Only TEMPLATE_DECLs are handled right now
733         in the transitive unification code.
735 Mon Mar 20 16:07:50 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
737         * decl.c (shadow_tag): Don't allow inline, virtual, or explicit on
738         non-functions.
739         (grokdeclarator): Don't allow friends to be defined in local classes.
741 Sat Mar 18 04:03:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
743         * decl2.c (finish_prevtable_vardecl): Use DECL_DECLARED_STATIC
744         rather than DECL_SAVED_INSNS to decide whether or not this method
745         was declared inline.
747         * method.c (synthesize_method): Turn off DECL_INLINE if
748         function_cannot_inline_p thinks we're too large.
750         * typeck.c (build_indirect_ref): Use build_expr_type_conversion.
752 Fri Mar 17 17:47:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
754         * class.c (instantiate_type): Handle pmfs.
756         * typeck.c (convert_for_assignment): Check types when assigning one
757         pmf to another.
759         * decl.c (define_label): Fix logic for printing out the name of the
760         label in an error message.
762         * error.c (dump_expr): Support ARRAY_REF.
764 Fri Mar 17 17:43:02 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
766         * decl2.c (finish_vtable_vardecl): Call build_t_desc here.
767         (finish_prevtable_vardecl): Instead of here.
769 Fri Mar 17 14:40:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
771         * decl.c (expand_static_init): Also use expand_aggr_init if the
772         initializer is a TREE_LIST.     
773         (grokdeclarator): Only pedwarn about extra qualification if -pedantic.
775         * pt.c (unify): Fix unification of return type.
777         * expr.c (fixup_result_decl): Use store_expr, rather than
778         emit_move_insn, to move the return value into the place where
779         callers will expect it.
781 Thu Mar 16 22:05:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
783         * init.c (build_offset_ref): Call assmble_external on functions.
784         * typeck.c (build_component_ref): Ditto.
786 Thu Mar 16 20:28:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
788         * decl.c (struct saved_scope): Add members base_init_list and
789         member_init_list.
790         (push_to_top_level): Save current_base_init_list and
791         current_member_init_list to them.
792         (pop_from_top_level): Put it back.
794 Thu Mar 16 19:21:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
796         * pt.c (instantiate_template): Call assemble_external.  
798 Thu Mar 16 18:07:54 1995  Brendan Kehoe  (brendan@phydeaux.cygnus.com)
800         * class.c: Include rtl.h, to get NULL_RTX.
801         (finish_struct): Also zero out DECL_SAVED_INSNS, to avoid problems
802         on hosts with different sizes for each part of the union.
803         * tree.c: Also include rtl.h.
804         (layout_basetypes): Same change for DECL_SAVED_INSNS.
806 Thu Mar 16 13:57:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
808         * pt.c (unify): Fix array domain unification for 64-bit targets.
810         * decl2.c (finish_file): Push bizarre type decl before walking the
811         vtables the first time.
812         (walk_vtables): OK, don't set prev to vars if the vardecl_fn messed
813         with TREE_CHAIN (prev).
815         * init.c (emit_base_init): Use convert_pointer_to_real instead of
816         convert_pointer_to when converting to a direct base.
818 Wed Mar 15 20:26:29 1995  Mike Stump  <mrs@cygnus.com>
820         * pt.c (type_unification): Handle transitive unification better.
822 Wed Mar 15 13:56:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
824         * decl2.c (walk_vtables): Always set prev to vars.
825         (mark_vtable_entries): Call assemble_external on the vtable entries.
827         * class.c (finish_struct): Set the vtable's size to NULL_TREE before
828         calling layout_decl, so that it gets updated properly.
830         Finally re-enable dynamic synthesis.  This time it works.
831         * method.c (synthesize_method): Pass decl_function_context (fndecl)
832         to {push,pop}_cp_function_context.
833         * decl.c (push_cp_function_context): Now takes a tree argument.
834         (pop_cp_function_context): Ditto.
835         * call.c (build_method_call): Enable synthesis.
836         * lex.c (cons_up_default_function): Ditto.
838 Tue Mar 14 19:14:19 1995  Doug Evans  <dje@chestnut.cygnus.com>
840         * parse.y (setattrs): Chain onto prefix_attributes rather than
841         setting it.
843 Wed Mar 15 13:00:00 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
845         * decl.c (pushdecl): Check if the type of the VAR_DECL is an
846         error_mark_node before trying to read TYPE_LANG_SPECIFIC. 
848 Mon Mar 13 21:00:28 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
850         * decl.c (grokdeclarator, case ARRAY_REF): Wrap the exp with fold,
851         and convert the size and integer_one_node to the index type.
853 Mon Mar 13 08:01:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
855         * typeck.c (get_member_function_from_ptrfunc): Save the instance
856         argument, and tack it onto the front of the COND_EXPR to make the
857         semantics come out right.  Grab the instance argument from
858         '*instance_ptrptr', rather than having it passed in separately.
859         
860         * various: Change various consed-up comparison operations to have
861         boolean type.  Remove the instance argument in calls to
862         get_member_function_from_ptrfunc.
864         * error.c (dump_expr): Dump true and false as "true" and "false".
866         * decl2.c (finish_file): Also set DECL_STATIC_FUNCTION_P on the
867         global init function.
869         * decl.c (finish_function): Only set DECL_EXTERNAL here if the
870         inline function is public.
872 Sat Mar 11 00:58:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
874         * init.c (is_friend): Be more careful about checking
875         DECL_CLASS_CONTEXT on non-member functions.
877         * decl2.c (finish_vtable_vardecl): Don't bother calling
878         assemble_external here.
879         (prune_vtable_vardecl): New function that just splices out the
880         vtable decl from the top-level decls.
881         (import_export_inline): Unset DECL_EXTERNAL at first.
882         (finish_file): Don't bother calling assemble_external here.  Do
883         splice out all of the vtables.
885 Fri Mar 10 14:42:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
887         * decl.c (finish_function): If we're not emitting the function yet,
888         call assemble_external for it.
890         * decl2.c (finish_prevtable_vardecl): Don't call mark_vtable_entries
891         here.
892         (finish_vtable_vardecl): Don't do the linkage deduction thing here.
893         Also don't splice out the current vtable if it is unused.
894         (finish_file): Move the second walk_vtables and the synthesis check
895         inside the 'reconsider' loop.  Move thunk emission after the
896         'reconsider' loop.
898 Thu Mar  9 16:28:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
900         * pt.c (tsubst): Don't bother calling cp_build_type_variant, since it
901         was passing bogus values for readonly and volatile from the original
902         template decl, not the resultant type of the tsubst call.
904         * class.c (duplicate_tag_error): Use cp_error_at to point out the
905         previous definition of the tag.
907 Thu Mar  9 10:46:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
909         * decl.c (start_function): Clear base_init_insns and protect_list.
910         (struct cp_function): Add base_init_insns field.
911         (push_cp_function_context): Also save base_init_insns.
912         (pop_cp_function_context): Also restore base_init_insns.
914 Wed Mar  8 13:31:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
916         * init.c (member_init_ok_or_else): Check for initializing a static
917         member here.
918         (emit_base_init): Instead of here.
920 Tue Mar  7 16:03:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
922         * call.c (build_method_call): Disable synthesis as needed.
923         * lex.c (cons_up_default_function): Ditto.
925 Tue Mar  7 10:14:29 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
927         * parse.y: New rules to allow attributes in a prefix position.
928         (prefix_attributes): New variable.  Pass it into cplus_decl_attributes.
929         (setattr): New rule.
930         (reserved_declspecs, declmods): Catch attributes here.
931         * decl2.c (cplus_decl_attributes): Add PREFIX_ATTRIBUTES argument.
932         * decl.c (duplicate_decls): Pass DECL_MACHINE_ATTRIBUTES to
933         descendent typedef.
934         (grokdeclarator): Added code to support machine attributes.
935         * Makefile.in (stamp-parse): Expect 5 shift/reduce failures.
937 Mon Mar  6 15:07:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
939         * call.c (build_method_call): Don't synthesize methods outside of a
940         function.
942         Make base initialization more re-entrant so that synthesis on the
943         fly will work (and, eventually, template instantation on the fly).
944         * init.c (sort_member_init): Don't bother with members that can't be
945         initialized.  Reorganize a bit.  Don't initialize base members here.
946         (sort_base_init): New function, like sort_member_init, but for base
947         classes.  Steals some code from emit_base_init.
948         (emit_base_init): Simplify.  Call sort_{member,base}_init before
949         doing any initialization, so we don't have to save
950         current_{member,base}_init_list in push_cp_function_context.
951         (expand_aggr_vbase_init_1): Adjust for sort_base_init.
952         (expand_aggr_vbase_init): Simplify.
953         * decl.c (struct cp_function): Add protect_list field.
954         (push_cp_function_context): Also save protect_list.
955         (pop_cp_function_context): Also restore protect_list.
956         * call.c (build_method_call): Enable synthesis at point of call.
957         * lex.c (cons_up_default_function): Ditto.
959         * parse.y: Turn -ansi checks back into -pedantic checks.
961         * init.c (build_new): Fix -fcheck-new for array new.
963 Sat Mar  4 15:55:42 1995  Fergus Henderson  <fjh@cs.mu.oz.au>
965         * typeck.c (build_compound_expr): warn if left-hand operand of
966         comma expression has no side-effects.
968 Fri Mar  3 15:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
970         * parse.y (primary): Change 'object qualified_id *' rules to 'object
971         overqualified_id *'.
973 Fri Mar  3 12:48:17 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
975         * parse.y (unary_expr): Catch doing sizeof an overloaded function.
976         Make the error look the same as the one we issue in c_sizeof.
978         * typeck.c (build_binary_op_nodefault): Give an error for trying
979         to compare a pointer-to-member to `void *'.
981 Fri Mar  3 11:28:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
983         * typeck.c (build_unary_op): Handle bool increment with smoke and
984         mirrors here, rather than in expand_increment where it belongs,
985         because Kenner doesn't agree with me.
987 Fri Mar  3 00:08:10 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
989         * decl.c (grokparms): Catch a PARM_DECL being used for a default
990         argument as well.
992 Thu Mar  2 20:05:54 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
994         * init.c (build_new): Don't allow new on a function type.
996         * parse.y (primary): Avoid a crash when seeing if the arg is of
997         the same type as that given for the typespec in an explicit dtor call.
999 Thu Mar  2 00:49:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1001         * decl.c (finish_function): Change test for calling
1002         mark_inline_for_output.
1004 Wed Mar  1 11:23:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1006         * typeck.c (build_modify_expr): Complain if
1007         build_default_binary_type_conversion fails.
1009         * init.c (expand_default_init): Handle arguments of unknown type
1010         properly.
1012         * cvt.c (build_expr_type_conversion): Only complain about ambiguity
1013         if 'complain'.
1014         * various: Pass 'complain'.
1016         * typeck.c (comptypes): Be more picky about comparing UPTs.
1018 Wed Mar  1 11:03:41 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
1020         * decl.c (grokdeclarator): If declarator is null, say that the
1021         type used has an incomplete type.
1023 Wed Mar  1 10:06:20 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1025         * pt.c (instantiate_template): Copy the template arguments to the
1026         permanent_obstack.  Also use simple_cst_equal to compare them when
1027         looking for a previous instantiation.
1029         * tree.c (make_deep_copy): Support copying INTEGER_TYPEs (assuming
1030         they are array domain types).
1032 Tue Feb 28 23:24:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1034         * cp-tree.h: Define WANT_* constants for passing to
1035         build_expr_type_conversion.
1036         * cvt.c (build_expr_type_conversion): New function to build
1037         conversion to one of a group of suitable types.
1038         (build_default_binary_type_conversion): Use it.
1039         * decl2.c (grok_array_decl): Ditto.
1040         * typeck.c (build_unary_op): Ditto.
1041         (build_array_ref): Tidy up a bit.
1042         (build_binary_op): Ditto.
1044 Tue Feb 28 19:57:31 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
1046         * decl.c (grokdeclarator): Don't allow decl of an argument as `void'.
1048 Tue Feb 28 17:23:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1050         * parse.y (typed_declspecs1): Add 'typespec reserved_typespecquals
1051         reserved_declspecs' rule.
1053         * parse.y (expr_or_declarator): Remove notype_qualified_id rule.
1054         (direct_notype_declarator): Ditto.
1055         (complex_direct_notype_declarator): Add notype_qualified_id rule.
1057         * lex.c (real_yylex): Handle :> digraph properly.
1059 Tue Feb 28 12:26:29 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
1061         * decl.c (grokdeclarator): Check if it's a friend, not if it's
1062         non-virtual, that's being initialized.  Move the check up to
1063         before FRIENDP would get cleared.  Catch an unnamed var/field
1064         being declared void.  Say just `field' instead of `structure field'
1065         in the error message.  Only go for the operator name if DECLARATOR
1066         is non-null.
1068 Tue Feb 28 00:08:01 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1070         * decl.c (start_function): Complain about abstract return type.
1071         (grokdeclarator): Complain about declaring constructors and
1072         destructors to be const or volatile.  Complain about declaring
1073         destructors to be static.
1075         * pt.c (uses_template_parms): Handle pmfs.
1077         * decl.c (grokdeclarator): Don't call variable_size for array bounds
1078         that only depend on template constant parameters.
1080 Mon Feb 27 15:38:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
1082         * error.c (dump_decl): Only look to see if it's a vtable if we
1083         actually have a name to check out.
1085 Mon Feb 27 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1087         * cvt.c (convert_to_aggr): Lose misleading shortcut.
1089 Sun Feb 26 17:27:32 1995  Doug Evans  <dje@canuck.cygnus.com>
1091         * decl.c (set_nested_typename): Always set DECL_IGNORED_P,
1092         not just for dwarf.
1094 Sun Feb 26 00:10:18 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
1096         * decl.c (grokdeclarator): Don't allow a static member to be
1097         declared `register'.
1099         * init.c (make_friend_class): Move up to a pedwarn for the warning
1100         about a class declaring friends with itself.
1102         * decl.c (grokdeclarator): You can't do `volatile friend class foo'
1103         or `inline friend class foo'.  Only try to make a friend out of
1104         TYPE if we didn't already reset it to integer_type_node.
1106 Sat Feb 25 22:32:03 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
1108         * decl.c (grokdeclarator): Don't allow initialization of a
1109         non-virtual function.
1111         * decl.c (start_function): Do a pedwarn if we're changing `main'
1112         to have an int return type.
1114 Sat Feb 25 00:02:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1116         * typeck.c (build_modify_expr): Handle simple assignment from
1117         TARGET_EXPRs by building up an RTL_EXPR to force expansion.  Whew.
1119 Fri Feb 24 18:27:14 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
1121         * decl.c (grokdeclarator): Also don't allow virtual outside of a
1122         class decl for a scope method definition performed at global binding.
1124         * init.c (build_offset_ref): Don't allow creation of an OFFSET_REF
1125         of a bitfield.
1127         * decl.c (grokdeclarator): Don't allow a const to be declared mutable.
1129         * typeck.c (build_binary_op): Return an error_mark_node if either
1130         one of the args turned into an error_mark_node when we tried to
1131         use default_conversion.
1133         * typeck.c (build_unary_op): Forbid using postfix -- on a bool.
1135         * decl.c (grokdeclarator): Allow `signed' and `unsigned' to be
1136         used on `__wchar_t'.
1138 Fri Feb 24 13:59:53 1995  Mike Stump  <mrs@cygnus.com>
1140         * except.c (end_protect_partials): Do it the right way.
1142 Wed Feb 22 15:42:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1144         * typeck.c (build_binary_op_nodefault): Upgrade warning about
1145         comparing distinct pointer types to pedwarn.
1147         * typeck2.c (digest_init): Cope with extra braces.
1149         * typeck.c (build_binary_op_nodefault): Use tree_int_cst_sgn instead
1150         of INT_CST_LT (..., interger_zero_node).
1152 Wed Feb 22 14:45:52 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
1154         * except.c [!TRY_NEW_EH] (end_protect_partials): Define dummy
1155         function for systems that don't have EH.
1157 Tue Feb 21 19:18:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1159         * call.c (can_convert_arg): Like can_convert, but takes an arg as
1160         well.
1162         * pt.c (type_unification): Allow implicit conversions for parameters
1163         that do not depend on template parameters.
1165 Tue Feb 21 18:43:48 1995  Douglas Rupp  (drupp@cs.washington.edu)
1167         * Make-lang.in, config-lang.in: ($exeext): New macro.
1168         * Make-lang.in: Try a "cp" if "ln" fails.
1169         * cp-tree.h (decl_attributes): Added argument.
1170         * decl2.c (cplus_decl_attribute): Add arg to decl_attributes.
1171         * cp/g++.c: Added #ifdefs for sys/file.h and process.h for NT.
1172         Modified spawnvp to have to correct number of arguments for OS/2, NT.
1174 Tue Feb 21 18:36:55 1995  Mike Stump  <mrs@cygnus.com>
1176         * decl.c (finish_function): Add calls to end_protect_partials to end
1177         the exception region that protects constructors so that partially
1178         constructed objects can be partially destructed when the constructor
1179         throws an exception.
1180         * init.c (perform_member_init, sort_member_init, emit_base_init):
1181         Added support for partially constructed objects.
1182         * init.c (build_partial_cleanup_for): New routine to do partial
1183         cleanups of a base class.
1184         * decl2.c (finish_file): Move the emitting of the exception table
1185         down, after we emit all code that might have exception regions in
1186         them.
1187         * except.c (end_protect_partials, might_have_exceptions_p): New
1188         routines.
1189         (emit_exception_table): Always output table if called.
1190         * cp-tree.h (protect_list, end_protect_partials,
1191         might_have_exceptions_p, emit_exception_table): Added.
1193 Tue Feb 21 16:05:59 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
1195         * gc.c (build_typeid): Pass a NULL_TREE, not the bogus, unused
1196         address of a local variable.
1197         * class.c (build_vfn_ref): Only try to build the PLUS_EXPR if we
1198         were given a non-null PTR_TO_INSTPTR.
1200 Tue Feb 21 01:53:18 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1202         * decl.c (duplicate_decls): Always lay out the merged decl.
1204         * decl2.c (finish_vtable_vardecl): Don't do vtable hack on templates.
1205         (finish_prevtable_vardecl): Ditto.
1207         * method.c (synthesize_method): Set interface_{unknown,only}
1208         according to the settings for our class, not the file where it comes
1209         from.
1211 Sat Feb 18 12:26:48 1995  Mike Stump  <mrs@cygnus.com>
1213         * except.c: Handle systems that define __i386__ but not __i386.
1215 Fri Feb 17 15:31:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1217         * decl2.c (reparse_decl_as_expr): Support being called without a
1218         type argument.
1220         * parse.y (primary): Add '(' expr_or_declarator ')'.  Adds 4 r/r
1221         conflicts.  Sigh.
1223 Fri Feb 17 12:02:06 1995  Mike Stump  <mrs@cygnus.com>
1225         * parse.y (template_def, fndef, fn.def1, return_init, condition,
1226         initdcl0, initdcl, notype_initdcl0, nomods_initdcl0,
1227         component_decl_1, after_type_component_declarator0,
1228         notype_component_declarator0, after_type_component_declarator,
1229         notype_component_declarator, after_type_component_declarator,
1230         full_parm, maybe_raises, exception_specification_opt): Fix up,
1231         include exception_specification_opt maybeasm maybe_attribute and
1232         maybe_init if missing.  Rename maybe_raises to
1233         exception_specification_opt to match draft wording.  Use maybe_init
1234         to simplify rules.
1236 Fri Feb 17 01:54:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1238         * init.c (build_new): Set TREE_NO_UNUSED_WARNING on COMPOUND_EXPRs
1239         built for news of scalar types.
1241 Thu Feb 16 17:48:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1243         * typeck.c (build_binary_op_nodefault): Update code for warning
1244         about signed/unsigned comparisons from C frontend.  Realize that the
1245         code in the C frontend is, if anything, even more bogus.  Fix it.
1246         (build_binary_op): Undo default_conversion if it wasn't useful.
1248         * typeck.c (build_unary_op, ADDR_EXPR): Lose bogus special case for
1249         PRE*CREMENT_EXPR.
1251         * decl2.c (import_export_vtable): Don't try the vtable hack
1252         if the class doesn't have any real non-inline virtual functions.
1253         (finish_vtable_vardecl): Don't bother trying to find a non-inline
1254         virtual function in a non-polymorphic class.
1255         (finish_prevtable_vardecl): Ditto.
1257         * decl2.c (import_export_vtable): Use and set DECL_INTERFACE_KNOWN.
1259         * cp-tree.h (DECL_INTERFACE_KNOWN): Use DECL_LANG_FLAG_5.
1261         * init.c (expand_virtual_init): Always call assemble_external.
1263         * class.c (build_vfn_ref): Always call assemble_external.
1264         (build_vtable): Always call import_export_vtable.
1265         (prepare_fresh_vtable): Ditto.
1266         (add_virtual_function): Don't bother setting TREE_ADDRESSABLE.
1268 Thu Feb 16 03:28:49 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1270         * class.c (finish_struct): Use TYPE_{MIN,MAX}_VALUE to determine
1271         whether an enumerated type fits in a bitfield.
1273 Wed Feb 15 15:38:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1275         * class.c (grow_method): Update method_vec after growing the class
1276         obstack.
1278 Wed Feb 15 13:42:59 1995  Mike Stump  <mrs@cygnus.com>
1280         * parse.y (handler_seq): Push a level for the catch parameters.
1282 Wed Feb 15 12:42:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1284         * init.c (emit_base_init): Update BINFO_INHERITANCE_CHAIN on my
1285         bases, in case they've been clobbered.
1287 Wed Feb 15 12:07:29 1995  Mike Stump  <mrs@cygnus.com>
1289         * class.c (finish_base_struct): Set up BINFO_INHERITANCE_CHAIN here,
1290         so that one day it will always be valid.
1291         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
1293         * cp-tree.h (copy_binfo): Removed, unused.
1294         * tree.c (copy_binfo): Ditto.
1296 Wed Feb 15 00:05:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1298         * init.c (build_new): Save the allocation before calling
1299         expand_vec_init on it.
1301         * decl.c (finish_enum): The TYPE_PRECISION of the enum type mush
1302         match the TYPE_PRECISION of the underlying type for constant folding
1303         to work.
1305 Tue Feb 14 15:31:25 1995  Mike Stump  <mrs@cygnus.com>
1307         * except.c (push_eh_entry, expand_start_all_catch,
1308         expand_leftover_cleanups, expand_end_catch_block): Keep track of
1309         the context in which the exception region occurs.
1310         (build_exception_table): If the region was not output, don't output
1311         the entry in the eh table for it.
1313 Tue Feb 14 02:15:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1315         * init.c (expand_default_init): Only use a previous constructor call
1316         if it's a call to our constructor.  Does the word "Duh" mean
1317         anything to you?
1319         * decl.c (grokparms): Fine, just don't call
1320         convert_for_initialization at all.  OK?  Happy now?
1322 Mon Feb 13 02:23:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1324         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Make sure that the class
1325         method vector has a second element before returning it.
1327         * decl.c (grokparms): Don't strip REFERENCE_TYPE before calling
1328         convert_for_initialization.
1330 Sun Feb 12 03:57:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1332         * typeck.c (build_modify_expr): Compare function name to
1333         constructor_name (current_class_type) instead of current_class_name.
1335         * decl.c (grokparms): Don't do anything with the return value of
1336         convert_for_initialization.
1338         * error.c (dump_decl): Also dump_readonly_or_volatile on the decl.
1340         * decl.c (duplicate_decls): Tweak error message.
1342         * typeck.c (build_const_cast): Implement checking.
1343         (build_reinterpret_cast): Implement some checking.
1345         * cp-tree.h (CONV_FORCE_TEMP): Require a new temporary when
1346         converting to the same aggregate type.
1347         (CONV_STATIC_CAST): Include it.
1348         (CONV_C_CAST): Ditto.
1349         * cvt.c (convert_force): Use CONV_C_CAST instead of CONV_OLD_CONVERT.
1350         (cp_convert): Only force a new temporary if CONV_FORCE_TEMP.
1352 Fri Feb 10 16:18:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1354         * typeck.c (build_c_cast): Use non_lvalue to tack something on
1355         where necessary.
1357         * decl.c (auto_function): Now a function.
1358         * except.c (init_exception_processing): terminate, unexpected,
1359         set_terminate, and set_unexpected have C++ linkage.
1361         * typeck.c (build_unary_op, TRUTH_NOT_EXPR): Use convert instead of
1362         truthvalue_conversion for converting to bool, as it handles
1363         user-defined conversions properly.
1364         (condition_conversion): Ditto.
1366         * except.c (expand_throw): Don't call convert_to_reference.
1367         Pass the correct parameters to build_new.
1369         * method.c (do_build_assign_ref): Don't use access control when
1370         converting to a base reference here.
1371         (do_build_copy_constructor): Or here.
1373         * init.c (build_new): Unset TREE_READONLY on the dereferenced
1374         pointer before assigning to it.
1376         * decl.c (maybe_build_cleanup): Don't bother stripping const here.
1378         * decl2.c (delete_sanity): You can now delete pointer to const.
1380 Fri Feb 10 13:28:38 1995  Jason Merrill  <jason@python.cygnus.com>
1382         * decl.c (finish_function): Don't rely on actual parameters being
1383         evaluated left-to-right.
1384         * except.c (expand_end_catch_block): Ditto.
1386 Fri Feb 10 00:52:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1388         * tree.c (real_lvalue_p): Like lvalue_p, but class temps aren't
1389         considered lvalues.
1390         * cvt.c (convert_to_reference): Use real_lvalue_p instead of
1391         lvalue_p.
1393         * cvt.c (build_type_conversion_1): Don't call convert on aggregate
1394         types.
1395         (convert_to_reference): Fix erroneous text substitution.
1397         * typeck2.c (initializer_constant_valid_p): Update from C frontend.
1398         Add new argument to all callers.
1400         * typeck.c (convert_arguments): Check for error_mark_node before
1401         trying to do anything with the actual parameter.
1403         * typeck.c (condition_conversion): Build up a CLEANUP_POINT_EXPR and
1404         fold it.
1405         (bool_truthvalue_conversion): Remove.  Fix all callers to call
1406         truthvalue_conversion instead.
1407         (various): Fold CLEANUP_POINT_EXPRs.
1409         * parse.y (conditions): Call condition_conversion rather than
1410         building up a CLEANUP_POINT_EXPR.
1412         * pt.c (end_template_decl): Don't warn_if_unknown_interface here
1413         under -falt-external-templates.
1415 Thu Feb  9 05:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1417         * init.c (build_new): Complain about new of const type without
1418         initializer.  Other cleanup.
1420         * call.c (compute_conversion_costs): Don't call
1421         build_type_conversion with a reference type; convert to the target
1422         type and check its lvaluetude.
1423         * cvt.c (convert_to_reference): Ditto.
1425         * cvt.c (build_type_conversion_1): There will never be any need to
1426         dereference references here now.
1428 Thu Feb  9 00:37:47 1995  Mike Stump  <mrs@cygnus.com>
1430         * except.c (expand_builtin_throw): Make sure we only `use' the
1431         value of return_val_rtx.
1433 Wed Feb  8 15:45:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1435         * parse.y (structsp): Don't complain about declaring a type being
1436         defined to be a friend.
1438         * decl2.c (warn_if_unknown_interface): Note the template in question
1439         and the point of instantiation, for -falt-external-templates.
1440         * lex.c (reinit_parse_for_method): Pass the decl to
1441         warn_if_unknown_interface.
1442         * pt.c (instantiate_template): Ditto.
1443         (end_template_decl): Ditto.
1445         * decl.c (set_nested_typename): Set IDENTIFIER_TYPE_VALUE on the
1446         nested name again, to make local classes work a bit better.
1448         * typeck.c (build_function_call_real): Dereference reference after
1449         checking for incomplete type.
1451         * init.c (build_new): Accept new of const and volatile types.
1453 Wed Feb  8 14:04:16 1995  Jason Merrill  <jason@deneb.cygnus.com>
1455         * decl.c (grokdeclarator): Fix error message.
1457 Wed Feb  8 03:16:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1459         * typeck.c (convert_for_initialization): Do bash arrays when
1460         converting to a reference to non-array.
1462 Tue Feb  7 15:50:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1464         * cvt.c (cp_convert): Don't call convert_to_reference, or
1465         automatically dereference references.  Do pass reference conversions
1466         to cp_convert_to_pointer.
1467         (cp_convert_to_pointer): Support references.
1469         * call.c (build_method_call): Don't build up a reference to the
1470         parameter here; let build_overload_call handle that.
1472         * typeck.c (build_c_cast): Call convert_to_reference directly if
1473         converting to a reference type.
1474         * method.c (do_build_copy_constructor): Ditto.
1475         * method.c (do_build_copy_constructor): Ditto.
1476         (do_build_assign_ref): Ditto.
1478         * call.c (build_method_call): Dereference a returned reference.
1479         * typeck.c (build_function_call_real): Ditto.
1481         * decl.c (xref_basetypes): Check for unions with basetypes here.
1482         (xref_tag): Instead of here.
1484         * pt.c (process_template_parm): Template type parm decls are
1485         artificial.
1487 Mon Feb  6 04:32:09 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1489         * parse.y (typed_declspecs): Add missing semicolon.
1490         (do_xref_defn): Resurrect.
1491         (named_class_head_sans_basetype): Move template specialization
1492         definition cases to named_class_head_sans_basetype_defn.
1494         * decl2.c (grokfield): Call pushdecl_class_level after setting the
1495         TYPE_NAME, not before.
1497 Sun Feb  5 02:50:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1499         * call.c (convert_harshness): Don't call sorry here.  Don't allow
1500         conversions between function pointer types if pedantic.
1502         * pt.c (overload_template_name): Pass globalize=1 to xref_tag.
1504         * lex.c (cons_up_default_function): Use the full name for the return
1505         type of op=.
1507         * decl.c (set_nested_typename): Don't worry about anonymous types,
1508         as they already have a unique name.
1509         (pushdecl): Remove redundant set_nested_typename
1510         (xref_tag): Split out base handling into xref_basetypes.
1512         * cp-tree.h (TYPE_INCOMPLETE): New macro; TEMPLATE_TYPE_PARMs are
1513         not considered incomplete even though their definition is unknown.
1515         * decl.c (xref_defn_tag): Lose.
1516         (xref_tag): xref_next_defn = ! globalize.
1517         (pushdecl): Don't set DECL_NESTED_TYPENAME on artificial decls.  The
1518         ones that should have it set will have it set by pushtag.
1519         (pushdecl_class_level): Ditto.
1520         (pushtag): Tidy up a bit.
1521         (set_nested_typename): Push a decl for the nested typename from
1522         here, rather than from xref_defn_tag.
1524         * parse.y (do_xref): Lose.
1525         (named_class_head): If we see 'class foo:' we know it's a
1526         definition, so don't worry about base lists for non-definitions.
1528         * pt.c (push_template_decls): Template parm decls are artificial.
1530         * decl.c (duplicate_decls): Restore check for qualifier
1531         disagreement for non-functions.
1532         (decls_match): Remove check for qualifier disagreement.
1534 Fri Feb  3 14:58:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1536         * decl.c (grok_reference_init): Convert initializer from
1537         reference.
1538         * typeck.c (convert_for_initialization): Ditto.
1540         * decl.c (duplicate_decls): Propagate DECL_NESTED_TYPENAME.
1542         * cvt.c (cp_convert): Don't convert to the same class type by just
1543         tacking on a NOP_EXPR.
1544         (convert_to_reference): Use comp_target_types instead of comptypes
1545         so that we don't allow conversions two levels down.
1547 Thu Feb  2 15:07:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1549         * class.c (build_vbase_path): Bash types to make the backend happy.
1550         * cvt.c (build_up_reference): Bash the types bashed by
1551         build_vbase_path to be reference types instead of pointer types.
1552         (convert_to_reference): Ditto.
1554         * typeck.c (build_c_cast): Don't strip NOPs if we're converting to a
1555         reference type.
1557         * parse.y (structsp): Put back error for 'struct B: public A;'.
1559 Wed Feb  1 23:02:06 1995  Mike Stump  <mrs@cygnus.com>
1561         * except.c: Add support for mips systems that don't define __mips
1562         but do define mips, like Ultrix.
1564 Wed Feb  1 22:39:07 1995  Mike Stump  <mrs@cygnus.com>
1566         * except.c: Add support for exception handling on the Alpha.
1568 Wed Feb  1 10:12:14 1995  Mike Stump  <mrs@cygnus.com>
1570         * decl2.c (finish_file): Fix bug in Jan 31st change.
1572 Tue Jan 31 16:59:15 1995  Gerald Baumgartner  (gb@lorenzo.cs.purdue.edu)
1574         * sig.c (build_signature_pointer_or_reference_type): Don't set
1575         IS_AGGR_TYPE for signature pointers/reference so expand_default_init
1576         doesn't expect to find a copy constructor.
1577         * call.c (build_method_call): Treat signature pointers/reference
1578         as if IS_AGGR_TYPE were set.
1580 Tue Jan 31 13:28:56 1995  Mike Stump  <mrs@cygnus.com>
1582         * gc.c (get_typeid): Pawn off error messages to build_t_desc.
1583         (build_t_desc): Inform the user here if they try and build
1584         with -frtti and don't include <typeinfo.h>.
1586         * decl2.c (finish_prevtable_vardecl): Support rescanning.
1587         (finish_file): Move finish_prevtable_vardecl up to before the global
1588         initializers are done as tdecls are initialized in the global
1589         initializer.  Also Pick up any new tdecls or vtables needed by
1590         synthesized methods.
1592         * class.c (finish_struct): Simplify.  We have to do rtti scanning at
1593         end, so we might as well do all of it there.
1595 Tue Jan 31 05:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1597         * call.c (build_method_call): Fix -fthis-is-variable for 32-bit
1598         targets, too.
1600 Tue Jan 31 00:11:04 1995  Mike Stump  <mrs@cygnus.com>
1602         * decl2.c (finish_prevtable_vardecl): New routine, mostly split from
1603         finish_vtable_vardecl.  It has the first half functionality from
1604         that routine.
1605         * decl2.c (finish_vtable_vardecl): Update to not include stuff not
1606         in  finish_prevtable_vardecl.
1607         * decl2.c (finish_file): Call finish_prevtable_vardecl.
1608         * gc.c (build_generic_desc): Allow it to be called when not at the
1609         global binding layer, but behave as if we were.
1610         (build_t_desc): Rearrange a bit so that it really works and is
1611         easier to follow.
1612         * class.c (finish_struct): Don't decide on tdecls here, as we have
1613         to wait until the end of the file in general to decide whether or
1614         not they come out.
1616 Mon Jan 30 01:00:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1618         * init.c (build_delete): Check access to operator delete before
1619         calling the destructor.
1620         * method.c (build_opfncall, DELETE_EXPR): build_method is allowed to
1621         return error_mark_node.
1622         * call.c (build_method_call): Use the one-argument op delete even if
1623         it's an error.
1625         * init.c (build_new): Fix -fthis-is-variable support.
1626         * call.c (build_method_call): Ditto.
1628         * call.c (convert_harshness): Make conversion from a pointer to bool
1629         worse than conversion to another pointer.
1631 Sat Jan 28 16:46:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1633         * init.c (build_new): Check new return value if -fcheck-new.
1635         * lex.c (check_newline): Clear end_of_file when we're done, too.
1637 Sat Jan 28 10:38:39 1995  Mike Stump  <mrs@cygnus.com>
1639         * decl2.c (finish_vtable_vardecl): Make rtti TD tables follow
1640         vtables whereever they go.
1642         * gc.c (build_t_desc): Remove old way of setting it up, as it wasn't
1643         right.
1645 Sat Jan 28 09:10:44 1995  Mike Stump  <mrs@cygnus.com>
1647         * decl2.c (finish_vtable_vardecl): Now set the
1648         interface/implementation of vtables on the first virtual function,
1649         if one exists, otherwise we use the old method.  This is a major win
1650         in terms of cutting down the size of objects and executables in
1651         terms of text space and data space.  Now most of the savings that
1652         #pragma interface/implementation gives is automatic in a fair number
1653         of cases.
1655 Sat Jan 28 04:57:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1657         * decl.c (grokdeclarator): Discard the template parameters in a
1658         template constructor declaration so that the function is always
1659         named constructor_name (ctype).
1661         * lex.c (check_newline): Use ungetc to put back the character before
1662         calling HANDLE_PRAGMA.
1664 Fri Jan 27 17:23:47 1995  Mike Stump  <mrs@cygnus.com>
1666         * decl2.c (check_classfn): If the cname is T<int> and fn_name is T,
1667         make sure we still match them.
1669 Fri Jan 27 16:32:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1671         * parse.y: Add END_OF_LINE token.
1673         * lex.c (check_newline): Set linemode when we see a # directive, and
1674         unset it when we're done.  Turn all 'return's into 'goto skipline'.
1675         Fix all uses of '\n', since we won't see it anymore.  Put back the
1676         character we read before checking for a sysv or target pragma.
1677         (real_yylex): If we see an EOF in linemode, return END_OF_LINE.
1678         (handle_sysv_pragma): Don't look at the input stream; quit when we
1679         see an END_OF_LINE token.
1681         * input.c (getch): Return EOF if we're in line mode and at the end
1682         of a line.
1683         (put_back): Don't put back an EOF.
1685 Thu Jan 26 19:26:34 1995  Mike Stump  <mrs@cygnus.com>
1687         * except.c (expand_throw): Do the newing of the exception object
1688         before we load the type descriptor or the address so that we don't
1689         wipe any of the values out.
1691 Thu Jan 26 19:20:00 1995  Mike Stump  <mrs@cygnus.com>
1693         * except.c (init_exception_processing): Don't use r12 on the rs6000.
1695 Tue Jan 24 16:36:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1697         * decl.c (grokparms): Don't try to build up a reference at this point.
1699         * typeck2.c (build_functional_cast): Don't assume that a NOP_EXPR
1700         will suffice to convert from integer_zero_node.
1702 Wed Jan 25 15:02:09 1995  David S. Miller  (davem@nadzieja.rutgers.edu)
1704         * class.c (instantiate_type): Change error message text.
1705         * typeck2.c (store_init_value): Likewise.
1707 Mon Jan 23 21:57:14 1995  Mike Stump  <mrs@cygnus.com>
1709         * pt.c (tsubst): When we copy a node, don't forget to copy
1710         TREE_CHAIN, we use it later.
1712 Mon Jan 23 03:33:47 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1714         * typeck.c (convert_for_assignment): Initialize variable before use.
1716 Fri Jan 20 01:17:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1718         * g++.c (main): Link with both libstdc++ and libg++ if called as
1719         something ending with "g++", otherwise only libstdc++.  Move -lm to
1720         the end of the line.
1722 Thu Jan 19 15:43:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1724         * call.c (build_method_call): Don't mess with 'this' before calling
1725         compute_conversion_costs.
1727 Wed Jan 18 15:40:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1729         * search.c (get_matching_virtual): Give line number for previous
1730         declaration.
1732         * call.c (convert_harshness): Handle conversions to references
1733         better.
1735         * cvt.c (build_up_reference): OK, handle {MIN,MAX}_EXPR *properly*.
1737 Wed Jan 18 15:21:38 1995  Mike Stump  <mrs@cygnus.com>
1739         * class.c (instantiate_type): Use DECL_CHAIN to walk lists instead,
1740         as the TREE_CHAIN for methods will take us to the next differently
1741         named function, DECL_CHAIN won't.
1743 Wed Jan 18 14:26:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1745         * tree.c (lvalue_p): Handle {MIN,MAX}_EXPR.
1747         * decl2.c (lang_decode_option): -Wall implies -Wparentheses.
1748         warn_parentheses defaults to 0.
1750         * decl.c (grokparms): Put back call to require_instantiated_type.
1752 Tue Jan 17 19:56:15 1995  Mike Stump  <mrs@cygnus.com>
1754         * except.c (exception_section): Use the data section on the rs6000.
1755         Change calling convention for named_section.
1757 Wed Jan 17 18:20:57 1994  Fergus Henderson <fjh@munta.cs.mu.oz.au>
1759         * cp-tree.h : Make if (x=0) warn with wall
1760         * parse.y : Make if (x=0) warn with wall
1762 Tue Jan 17 14:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1764         * decl.c (BOOL_TYPE_SIZE): BITS_PER_WORD if SLOW_BYTE_ACCESS,
1765         BITS_PER_UNIT otherwise.
1767         * search.c (get_matching_virtual): Don't check the binfo if the
1768         types are the same.
1770         * cvt.c (cp_convert): Just call truthvalue_conversion to convert to
1771         bool.
1773 Mon Jan 16 13:28:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1775         * various: Use boolean_type_node, boolean_true_node,
1776         boolean_false_node.
1778         * search.c (get_matching_virtual): Allow covariant returns that
1779         don't require pointer adjustment.
1781         * typeck.c (build_conditional_expr): Don't call default_conversion
1782         on ifexp.
1784         * cvt.c (build_up_reference): Handle MIN_EXPR and MAX_EXPR.
1786         * decl.c (grokdeclarator): Upgrade warning about &const to pedwarn.
1788 Sun Jan 15 22:17:32 1995  dcb@lovat.fmrco.COM (David Binderman)
1790         * pt.c (do_function_instantiation): Free targs once we're done.
1792 Sun Jan 15 22:17:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1794         * decl.c (BOOL_TYPE_SIZE): Defaults to BITS_PER_WORD.
1795         (init_decl_processing): Use BOOL_TYPE_SIZE instead of CHAR_TYPE_SIZE
1796         for bool.
1798 Sat Jan 14 05:33:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1800         * decl2.c (finish_file): We need to mess up if there are any
1801         variables in the list, not just if there is one with a constructor.
1803 Fri Jan 13 14:42:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1805         * decl.c (duplicate_decls): Propagate DECL_STATIC_{CON,DE}STRUCTOR.
1806         (finish_function): Handle DECL_STATIC_{CON,DE}STRUCTOR.
1807         (finish_function): Trust rest_of_compilation.
1809         * decl2.c (finish_file): Also call functions designated as static
1810         constructors/destructors.
1812         * decl.c (grokdeclarator): Allow access decls of operator functions.
1813         (grokparms): Only do convert_for_initialization if the initializer
1814         has a type.
1815         (duplicate_decls): Put back push_obstacks_nochange call.
1817         * lex.c (real_yylex): Downgrade complaint about the escape sequence
1818         being too large from pedwarn to warning.
1820         * decl.c (grokdeclarator): Don't complain about long long in system
1821         headers.
1823         * lex.c (real_yylex): Handle digraphs.
1825 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1827         * decl.c (init_decl_processing): -f{no-,}strict-prototype only
1828         affects C linkage declarations now.
1830         * typeck.c (comp_target_types): Grok simple contravariant conversions.
1831         (common_type): t1 and t2 are interchangeable.
1833         * various: Test return value of comp_target_types differently in
1834         different places; it now returns -1 for a contravariant conversion
1835         (which is fine in symmetric cases).
1837         (common_type): Prefer long double to double even when
1838         they have the same precision.
1840         * decl.c (grokparms): Call convert_for_initialization to check
1841         default arguments.
1843         * init.c (build_new): void_type_node has a size (of 0).
1845         * decl.c (decls_match): Also check for agreement of TREE_READONLY
1846         and TREE_THIS_VOLATILE.
1847         (push_class_level_binding): Properly handle shadowing of
1848         nested tags by fields.
1850         * search.c (dfs_pushdecls): Ditto.
1852         * decl2.c (finish_file): Don't second-guess self-initialization.
1854         * cvt.c (convert_to_reference): Work with expr directly, rather than
1855         a copy.
1857         * decl.c (push_overloaded_decl): Only shadow artificial TYPE_DECLs.
1859         * init.c (add_friend): Downgrade duplicate friend message from
1860         pedwarn to warning.
1862         * decl.c (duplicate_decls): Push obstacks before calling common_type.
1864 Thu Jan 12 17:15:21 1995  Michael Ben-Gershon  <mybg@cs.huji.ac.il>
1866         * except.c (push_eh_entry): set LABEL_PRESERVE_P flag for
1867         exception table labels.
1868         (expand_start_all_catch): Ditto.
1869         (expand_leftover_cleanups): Ditto.
1870         (expand_end_catch_block): Ditto.
1871         * except.c (make_first_label): new function.
1872         (expand_start_all_catch): add a call to make_first_label() before
1873         using a label as a jump destination.
1874         (expand_end_all_catch): Ditto.
1875         (expand_leftover_cleanups): Ditto.
1876         (expand_end_catch_block): Ditto.
1877         (expand_builtin_throw): Ditto.
1878         (expand_throw): Ditto.
1879         * except.c: Add ARM processor support for exception handling.
1881 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1883         (complete_array_type): Copy code from C frontend.
1885         * lex.c (real_yylex): Don't multiply the length of a wide string
1886         literal by WCHAR_BYTES.
1888         * decl.c (pushdecl): Check for redeclaration of wchar_t here.
1889         (duplicate_decls): Instead of here.
1890         (define_label): Complain about a label named wchar_t.
1891         (grokdeclarator): Complain about declarations of
1892         operator-function-ids as non-functions.
1894         * typeck.c (unary_complex_lvalue): Also wrap prefix -- and ++ in
1895         COMPOUND_EXPRs.
1896         (build_unary_op): Wrap unary plus in a NON_LVALUE_EXPR.
1898         * lex.c (real_yylex): Don't skip whitespace when reading the next
1899         character after ->.
1901 Wed Jan 11 16:32:49 1995  Mike Stump  <mrs@cygnus.com>
1903         * except.c: Allow cc1plus to be built with native compiler on rs6000.
1904         (expand_start_all_catch): Add assemble_external calls for various
1905         routines we call.
1906         (expand_leftover_cleanups): Ditto.
1907         (expand_start_catch_block): Ditto.
1908         (do_unwind): Ditto.
1909         (expand_builtin_throw): Ditto.
1911 Wed Jan 11 01:05:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1913         * decl.c (pushtag): Only look for a previous decl in the current
1914         binding level.  Use explicit global scope in DECL_NESTED_TYPENAME.
1916         * gxx.gperf: Add __signature__ and __sigof__ keywords.
1918         * decl2.c (lang_decode_option): -ansi does not set flag_no_asm.  It
1919         does set flag_no_gnu_keywords and flag_operator_names.
1921         * lex.c (init_lex): 'overload' is not a keyword unless -traditional.
1922         Unset extension keywords if -fno-gnu-keywords.
1923         Allow operator names ('bitand') if -foperator-names.
1924         Never unset 'asm'; -fno-asm only affects 'typeof'.
1926         * decl.c (lookup_name_real): The got_object special lookup only
1927         applies to types.
1929 Tue Jan 10 18:07:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1931         * spew.c (yylex): Also use DECL_NESTED_TYPENAME if got_object is set.
1933         * parse.y (primary): Unset got_object after all rules that use the
1934         'object' nonterminal.
1935         (object): Set got_object.
1937         * lex.h: Declare got_object.
1939         * decl.c (lookup_name_real): Also lookup names in the context of an
1940         object specified.
1942 Tue Jan 10 14:30:30 1995  Mike Stump  <mrs@cygnus.com>
1944         * typeck.c (get_member_function_from_ptrfunc): Use ptrdiff_type_node
1945         for things that have to be added to pointers, not size_type.  Cures
1946         problems with pointer to members on Alphas.
1947         (build_binary_op_nodefault): Ditto.
1948         (get_delta_difference_: Ditto.
1949         (build_ptrmemfunc): Ditto.
1951 Tue Jan 10 01:49:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1953         * decl.c (pushtag): Stick the new decl in TYPE_NAME before pushing
1954         it.
1956         * typeck.c (build_component_ref): Don't build up a COMPONENT_REF
1957         when dealing with overloaded member functions; just act like
1958         build_offset_ref.
1959         (commonparms): Remove misleading comment.
1961         * decl.c (duplicate_decls): Complain about repeated default
1962         arguments here.
1963         (redeclaration_error_message): Instead of here.
1964         (pushdecl): Complain about missing default arguments here.
1965         (grokparms): Instead of here.
1966         (lookup_name_current_level): Also match on DECL_ASSEMBLER_NAME.
1967         (grok_reference_init): Do not complain about missing initializer if
1968         declared 'extern'.
1970         * search.c (lookup_field): Don't return a TYPE_DECL if there is a
1971         function alternative and want_type is not set.
1973 Mon Jan  9 18:16:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1975         * decl.c (pushtag): Don't set TYPE_NAME to an identifier.  Do push
1976         the decl when the type has no TYPE_NAME.
1977         (lookup_nested_type): Don't assume that type has TYPE_NAME set.
1978         (lookup_name_real): Call lookup_field with want_type =
1979         prefer_type.
1981         * search.c (lookup_field): Handle want_type properly in the presence
1982         of fields with the same name.
1984         * decl.c (set_nested_typename): Set nested name for file-scope types
1985         to include leading ::.
1986         (pushdecl): Set the nested typename if the decl doesn't have one,
1987         rather than if the type's canonical decl doesn't have one.
1989 Mon Jan  9 16:48:16 1995  Steve Chamberlain  (sac@jonny.cygnus.com)
1991         * typeck.c (pointer_int_sum):  Use offset size when calculating
1992         index expression.
1994 Mon Jan  9 03:44:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1996         * typeck.c (convert_for_assignment): Complain about contravariance
1997         violation here.
1998         (comp_target_types): Instead of here.
1999         (build_unary_op): resolve_offset_ref before checking for a valid
2000         type.
2002         * spew.c (yylex): Decrement looking_for_typename after we see a
2003         _DEFN.
2005         * decl.c (pushdecl): Don't install an artificial TYPE_DECL in
2006         IDENTIFIER_LOCAL_VALUE if we already have a decl with that name.
2008         * typeck.c (convert_for_assignment): Converting pointers to bool
2009         does not need a cast.
2011 Sun Jan  8 18:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2013         * class.c (instantiate_type): Initialize nsubsts parm.
2015         * pt.c (do_function_instantiation): Ditto.
2017 Sat Jan  7 14:37:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2019         * pt.c (tsubst): Use TREE_STATIC instead of DECL_INLINE &&
2020         DECL_SAVED_INSNS to determine whether or not we've seen a definition
2021         of this function.
2022         (instantiate_template): Ditto.
2024         * call.c (convert_harshness): Allow const reference binding when
2025         called from the overloading code, but not when called from
2026         can_convert (since it isn't a conversion).
2027         (convert_harshness): Put back some disabled code.
2029 Fri Jan  6 14:10:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2031         * call.c (convert_harshness): There is no implicit conversion from
2032         void* to other pointer types (unless the parameter is (void*)0).
2033         (convert_harshness): Non-lvalues do not convert to reference types.
2035         * class.c (finish_struct_methods): Still set
2036         TYPE_HAS_{INT,REAL}_CONVERSION.
2038         * call.c (can_convert): Don't use aggregate initialization.
2040         * cp-tree.h: Declare lookup_conversions.
2042 Thu Jan  5 21:08:00 1995  Mike Stump  <mrs@cygnus.com>
2044         * parse.y (simple_stmt): Fix duplicate case value error messages to
2045         be more readable.
2047 Wed Jan  4 16:44:19 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2049         * cvt.c (build_type_conversion): Total rewrite to use
2050         convert_harshness instead of reproducing conversion logic here.  Now
2051         much shorter.
2053         * call.c (convert_harshness): Support conversions to bool.
2054         (can_convert): Checks whether a conversion is less harsh
2055         than USER_CODE, for build_type_conversion.
2057         * search.c (add_conversions): Function for passing to dfs_walk which
2058         adds all the type conversion operators in the current type to a list.
2059         (lookup_conversions): Calls dfs_walk with add_conversions and return
2060         the list.
2061         (dfs_walk): Don't require a qfn.
2063         * cp-tree.h: Lose CLASSTYPE_CONVERSIONS hackery.
2064         (CLASSTYPE_FIRST_CONVERSION): Points to elt 1 of CLASSTYPE_METHOD_VEC.
2066         * class.c (finish_struct_bits): Lose CLASSTYPE_CONVERSIONS hackery.
2067         (grow_method): A separate function for building onto the growing
2068         method vector.
2069         (finish_struct_methods): Use it.  Put all type conversion operators
2070         right after the constructors.  Perhaps we should sort the methods
2071         alphabetically?
2073 Mon Jan  2 14:42:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2075         * call.c (build_method_call): Lose another misleading shortcut.
2077 Fri Dec 30 17:57:30 1994  Mike Stump  <mrs@cygnus.com>
2079         * gc.c (build_bltn_desc): Handle bool as a built-in type.
2081 Fri Dec 30 14:20:21 1994  Mike Stump  <mrs@cygnus.com>
2083         * tree.c (layout_vbasetypes): Ensure that we don't loose alignment
2084         on the complete type because of small virtual bases.
2086 Fri Dec 30 12:22:29 1994  Mike Stump  <mrs@cygnus.com>
2088         * decl.c (n_incomplete): Bump n_incomplete up to int to match C
2089         front end.
2090         (pushdecl): Also count decls pushed that are of a type being defined
2091         as incomplete things.
2092         * class.c (finish_struct): Move hack_incomplete_structures up to
2093         just after we set it as not being defined, so that the decls we
2094         build for RTTI don't count as incomplete.
2096 Thu Dec 29 18:20:57 1994  Mike Stump  <mrs@cygnus.com>
2098         * pt.c (tsubst): Fix problem with defining constructors in templated
2099         classes with virtual bases.
2101 Wed Dec 28 08:31:00 1994  Mike Stump  <mrs@cygnus.com>
2103         * parse.y (TYPEID): Strip top-level cv-qualifiers on typeid
2104         expressions.
2105         * gc.c (build_typeid): Ditto.
2107 Thu Dec 22 17:26:33 1994  Mike Stump  <mrs@cygnus.com>
2109         * cvt.c (build_up_reference): Fix breakage introduced on Nov 29,
2110         don't assert on complex AGGR inits.
2112 Thu Dec 22 14:32:31 1994  Mike Stump  <mrs@cygnus.com>
2114         * method.c (build_overload_value): Handle pointer to members as
2115         template arguments.
2117 Thu Dec 22 13:09:07 1994  Mike Stump  <mrs@cygnus.com>
2119         * typeck.c (unary_complex_lvalue): Don't call sorry if we know how
2120         to do take the address of a data member for a pointer to data
2121         member.
2123 Thu Dec 22 10:04:19 1994  Mike Stump  <mrs@cygnus.com>
2125         * decl.c (grokdeclarator): Use the typedef name for linkage if the
2126         type doesn't otherwise have a name.
2128         * decl2.c (grokfield): Ditto.
2130         * class.c (finish_struct): Since we reuse the TYPE_DECL for the
2131         DECL_NAME of enums, structs and classes, we have to avoid trying to
2132         put it in the TYPE_FIELDS again.
2134 Wed Dec 21 11:07:05 1994  Mike Stump  <mrs@cygnus.com>
2136         * decl2.c (check_classfn): Ignore this parameter on static functions
2137         when checking to see if we match.
2139 Tue Dec 20 17:47:02 1994  Mike Stump  <mrs@cygnus.com>
2141         * typeck.c (unary_complex_lvalue): Handle address of non-left most
2142         pointers to members by calling get_delta_difference.
2144 Mon Dec 19 22:40:53 1994  Mike Stump  <mrs@cygnus.com>
2146         * decl2.c (check_classfn): Don't use decls_match yet, as it modifies
2147         static functions to early.
2149 Thu Dec 19 22:37:48 1994  Mike Stump  <mrs@cygnus.com>
2151         * method.c (make_thunk): Handle encoding of positive thunk offsets.
2153 Sat Dec 17 13:29:50 1994  Doug Evans  <dje@canuck.cygnus.com>
2155         * Make-lang.in (.PHONY): Tell GNU make C++ and c++ are phony targets.
2157 Thu Dec 15 16:32:12 1994  Mike Stump  <mrs@cygnus.com>
2159         * decl2.c (check_classfn): Use decls_match to check if this has
2160         already been declared, as the DECL_ASSEMBLER_NAME may have been
2161         changed via asm("new_name").
2162         * decl.c (decls_match): Make public.
2164 Thu Dec 15 15:17:55 1994  Mike Stump  <mrs@cygnus.com>
2166         * *.[chy] (expand_aggr_init) Add fourth argument to handle
2167         distinction between = init and (init) style of initializations.
2168         * *.[chy] (finish_decl): Add fifth argument to to handle
2169         distinction between = init and (init) style of initializations.
2171 Tue Dec 13 19:16:05 1994  Mike Stump  <mrs@cygnus.com>
2173         Fix some random `explicit' bugs.
2175         * cvt.c (convert_to_reference): Add third parameter to
2176         convert_force.
2177         (convert_force): Ditto.
2178         * call.c (build_method_call): Ditto.
2179         * decl2.c (setup_vtbl_ptr): Ditto.
2180         * init.c (expand_virtual_init): Ditto.
2181         (build_member_call): Ditto.
2182         (build_delete): Ditto.
2183         (build_vbase_delete): Ditto.
2184         * typeck.c (build_component_addr): Ditto.
2185         (build_c_cast): Ditto.
2186         (build_modify_expr): Ditto.
2187         * cp-tree.h (CONV_NONCONVERTING): Ditto. Add so that we can
2188         distinguish the context in which the conversion appears.  Add thrid
2189         argument to build_c_cast.
2190         * cvt.c (cp_convert): Pass whether or not we want to consider
2191         non-converting constructors down to build_method_call.
2192         * decl2.c (reparse_absdcl_as_casts): Add third argument to
2193         build_c_cast.
2194         * gc.c (build_m_desc): Ditto.
2195         * init.c (build_new): Ditto.
2196         * parse.y (expr_no_commas): Ditto.
2197         (primary): Ditto.
2198         * typeck.c (build_x_function_call): Ditto.
2199         (build_static_cast): Ditto.
2200         (build_reinterpret_cast): Ditto.
2201         (build_const_cast): Ditto.
2202         (build_c_cast): Ditto.
2203         (build_ptrmemfunc): Ditto.
2204         * typeck2.c (build_functional_cast): Ditto.
2205         * init.c (expand_aggr_init): Added LOOKUP_ONLYCONVERTING to
2206         expand_aggr_init_1 as inits are converted to the destination type.
2208 Tue Dec 13 16:18:57 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2210         * Make-lang.in (cc1plus): Depends on c-pragma.o.
2212         * Makefile.in (OBJ{DEP,}S): Add ../c-pragma.o.
2214         * lex.c (check_newline): If the #pragma is not recognized by g++,
2215         try machine-specific ones too.
2216         (handle_sysv_pragma): Copied from c-lex.c.
2218 Mon Dec 12 23:53:06 1994  Mike Stump  <mrs@cygnus.com>
2220         * except.c (expand_throw): Fix Dec 6th change, build_new likes a
2221         reference better.
2223 Mon Dec 12 18:01:00 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2225         * typeck.c (build_binary_op): Lose checks on TYPE_PTRMEMFUNC_P with
2226         IS_AGGR_TYPE, since now they will not both be set on the same type.
2228         * pt.c (do_pending_expansions): Don't clear TREE_PUBLIC on
2229         instantiations controlled by -fexternal-templates.
2231         * decl.c (duplicate_decls): Don't complain about different values of
2232         __attribute__ ((const)) and ((noreturn)).
2234 Fri Dec  9 18:17:37 1994  Doug Evans  <dje@cygnus.com>
2236         * Makefile.in (BISONFLAGS): Delete --yacc.
2237         (PARSE_H): Depend on $(PARSE_C), for parallel makes.
2238         (PARSE_C): Undo last patch.
2240 Fri Dec  2 10:44:36 1994  Mike Stump  (mrs@wombat.gnu.ai.mit.edu)
2242         * Makefile.in (BISONFLAGS): Add --yacc so that output winds up in
2243         y.tab.c.
2245 Thu Dec  8 17:39:46 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2247         * decl.c (finish_decl): Don't call obscure_complex_init for decls
2248         of indeterminate size.
2250 Wed Dec  7 16:49:22 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2252         * decl.c (obscure_complex_init): Function to tweak the decl to
2253         prevent expand_decl from tring to initialize it.
2254         (finish_decl): Use it rather than writing the same code in three
2255         different places.
2257         * parse.y (bad_parm): Stop trying to support parms without types.
2259 Wed Dec  7 12:06:56 1994  Mike Stump  <mrs@cygnus.com>
2261         * decl2.c (grokfield): Make asm specs on static member functions
2262         work.
2264 Tue Dec  6 15:43:20 1994  Mike Stump  <mrs@cygnus.com>
2266         * except.c (expand_throw): Make a copy of the thrown object.
2268 Tue Dec  6 14:16:34 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2270         * parse.y: : has lower precedence than =.
2272 Tue Dec  6 12:46:17 1994  Mike Stump  <mrs@cygnus.com>
2274         * decl.c (pushdecl): Use DECL_NAME of VAR_DECLs to avoid namespace
2275         manglings.
2276         (grokvardecl): Add namespace into variable name.
2278 Tue Dec  6 11:26:55 1994  Mike Stump  <mrs@cygnus.com>
2280         * decl2.c (current_namespace_id): New routine to transform a simple
2281         name into a name in a namespace.
2282         * decl.c (grokdeclarator): Use it.
2283         * decl2.c (get_namespace_id): Find the name of the current
2284         namespace.
2285         (push_namespace, pop_namespace): Complete out missing
2286         functionality.
2288 Mon Dec  5 17:11:51 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2290         * class.c (finish_struct): Don't use LONG_LONG_TYPE_SIZE, as it may
2291         not be defined.  Fix warning message for enums and restore warning
2292         for non-enums.
2294         * decl2.c (push_namespace): Dummy function.
2295         (pop_namespace): Ditto.
2296         (do_namespace_alias): Ditto.
2297         (do_using_decl): Ditto.
2298         (do_using_directive): Ditto.
2300         * parse.y: New token NSNAME for namespace names.
2301         (extdef): Add namespace, using definitions.
2302         (using_decl): New rule for using declarations.
2303         (any_id): New rule for identifiers with any degree of scoping.
2304         (identifier): Add NSNAME.
2305         (notype_identifier): Ditto.
2306         (component_decl): Add using_decl.
2307         (nested_name_specifier): Add NSNAME SCOPE.
2309         * typeck.c (convert_for_assignment): Handle conversions between
2310         enums and bool.
2312         * decl.c (duplicate_decls): Only propagate DECL_MAIN_VARIANT on
2313         FUNCTION_DECLs.
2315 Mon Dec  5 13:03:16 1994  Mike Stump  <mrs@cygnus.com>
2317         * class.c (finish_struct): Give an error if one tries to declare a
2318         bit-field's size greater than a long long, as the backend will dump.
2319         It is not an error to declare an enum bit-field greater than its
2320         precision.  Warn if an enum bit-field is too small to hold all
2321         its values.
2323 Mon Dec  5 11:41:50 1994  Mike Stump  <mrs@cygnus.com>
2325         * typeck.c (convert_for_assignment): Use cp_convert instead of
2326         convert so that we don't get static casts.
2328 Sun Dec  4 11:59:01 1994  Mike Stump  <mrs@cygnus.com>
2330         * cvt.c (cp_convert): Don't complain about int->enum conversion if
2331         we are doing static casts.
2333 Fri Dec  2 18:32:41 1994  Mike Stump  <mrs@cygnus.com>
2335         * error.c (dump_expr): Do something more intelligent with SAVE_EXPRs
2336         when dumping expressions in error messages.
2338 Fri Dec  2 17:04:27 1994  Mike Stump  <mrs@cygnus.com>
2340         * gc.c (build_dynamic_cast): Change interface to libg++, ensure that
2341         the return type is the right type, and make references work.
2343 Fri Dec  2 16:36:43 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2345         * decl.c (poplevel): Don't be confused by function-scope
2346         declarations of non-nested functions.
2347         (duplicate_decls): Propagate DECL_MAIN_VARIANT.
2348         (pushdecl): Use duplicate_decls to copy info from old decl into new
2349         function-scope one rather than doing it here.
2351         * decl2.c (mark_inline_for_output): Deal with the DECL_MAIN_VARIANT
2352         of this decl, in case this is a function-scope declaration.
2354         * decl.c (finish_enum): Make sure that the type has the right
2355         precision when we call fixup_*_type.
2357 Tue Nov 29 19:12:07 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2359         * cvt.c (build_up_reference): Strip superfluous NOP_EXPRs; we do
2360         want to build up references to rvalues if possible.
2361         (cp_convert): Stick on a NOP_EXPR when converting to the same type.
2363 Tue Nov 29 11:28:59 1994  Mike Stump  <mrs@cygnus.com>
2365         * parse.y (maybe_raises): Handle throw ().
2366         * parse.y (ansi_raise_identifier): grok type-ids in exception
2367         specifications.
2368         * tree.c (build_exception_variant): Use list compare to check if
2369         two exception specifications match.
2370         * decl.c (duplicate_decls, bad_specifiers): Enhance wording on error
2371         messages.
2372         * call.c (build_method_call): Remove TREE_RAISES.
2373         * cvt.c (convert_to_aggr): Ditto.
2374         * typeck.c (build_function_call_real, convert_arguments): Ditto.
2375         * init.c (expand_aggr_init_1): Ditto.
2377 Tue Nov 29 09:50:39 1994  Mike Stump  <mrs@cygnus.com>
2379         * except.c: Add support for m68k and mips exception handling
2380         support.
2382 Tue Nov 29 08:48:33 1994  Mike Stump  <mrs@cygnus.com>
2384         * except.c (expand_end_all_catch): Throw into outer context, if we
2385         fall off end of catch handlers.
2387 Mon Nov 28 16:44:41 1994  Mike Stump  <mrs@cygnus.com>
2389         * Makefile.in: Make is easier to decide where parse.[ch] will be
2390         built.
2392 Thu Nov 17 20:11:24 1994  Doug Evans  <dje@cygnus.com>
2394         * cp/Make-lang.in (CXX_INSTALL_NAME) Use program_transform_name.
2395         (GXX_INSTALL_NAME) Likewise.
2396         (CXX_CROSS_NAME) Use program_transform_cross_name.
2397         (GXX_CROSS_NAME) Likewise.
2398         (c++.install-man): Use program_transform_name on g++.1.
2399         (c++.uninstall): Likewise.
2401 Thu Nov  3 18:48:19 1994  Paul Eggert  <eggert@twinsun.com>
2403         * Makefile.in (spew.o, lex.o, pt.o):
2404         Depend on $(srcdir)/parse.h, not parse.h.
2406 Mon Nov 28 13:53:03 1994  Mike Stump  <mrs@cygnus.com>
2408         * parse.y (THROW): Fix precedence of throw expressions.
2410 Mon Nov 28 13:15:16 1994  Mike Stump  <mrs@cygnus.com>
2412         * typeck.c (build_unary_op): Allow promotions from bool to int on
2413         unary ~.
2415 Sun Nov 27 00:16:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2417         * method.c (build_overload_name): Use DECL_ASSEMBLER_NAME for
2418         classes when appropriate.
2419         (build_overload_nested_name): When dealing with a function context,
2420         use ASM_FORMAT_PRIVATE_NAME to tweak the name of the function to
2421         avoid conflicts between local classes of the same name.
2423 Wed Nov 23 17:59:42 1994  Mike Stump  <mrs@cygnus.com>
2425         * gxx.gperf, parse.y, lex.h, hash.h, lex.c (init_lex), delc.c
2426         (duplicate_decls, grokdeclarator), cp-tree.h: Add support for
2427         `explicit'.
2428         * cvt.c (convert_to_reference, cp_convert, build_type_conversion_1,
2429         build_type_conversion): Use LOOKUP_ONLYCONVERTING in
2430         build_method_calls so that non-converting constructors are not used.
2431         * call.c (build_method_call): If we shouldn't use a non-converting
2432         constructor, then don't.
2434 Wed Nov 23 14:46:56 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2436         * call.c (build_method_call): Don't try to synthesize methods yet.
2438 Tue Nov 22 12:45:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2440         * pt.c (push_template_decls): Create CONST_DECLs for template
2441         constant parameters, not VAR_DECLs.
2443 Sat Nov 19 15:28:31 1994  Jim Wilson  (wilson@chestnut.cygnus.com)
2445         * typeck.c (build_binary_op_nodefault): Can shorten shift only if
2446         shift count is less than size in bits of arg0.
2448 Thu Nov 17 15:30:50 1994  Mike Stump  <mrs@cygnus.com>
2450         * gxx.gperf, hash.h, lex.c (init_lex, real_yylex), parse.y: Add new
2451         ANSI keywords and, and_eq, bitand, bitor, explicit, namespace, not,
2452         not_eq, or, or_eq, typename, using, xor, xor_eq to g++.  Still need
2453         to add support for explicit, namespace, typename, and using, support
2454         for the rest is already in.
2456 Thu Nov 17 10:56:50 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2458         * typeck2.c (build_m_component_ref): Check the basetype of the
2459         member pointer against the main variant of the object type.
2461 Mon Nov 14 14:21:52 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2463         * cvt.c (convert_to_reference): Make sure that the original expr
2464         gets its type back when converting a reference.
2466         * method.c (build_overload_name): Clear numeric_outputed_need_bar here.
2467         (build_decl_overload): Instead of here.
2469 Tue Nov  8 17:11:24 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2471         * cvt.c (cp_convert): Don't build a TARGET_EXPR if we're not in a
2472         function.
2474         * typeck.c (convert_for_initialization): Handle initialization from
2475         a TARGET_EXPR.
2477 Sun Nov  6 01:34:24 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2479         * pt.c (lookup_nested_type_by_name): Fix list-walking logic.
2480         (tsubst): When replacing a TEMPLATE_TYPE_PARM, propagate
2481         TYPE_READONLY and TYPE_VOLATILE from the argument.
2482         (unify): When unifying with a TEMPLATE_TYPE_PARM, remove cv-quals
2483         present in parm from arg.
2484         (type_unification): Strip REFERENCE_TYPE from the argument type.
2485         (unify): Don't strip REFERENCE_TYPE from the argument type.
2487 Sat Nov  5 22:42:15 1994  Greg McGary  (gkm@magilla.cichlid.com)
2489         * pt.c (do_type_instantiation): Check to see if there's a
2490         IDENTIFIER_TEMPLATE on a class before calling
2491         instantiate_member_templates().
2493 Fri Nov  4 19:04:18 1994  Mike Stump  <mrs@cygnus.com>
2495         * gc.c (get_bad_cast_node): New routine to support compile time
2496         throws of bad_cast.
2497         * gc.c (build_dynamic_cast): Support throwing of bad_cast at compile
2498         time.
2500 Fri Nov  4 11:12:00 1994  Mike Stump  <mrs@cygnus.com>
2502         * except.c: Add hppa support.
2504 Fri Nov  4 10:50:50 1994  Mike Stump  <mrs@cygnus.com>
2506         * except.c: Add rs6000 support.
2508 Thu Nov  3 14:24:23 1994  Mike Stump  <mrs@cygnus.com>
2510         * except.c (do_unwind): Add i[34]86 support.
2512 Thu Nov  3 00:10:46 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2514         * pt.c (do_pending_expansions): Unset TREE_PUBLIC on implicit
2515         instantiations.
2517 Wed Nov  2 15:08:24 1994  Kung Hsu  (kung@mexican.cygnus.com)
2519         * decl.c (finish_function): emit types used in method parameters
2520         into symbol table.
2522 Wed Nov  2 15:05:47 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2524         * pt.c (process_template_parm): Allow pointer to member function
2525         template parameter types.
2526         (uses_template_parms): Handle pointer to member function
2527         CONSTRUCTORs.
2529         * g++.c (main): Cast first argument of bzero to (char *).
2530         Pass -lstdc++ instead of -lg++ unless we are invoked as 'g++'.
2532 Mon Oct 31 14:50:48 1994  Kung Hsu  (kung@mexican.cygnus.com)
2534         * gc.c (build_dynamic_cast): rewrite to make it work.
2535         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
2536         * class.c (modify_all_direct_vtables): ditto.
2537         * init.c (expand_direct_vtbls_init): expand more vtables if
2538         flag_rtti is on.
2539         * decl.c (init_type_desc): add default return.
2541 Tue Oct 25 17:13:09 1994  Kung Hsu  (kung@mexican.cygnus.com)
2543         * tree.c (debug_binfo): get rid of the initial size entry of
2544         vtable.
2545         * cp-tree.h: change flag_dossier to flag rtti, define type
2546         descriptor type nodes.
2547         * decl.c (init_type_desc): new function to initialize type
2548         descriptor type nodes.
2549         * decl.c (record_builtin_type): change flag_dossier to flag_rtti.
2550         * lex.c (init_lex): ditto.
2551         * decl.c : change variable flag_dossier to flag_rtti.
2552         * decl.c (duplicate_decls): get rid initial size entry of vtable.
2553         * decl.c (hack_incomplete_structures): take out assert 164.
2554         * search.c (get_abstract_virtuals_1): ditto.
2555         * search.c (dfs_init_vbase_pointers): change CLASSTYPE_DOSSIER to
2556         CLASSTYPE_RTTI.
2557         * parse.y: ditto.
2558         * class.c (prepare_fresh_vtable): for virtual bases, get right
2559         offset.
2560         * class.c (add_virtual_function): change flag_dossier to
2561         flag_rtti.
2562         * class.c (modify_one_vtable): modify the right rtti entry.
2563         * class.c (override_one_vtable): get rid of size entry.
2564         * class.c (finish_struct): change flag_dossier to flag_rtti, and
2565         build extra vtables, build type descriptors for polymorphic
2566         classes.
2567         * gc.c (build_headof): make headof() works correctly with new
2568         rtti.
2569         * gc.c (build_typeid): make this function work with new rtti.
2570         * gc.c (get_typeid): make this function work with new rtti.
2571         * gc.c (build_bltn_desc): new function for new rtti.
2572         * gc.c (build_user_desc): ditto.
2573         * gc.c (build_class_desc): ditto.
2574         * gc.c (build_ptr_desc): ditto.
2575         * gc.c (build_attr_desc): ditto.
2576         * gc.c (build_func_desc): ditto.
2577         * gc.c (build_ptmf_desc): ditto.
2578         * gc.c (build_ptmd_desc): ditto.
2579         * gc.c (build_t_desc): ditto.
2580         * gc.c : comment out old build_t_desc, build_i_desc, build_m_desc.
2582 Tue Oct 25 13:37:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2584         * call.c (convert_harshness): Check for TREE_UNSIGNED differences
2585         after checking for integral conversions.
2587 Sun Oct 23 13:19:55 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2589         * decl2.c: Declare flag_access_control.
2590         (struct lang_f_options): Add access-control.
2591         * expr.c (cplus_expand_expr, NEW_EXPR): Unset flag_access_control
2592         for the call to expand_aggr_init to copy the object out of the
2593         pcc_struct_return slot.
2594         * search.c (compute_access): if (!flag_access_control) return
2595         access_public.
2597 Fri Oct 21 00:32:54 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2599         * lex.c (cons_up_default_function): Don't try to defer method
2600         synthesis now.
2602         * decl.c (init_decl_processing): Use __pure_virtual for abort_fndecl
2603         instead of abort, since the OSF/1 dynamic linker doesn't like to see
2604         relocation entries for abort.
2606         * tree.c (array_type_nelts_total): Use sizetype, not
2607         integer_type_node.
2608         (array_type_nelts_top): Ditto.
2610 Thu Oct 20 15:48:27 1994  Mike Stump  <mrs@cygnus.com>
2612         * decl.c (grokdeclarator): Added handling for catch parameters
2613         (CATCHPARM).
2614         * except.c (expand_start_catch_block): Use the new CATCHPARM context
2615         instead of NORMAL.
2616         * except.c (expand_throw): Don't let convert_to_reference complain
2617         about what we are doing.
2619 Thu Oct 20 12:55:24 1994  Jim Wilson  (wilson@cygnus.com)
2621         * method.c (emit_thunk): Call instantiate_virtual_regs.
2623 Wed Oct 19 14:15:33 1994  Mike Stump  <mrs@cygnus.com>
2625         * except.c (expand_exception_blocks): Make sure throw code doesn't
2626         get put in function that won't be output.
2628 Mon Oct 17 18:03:15 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2630         * decl.c (init_decl_processing): Make alloca a builtin.
2632 Thu Oct 27 21:10:25 1994  Craig Burley  (craig@burley)
2634         * g++.c (main): Only decrement "added" and set "library" to
2635         NULL when "library" != NULL (just like 940829 fix).
2637 Mon Oct 17 15:56:11 1994  Mike Stump  <mrs@cygnus.com>
2639         * except.c (expand_start_catch_block): Make sure the false label
2640         gets onto the permanent obstack, as it is used for the exception
2641         table.
2643 Fri Oct 14 18:54:48 1994  Mike Stump  <mrs@cygnus.com>
2645         * class.c (modify_one_vtable): Since the DECL_CONTEXT of fndecl can
2646         be set just below, use current_fndecl instead.
2648 Fri Oct 14 15:12:22 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2650         * init.c (expand_aggr_vbase_init_1): Don't call expand_aggr_init_1
2651         with LOOKUP_SPECULATIVELY.
2652         (expand_default_init): Abort if build_method_call returns NULL_TREE.
2654         * typeck.c (build_modify_expr): Don't just build a MODIFY_EXPR if
2655         the rhs is a TARGET_EXPR.
2657         * parse.y (left_curly): Anonymous types are not affected by #pragma
2658         interface/implementation.
2660         * method.c (synthesize_method): Don't call setup_vtbl_ptr for the
2661         default constructor if it isn't needed.
2663         * lex.c (cons_up_default_function): Do synthesize methods for
2664         anonymous types if necessary.
2666 Thu Oct 13 17:44:55 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2668         * method.c (build_decl_overload): Set numeric_outputed_need_bar to 0.
2670 Wed Oct 12 13:27:57 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2672         * typeck.c (build_modify_expr): Understand how to copy an aggregate.
2674         * init.c (expand_default_init): Ditto.  Also remove some of the
2675         crufty code that assumes methods will not be synthesized properly.
2677         * lex.c (cons_up_default_function): If the containing type has no
2678         name, these functions should never need to be called, so just
2679         declare them.
2681         * lex.c (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the
2682         bitmask for lexing character constants.
2684         * call.c (build_method_call): Disable code that tries to do tricky
2685         stuff with a default parameter that is a constructor call, but
2686         actually does other tricky stuff that breaks things.
2688 Wed Oct 12 16:14:01 1994  Benoit Belley  <belley@cae.ca>
2690         * decl.c (finish_enum): Disable code which forces enums to be signed,
2691         since this conflicts with their use as bitfields. type_promotes_to
2692         handles promotion of enums of underlying unsigned types to signed
2693         integer types.
2695 Wed Oct 12 13:24:03 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2697         * cvt.c (type_promotes_to): Also promote enums to long if
2698         appropriate.
2700         * typeck.c (default_conversion): Don't expect type_promotes_to to
2701         return a main variant.
2703 Wed Oct 12 12:19:45 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2705         * call.c (build_scoped_method_call): Don't lose side effects in the
2706         object expression when calling a non-existent destructor.
2708 Fri Sep  2 19:05:21 1994  Rohan Lenard  (rjl@iassf.easams.com.au)
2710         * call.c (build_scoped_method_call): Remove erroneous error message
2711         when destructor call is written as a scoped call.
2713 Tue Oct 11 23:48:31 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2715         * various: Cast pointer arguments to bzero and bcopy to char *.
2717 Tue Oct 11 19:34:32 1994  Mike Stump  <mrs@cygnus.com>
2719         * class.c (get_derived_offset): Added a type parameter to limit how
2720         far up the CLASSTYPE_VFIELD_PARENT chain we search.
2721         * class.c (modify_one_vtable, fixup_vtable_deltas): When forming the
2722         offset to put into the vtable for the this parameter, make sure we
2723         don't offset from a parent of the DECL_CONTEXT of the function.
2725 Tue Oct 11 16:10:52 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2727         * pt.c (do_function_instantiation): Set DECL_EXTERNAL and
2728         TREE_STATIC when setting DECL_INTERFACE_KNOWN.
2729         (do_type_instantiation): Ditto.
2731         * lex.c (cons_up_default_function): Set DECL_INTERFACE_KNOWN,
2732         DECL_EXTERNAL and TREE_STATIC as appropriate.
2734         * decl2.c (finish_file): Also synthesize methods that don't have
2735         DECL_EXTERNAL set.  Set interface_unknown before doing so.
2737         * decl.c (start_function): If DECL_INTERFACE_KNOWN is set on the
2738         function decl, don't muck with TREE_PUBLIC and DECL_EXTERNAL.
2740 Mon Oct 10 00:56:53 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2742         * lex.c (cons_up_default_function): Mark methods in a template class
2743         as template instances.  Store the values of interface_unknown and
2744         interface_only for do_pending_inlines.
2745         (do_pending_inlines): Use them.
2747         * decl2.c (finish_file): If we haven't seen a definition of a
2748         function declared static, make the decl non-PUBLIC so compile_file
2749         can give an error.
2751 Sun Oct  9 02:42:29 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2753         * method.c (do_build_copy_constructor): Handle anonymous unions.
2754         (do_build_assign_ref): Ditto.
2755         (largest_union_member): Move from lex.c.
2757 Sat Oct  8 14:59:43 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2759         Re-implement g++'s vague linkage independent of TREE_PUBLIC.
2760         * pt.c (instantiate_member_templates): Lose redundant
2761         -fexternal-templates handling.
2762         (tsubst): Set TREE_PUBLIC and DECL_EXTERNAL on new decls.  Don't set
2763         TREE_STATIC or DECL_INTERFACE_KNOWN.
2764         (do_pending_expansions): Predicate on DECL_INTERFACE_KNOWN instead
2765         of DECL_EXTERNAL for explicit instantiations.
2766         (do_function_instantiation): Do the new thing.
2767         (do_type_instantiation): Ditto.
2768         (instantiate_template): Deal with member templates defined in a .cc
2769         file with -fexternal-templates.
2770         * except.c (expand_exception_blocks): Use DECL_LINKAGE_KNOWN to
2771         decide whether to stick builtin_throw here.
2772         * decl2.c (import_export_inline): Predicate on DECL_INTERFACE_KNOWN
2773         rather than TREE_PUBLIC.  Generally fix rules.
2774         (finish_file): Use DECL_INITIAL to determine whether or not a method
2775         has been synthesized, rather than TREE_ASM_WRITTEN.
2776         * decl.c (warn_extern_redeclared_static): Use DECL_PUBLIC instead of
2777         TREE_PUBLIC.
2778         (pushdecl): Ditto.
2779         (duplicate_decls): Ditto.  Deal with DECL_DECLARED_STATIC and
2780         DECL_INTERFACE_KNOWN. 
2781         (redeclaration_error_message): Fix checking for conflicting linkage.
2782         (define_function): Set DECL_INTERFACE_KNOWN.
2783         (grokfndecl): Function decls are PUBLIC until we are sure about
2784         their linkage.  Set DECL_DECLARED_STATIC as needed.
2785         (start_function): Deal with linkage.  Move pushdecl after linkage
2786         magic.
2787         (finish_function): Don't set TREE_ASM_WRITTEN on discarded inlines.
2788         * cp-tree.h (lang_decl_flags): Add interface_known and
2789         declared_static.
2790         (DECL_INTERFACE_KNOWN): New macro.
2791         (DECL_DECLARED_STATIC): New macro.
2792         (DECL_PUBLIC): New macro.
2794         Clean up bogus use of TREE_PUBLIC.
2795         * class.c (alter_access): Fix mistaken use of TREE_PUBLIC (it
2796         doesn't correspond to TREE_PROTECTED and TREE_PRIVATE).
2797         * init.c (do_friend): Don't arbitrarily set TREE_PUBLIC.
2799 Wed Oct  5 13:44:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2801         * call.c (build_overload_call_real): Don't immediately do
2802         array->pointer conversion.
2804         * pt.c (type_unification): If not passing to a reference, strip
2805         cv-quals.  Also handle array->pointer conversion.
2807 Tue Oct  4 17:45:37 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2809         * decl.c (grokdeclarator): Don't warn about applying const to a
2810         const typedef or template type parameter.
2812         * decl2.c (finish_file): Also synthesize methods after walking the
2813         vtables.  Ugly ugly ugly.
2815 Mon Oct  3 15:02:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2817         * various: Remove lingering remnants of old exception handling code.
2819         * decl2.c (finish_file): Synthesize methods before walking the
2820         vtables, so that the vtables get emitted as needed.
2822         * decl.c (shadow_tag): Remove obsolete code for pushing tags and
2823         dealing with exceptions.
2825 Mon Oct  3 13:05:27 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>
2827         * Make-lang.in (g++-cross): Depend upon version.o and $(LIBDEPS).
2829 Mon Oct  3 02:59:28 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2831         * decl2.c (finish_file): Fix inline handling.
2833 Sun Oct  2 00:21:56 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2835         * decl.c (grokdeclarator): Handle redundant scope even better.
2836         ({push,pop}_cp_function_context): Take toplev parameter.
2838         * method.c (synthesize_method): Pass toplev parameter to
2839         {push,pop}_cp_function_context depending on decl_function_context
2840         (fndecl).
2842         * typeck.c (build_x_unary_op): Unary & on OFFSET_REFs is always the
2843         built-in version.
2845         * method.c (synthesize_method): Don't be confused by __in_chrg
2846         parameter.
2848         * class.c (popclass): Set C_C_D like start_function does.
2850         * decl.c (grokdeclarator): Handle redundant scope better.
2852         * parse.y (expr_or_declarator): Add '(' expr_or_declarator ')' rule.
2853         (direct_notype_declarator): Ditto.
2854         (complex_direct_notype_declarator): Remove it here.
2856 Sat Oct  1 21:42:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
2858         * init.c (resolve_offset_ref): Fix types used in resolving .*
2859         expressions.
2861 Sat Oct  1 15:18:49 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2863         Beginnings of work to synthesize methods only when needed.
2864         * call.c (build_method_call): Synthesize methods as necessary
2865         (currently never necessary).
2866         * class.c (popclass): Don't try to set C_C_D here, as it'll end up
2867         on the wrong obstack.
2868         * decl.c (push_cp_function_context): Mostly copied from
2869         push_c_function_context.
2870         (pop_cp_function_context): Similarly.
2871         (finish_function): Reverse order of poplevel and pop_nested_class so
2872         that current_class_decl is restored properly.  
2873         (start_function): Ditto.
2874         (finish_function): Add parameter 'nested'.  Don't call
2875         permanent_allocation if (nested).
2876         * various: Pass extra parameter to finish_function.     
2877         * decl2.c (finish_file): Reorganize end-of-file inline handling,
2878         synthesizing methods as necessary.
2879         * lex.c (cons_up_default_function): Call mark_inline_for_output.
2880         Only synthesize methods immediately if #pragma implementation
2881         (currently disabled).
2882         (do_pending_inlines): Call synthesize_method.
2883         * method.c (synthesize_method): New function; all method synthesis
2884         goes through here.  Calls do_build_assign_ref and
2885         do_build_copy_constructor.
2886         (build_default_constructor): Remove.
2887         (build_dtor): Ditto.
2888         (build_assign_ref): Rename to do_build_assign_ref and remove stuff
2889         done by synthesize_method.
2890         (build_copy_constructor): Similarly.
2892 Thu Sep 29 16:58:52 1994  Mike Stump  <mrs@cygnus.com>
2894         * typeck.c (c_expand_return): Use magic so the backend can fixup the
2895         assignment into the return register, so cleanups won't clobber it.
2897 Thu Sep 29 13:08:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
2899         * method.c (hack_identifier): Don't call assemble_external for
2900         template decls.
2902         * decl.c (finish_decl): Also end temporary allocation if the decl in
2903         question has a type of error_mark_node.
2905 Wed Sep 28 21:45:00 1994  Mike Stump  <mrs@cygnus.com>
2907         * typeck.c (build_modify_expr): When optimizing ?: on lhs, make sure
2908         that if the ?: was a reference type, that the subparts will be also.
2910 Wed Sep 28 16:14:04 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
2912         * except.c (register_exception_table): Use Pmode, not PTRmode.
2914 Fri Sep 23 13:54:27 1994  Jason Merrill  (jason@deneb.cygnus.com)
2916         * lex.c (do_pending_inlines): Do method synthesis after the
2917         pending_inlines have been reversed.
2919 Thu Sep 22 12:53:03 1994  Per Bothner  (bothner@kalessin.cygnus.com)
2921         * decl2.c (finish_file):  Fix Brendan's fix:  Only call
2922         register_exception_table if there is a non-empty exception table.
2924 Thu Sep 22 12:03:46 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
2926         * decl2.c (finish_file): Only do register_exception_table if
2927         -fhandle-exceptions is being used.
2929 Wed Sep 21 19:01:51 1994  Per Bothner  (bothner@kalessin.cygnus.com)
2931         * except.c (output_exception_table_entry):  Simplify
2932         by using assemble_integer.
2933         (build_exception_table):  Change to return a count.
2934         Cleanup to use standard macros, instead of hard-wired
2935         sparc asm format.  Don't make __EXCEPTION_TABLE__ global.
2936         (register_exception_table):  New function.  Generate call to builtin.
2937         * decl2.c (finish_file):  Call register_exception_table.
2938         * cp-tree.h (build_exception_table):  Fix prototype.
2940 Wed Sep 21 13:20:42 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
2942         * tree.c (break_out_calls): Don't try to duplicate the DECL_INITIAL.
2944         * decl2.c (delete_sanity): Give an error at trying to delete a
2945         function.
2947 Wed Sep 21 11:47:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
2949         * lex.c (cons_up_default_function): Mark synthesized destructors
2950         inline.
2952         * decl.c (duplicate_decls): Ignore redeclarations of wchar_t as
2953         something other than __wchar_t, complaining if -pedantic and not in
2954         a system header.
2956 Tue Sep 20 09:43:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
2958         * decl.c (xref_tag): Set up BINFO_INHERITANCE_CHAIN on base binfos
2959         here.
2961         * typeck.c (build_modify_expr): Require complete type after checking
2962         for error_mark_node.
2964         * call.c (build_method_call): Print parmtypes when complaining of
2965         ambiguous call.
2967         * typeck.c (build_modify_expr): Handle assignment to array from
2968         non-array.
2970         * decl.c (lookup_name_real): Deal with got_scope == error_mark_node.
2972         * call.c (build_method_call): Don't bother with the exact match.
2974 Mon Sep 19 00:51:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
2976         * init.c (expand_aggr_init): If we munge the type of the variable,
2977         also munge the type of the initializer.
2979         * decl.c (grokdeclarator): Use <= when comparing to RID_LAST_MODIFIER.
2980         (init_decl_processing): Push artificial declaration of wchar_t so
2981         people don't have to declare it before they can use it.
2983         * error.c (cp_line_of): return lineno in lieu of 0.
2985         * typeck.c (convert_for_assignment): Handle conversion of pmfs to
2986         int and bool.
2987         (build_component_ref): Fold the COMPONENT_REF in case it can be
2988         reduced.
2990         * typeck2.c (store_init_value): Don't pedwarn about non-constant
2991         bracketed initializers for automatic variables.
2993 Sun Sep 18 10:12:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
2995         * error.c (dump_decl): Don't say `typedef enum foo foo'.
2997         * decl.c (start_decl): Don't set TREE_PUBLIC on template decls just
2998         because they're affected by #pragma i/i.  We'll deal with that when
2999         they get instantiated.
3001         * typeck.c (build_unary_op): Clean up cruft in ADDR_EXPR case.
3003         * class.c (instantiate_type): Set TREE_CONSTANT on instantiated
3004         ADDR_EXPRs if appropriate.
3006         * decl.c (build_ptrmemfunc_type): Unset IS_AGGR_TYPE on pmf types.
3008         * typeck.c (build_ptrmemfunc): Handle &overloaded_method as an
3009         initializer properly.
3010         * typeck2.c (digest_init): Ditto.
3012         * tree.c (cp_build_type_variant): Like c_build_type_variant, except
3013         it uses build_cplus_array_type.
3014         * *.c: Use cp_build_type_variant instead of c_build_type_variant.
3016         * pt.c (do_type_instantiation): Don't try to instantiate nested
3017         enums.
3019 Tue Sep 13 10:56:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
3021         * cvt.c (build_up_reference): Handle preincrement and predecrement
3022         properly.
3024 Tue Sep 13 09:51:59 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
3026         * decl.c (finish_decl): Only lay out the rtl for DECL if it is, in
3027         fact, static.
3029 Mon Sep 12 14:40:30 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
3031         * decl.c (finish_decl): Lay out the rtl for DECL before doing
3032         grok_reference_init, in case it's static.
3034 Mon Sep 12 12:45:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
3036         * class.c (finish_struct): Don't synthesize constructors if the
3037         class has a field with the same name as the class.  Don't die on
3038         classes with no constructors or destructors.  Don't die if the head
3039         and tail of the class are in different files.
3041         * decl.c (grokdeclarator): Don't treat a function pointer field
3042         with the same name as the class as a constructor.
3044 Fri Sep  9 13:17:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
3046         * typeck.c (build_c_cast): Pull constant values out of their
3047         variables here.
3049         * decl.c (duplicate_decls): Only propagate DECL_CHAIN in
3050         FUNCTION_DECLs and TEMPLATE_DECLs.
3052 Thu Sep  8 10:07:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
3054         * decl.c (duplicate_decls): Propagate DECL_CHAIN in all DECLs that
3055         have it.
3057         * pt.c (unify): REALs and INTEGERs only unify with their own genus.
3058         (instantiate_member_templates): Don't muck with DECL_EXTERNAL and
3059         TREE_PUBLIC unless -fexternal-templates.
3061 Wed Sep  7 13:17:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
3063         * pt.c (do_type_instantiation): Call instantiate_member_templates.
3064         Deal with specializations.
3065         (tsubst): Don't stick the mangled name in DECL_NAME for function
3066         instantiations.  Don't push them, either.
3068         * decl2.c (grokfield): Move code for generating the
3069         DECL_ASSEMBLER_NAME for static members from here.
3070         * method.c (build_static_name): To here.
3071         * decl.c (grokvardecl): Call build_static_name.
3072         (duplicate_decls): Keep old DECL_ASSEMBLER_NAME.
3074 Mon Sep  5 12:49:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
3076         * call.c (build_method_call): if -Wsynth, warn when selecting
3077         synthesized op= over user-supplied one cfront would select.
3078         * decl2.c (lang_decode_option): Handle -Wsynth.
3080 Fri Sep  2 15:11:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
3082         * decl.c (finish_enum): Overhaul to fix several bugs.
3083         (start_enum): Disable useless code.
3085 Thu Sep  1 16:04:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3087         * typeck.c (c_expand_return): Warn about returning a reference to a
3088         temporary.
3089         (convert_arguments): Increment argument counter when using default
3090         arguments, too.
3092 Wed Aug 31 14:29:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
3094         * decl.c (finish_decl): If the type of decl is error_mark_node,
3095         don't bother trying to do anything.
3097         * typeck.c (convert_for_initialization): If the rhs contains a
3098         constructor call, pretend the lhs type needs to be constructed.
3100         * init.c (expand_default_init): If we stick the object inside the
3101         initializer, mark the initializer used.
3103 Tue Aug 30 13:50:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
3105         * method.c (build_assign_ref): return *this;
3106         (build_assign_ref): Fix base assignment order.
3107         (build_copy_constructor): Fix member init order.
3109 Mon Aug 29 13:54:39 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
3111         * g++.c (main): Remember to clear out SAW_SPECLANG after we see
3112         its argument.
3114 Sat Aug 27 09:36:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
3116         * method.c (build_copy_constructor): Also copy virtual bases.
3118 Fri Aug 26 17:05:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
3120         * lex.c (do_pending_inlines): Clear out pending_inlines before doing
3121         any synthesis.  Also first set deja_vu on all pending_inlines.
3123         * method.c (build_assign_ref): Use build_member_call to invoke base
3124         operator=, rather than build_modify_expr.  And use
3125         build_reference_type instead of TYPE_REFERENCE_TO.
3126         (build_copy_constructor): Use TYPE_NESTED_NAME to identify the
3127         basetype.
3129         * decl2.c (grokfield): Don't complain about undefined local class
3130         methods.
3132         * class.c (finish_struct): Don't try to synthesize methods here.
3133         * lex.c (do_pending_inlines): Instead, synthesize them here.
3134         (init_lex): Initialize synth_obstack.
3135         (cons_up_default_function): Stick synthesis request on
3136         pending_inlines.
3138 Fri Aug 26 12:24:14 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
3140         * call.c (build_method_call) [PCC_STATIC_STRUCT_RETURN]: Also
3141         accept an RTL_EXPR in what we're about to use for the instance,
3142         since anything which would end up with pcc_struct_return set
3143         inside cplus_expand_expr.
3145         * cp-tree.h (cons_up_default_function): Note change of prototype.
3147 Thu Aug 25 23:05:30 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3149         * class.c (finish_struct): Undid change from Aug 21 testing
3150         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
3151         * parse.y (left_curly): Ditto, undid change from Aug 21.
3152         * decl.c (xref_tag): Undid change from Aug 21, set
3153         CLASSTYPE_INTERFACE correctly, and added comments.
3155 Thu Aug 25 00:36:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
3157         Rework approach to synthesized methods; don't go through the parser
3158         anymore.
3159         * class.c (finish_struct): Use new synthesis approach.
3160         * lex.c (cons_up_default_function): Now just creates declaration,
3161         not code.
3162         (largest_union_member): #if 0 out.
3163         (default_assign_ref_body): Ditto.
3164         (default_copy_constructor_body): Ditto.
3165         * method.c (build_default_constructor): New function to synthesize X().
3166         (build_copy_constructor): Synthesize X(X&).
3167         (build_assign_ref): Synthesize X::operator=(X&).
3168         (build_dtor): Synthesize ~X().
3170         * error.c (cp_line_of): If we're dealing with an artificial
3171         TYPE_DECL, look at the type instead.
3173 Wed Aug 24 11:11:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
3175         * init.c (sort_member_init): Check warn_reorder.
3176         * decl2.c (lang_decode_option): Handle -W{no-,}reorder.
3178         * cp-tree.h (CLASSTYPE_SOURCE_LINE): New macro.
3179         * error.c (cp_line_of): Use CLASSTYPE_SOURCE_LINE for aggregates.
3180         * class.c (finish_struct): Set CLASSTYPE_SOURCE_LINE.
3182 Tue Aug 23 09:28:35 1994  Mike Stump  <mrs@cygnus.com>
3184         * error.c (dump_decl): Improve wording, so that error messages
3185         dont't read template<, class foo>...
3187 Mon Aug 22 15:30:51 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
3189         * parse.y (label_colon): Also match a TYPENAME as a label name,
3190         since they may have declared a class by that name but have also
3191         tried to have a local label under the same name.
3193         * pt.c (coerce_template_parms): Call cp_error, not cp_error_at,
3194         for the message so they know at what point it was instantiated.
3196 Sun Aug 21 23:07:35 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3198         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
3199         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures up to left_curly time.
3200         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
3201         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures down to left_curly time.
3202         * parse.y (left_curly): New final resting place for setting
3203         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING for signatures.
3205         * class.c (finish_struct): Don't test for function/field name
3206         conflicts in signatures, since all the fields are compiler-constructed.
3208 Fri Aug 19 14:04:47 1994  Kung Hsu  (kung@mexican.cygnus.com)
3210         * method.c (build_overload_nested_name): in qualified name
3211         mangling, the template with value instantiation will have numeric
3212         at end and may mixed with the name length of next nested level.
3213         Add a '_' in between.
3214         * method.c (build_overload_name): ditto.
3215         * method.c (build_overload_identifier): ditto.
3217 Thu Aug 18 16:24:43 1994  Mike Stump  <mrs@cygnus.com>
3219         * error.c (dump_decl): Handle NULL args.
3221 Thu Sep 29 16:15:36 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
3223         * g++.c: Rework last change so it's done like collect.c (and 
3224         gcc.c).
3226 Wed Sep 14 10:17:27 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
3228         * g++.c: Include <sys/errno.h> in case `errno' is a macro
3229         as permitted by ANSI C.
3231 Thu Aug 18 12:48:09 1994  Mike Stump  <mrs@cygnus.com>
3233         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
3234         CLASSTYPE_VTABLE_NEEDS_WRITING up to left_curly time.
3235         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
3236         CLASSTYPE_VTABLE_NEEDS_WRITING down to left_curly time.
3237         * parse.y (left_curly): New final resting place for setting
3238         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
3240 Thu Aug 11 11:32:42 1994  H.J. Lu  (hjl@nynexst.com)
3242         * g++.c (main): Only decrement "added" and set "library" to
3243           NULL when "library" != NULL.
3245 Sat Aug 13 00:14:52 1994  Jason Merrill  (jason@deneb.cygnus.com)
3247         * decl.c (grokdeclarator): Don't set TREE_PUBLIC on a function decl
3248         just because its class has a known interface.
3249         (decls_match): Deal with new format of template parms.
3251         * lex.c (cons_up_default_function): Don't play with TREE_PUBLIC and
3252         DECL_EXTERNAL here.
3254 Fri Aug 12 01:55:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
3256         * decl.c (pushtag): SET_DECL_ARTIFICIAL on gratuitous typedefs.
3257         (xref_defn_tag): Ditto.
3258         (pushdecl): Only allow artificial typedefs to be shadowed.
3260         * init.c (emit_base_init): Pass the right binfos to
3261         expand_aggr_init_1.
3263         * class.c (delete_duplicate_fields_1): Make it work right.
3264         (finish_struct): Catch function/field name conflict.
3266         * decl2.c (check_classfn): Pass the function to cp_error, not just
3267         the name.
3269         * init.c (sort_member_init): Warn when order of member initializers
3270         does not match order of member declarations.
3271         (emit_base_init): Call expand_aggr_init_1 with LOOKUP_PROTECT.
3273         * error.c (dump_expr): Handle lists of functions.
3275         * decl.c (start_function): #pragma interface only affects functions
3276         that would otherwise be static.
3277         (finish_decl): Don't warn about an unused variable if it has both
3278         constructor and destructor, since the 'resource allocation is
3279         initialization' idiom is relatively common.
3281         * typeck.c (comp_target_types): Don't handle TEMPLATE_TYPE_PARMs.
3282         (comp_target_parms): Ditto.
3283         (compparms): Never consider default parms.
3284         (common_base_type): Don't choose a virtual baseclass if there is a
3285         more derived class in common.
3286         (build_conditional_expr): If pedantic, pedwarn about conversion to
3287         common base in conditional expr.
3289         * class.c (instantiate_type): Handle template instantiation better.
3291         * typeck.c (convert_arguments): Don't try to get tricky and convert
3292         to int directly when PROMOTE_PROTOTYPES is set, as it breaks
3293         user-defined conversions.
3295         * lex.c (check_for_missing_semicolon): Also give error at end of
3296         file.
3298         * call.c (build_method_call): Don't promote arrays to pointers here.
3300         * typeck.c (convert_arguments): Don't require the actual parameter
3301         to be of a complete type if the formal parameter is a reference.
3303 Thu Aug 11 15:21:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
3305         * decl.c (grokdeclarator): Soften 'static' on member function error
3306         to pedwarn.
3308         * init.c (build_new): Don't automatically save rval.
3309         (build_offset_ref): Do field lookup with proper basetype_path.
3311 Thu Aug 11 12:46:54 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
3313         * errfn.c (cp_silent): Declare to mark when we should avoid
3314         emitting warnings and errors.
3315         (cp_error): Check it.
3316         (cp_warning): Likewise.
3317         (cp_pedwarn): Likewise.
3318         (cp_compiler_error): Likewise.
3319         (cp_error_at): Likewise.
3320         (cp_warning_at): Likewise.
3321         (cp_pedwarn_at): Likewise.
3322         * call.c (compute_conversion_costs): Set CP_SILENT when we start
3323         out, and make sure we turn it off before we leave.
3325 Thu Aug 11 00:02:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3327         * decl2.c (grok_array_decl): Try computing *(A+B) if neither
3328         argument is obviously an array.
3330 Wed Aug 10 15:32:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
3332         * typeck.c (c_expand_start_case): Do cleanups here.
3334         * parse.y (xcond): Do bool conversion here, too.
3335         (simple_stmt, SWITCH case): Don't do cleanups here.
3337         * decl.c (duplicate_decls): Don't treat builtins that have been
3338         explicitly declared specially.
3340 Tue Aug  9 01:16:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
3342         * tree.c (make_deep_copy): Support copying pointer, reference,
3343         function, array, offset and method types.
3345         * decl.c (init_decl_processing): Mark exit and abort as
3346         BUILT_IN_NONANSI so that duplicate_decls is kinder about
3347         redeclaration.
3348         (duplicate_decls): Don't give two errors for redeclaring a C
3349         function with the same parms but a different return type.
3351         * parse.y (paren_cond_or_null): Do cleanup and bool conversion here.
3352         (condition): Instead of here.
3353         (simple_stmt, SWITCH case): Also do cleanup here.
3355         * decl2.c (finish_anon_union): Only break out FIELD_DECLs.
3357         * call.c (build_method_call): Don't throw away the side effects of
3358         the object in a call to a non-existent constructor.
3359         * parse.y (primary): Ditto.
3361         * method.c (build_decl_overload): Oop.
3363         * decl2.c (lang_decode_option): Deal with flag_no_nonansi_builtin,
3364         warn about uselessness of specifying -fansi-overloading.
3366         * method.c (build_decl_overload): Treat any non-member new with one
3367         parameter as __builtin_new.
3369         * decl.c (init_decl_processing): Setup built-in meanings of exit,
3370         _exit and abort.
3372 Mon Aug  8 15:03:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
3374         * error.c (dump_readonly_or_volatile): Put a space between const and
3375         volatile if both apply.
3377         * init.c (perform_member_init): Clean up after this initialization.
3378         (emit_base_init): Clean up after each base init, not after all have
3379         been done.
3380         (expand_aggr_vbase_init_1): Clean up after this init.
3382 Sun Aug  7 14:55:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
3384         * call.c (build_method_call): Deal with destroying references.
3386         * parse.y (condition): Do bool_truthvalue_conversion here.
3387         (paren_expr_or_null): And here.
3388         (simple_if): Not here.
3389         (simple_stmt): Or here.
3391 Sat Aug  6 22:29:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
3393         * parse.y (paren_expr_or_null): Wrap the expression in a
3394         CLEANUP_POINT_EXPR.
3395         (condition): Ditto.
3397 Sat Aug  6 19:46:37 1994  Rohan Lenard  (rjl@easams.com.au)
3399         * call.c (build_scoped_method_call): Fix error message when
3400         destructor call refers to a nonexistent type.
3402 Sat Apr 16 22:43:30 1993  Gerald Baumgartner  (gb@cs.purdue.edu)
3404         * lex.h (rid): Deleted RID_RAISES, it's never used.
3405         Moved RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_EXCEPTION,
3406         RID_TEMPLATE and RID_SIGNATURE to the end of the enumeration,
3407         they don't need to be touched in `grokdeclarator.'
3408         (RID_LAST_MODIFIER): Defined macro to be RID_MUTABLE.
3410         * decl.c (grokdeclarator): Use RID_LAST_MODIFIER instead of
3411         RID_MAX as loop limit for finding declaration specifiers.
3413 Sat Apr  3 21:59:07 1993  Gerald Baumgartner  (gb@cs.purdue.edu)
3415         * lex.c (debug_yytranslate): Moved to parse.y since it needs to
3416         access `yytname,' which is static in parse.c.
3418 Fri Apr  2 23:36:57 1993  Gerald Baumgarnter  (gb@cs.purdue.edu)
3420         * cp-tree.h (GNU_xref_ref): Fixed typo in extern declaration, it
3421         was `GNU_xref_def' instead of `GNU_xref_ref.'
3423 Fri Aug  5 14:20:16 1994  Jason Merrill  (jason@deneb.cygnus.com)
3425         * pt.c (do_function_instantiation): Don't set TREE_PUBLIC and
3426         DECL_EXTERNAL on 'extern' instantiations; wait until EOF to do that.
3427         (do_type_instantiation): Ditto.
3429         * decl2.c (import_export_inline): Decides at EOF what an inline's
3430         linkage should be.
3431         (finish_file): Call it.
3433         * decl.c (start_function): Don't rely on the settings of TREE_PUBLIC
3434         and DECL_EXTERNAL from do_*_instantiation.  Only set
3435         DECL_DEFER_OUTPUT on inlines whose linkage might actually change.
3436         (finish_function): Use DECL_DEFER_OUTPUT to decide which inlines to
3437         mark for later consideration, rather than DECL_FUNCTION_MEMBER_P.
3439 Fri Aug  5 01:12:20 1994  Mike Stump  <mrs@cygnus.com>
3441         * class.c (get_class_offset_1, get_class_offset): New routine to
3442         find the offset of the class where a virtual function is defined,
3443         from the complete type.
3444         * class.c (modify_one_vtable, fixup_vtable_deltas): Use
3445         get_class_offset instead of virtual_offset as get_class_offset will
3446         always provide the right answer.
3447         * tree.c (virtual_offset): Remove.  It only ever worked some of the
3448         time.
3450 Tue Aug  2 12:44:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
3452         * call.c (build_method_call): Put back unary_complex_lvalue call
3453         that I thought was redundant.
3455         * typeck.c (c_expand_return): Fix a case I missed before.
3457 Sun Jul 31 17:54:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
3459         * pt.c (unify): Strip cv-quals from template type arguments (when
3460         'const T*' is matched to 'const char*', that does not mean that T is
3461         'const char').
3463 Fri Jul 29 01:03:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
3465         * pt.c (do_type_instantiation): Instantiate nested TAGS, not
3466         typedefs.  Third time's the charm?
3468         * parse.y (template_parm): Support default template parms.
3469         * pt.c (process_template_parm): Ditto.
3470         (end_template_parm_list): Ditto.
3471         (coerce_template_parms): Ditto.
3472         (mangle_class_name_for_template): Ditto.
3473         (push_template_decls): Ditto.
3474         (unify): Ditto.
3475         * method.c (build_overload_identifier): Ditto.
3476         * error.c (dump_decl): Ditto.
3478 Wed Jul 27 17:47:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
3480         * pt.c (do_type_instantiation): Only instantiate nested *classes*.
3482 Tue Jul 26 13:22:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
3484         * search.c (note_debug_info_needed): Also emit debugging information
3485         for the types of fields.
3487 Mon Jul 25 00:34:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
3489         * pt.c (lookup_template_class): Pass 'template' to
3490         coerce_template_parms instead of 'in_decl', since it's a more
3491         meaningful context.
3493         * typeck.c (c_expand_return): Make sure any cleanups for the return
3494         expression get run.
3495         (build_c_cast): Use CONVERT_EXPR for conversion to void.
3497         * pt.c (do_type_instantiation): Also instantiate nested types.
3499         * typeck.c (convert_for_assignment): Don't die when comparing
3500         pointers with different levels of indirection.
3502         * decl.c (grokdeclarator): The sub-call to grokdeclarator for
3503         class-local typedefs sets DECL_ARGUMENTS, so we need to clear it
3504         out.
3506         * decl2.c (finish_anon_union): Don't die if the union has no
3507         members.
3509         * decl.c (grokdeclarator): Undo changes to declspecs when we're done
3510         so that 'typedef int foo, bar;' will work.
3512         * decl2.c (finish_file): Don't call expand_aggr_init for
3513         non-aggregates.
3515 Mon Jul 25 00:03:10 1994  Teemu Torma  (tot@trema.fi)
3517         * decl.c (finish_function): We can't inline constructors and
3518         destructors under some conditions with -fpic, but don't unset
3519         DECL_INLINE.
3521 Mon Jul 25 00:03:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
3523         * typeck.c (build_object_ref): Make sure 'datum' is a valid object.
3525 Sun Jul 24 14:19:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
3527         * class.c (finish_struct): Don't set DECL_FIELD_BITPOS on
3528         non-fields.
3529         (finish_struct_methods): Use copy_assignment_arg_p.
3531         * cvt.c (cp_convert): If expr is an OFFSET_REF, resolve it instead
3532         of giving an error.
3534         * typeck.c (build_binary_op_nodefault): Don't set result_type if we
3535         don't know how to compare the operands.
3537         * decl.c (grokdeclarator): Avoid seg fault when someone uses '__op'
3538         as a declarator-id in their program.  Like the Linux headers do.
3539         Arrgh.
3541         * tree.c (lvalue_p): Treat calls to functions returning objects by
3542         value as lvalues again.
3544         * typeck.c (build_component_addr): Use convert_force to convert the
3545         pointer in case the component type is also a private base class.
3547         * search.c (get_matching_virtual): Fix bogus warning of overloaded
3548         virtual.
3550         * pt.c (overload_template_name): Set DECL_ARTIFICIAL on the created
3551         TYPE_DECL to fix bogus shadowing warnings.
3553 Fri Jul 22 01:15:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
3555         * init.c (expand_aggr_init_1): const and volatile mismatches do not
3556         prevent a TARGET_EXPR from initializing an object directly.
3558 Tue Jul 19 17:55:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
3560         * cvt.c (build_up_reference): Allow building up references to
3561         `this', don't warn about making references to artificial variables
3562         (like `this').
3564         * tree.c (lvalue_p): `this' is not an lvalue.
3566         * call.c (build_method_call): Accept using a typedef name (or
3567         template type parameter) for explicit destructor calls.
3569 Wed Jul 13 03:57:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3571         * method.c (hack_identifier): Put back old code so lists of
3572         non-functions will be handled properly.
3574         * cp-tree.h (TYPE_NEEDS_CONSTRUCTING): #if 0 out; this macro is now
3575         defined in the language-independent tree.h.
3577         * tree.c (count_functions): Avoid bogus warning when compiling this
3578         function.
3580 Mon Jul 11 18:37:20 1994  Jason Merrill  (jason@deneb.cygnus.com)
3582         * decl.c (grok_reference_init): Always save the initializer of a
3583         reference.
3585 Fri Jul  8 17:41:46 1994  Mike Stump  <mrs@cygnus.com>
3587         * decl.c (cplus_expand_expr_stmt): Wrap statement expressions inside
3588         CLEANUP_POINT_EXPRs so that the stack slots can be reused.
3589         (disabled for now)
3591 Fri Jul  8 12:59:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
3593         * method.c (hack_identifier): Fix for new overloading.
3595         * typeck.c (build_binary_op_nodefault): Don't mess with division by
3596         zero.
3598 Fri Jul  8 13:20:28 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3600         * decl2.c (finish_file): Only call walk_sigtables, if
3601         flag_handle_signatures is turned on, don't waste time otherwise.
3603 Fri Jul  8 02:27:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
3605         * decl.c (push_overloaded_decl): Don't create overloads of one when
3606         shadowing a class type.
3607         * typeck.c (build_x_function_call): Complain about overloads of one.
3609         * decl.c (grokdeclarator): Don't try to treat a char* as a tree.
3610         (grokdeclarator): Fix setting of TREE_STATIC.
3611         (start_decl): Clear DECL_IN_AGGR_P after calling duplicate_decls.
3613 Thu Jul  7 22:20:46 1994  Gerald Baumgartner  (gb@andros.cygnus.com)
3615         * cp-tree.h (walk_sigtables): Created extern declaration.
3616         * decl2.c (walk_sigtables): Created function, patterned after
3617         walk_vtables, even though we only need it to write out sigtables.
3618         (finish_sigtable_vardecl): Created function.
3619         (finish_vtable_vardecl): Changed 0 to NULL_PTR.
3620         (finish_file): Call walk_sigtables.
3622         * sig.c (build_signature_table_constructor): Mark class member
3623         function pointed to from signature table entry as addressable.
3625 Thu Jul  7 13:39:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
3627         * decl.c (start_decl): Check new decl of static member variable
3628         against the declaration in the class here.
3629         (grokvardecl): Instead of here.
3631         * class.c (prepare_fresh_vtable): Call import_export_vtable if not
3632         -fvtable-thunks.
3633         (build_vtable): Ditto.
3635         * decl2.c (import_export_vtable): Move logic for deciding the
3636         interface of a template class from here.
3637         (import_export_template): To here.
3638         (finish_vtable_vardecl): Call import_export_template before
3639         import_export_vtable.
3641 Wed Jul  6 20:25:48 1994  Mike Stump  <mrs@cygnus.com>
3643         * except.c (init_exception_processing): Setup interim_eh_hook to
3644         call lang_interim_eh. 
3645         * except.c (do_unwind): Propagate throw object value across
3646         stack unwinding.
3647         * except.c (saved_throw_value): Used to hold the value of the object
3648         being thrown.  It is always a reference to the real value.
3649         * except.c (expand_start_catch_block): Add handling for the
3650         value of the exception object.
3651         * except.c (expand_start_catch_block): Add handler for the handler,
3652         so that throws inside the handler go to the outer block.
3653         * except.c (expand_end_catch_block): Ditto.
3654         * parse.y (handler_args): Use parm instead, as the other doesn't yet
3655         handle references correctly.
3657 Wed Jul  6 17:55:32 1994  Per Bothner  (bothner@kalessin.cygnus.com)
3659         * decl2.c (mark_vtable_entries):  If -ftable-thunks, set the
3660         vtable entry properly to abort.
3662 Tue Jul  5 14:07:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3664         * typeck.c (build_binary_op_nodefault): Downgrade division by zero
3665         errors to warnings.
3667         * call.c (build_overload_call_real): Handle fnname being a list of
3668         functions.
3669         * typeck.c (build_x_function_call): Pass list of functions to
3670         build_overload_call, not just the name.
3671         * tree.c (count_functions): Complain when called for invalid
3672         argument.
3674         * decl.c (grokdeclarator): Fix settings of TREE_STATIC, TREE_PUBLIC
3675         and DECL_EXTERNAL on static members and initialized const members.
3676         * decl2.c (grokfield): Reflect this change.
3678 Fri Jul  1 09:35:51 1994  Jason Merrill  (jason@deneb.cygnus.com)
3680         * parse.y (init): ANSI C++ does not forbid { }.
3682 Thu Jun 30 00:35:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
3684         * decl2.c (lang_decode_option): Set warn_nonvdtor along with -Wall.
3685         warn_nonvdtor defaults to off.
3687         * class.c (instantiate_type): Use comptypes rather than relying on 
3688         types to satisfy ==.
3690         * decl.c (start_function): Set DECL_DEFER_OUTPUT on all inlines that
3691         might be static.
3693         * tree.c (build_cplus_new): Never build WITH_CLEANUP_EXPRs.
3695         * decl.c (grok_reference_init): Deal with ADDR_EXPRs of TARGET_EXPRs.
3697         * cvt.c (cp_convert): Pass 0 to with_cleanup_p arg of
3698         build_cplus_new.
3700 Wed Jun 29 22:31:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
3702         * decl2.c (finish_file): Maybe consider static inlines multiple
3703         times, in case they reference each other.
3705 Tue Jun 28 11:58:38 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3707         * class.c (finish_struct): Don't `cons_up_default_function's
3708         for signatures.
3709         (finish_struct): Handle an empty method_vec correctly.
3711         * decl.c (grokdeclarator): Don't warn about a signature being
3712         empty in a signature pointer declaration if we only saw a
3713         forward declaration of the signature.  Changed `warning's into
3714         `cp_warning's.
3716         * sig.c (build_sigtable): Don't die if a null signature table
3717         constructor is returned.
3718         (build_signature_pointer_constructor): If the signature table
3719         constructor is null, the _sptr field is set to a null pointer
3720         and cast to the appropriate type.  Make copies of all null
3721         pointers so that the type null_pointer_node doesn't get changed.
3722         (build_signature_table_constructor): Added comments.
3724         * sig.c (build_signature_pointer_constructor): Complain if we
3725         try to assign to/initialize a signature pointer/reference of
3726         an undefined signature.
3728 Mon Jun 27 14:05:16 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3730         * typeck2.c (store_init_value): Don't be pedantic about
3731         non-constant initializers of signature tables/pointers/references.
3733 Fri Jun 24 16:49:41 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3735         * decl.c (grokdeclarator): If we are grokking an opaque typedef
3736         in a signature, don't complain about it begin static.
3738 Wed Jun 29 16:44:45 1994  Mike Stump  <mrs@cygnus.com>
3740         Fixes a problem of the this pointer being wrong in virtual calls to
3741         methods that are not overridden in more derived classes.
3743         * class.c (fixup_vtable_delta): New routine.  It will fixup the
3744         delta entries in vtables, wheever they need updating.
3745         * class.c (finish_struct): Call the new routine for all virtual
3746         bases, as they can have different offsets, than those used in base
3747         classes that we derive our vtable from.
3749 Tue Jun 28 23:49:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
3751         * typeck.c (build_binary_op): Use the types before default
3752         conversions in the error message.
3754         * *.c: Use c_build_type_variant instead of build_type_variant where
3755         the type might be an array.
3757         * call.c (build_method_call): Call build_type_variant and
3758         build_reference_type in the right order.
3759         * decl.c (record_builtin_type): Ditto.
3761 Wed Jun 29 16:58:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
3763         * call.c (build_method_call): Call build_type_variant and
3764         build_reference_type in the right order.
3765         * decl.c (record_builtin_type): Ditto.
3767 Tue Jun 28 23:49:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
3769         * typeck.c (build_binary_op): Use the types before default
3770         conversions in the error message.
3772         * *.c: Use c_build_type_variant instead of build_type_variant where
3773         the type might be an array.
3775 Sat Jun 25 11:50:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3777         * cvt.c (convert_to_reference): Try UDC's before doing the
3778         reinterpret_cast thang, though.
3780 Fri Jun 24 01:24:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
3782         * typeck.c (c_expand_return): Don't USE the return value location
3783         after we've expanded the jump.
3785         * decl2.c (finish_file): Make sure DECL_SAVED_INSNS is not 0 before
3786         trying to write out an inline.
3788         * cvt.c (build_up_reference): Also do address adjustment when the
3789         target type uses MI.
3790         (convert_to_reference): Try UDCs only after built-in conversions.
3791         (build_type_conversion_1): Don't play games with the argument to the
3792         method.
3793         (build_type_conversion): #if 0 out code for binding to reference.
3795 Thu Jun 23 00:22:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
3797         * decl2.c (finish_file): Use TREE_SYMBOL_REFERENCED to decide
3798         whether to emit inlines.
3800         * decl.c (grokdeclarator): Set explicit_int for decls that just
3801         specify, say, 'long'.
3803         * init.c (do_friend): Do overload C functions (or call pushdecl,
3804         anyaway).
3806 Wed Jun 22 13:40:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
3808         * cvt.c (build_up_reference): Don't call readonly_error.
3809         (convert_to_reference): Propagate const and volatile from expr to
3810         its type.
3812         * tree.c (lvalue_p): Random CALL_EXPRs are not lvalues.
3814         * cvt.c (build_up_reference): Break out WITH_CLEANUP_EXPR when
3815         creating a temporary.
3816         (convert_to_reference): Lose excessive and incorrect trickiness.
3817         (cp_convert): Call build_cplus_new with with_cleanup_p set.
3819         * typeck2.c (build_functional_cast): Ditto.
3821 Tue Jun 21 17:38:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
3823         * decl.c (grokdeclarator): signed, unsigned, long and short all
3824         imply 'int'.
3826         * decl.c (grokdeclarator): Allow "this is a type" syntax.
3827         (grok_reference_init): Simplify and fix.
3829 Sun Jun 19 17:08:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
3831         * decl.c (grokdeclarator): pedwarn about a typedef that specifies no
3832         type.
3834 Sat Jun 18 04:16:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
3836         * decl.c (start_function): Move TREE_PUBLIC and DECL_EXTERNAL
3837         tinkering to after call to pushdecl.
3839 Fri Jun 17 14:48:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
3841         * call.c (build_method_call): Handle destructors for non-aggregate
3842         types properly.
3844 Thu Jun 16 16:48:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
3846         * call.c (build_method_call): Make sure that the name given for the
3847         destructor matches the constructor_name of the instance.
3849         * pt.c (do_function_instantiation): A non-extern instantiation
3850         overrides a later extern one.
3851         (do_type_instantiation): Ditto.
3853 Wed Jun 15 19:34:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3855         * init.c (expand_aggr_init): Use TYPE_MAIN_VARIANT to get the
3856         unqualified array type.
3858         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Tests whether NODE is a
3859         CONSTRUCTOR with no elements.
3861         * decl.c (various): Lose empty_init_node.
3862         (finish_decl): Use EMPTY_CONSTRUCTOR_P, do the empty CONSTRUCTOR
3863         thing depending on the value of DECL_COMMON instead of
3864         flag_conserve_space, do the empty CONSTRUCTOR thing for types that
3865         don't have constructors, don't treat a real empty CONSTRUCTOR
3866         specially.
3868         * typeck2.c (process_init_constructor): Don't treat empty_init_node
3869         specially.
3871 Wed Jun 15 19:05:25 1994  Mike Stump  <mrs@cygnus.com>
3873         * class.c (override_one_vtable): Don't forget to merge in an old
3874         overrider when we wanted to reuse a vtable, but couldn't.
3876 Wed Jun 15 15:03:16 1994  Jason Merrill  (jason@deneb.cygnus.com)
3878         * decl.c (start_decl): Put statics in common again.
3880         * decl.c (grokdeclarator): Return NULL_TREE for an error rather than
3881         setting the type to error_mark_node.
3883         * typeck.c (build_modify_expr): Build up a COMPOUND_EXPR for enum
3884         bitfield assignments.
3886 Tue Jun 14 12:23:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
3888         * decl.c (grok_op_properties): Const objects can be passed by value.
3890 Mon Jun 13 03:10:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
3892         * decl2.c (import_export_vtable): Force implicit instantiations to
3893         be interface_only when -fno-implicit-templates.
3895         * decl.c (duplicate_decls): Redeclaring a class template name is an
3896         error.
3898         * pt.c (end_template_decl): Call GNU_xref_decl for class templates.
3899         * xref.c (GNU_xref_decl): Support templates.
3901 Sat Jun 11 17:09:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
3903         * decl.c (grok_op_properties): Split out checking for whether this
3904         function should suppress the default assignment operator.
3905         * decl2.c (grok_function_init): Ditto.
3906         (copy_assignment_arg_p): New function do do just that.
3907         Now considers virtual assignment operators that take a base as an
3908         argument to count as copy assignment operators.
3910         * search.c (dfs_debug_mark): Lose checks for DWARF_DEBUG and
3911         TREE_ASM_WRITTEN, as they are redundant.
3913         * pt.c (end_template_decl): Don't try to set DECL_CLASS_CONTEXT on a
3914         decl that has no LANG_SPECIFIC part.
3915         (do_type_instantiation): Force the debugging information for this
3916         type to be emitted.
3918         * decl.c (start_decl): Clear up uses of various types of templates
3919         (say sorry for static data members, rather than "invalid template"). 
3920         (expand_static_init): Fix initialization of static data members of
3921         template classes.
3923 Fri Jun 10 00:41:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
3925         * decl.c (grokdeclarator): Set DECL_CONTEXT on static data members.
3927         * g++.c (main): Use -xc++-cpp-output for .i files.
3929         * pt.c (tsubst): Give meaningful error about declaring template for
3930         a copy constructor which was not declared in the class template.
3931         (do_type_instantiation): Explicit instantiation before the class
3932         template is an error.
3933         (instantiate_template): Don't die if tsubst returns error_mark_node.
3935 Thu Jun  9 19:04:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
3937         Don't synthesize the copy assignment operator if the one in a base
3938         class is pure virtual.
3939         * cp-tree.h (TYPE_HAS_ABSTRACT_ASSIGN_REF): New macro to indicate
3940         whether the type has a pure virtual copy assignment operator.
3941         * class.c (finish_base_struct): Don't generate the copy assignment
3942         operator if a base class has a pure virtual one.
3943         * decl.c (grok_op_properties): Add disabled code to set
3944         TYPE_HAS_ABSTRACT_ASSIGN_REF with comment pointing to where it is
3945         actually set.
3946         * decl2.c (grok_function_init): Set TYPE_HAS_ABSTRACT_ASSIGN_REF.
3948         * decl2.c (import_export_vtable): Always treat template
3949         instantiations as if write_virtuals >= 2, and treat implicit
3950         instantiations as external if -fno-implicit-templates.
3951         (finish_file): Output all pending inlines if
3952         flag_keep_inline_functions.
3954 Wed Jun  8 20:48:02 1994  Mike Stump  <mrs@cygnus.com>
3956         * tree.c (layout_vbasetypes): Align virtual base classes inside
3957         complete objects, so that we don't core dump on machines such as
3958         SPARCs when we access members that require larger than normal
3959         alignments, such as a double.  Also, we bump up the total alignment
3960         on the complete type, as necessary.
3962 Wed Jun  8 16:18:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
3964         * gxxint.texi (Free Store): New section with code for examining
3965         cookie.
3966         (Limitations of g++): Remove operator delete entry, since it is no
3967         longer accurate.  Fix access control entry.
3969         * typeck.c (build_unary_op): Pedwarn about taking the address of or
3970         incrementing a cast to non-reference type.
3971         (build_modify_expr): Use convert instead of convert_force again.
3973         * search.c (get_base_distance): Use IS_AGGR_TYPE_CODE to check for
3974         class type, not == RECORD_TYPE.
3976         * decl.c (grokdeclarator): Cope with grokfndecl returning NULL_TREE.
3978         * typeck2.c (report_case_error): #if 0 out.
3979         * lex.c (real_yylex): Lose RANGE.
3980         * parse.y: Ditto.
3982 Tue Jun  7 18:17:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
3984         * parse.y (simple_stmt, case ranges): Use ELLIPSIS instead of RANGE.
3986 Mon Jun  6 19:39:57 1994  Jason Merrill  (jason@deneb.cygnus.com)
3988         * typeck.c (build_c_cast): Don't shortcut conversions to the same
3989         type.  Don't replace consts with their values here, since that's now
3990         done in cp_convert.
3992         * cvt.c (cp_convert): When converting to bool, take
3993         integer_zero_node to false_node and all other INTEGER_CSTs to
3994         true_node.
3995         (build_type_conversion): Don't complain about multiple conversions
3996         to float if we're not really converting.
3998 Fri Jun  3 02:10:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
4000         Implement 'extern template class A<int>;' syntax for suppressing
4001         specific implicit instantiations.
4002         * cp-tree.h: Update prototypes for do_*_instantiation.
4003         * pt.c (do_pending_expansions): Don't compile 'extern' explicit
4004         instantiations.
4005         (do_function_instantiation): Set DECL_EXTERNAL on 'extern' explicit
4006         instantiations.
4007         (do_type_instantiation): Ditto.
4008         * parse.y (explicit_instantiation): Support 'extern template class
4009         A<int>;' syntax.
4010         * decl.c (start_function): Don't modify the settings of TREE_PUBLIC
4011         and DECL_EXTERNAL on explicit instantiations.
4013         * cvt.c (cp_convert): Replace constants with their values before
4014         converting.
4015         (cp_convert): Consistently use 'e' instead of 'expr'.
4017 Thu Jun  2 03:53:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
4019         * typeck2.c (build_x_arrow): Resolve OFFSET_REFs first.
4021 Wed Jun  1 18:57:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
4023         * typeck2.c (digest_init): Handle initializing a pmf with an
4024         overloaded method.
4025         * typeck.c (build_ptrmemfunc): Handle overloaded methods.
4027         * decl.c (pushtag): Use build_decl to make TYPE_DECLs.
4028         (xref_defn_tag): Ditto.
4029         * pt.c (process_template_parm): Ditto.
4030         (lookup_template_class): Ditto.
4031         (push_template_decls): Ditto.
4032         (instantiate_class_template): Ditto.
4033         (create_nested_upt): Ditto.
4034         * class.c (finish_struct): Don't try to set DECL_CLASS_CONTEXT on
4035         TYPE_DECLs.
4037         * typeck.c (convert_arguments): Make sure type is not NULL before
4038         checking its TREE_CODE.
4040 Wed Jun  1 17:40:39 1994  Mike Stump  <mrs@cygnus.com>
4042         * class.c (get_derived_offset): New routine.
4043         * class.c (finish_base_struct): Make sure we set BINFO_VTABLE and
4044         BINFO_VIRTUALS when we choose a new base class to inherit from.
4045         * class.c (modify_one_vtable): Use get_derived_offset to get the
4046         offset to the most base class subobject that we derived this binfo
4047         from.
4048         * class.c (finish_struct): Move code to calculate the
4049         DECL_FIELD_BITPOS of the vfield up, as we need might need it for
4050         new calls to get_derived_offset in modify_one_vtable.
4052 Wed Jun  1 16:50:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
4054         * init.c (build_member_call): Use build_pointer_type instead of
4055         TYPE_POINTER_TO.
4057 Wed Jun  1 11:11:15 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
4059         * decl.c (grokdeclarator): Make sure we have a DNAME set before we
4060         try to use it in an error.
4062 Wed Jun  1 09:48:49 1994  Mike Stump  <mrs@cygnus.com>
4064         * typeck.c (convert_arguments, convert_for_initialization): Don't
4065         strip NOP_EXPRs, when we are converting to a reference.
4067 Wed Jun  1 01:11:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
4069         * typeck.c (build_modify_expr): Don't dereference references when
4070         initializing them.
4072         * decl2.c (grokfield): Don't check for grokdeclarator returning
4073         error_mark_node any more.
4075         * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
4076         (start_method): Return void_type_node instead of error_mark_node.
4078         * typeck.c (build_modify_expr): Resolve offset refs earlier.
4080 Tue May 31 16:06:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
4082         * call.c (build_method_call): Resolve OFFSET_REFs in the object.
4084         * typeck.c (build_modify_expr): Dereference references before trying
4085         to assign to them.
4087         * call.c (build_method_call): Don't confuse type conversion
4088         operators with constructors.
4089         * typeck2.c (build_functional_cast): Just call build_c_cast if there
4090         was only one parameter.
4091         * method.c (build_typename_overload): Don't set
4092         IDENTIFIER_GLOBAL_VALUE on these identifiers.
4093         * decl.c (grok_op_properties): Warn about defining a type conversion
4094         operator that converts to a base class (or reference to it).
4095         * cvt.c (cp_convert): Don't try to use a type conversion operator
4096         when converting to a base class.
4097         (build_type_conversion_1): Don't call constructor_name_full on an
4098         identifier.
4099         * cp-tree.h (DERIVED_FROM_P): Should be self-explanatory.
4101         * decl.c (start_decl): Don't complain that error_mark_node is an
4102         incomplete type.
4103         (finish_decl): Check for type == error_mark_node.
4105 Mon May 30 23:38:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
4107         * decl.c (start_function): Set DECL_DEFER_OUTPUT on implicit
4108         instantiations and inline members.
4110         * spew.c (yylex): Set looking_for_template if the next token is a '<'.
4112         * lex.h: Declare looking_for_template.
4114         * decl.c (lookup_name_real): Use looking_for_template to arbitrate
4115         between type and template interpretations of an identifier.
4117 Sat May 28 04:07:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
4119         * pt.c (instantiate_template): Zero out p if we found a
4120         specialization.
4122         * decl.c (grokdeclarator): Elucidate warning.
4123         (grokdeclarator): If pedantic AND -ansi, complain about long long.
4125         Make explicit instantiation work reasonably.  It is now appropriate
4126         to deprecate the use of -fexternal-templates.
4127         * pt.c (instantiate_template): Set DECL_TEMPLATE_SPECIALIZATION or
4128         DECL_IMPLICIT_INSTANTIATION on fndecl as appropriate.
4129         (end_template_instantiation): Reflect changes in USE_TEMPLATE
4130         semantics.
4131         (do_pending_expansions): if (!flag_implicit_templates) DECIDE(0);
4132         (do_function_instantiation): Don't set EXPLICIT_INST if
4133         flag_external_templates is set.  Do set TREE_PUBLIC and DECL_EXTERN
4134         appropriately otherwise.
4135         (do_type_instantiation): Set interface info for class.  Set
4136         TREE_PUBLIC and DECL_EXTERN for methods.  Do none of this if
4137         flag_external_templates is set.
4138         * parse.y: Reflect changes in USE_TEMPLATE semantics.
4139         * decl2.c: New flag flag_implicit_templates determines whether or
4140         not implicit instantiations get emitted.  This flag currently
4141         defaults to true, and must be true for -fexternal-templates to work.
4142         (finish_file): Consider flag_implement_inlines when
4143         setting DECL_EXTERNAL.  Consider flag_implicit_templates when
4144         deciding whether or not to emit a static copy.
4145         * decl.c (start_function): Set TREE_PUBLIC and DECL_EXTERNAL
4146         properly for template instantiations.
4147         (start_method): Set DECL_IMPLICIT_INSTANTIATION on methods of a
4148         template class.
4149         * cp-tree.h (CLASSTYPE_USE_TEMPLATE): Change semantics.
4150         (DECL_USE_TEMPLATE): Parallel macro for FUNCTION and VAR_DECLs.
4151         (various others): Accessor macros for the above.
4153 Fri May 27 13:57:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
4155         * typeck.c (build_binary_op_nodefault): Division by constant zero is
4156         an error.
4158 Fri May 27 13:50:15 1994  Mike Stump  <mrs@cygnus.com>
4160         * class.c (override_one_vtable): Don't modify things we don't own.
4162 Fri May 27 01:42:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
4164         * decl.c (finish_decl): Don't postpone processing the initializer of
4165         a decl with DECL_EXTERNAL set, and do call rest_of_compilation for a
4166         PUBLIC const at toplevel.
4167         (grokdeclarator): pedwarn about initializing non-const or
4168         non-integral statics in the class body.
4170         * decl.c (pushtag): Don't try to set DECL_CLASS_CONTEXT on a
4171         TYPE_DECL.
4173         * call.c (convert_harshness): Dereference reference on rhs before
4174         proceeding, properly grok passing const things to non-const
4175         references.
4177         * typeck.c (build_unary_op): Soften error about taking the address
4178         of main() to a pedwarn.
4180         * lex.c (default_copy_constructor_body): Unambiguously specify base
4181         classes (i.e. A((const class ::A&)_ctor_arg) ).
4182         (default_assign_ref_body): Ditto.
4184 Thu May 26 13:13:55 1994  Gerald Baumgartner  (gb@mexican.cygnus.com)
4186         * decl2.c (grokfield): Don't complain about local signature
4187         method declaration without definition.
4189         * call.c (convert_harshness): If `type' is a signature pointer
4190         and `parmtype' is a pointer to a signature, just return 0.  We
4191         don't really convert in this case; it's a result of making the
4192         `this' parameter of a signature method a signature pointer.
4194         * call.c (build_method_call): Distinguish calling the default copy
4195         constructor of a signature pointer/reference from a signature
4196         member function call.
4198 Thu May 26 12:56:25 1994  Jason Merrill  (jason@deneb.cygnus.com)
4200         * decl2.c (grokfield): Don't set TREE_PUBLIC on member function
4201         declarations.
4203         * decl.c (duplicate_decls): A previous function declaration as
4204         static overrides a subsequent non-static definition.
4205         (grokdeclarator): Don't set TREE_PUBLIC on inline method
4206         declarations.
4208 Wed May 25 14:36:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
4210         * decl.c (grokdeclarator): Handle initialization of static const
4211         members.
4212         (finish_decl): Ditto.
4214         * decl2.c (grokfield): Allow initialization of static const members
4215         even when pedantic.
4217         * decl2.c (grokfield): Deal with grokdeclarator returning
4218         error_mark_node.
4220         * decl.c (grok_ctor_properties): Return 0 for A(A) constructor.
4221         (grokfndecl): Check the return value of grok_ctor_properties.
4222         (start_method): Ditto.
4224         * parse.y (absdcl): Expand type_quals inline.
4226 Tue May 24 19:10:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
4228         * decl.c (pushtag): Use IS_AGGR_TYPE rather than checking for a
4229         RECORD_TYPE.
4231 Tue May 24 18:09:16 1994  Per Bothner  (bothner@kalessin.cygnus.com)
4233         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
4234         always use "__vt_%s".
4235         * decl2.c (finish_vtable_vardecl):  Don't consider abstract virtuals
4236         when looking for a "sentinal" method (to decide on emitting vtables).
4237         * decl2.c (finish_file):  Scan all decls for thunks that need
4238         to be emitted.
4239         * decl2.c (finish_vtable_vardecl):  Don't bother calling emit_thunk.
4240         * method.c (make_thunk):  Use a more meaningful label.  If there
4241         exists a matching top-level THUNK_DECL re-use it;  otherwise
4242         create a new THUNK_DECL (and declare it).
4243         * method.c (emit_thunk):  Make thunk external/public depending
4244         on the underlying method.
4246 Tue May 24 00:22:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
4248         * pt.c (tsubst): Use lookup_name_nonclass to find guiding decls, not
4249         lookup_name.
4251         * call.c (build_overload_call_real): Don't immediately pick a
4252         function which matches perfectly.
4254         * decl.c (grokdeclarator): Use c_build_type_variant for arrays.
4255         (grokdeclarator): Warn about, and throw away, cv-quals attached to a
4256         reference (like 'int &const j').
4258         * typeck.c (convert_arguments): Don't mess with i for methods.
4259         * call.c (build_method_call): Pass the function decl to
4260         convert_arguments.
4262         * typeck.c (comp_ptr_ttypes_real): New function.  Implements the
4263         checking for which multi-level pointer conversions are allowed.
4264         (comp_target_types): Call it.
4265         (convert_for_assignment): Check const parity on the ultimate target
4266         type, too.  And make those warnings pedwarns.
4268 Mon May 23 14:11:24 1994  Jason Merrill  (jason@deneb.cygnus.com)
4270         * error.c (dump_char): Use TARGET_* for character constants.
4272 Mon May 23 13:03:03 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
4274         * tree.c (debug_no_list_hash): Make static.
4276         * decl.c (decls_match): Say the types don't match if newdecl ends up
4277         with a null type, after we've checked if olddecl does.
4278         (pushdecl): Check if the decls themselves match before looking for
4279         an extern redeclared as static, to avoid inappropriate and incorrect
4280         warnings.
4282 Fri May 20 14:04:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
4284         * decl.c (grokdeclarator): Make warning about duplicate short, etc.
4285         a pedwarn.
4287         * typeck.c (build_c_cast): Casting to function or method type is an
4288         error.
4290         * class.c (finish_struct): Make warning for anonymous class with no
4291         instances a pedwarn.
4293         * Makefile.in (stamp-parse): Expect a s/r conflict.
4295         * typeck.c (build_modify_expr): pedwarn about using a non-lvalue
4296         cast as an lvalue.
4298 Thu May 19 12:08:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
4300         * cvt.c (type_promotes_to): Make sure bool promotes to int rather
4301         than unsigned on platforms where sizeof(char)==sizeof(int).
4303 Wed May 18 14:27:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
4305         * typeck.c (build_c_cast): Tack on a NOP_EXPR when casting to
4306         another variant.
4307         (build_modify_expr): Don't strip NOP_EXPRs, and don't get tricky
4308         and treat them as lvalues.
4310         * decl.c (shadow_tag): Do complain about forward declarations of
4311         enums and empty declarations.
4312         * parse.y: Don't complain about forward declarations of enums and
4313         empty declarations.
4315         * typeck.c (convert_for_assignment): Complain about changing
4316         the signedness of a pointer's target type.
4318         * parse.y (stmt): Move duplicated code for checking case values from
4319         here.
4320         * decl2.c (check_cp_case_value): To here.  And add a call to
4321         constant_expression_warning.
4323         * typeck.c (convert_for_assignment): Don't complain about assigning
4324         a negative value to bool.
4326         * decl.c (init_decl_processing): Make bool unsigned.
4328         * class.c (finish_struct): Allow bool bitfields.
4330 Wed May 18 12:35:27 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
4332         * Make-lang.in (c++.install-man): Get g++.1 from $(srcdir)/cp.
4334 Wed May 18 03:28:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
4336         * cvt.c (build_type_conversion): Lose special handling of
4337         truthvalues.
4339         * search.c (dfs_pushdecls): Improve shadowing warning.
4341 Tue May 17 13:34:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
4343         * init.c (build_delete): Throw away const and volatile on `this'.
4345         * decl.c (finish_enum): Put the constants in TYPE_VALUES again,
4346         rather than the enumerators.
4347         (pushtag): s/cdecl/c_decl/g
4349 Mon May 16 23:04:01 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
4351         * cp/typeck.c (common_type): Attribute merging.
4352         (comp_types): Utilise COMP_TYPE_ATTRIBUTES macro.
4354         * cp/parse.y: Revamp attribute parsing.
4356 Mon May 16 01:40:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
4358         * decl.c (shadow_tag): Also check for inappropriate use of auto and
4359         register.
4361         * method.c (build_overload_name): Clarify that the illegal case is a
4362         pointer or reference to array of unknown bound.
4364         * error.c (dump_type_prefix): Print references to arrays properly.
4366         * typeck.c (various): Be more helpful in pointer
4367         comparison diagnostics.
4369         * tree.c (lvalue_p): MODIFY_EXPRs are lvalues again.  Isn't this
4370         fun?
4372         * parse.y: Also catch an error after valid stmts.
4374         * search.c (dfs_init_vbase_pointers): Don't abort because `this' is
4375         const.
4377         * typeck.c (convert_for_initialization): If call to
4378         convert_to_reference generated a diagnostic, print out the parm
4379         number and function decl if any.
4381         * errfn.c (cp_thing): Check atarg1 to determine whether or not we're
4382         specifying a line, not atarg.
4384         * tree.c (build_cplus_method_type): Always make `this' const.
4386         * decl2.c (grokclassfn): If -fthis-is-variable and this function is
4387         a constructor or destructor, make `this' non-const.
4389         * typeck.c (build_modify_expr): Don't warn specially about
4390         assignment to `this' here anymore, since it will be caught by the
4391         usual machinery.
4393         * various: Disallow specific GNU extensions (variable-size arrays,
4394         etc.) when flag_ansi is set, not necessarily when pedantic is set,
4395         so that people can compile with -pedantic-errors for tighter const
4396         checking and such without losing desirable extensions.
4398         * typeck2.c (build_functional_cast): Call build_method_call with
4399         LOOKUP_PROTECT.
4400         (process_init_constructor): Only process FIELD_DECLs.
4402         * decl.c (finish_decl): Also force static consts with no explicit
4403         initializer that need constructing into the data segment.
4405         * init.c (build_delete): Undo last patch, as it interferes with
4406         automatic cleanups.
4408 Sat May 14 01:59:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
4410         * call.c, class.h, cp-tree.h, cvt.c, decl2.c: Lose old overloading
4411         code.
4413         * init.c (build_delete): pedwarn about using plain delete to delete
4414         an array.
4416 Fri May 13 16:45:07 1994  Jason Merrill  (jason@deneb.cygnus.com)
4418         * typeck.c (comp_target_types): Be more helpful in contravariance
4419         warnings, and make them pedwarns.
4421         * decl.c (grokdeclarator): Use decl_context to decide whether or not
4422         this is an access declaration.
4424         * class.c (finish_struct_bits): Set TYPE_HAS_INT_CONVERSION if it
4425         has a conversion to enum or bool, too.
4427 Fri May 13 16:31:27 1994  Mike Stump  <mrs@cygnus.com>
4429         * method.c (emit_thunk):  Make declaration for
4430         current_call_is_indirect local (needed for hppa).
4432 Fri May 13 16:16:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
4434         * pt.c (uses_template_parms): Grok BOOLEAN_TYPE.
4435         (tsubst): Ditto.
4437 Fri May 13 16:23:32 1994  Mike Stump  <mrs@cygnus.com>
4439         * pt.c (tsubst): If there is already a function for this expansion,
4440         use it.
4441         * pt.c (instantiate_template): Ditto.
4443 Fri May 13 10:30:42 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
4445         * parse.y (implicitly_scoped_stmt, simple_stmt case): Use
4446         kept_level_p for MARK_ENDS argument to expand_end_bindings, to avoid
4447         generating debug info for unemitted symbols on some systems.
4449         * cp-tree.h (build_static_cast, build_reinterpret_cast,
4450         build_const_cast): Add declarations.
4452 Fri May 13 09:50:31 1994  Mike Stump  <mrs@cygnus.com>
4454         * search.c (expand_indirect_vtbls_init): Fix breakage from Apr 27
4455         fix.  We now try get_binfo, and if that doesn't find what we want,
4456         we go back to the old method, which still sometimes fails.
4458 Fri May 13 01:43:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
4460         * parse.y (initdcl): Call cplus_decl_attributes on the right
4461         variable.
4462         * decl2.c (cplus_decl_attributes): Don't call decl_attributes for
4463         void_type_node.
4465         * typeck.c (build_binary_op_nodefault): Change result_type for
4466         comparison ops to bool.
4467         (build_binary_op): Convert args of && and || to bool.
4468         * cvt.c (build_default_binary_type_conversion): Convert args of &&
4469         and || to bool.
4470         (build_default_unary_type_conversion): Convert arg of ! to bool.
4471         (type_promotes_to): bool promotes to int.
4473 Fri May 13 01:43:18 1994  Mike Stump  <mrs@cygnus.com>
4475         Implement the new builtin `bool' type.
4476         * typeck.c (build_binary_op_nodefault): Convert args of && and || to
4477         bool.
4478         (build_unary_op): Convert arg of ! to bool.
4479         * parse.y: Know true and false.  Use bool_truthvalue_conversion.
4480         * method.c (build_overload_value): Know bool.
4481         (build_overload_name): Ditto.
4482         * lex.c (init_lex): Set up RID_BOOL.
4483         * gxx.gperf: Add bool, true, false.
4484         * error.c (*): Know bool.
4485         * decl.c (init_decl_processing): Set up bool, true, false.
4486         * cvt.c (cp_convert): Handle conversion to bool.
4487         (build_type_conversion): Ditto.
4488         * *.c: Accept bool where integers and enums are accepted (use
4489         INTEGRAL_CODE_P macro).
4491 Thu May 12 19:13:54 1994  Richard Earnshaw  (rwe11@cl.cam.ac.uk)
4493         * g++.c: Use #ifdef for __MSDOS__, not #if.
4495 Thu May 12 18:05:18 1994  Mike Stump  <mrs@cygnus.com>
4497         * decl2.c (lang_f_options): Handle -fshort-temps.  -fshort-temps
4498         gives old behavior , and destroys temporaries earlier.  Default
4499         behavior now conforms to the ANSI working paper.
4501 Thu May 12 14:45:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
4503         * typeck.c (build_modify_expr): Understand MODIFY_EXPR as an lvalue.
4504         Use convert_force to convert the result of a recursive call when we
4505         are dealing with a NOP_EXPR.  Don't automatically wrap MODIFY_EXPRs
4506         in COMPOUND_EXPRs any more.
4507         (various): Lose pedantic_lvalue_warning.
4508         (unary_complex_lvalue): Understand MODIFY_EXPR.
4510         * cvt.c (convert_to_reference): Allow DECL to be error_mark_node if
4511         we don't know what we're initializing.
4513 Wed May 11 01:59:36 1994  Jason Merrill  (jason@deneb.cygnus.com)
4515         * cvt.c (convert_to_reference): Modify to use convtype parameter.
4516         Only create temporaries when initializing a reference, not when
4517         casting.
4518         (cp_convert): New main function.
4519         (convert): Call cp_convert.
4520         * cvt.c, decl.c, typeck.c: Fix calls to convert_to_reference.
4521         * cp-tree.h (CONV_*): New constants used by conversion code for
4522         selecting conversions to perform.
4524         * tree.c (lvalue_p): MODIFY_EXPRs are no longer lvalues.
4526         * typeck.c (build_{static,reinterpret,const_cast): Stubs that just
4527         call build_c_cast.
4528         * parse.y: Add {static,reinterpret,const}_cast.
4529         * gxx.gperf: Ditto.
4531         * typeck.c (common_type): Allow methods with basetypes of different
4532         UPTs.
4533         (comptypes): Deal with UPTs.
4534         (build_modify_expr): Wrap all MODIFY_EXPRs in a COMPOUND_EXPR.
4536         * pt.c (end_template_decl): Check for multiple definitions of member
4537         templates.
4539         * call.c (build_method_call): Complain about calling an abstract
4540         virtual from a constructor.
4542         * typeck.c (pointer_int_sum): Check for the integer operand being 0
4543         after checking the validity of the pointer operand.
4545         * typeck2.c (digest_init): Pedwarn about string initializer being
4546         too long.
4548 Tue May 10 12:10:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
4550         * decl.c (push_overloaded_decl): Only throw away a builtin if the
4551         decl in question is the artificial one.
4553         * parse.y (simple_stmt, switch): Use implicitly_scoped_stmt because
4554         expand_{start,end}_case cannot happen in the middle of a block.
4556         * cvt.c (build_type_conversion_1): Use convert again.
4558 Tue May 10 11:52:04 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
4560         * typeck2.c (digest_init): Make sure we check for signed and
4561         unsigned chars as well when warning about string initializers.
4563         * init.c (emit_base_init): Check if there's a DECL_NAME on the
4564         member before trying to do an initialization for it.
4566 Tue May 10 11:34:37 1994  Mike Stump  <mrs@cygnus.com>
4568         * except.c: Don't do anything useful when cross compiling.
4570 Tue May 10 03:04:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
4572         * decl.c (duplicate_decls): Fix up handling of builtins yet again.
4573         (push_overloaded_decl): Ditto.
4575         * cvt.c (convert): Don't look for void type conversion.
4577 Mon May  9 18:05:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
4579         * init.c (do_friend): Only do a pushdecl for friends, not
4580         pushdecl_top_level.
4582 Mon May  9 13:36:34 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
4584         * decl.c (lookup_name_current_level): Put empty statement after
4585         the label OUT to make the code valid C.
4587 Mon May  9 12:20:57 1994  Jason Merrill  (jason@deneb.cygnus.com)
4589         * typeck.c (build_binary_op_nodefault): Only complain about
4590         comparing void * and a function pointer if void * is smaller.
4592 Sun May  8 01:29:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
4594         * decl.c (lookup_name_current_level): Move through temporary binding
4595         levels.
4597         * parse.y (already_scoped_stmt): Revive.
4598         (simple_stmt): Use it again.
4600         * decl.c (poplevel): Always call poplevel recursively if we're
4601         dealing with a temporary binding level.
4603 Sat May  7 10:52:28 1994  Mike Stump  <mrs@cygnus.com>
4605         * decl.c (finish_decl): Make sure we run cleanups for initial values
4606         of decls.  Cures memory leak.
4607         * decl.c (expand_static_init): Ditto for static variables.
4608         * decl2.c (finish_file): Ditto for globals.
4610 Sat May  7 03:57:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
4612         * typeck.c (commonparms): Don't complain about redefining default
4613         args.
4615         * decl.c (duplicate_decls): Don't complain twice about conflicting
4616         function decls.
4617         (decls_match): Don't look at default args.
4618         (redeclaration_error_message): Complain about redefining default
4619         args.
4621         * call.c (build_overload_call_real): Also deal with guiding
4622         declarations coming BEFORE the template decl.
4624         * pt.c (unify): Allow different parms to have different
4625         cv-qualifiers.
4626         (unify): Allow trivial conversions on non-template parms.
4628 Fri May  6 03:53:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
4630         * pt.c (tsubst): Support OFFSET_TYPEs.
4631         (unify): Ditto.
4633         * decl2.c (finish_decl_parsing): Call push_nested_class with a type.
4635         * init.c (build_offset_ref): Fix error message.
4636         * search.c (lookup_field): Ditto.
4638         * call.c (build_scoped_method_call): Pass binfo to
4639         build_method_call.
4640         * typeck.c (build_object_ref): Ditto.
4642         * typeck2.c (binfo_or_else): Don't return a _TYPE.
4644         * class.c (finish_struct): Don't complain about re-use of inherited
4645         names or shadowing of type decls.
4646         * decl.c (pushdecl_class_level): Ditto.
4648         * decl.c (finish_enum): Set the type of all the enums.
4650         * class.c (finish_struct): Don't get confused by access decls.
4652         * cp-tree.h (TYPE_MAIN_DECL): New macro to get the _DECL for a
4653         _TYPE.  You can stop using TYPE_NAME for that now.
4655         * parse.y: Lose doing_explicit (check $0 instead).
4656         * gxx.gperf: 'template' now has a RID.
4657         * lex.h (rid): Ditto.
4658         * lex.c (init_lex): Set up the RID for 'template'.
4660         * parse.y (type_specifier_seq): typed_typespecs or
4661         nonempty_type_quals.  Use it.
4662         (handler_args): Fix bogus syntax.
4663         (raise_identifier{,s}, optional_identifier): Lose.
4664         * except.c (expand_start_catch_block): Use grokdeclarator to parse
4665         the catch variable.
4666         (init_exception_processing): The second argument to
4667         __throw_type_match is ptr_type_node.
4669         Fri May  6 07:18:54 1994  Chip Salzenberg  (chip@fin)
4671         [ change propagated from c-decl.c of snapshot 940429 ]
4672         * cp/decl.c (finish_decl): Setting asmspec_tree should not
4673         zero out the old RTL.
4675 Fri May  6 01:25:38 1994  Mike Stump  <mrs@cygnus.com>
4677         Add alpha exception handling support to the compiler.
4678         Quick and dirty backend in except.c.
4680         * cp/*:  Remove most remnants of old exception handling support.
4681         * decl.c (finish_function): Call expand_exception_blocks to put
4682         the exception hanlding blocks at the end of the function.
4683         * dec.c (hack_incomplete_structures): Make sure expand_decl_cleanup
4684         comes after expand_decl_init.
4685         * except.c: Reimplementation.
4686         * expr.c (cplus_expand_expr): Handle THROW_EXPRs.
4687         * lex.c (init_lex): Always have catch, try and throw be reserved
4688         words, so that we may always parse exception handling.
4689         * parse.y: Cleanup to support new interface into exception handling.
4690         * tree.def (THROW_EXPR): Add.
4692 Thu May  5 17:35:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
4694         * parse.y (simple_stmt, for loops): Use implicitly_scoped_stmt.
4695         (various): Lose .kindof_pushlevel and partially_scoped_stmt.
4697 Thu May  5 16:17:27 1994  Kung Hsu  (kung@mexican.cygnus.com)
4699         * parse.y (already_scoped_stmt): move expand_end_binding() to
4700         fix the unmatched LBB/LBE in stabs.
4702 Thu May  5 14:36:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
4704         * decl.c (set_nested_typename): Set TREE_MANGLED on the new
4705         identifiers.
4706         (pushdecl): Check TREE_MANGLED.
4707         (xref_tag): Ditto.
4708         * cp-tree.h (TREE_MANGLED): This identifier is a
4709         DECL_NESTED_TYPENAME (named to allow for future use to denote
4710         mangled function names as well).
4712         Implement inconsistency checking specified in [class.scope0].
4713         * decl.c (lookup_name_real): Don't set ICV here after all.
4714         (finish_enum): Also set the type of the enumerators themselves.
4715         (build_enumerator): Put the CONST_DECL in the list instead of its
4716         initial value.
4717         (pushdecl_class_level): Check inconsistent use of a name in the
4718         class body.
4719         * class.c (finish_struct): Check inconsistent use of a name in the
4720         class body.  Don't set DECL_CONTEXT on types here anymore.
4721         * parse.y (qualified_type_name): Note that the identifier has now
4722         been used (as a type) in the class body.
4723         * lex.c (do_identifier): Note that the identifier has now been used
4724         (as a constant) in the class body.
4725         * error.c (dump_decl): Print type and enum decls better.
4727 Thu May  5 09:35:35 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
4729         * typeck.c (build_modify_expr): Warn about assignment to `this'.
4731 Wed May  4 15:55:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
4733         * init.c (build_delete): Use the global operator delete when
4734         requested.
4736         * decl.c (lookup_name_real): If we find the type we're looking in a
4737         base class while defining a class, set IDENTIFIER_CLASS_VALUE for
4738         the type.
4740         * class.c (finish_struct): Remove a couple of dependencies on
4741         language linkage.
4743         * decl.c (pushtag): Classes do nest in extern "C" blocks.
4744         (pushdecl): Only set DECL_NESTED_TYPENAME on the canonical one for
4745         the type.
4746         (pushtag): Remove another dependency on the language linkage.
4748         * lex.c (cons_up_default_function): Don't set DECL_CLASS_CONTEXT to
4749         a const-qualified type.
4751         * decl.c (push_overloaded_decl): Throw away built-in decls here.
4752         (duplicate_decls): Instead of here.
4754 Wed May  4 15:27:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
4756         * typeck.c (get_member_function_from_ptrfunc):  Do The Right
4757         Thing (I hope) if we're using thunks.
4759 Wed May  4 13:52:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
4761         * parse.y (specialization): aggr template_type_name ';'.
4762         (named_class_head_sans_basetype): Use it.
4763         (explicit_instantiation): Ditto.
4764         (tmpl.2): Revert.
4766         * cvt.c (build_type_conversion_1): Use convert_for_initialization,
4767         rather than convert, to do conversions after the UDC.
4769         * cp-tree.h (SHARED_MEMBER_P): This member is shared between all
4770         instances of the class.
4772         * search.c (lookup_field): If the entity found by two routes is the
4773         same, it's not ambiguous.
4775 Wed May  4 12:10:00 1994  Per Bothner  (bothner@kalessin.cygnus.com)
4777         * decl.c (lookup_name_real):  Check for a NULL TREE_VALUE,
4778         to prevent the compiler from crashing ...
4780 Wed May  4 11:19:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
4782         * call.c (build_method_call): If we don't have an object, check
4783         basetype_path to figure out where to look up the function.
4785         * typeck.c (convert_for_initialization): Pass TYPE_BINFO (type) to
4786         build_method_call in case exp is NULL_TREE.
4788 Tue May  3 16:02:53 1994  Per Bothner  (bothner@kalessin.cygnus.com)
4790         Give a vtable entries a unique named type, for the sake of gdb.
4791         * class.c (build_vtable_entry):  The addres of a thunk now has
4792         type vtable_entry_type, not ptr_type_node.
4793         * method.c (make_thunk):  Fix type of THUNK_DECL.
4794         * class.c (add_virtual_function, override_one_vtable):  Use
4795         vfunc_ptr_type_node, instead of ptr_type_node.
4796         * cp-tree.h (vfunc_ptr_type_node):  New macro.
4797         * decl.c (init_decl_processing):  Make vtable_entry_type
4798         be a unique type of pointer to a unique function type.
4800 Tue May  3 09:20:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
4802         * parse.y (do_explicit): Sets doing_explicit to 1.
4803         (explicit_instantiation): Use do_explicit rather than TEMPLATE
4804         directly, add "do_explicit error" rule.
4805         (datadef): Set doing_explicit to 0 after an explicit instantiation.
4806         (tmpl.2): Don't instantiate if we see a ';' unless we're doing an
4807         explicit instantiation.
4808         (named_class_head_sans_basetype): Remove aggr template_type_name
4809         ';' again.
4811 Mon May  2 23:17:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
4813         * search.c (lookup_nested_tag): Lose.
4815         * decl2.c (grokfield): Set DECL_CONTEXT on TYPE_DECLs.
4816         (lookup_name_nonclass): Lose.
4818         * decl.c (poplevel_class): Add force parameter.
4819         (lookup_name_real): Fix handling of explicit scoping which specifies
4820         a class currently being defined.  Add 'nonclass' argument.
4821         (lookup_name, lookup_name_nonclass): Shells for lookup_name_real.
4823         * class.c (finish_struct): Don't unset IDENTIFIER_CLASS_VALUEs here.
4824         (popclass): Force clearing of IDENTIFIER_CLASS_VALUEs if we're being
4825         called from finish_struct.
4827 Mon May  2 19:06:21 1994  Per Bothner  (bothner@kalessin.cygnus.com)
4829         * decl.c (init_decl_processing), cp-tree.h:  Removed memptr_type.
4830         (It seeems redundant, given build_ptrmemfunc_type.)
4831         * typeck.c (get_member_function_from_ptrfunc), gc.c (build_headof,
4832         build_classof):  Use vtable_entry_type instead of memptr_type.
4833         * method.c (emit_thunk):  Call poplevel with functionbody==0
4834         to prevent DECL_INITIAL being set to a BLOCK.
4836 Mon May  2 15:02:11 1994  Jason Merrill  (jason@deneb.cygnus.com)
4838         * parse.y (named_class_head_sans_basetype): Add "aggr
4839         template_type_name ';'" rule for forward declaration of
4840         specializations.
4842 Mon May  2 15:02:11 1994  Jason Merrill  (jason@deneb.cygnus.com)
4844         * class.c (instantiate_type): Deal with pmf's.
4846         * Make-lang.in (cc1plus): Don't depend on OBJS or BC_OBJS, since
4847         stamp-objlist does.
4849         * Makefile.in (../cc1plus): Depend on OBJDEPS.
4850         (OBJDEPS): Dependency version of OBJS.
4852 Mon May  2 12:51:31 1994  Kung Hsu  (kung@mexican.cygnus.com)
4854         * search.c (dfs_debug_mark): unmark TYPE_DECL_SUPPRESS_DEBUG, not
4855         DECL_IGNORED_P.
4857 Fri Apr 29 12:29:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
4859         * class.c (finish_struct): Clear out memory of local tags.  And
4860         typedefs.
4862         * decl2.c (grokclassfn): Don't set DECL_CONTEXT to a cv-qualified
4863         type.
4864         * search.c (get_matching_virtual): Be more helpful in error message.
4866         * *: Use DECL_ARTIFICIAL (renamed from DECL_SYNTHESIZED).
4868         * lex.c (default_assign_ref_body): Expect TYPE_NESTED_NAME to work.
4869         (default_copy_constructor_body): Ditto.
4871         * class.c (finish_struct): Don't gratuitously create multiple decls
4872         for nested classes.
4874 Thu Apr 28 23:39:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
4876         Avoid clobbering the arg types of other functions when reverting
4877         static member functions.
4878         * decl.c (revert_static_member_fn): Rearrange arguments, don't
4879         require values for 'fn' and 'argtypes', add warning to comment
4880         above.
4881         (decls_match): Rearrange arguments in call to rsmf.
4882         (grok_op_properties): Don't pass values for fn and argtypes.
4883         * pt.c (instantiate_template): Don't pass values for fn and argtypes.
4885 Thu Apr 28 16:29:11 1994  Doug Evans  (dje@canuck.cygnus.com)
4887         * Make-lang.in (cc1plus): Depend on stamp-objlist.
4888         * Makefile.in (BC_OBJS): Delete.
4889         (OBJS): Cat ../stamp-objlist to get language independent files.
4890         Include ../c-common.o.
4891         (../cc1plus): Delete reference to BC_OBJS.
4893 Thu Apr 28 02:12:08 1994  Jason Merrill  (jason@deneb.cygnus.com)
4895         * search.c (compute_access): No really, deal with static members
4896         properly.  Would I lie to you?
4898         Implement lexical hiding of function declarations.
4899         * pt.c (tsubst): Use lookup_name to look for function decls to guide
4900         instantiation.
4901         * method.c (build_opfncall): Use lookup_name_nonclass to look for
4902         non-member functions.
4903         * init.c (do_friend): Use lookup_name_nonclass to look for
4904         functions.
4905         * error.c (ident_fndecl): Use lookup_name to look for functions.
4906         * decl2.c (lookup_name_nonclass): New function, skips over
4907         CLASS_VALUE.
4908         * decl.c (struct binding_level): Lose overloads_shadowed field.
4909         (poplevel): Don't deal with overloads_shadowed.
4910         (push_overloaded_decl): Do lexical hiding for functions.
4911         * class.c (instantiate_type): Don't check non-members if we have
4912         members with the same name.
4913         * call.c (build_method_call): Use lookup_name_nonclass instead of
4914         IDENTIFIER_GLOBAL_VALUE to check for non-member functions.
4915         (build_overload_call_real): Ditto.
4917         * decl.c (duplicate_decls): Check for ambiguous overloads here.
4918         (push_overloaded_decl): Instead of here.
4919         
4920         * decl.c (pushdecl): Back out Chip's last change.
4922         * decl.c (grok_op_properties): operators cannot be static members.
4924         * cp-tree.h (DECL_SYNTHESIZED): DECL_SOURCE_LINE == 0
4925         (SET_DECL_SYNTHESIZED): DECL_SOURCE_LINE = 0
4926         * lex.c (cons_up_default_function): Use SET_DECL_SYNTHESIZED.
4928         * method.c (do_inline_function_hair): Don't put friends of local
4929         classes into global scope, either.
4931         * typeck2.c (build_functional_cast): Don't look for a function call
4932         interpretation.
4934 Thu Apr 28 15:19:46 1994  Mike Stump  <mrs@cygnus.com>
4936         * cp-tree.h: disable use of backend EH.
4938 Wed Apr 27 21:01:24 1994  Doug Evans  (dje@canuck.cygnus.com)
4940         * Make-lang.in (c++.distdir): mkdir tmp/cp first.
4941         * Makefile.in (INCLUDES): Move definition to same place as
4942         parent makefile.
4943         (ALLOCA): Define.
4944         (OLDAR_FLAGS): Delete.
4945         (OLDCC): Define.
4946         (DIR): Delete.
4947         (CLIB): Define.
4948         (####site): Delete.
4949         (SUBDIR_USE_ALLOCA): Don't use ALLOCA if compiling with gcc.
4951 Wed Apr 27 19:10:04 1994  Kung Hsu  (kung@mexican.cygnus.com)
4953         * decl.c (xref_tag): not to use strstr(), it's not available on
4954         all platforms.
4956 Wed Apr 27 18:10:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
4958         * class.c (finish_struct): Resolve yet another class/pmf confusion.
4960         * call.c (build_overload_call_real): Don't take the single-function
4961         shortcut if we're dealing with an overloaded operator.
4963 Wed Apr 27 17:35:37 1994  Mike Stump  <mrs@cygnus.com>
4965         * search.c (get_base_distance): Search the virtual base class
4966         binfos, incase someone wants to convert to a real virtual base
4967         class.
4968         * search.c (expand_indirect_vtbls_init): Use convert_pointer_to_real
4969         instead of convert_pointer_to, as it now will work.
4971 Wed Apr 27 15:36:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
4973         * cvt.c (convert_to_reference): Don't complain about casting away
4974         const and volatile.
4976         * typeck.c (build_unary_op): References are too lvalues.
4978 Wed Apr 27 13:58:05 1994  Mike Stump  <mrs@cygnus.com>
4980         * class.c (override_one_vtable): We have to prepare_fresh_vtable
4981         before we modify it, not after, also, we cannot reuse an old vtable,
4982         once we commit to a new vtable.  Implement ambiguous overrides in
4983         virtual bases as abstract.  Hack until we make the class
4984         ill-formed.
4986 Wed Apr 27 01:17:08 1994  Jason Merrill  (jason@deneb.cygnus.com)
4988         * parse.y (unary_expr): Expand new_placement[opt] and
4989         new_initializer[opt] inline.
4991         * search.c (lookup_fnfields): Don't throw away the inheritance
4992         information here, either.
4993         (compute_access): Handle static members properly.
4995         * init.c (build_member_call): Always set basetype_path, and pass it
4996         to lookup_fnfields.
4998         * search.c (lookup_field): Deal properly with the case where
4999         xbasetype is a chain of binfos; don't throw away the inheritance
5000         information.
5001         (compute_access): protected_ok always starts out at 0.
5003         * init.c (resolve_offset_ref): Don't cast `this' to the base type
5004         until we've got our basetype_path.
5006         * cp-tree.h (IS_OVERLOAD_TYPE): aggregate or enum.
5008         * cvt.c (build_up_reference): Use build_pointer_type rather than
5009         TYPE_POINTER_TO.
5011         * call.c (convert_harshness_ansi): Call type_promotes_to for reals
5012         as well.
5014         * cvt.c (type_promotes_to): Retain const and volatile, add
5015         float->double promotion.
5017         * decl.c (grokdeclarator): Don't bash references to arrays into
5018         references to pointers in function parms.  Use type_promotes_to.
5020 Tue Apr 26 23:44:36 1994  Mike Stump  <mrs@cygnus.com>
5022         Finish off Apr 19th work.
5024         * class.c (finish_struct_bits): Rename has_abstract_virtuals to
5025         might_have_abstract_virtuals.
5026         * class.c (strictly_overrides, override_one_vtable,
5027         merge_overrides): New routines to handle virtual base overrides.
5028         * class.c (finish_struct): Call merge_overrides to handle overrides
5029         in virtual bases.
5031 Tue Apr 26 12:45:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
5033         * typeck.c (build_function_call): Call build_function_call_real with
5034         LOOKUP_NORMAL.
5036         * *: Don't deal with TYPE_EXPRs.
5038         * tree.c (lvalue_p): If the type of the expression is a reference,
5039         it's an lvalue.
5041         * cvt.c (convert_to_reference): Complain about passing const
5042         lvalues to non-const references.
5043         (convert_from_reference): Don't arbitrarily throw away const and
5044         volatile on the target type.
5046         * parse.y: Simplify and fix rules for `new'.
5048         * decl.c (grok_op_properties): operator void is illegal.
5050 Mon Apr 25 02:36:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
5052         * parse.y (components): Anonymous bitfields can still have declspecs.
5054         * decl.c (pushdecl): Postpone handling of function templates like we
5055         do C functions.
5057         * search.c (expand_indirect_vtbls_init): Fix infinite loop when
5058         convert_pointer_to fails.
5060         * call.c (compute_conversion_costs_ansi): A user-defined conversion
5061         by itself is better than that UDC followed by standard conversions.
5062         Don't treat integers and reals specially.
5064         * cp-tree.h: Declare flag_ansi.
5066         * typeck.c (c_expand_return): pedwarn on return in void function
5067         even if the expression is of type void.
5068         (build_c_cast): Don't do as much checking for casts to void.
5069         (build_modify_expr): pedwarn about array assignment if this code
5070         wasn't generated by the compiler.
5072         * tree.c (lvalue_p): A comma expression is an lvalue if its second
5073         operand is.
5075         * typeck.c (default_conversion): Move code for promoting enums and
5076         ints from here.
5077         * cvt.c (type_promotes_to): To here.
5078         * call.c (convert_harshness_ansi): Use type_promotes_to.  Also fix
5079         promotion semantics for reals.
5081 Sun Apr 24 16:52:51 1994  Doug Evans  (dje@canuck.cygnus.com)
5083         * Make-lang.in (c++.install-common): Check for g++-cross.
5084         * Makefile.in: Remove Cygnus cruft.
5085         (config.status): Delete.
5086         (RTL_H): Define.
5087         (TREE_H): Use complete pathname, some native makes have minimal
5088         VPATH support.
5089         (*.o): Use complete pathname to headers in parent dir.
5090         (doc, info, dvi): Delete.
5092 Sun Apr 24 16:52:51 1994  Doug Evans  (dje@canuck.cygnus.com)
5094         * Make-lang.in (c++.install-common): Check for g++-cross.
5095         * Makefile.in: Remove Cygnus cruft.
5096         (config.status): Delete.
5097         (RTL_H): Define.
5098         (TREE_H): Use complete pathname, some native makes have minimal
5099         VPATH support.
5100         (*.o): Use complete pathname to headers in parent dir.
5101         (doc, info, dvi): Delete.
5103 Sun Apr 24 00:47:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
5105         * decl.c (pushdecl): Avoid redundant warning on redeclaring function
5106         with different return type.
5107         (decls_match): Compare return types strictly.
5109 Fri Apr 22 12:55:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
5111         * cvt.c (build_type_conversion): Do try to convert through other
5112         pointers.  This will fail if the class defines multiple pointer
5113         conversions.
5115         * error.c (dump_type_prefix): Print out pointers to arrays properly.
5116         (dump_type_suffix): Ditto.  (was 'int *[]', now 'int (*)[]')
5118         * typeck.c (build_unary_op): Disallow ++/-- on pointers to
5119         incomplete type.
5121         * decl.c (duplicate_decls): Check mismatched TREE_CODES after
5122         checking for shadowing a builtin.  If we're redeclaring a builtin
5123         function, bash the old decl to avoid an ambiguous overload.
5125         * cvt.c (convert_to_reference): Don't force arrays to decay here.
5127         * tree.c (lvalue_p): A MODIFY_EXPR is an lvalue.
5129         * decl.c (duplicate_decls): Don't assume that the decls will have
5130         types.
5132         Mon Apr 18 11:35:32 1994  Chip Salzenberg  (chip@fin.uucp)
5134         [ cp/* changes propagated from c-* changes in 940318 snapshot ]
5135         * c-decl.c (pushdecl): Warn if type mismatch with another external decl
5136         in a global scope.
5138         Fri Apr 22 06:38:56 1994  Chip Salzenberg  (chip@fin.uucp)
5140         * cp/typeck2.c (signature_error): Use cp_error for "%T".
5142         Mon Apr 18 11:59:59 1994  Chip Salzenberg  (chip@fin.uucp)
5144         [ cp/* changes propagated from c-* changes in 940415 snapshot ]
5145         * cp/decl.c (duplicate_decls, pushdecl, builtin_function):
5146         Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE.
5148         Mon Apr 18 11:55:18 1994  Chip Salzenberg  (chip@fin.uucp)
5150         [ cp/* changes propagated from c-* changes in 940409 snapshot ]
5151         * cp/decl.c (duplicate_decls): Put new type in same obstack as
5152         old ones, or permanent if old ones in different obstacks.
5154         Mon Apr 18 11:48:49 1994  Chip Salzenberg  (chip@fin.uucp)
5156         [ cp/* changes propagated from c-* changes in 940401 snapshot ]
5157         * cp/parse.y (attrib): Handle string args as expressions,
5158         merging the two rules.  `mode' attribute now takes a string arg.
5159         Delete the rule for an identifier as arg.
5161         Mon Apr 18 11:24:00 1994  Chip Salzenberg  (chip@fin.uucp)
5163         [ cp/* changes propagated from c-* changes in 940312 snapshot ]
5164         * cp/typeck.c (pointer_int_sum): Multiplication should be done signed.
5165         (pointer_diff): Likewise the division.
5167         Sun Mar  6 19:43:39 1994  Chip Salzenberg  (chip@fin.uucp)
5169         [ cp/* changes propagated from c-* changes in 940304 snapshot ]
5170         * cp/decl.c (finish_decl): Issue warning for large objects,
5171         if requested.
5173         Sat Feb 19 22:20:32 1994  Chip Salzenberg  (chip@fin.uucp)
5175         [ cp/* changes propagated from c-* changes in 940218 snapshot ]
5176         * cp/parse.y (attrib): Handle attribute ((section ("string"))).
5177         * cp/decl.c (duplicate_decls): Merge section name into new decl.
5179         Tue Feb  8 09:49:17 1994  Chip Salzenberg  (chip@fin.uucp)
5181         [ cp/* changes propagated from c-* changes in 940206 snapshot ]
5182         * cp/typeck.c (signed_or_unsigned_type): Check for any
5183         INTEGRAL_TYPE_P not just INTEGER_TYPE.
5185         Mon Dec  6 13:35:31 1993  Norbert Kiesel  (norbert@i3.INformatik.rwth-aachen.DE)
5187         * cp/decl.c (finish_enum): Start from 0 when determining precision
5188         for short enums.
5190         Fri Dec  3 17:07:58 1993  Ralph Campbell  (ralphc@pyramid.COM)
5192         * cp/parse.y (unary_expr): Look at $1 for tree_code rather than
5193         casting $$.
5195         Wed Nov 17 19:22:09 1993  Chip Salzenberg  (chip@fin.uucp)
5197         * cp/typeck.c (build_binary_op_nodefault): Propagate code
5198         from C front-end to optimize unsigned short division.
5199         (build_conditional_expr): Fix bug in "1 ? 42 : (void *) 8".
5201         Wed Nov 17 19:17:18 1993  Chip Salzenberg  (chip@fin.uucp)
5203         * cp/call.c (convert_harshness_ansi): Given an (e.g.) char
5204         constant, prefer 'const char &' to 'int'.
5206         Wed Feb  3 13:11:48 1993  Chip Salzenberg  (chip@fin.uucp)
5208         * cp/class.c (finish_struct_methods):  Handle multiple
5209         constructors in fn_fields list.
5211 Fri Apr 22 12:48:10 1994  Kung Hsu  (kung@mexican.cygnus.com)
5213         * class.c (finish_struct): use TYPE_DECL_SUPPRESS_DEBUG to flag
5214         types not to be dumped in stabs, like types in #pragma interface.
5215         * decl.c (init_decl_processing): use TYPE_DECL_SUPPRESS_DEBUG to
5216         mark unknown type.
5218 Fri Apr 22 03:27:26 1994  Doug Evans  (dje@cygnus.com)
5220         * Language directory reorganization.
5221         See parent makefile.
5223 Thu Apr 21 18:27:57 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5225         * cp-tree.h (THUNK_DELTA):  It is normally negative, so
5226         use signed .i variant of frame_size rather than unsigned .u.
5227         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
5228         use "VT" rather than "vt" due to binary incompatibility.
5229         * class.c (get_vtable_name):  Use strlen of VTABLE_NAME_FORMAT,
5230         rather than sizeof, since it is now an expression.
5231         * class.c (modify_one_vtable):  Modify to skip initial element
5232         containing a count of the vtable.
5234 Thu Apr 21 00:09:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
5236         * lex.c (check_newline): Force interface_unknown on main input file.
5238         * pt.c (do_pending_expansions): Always emit functions that have been
5239         explicitly instantiated.
5240         (do_function_instantiation): Set DECL_EXPLICITLY_INSTANTIATED.
5241         (do_type_instantiation): Set CLASSTYPE_VTABLE_NEEDS_WRITING and
5242         DECL_EXPLICITLY_INSTANTIATED on all my methods.
5243         * parse.y (explicit_instantiation): Call do_type_instantiation for
5244         types.
5245         * decl2.c (finish_vtable_vardecl): Call import_export_vtable.
5246         * decl.c (start_function): Don't set DECL_EXTERNAL on a function
5247         that has been explicitly instantiated.
5248         * cp-tree.h (DECL_EXPLICITLY_INSTANTIATED): Alias for
5249         DECL_LANG_FLAG_4.
5250         * class.c: Move import_export_vtable to decl2.c, and comment out all
5251         uses.
5253 Wed Apr 20 16:51:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
5255         * lex.c (process_next_inline): Don't muck with DECL_INLINE.
5256         (do_pending_inlines): Ditto.
5258 Tue Apr 19 22:25:41 1994  Mike Stump  <mrs@cygnus.com>
5260         Reimplement vtable building, and most vtable pointer setting.
5261         Allows for earier maintenance, easier understandability, and most
5262         importantly, correct semantics.
5264         * class.c (build_vtable): Removed unneeded
5265         SET_BINFO_VTABLE_PATH_MARKED.
5266         * class.c (prepare_fresh_vtable): Ditto.  Added argument.
5267         * class.c (modify_vtable_entry): General cleanup.
5268         * class.c (related_vslot, is_normal, modify_other_vtable_entries,
5269         modify_vtable_entries): Removed.
5270         * class.c (add_virtual_function): General cleanup.
5271         * class.c (finish_base_struct): Setup BINFO_VTABLE and
5272         BINFO_VIRTUALS as early as we can, so that modify_all_vtables can
5273         work.
5274         * class.c (finish_vtbls): New routine, mostly from
5275         unmark_finished_struct.
5276         * class.c (overrides): New routine.
5277         * class.c (modify_one_vtable): New routine, mostly from
5278         modify_other_vtable_entries and modify_vtable_entries.
5279         * class.c (modify_all_direct_vtables, modify_all_indirect_vtables,
5280         modify_all_vtables): New routines.
5281         * class.c (finish_struct): Added arguemnt to prepare_fresh_vtable
5282         call.  General cleanup on how pending_hard_virtuals are handled.
5283         General cleanup on modifying vtables.  Use finish_vtbls, instead of
5284         unmark_finished_struct.
5285         * cp-tree.h (init_vtbl_ptrs, expand_direct_vtbls_init,
5286         get_first_matching_virtual, get_matching_virtual,
5287         expand_vbase_vtables_init,  expand_indirect_vtbls_init): Update.
5288         * cvt.c (convert_pointer_to_real): cleanup error message.
5289         * decl.c (grokfndecl): General cleanup.
5290         * decl.c (finish_function): Change init_vtbl_ptrs call to
5291         expand_direct_vtbls_init.  Change expand_vbase_vtables_init call to
5292         expand_indirect_vtbls_init.
5293         * init.c (expand_virtual_init): Remove unneeded argument.
5294         * init.c (init_vtbl_ptrs): Rename to expand_direct_vtbls_init, added
5295         two arguments to make more general.  Made more general.  Now can be
5296         used for vtable pointer initialization from virtual bases.
5297         * init.c (emit_base_init): Change expand_vbase_vtables_init call to
5298         expand_indirect_vtbls_init.  Change init_vtbl_ptrs call to
5299         expand_direct_vtbls_init.
5300         * init.c (expand_virtual_init): General cleanup.
5301         * init.c (expand_default_init): Change expand_vbase_vtables_init
5302         call to expand_indirect_vtbls_init.
5303         * init.c (expand_recursive_init_1): Change expand_vbase_vtables_init
5304         call to expand_indirect_vtbls_init.
5305         * init.c (expand_recursive_init): Change expand_vbase_vtables_init
5306         call to expand_indirect_vtbls_init.
5307         * search.c (get_first_matching_virtual): Rename to
5308         get_matching_virtual.  General cleanup and remove setting of
5309         DECL_CONTEXT.  That is now done in a cleaner way in
5310         modify_vtable_entry and add_virtual_function.
5311         * search.c (expand_vbase_vtables_init): Rename to
5312         expand_indirect_vtbls_init.  General cleanup.  Use
5313         expand_direct_vtbls_init to do hard work.  Ensures that _all_ vtable
5314         pointers from virtual bases are set up.
5315         * search.c (bfs_unmark_finished_struct, unmark_finished_struct):
5316         Removed.
5318         * *.[chy]: Remove support for VTABLE_USES_MASK.
5320 Tue Apr 19 12:51:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
5322         * cvt.c (convert_to_reference): Use NOP_EXPRs to switch between
5323         reference and pointer types instead of bashing the types directly.
5325         * call.c (build_overload_call_real): Use the TREE_CODE to determine
5326         whether the function is overloaded or not, rather than
5327         TREE_OVERLOADED.
5328         * *: Remove all uses of TREE_OVERLOADED.
5330         * decl.c (grokdeclarator): Only complain about initializing const
5331         fields when -ansi or -pedantic.
5333 Tue Apr 19 12:42:42 1994  Doug Evans  (dje@canuck.cygnus.com)
5335         * cp-tree.h (THUNK_DELTA): frame_size is now a union.
5337 Mon Apr 18 00:17:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
5339         Do overloading on a block-by-block basis, not function-by-function.
5340         * decl.c: Lose overloads_to_forget.
5341         (struct binding_level): Add overloads_shadowed field.
5342         (poplevel): Restore overloads_shadowed.
5343         (push_overloaded_decl): Use overloads_shadowed instead of
5344         overloads_to_forget.
5345         (finish_function): Don't look at overloads_to_forget.
5347         Copy enum_overflow logic from c-decl.c.
5348         * decl.c (start_enum): Initialize enum_overflow.
5349         (build_enumerator): Use enum_overflow.  Also use current_scope().
5351         * search.c (current_scope): Move Brendan's comment from
5352         build_enumerator here.
5354         * typeck.c (convert_for_assignment): Change warnings to pedwarns for
5355         discarding const/volatile.
5357 Sat Apr 16 01:18:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
5359         * typeck.c (comp_target_parms): Accept TEMPLATE_TYPE_PARMs on the rhs.
5360         (comp_target_types): Ditto.
5362         * decl.c (lookup_name): Don't unset got_scope here.
5364         * spew.c (yylex): Only replace yylval with the TYPE_NESTED_NAME if
5365         got_scope != NULL_TREE.
5367 Fri Apr 15 16:36:33 1994  Jason Merrill  (jason@deneb.cygnus.com)
5369         Horrible kludge to prevent templates from being instantiated by
5370         their base classes.
5371         * parse.y (template_instantiate_once): Unset TYPE_BEING_DEFINED
5372         before we get to left_curly.
5373         * pt.c (instantiate_class_template): Set TYPE_BEING_DEFINED.
5375         * error.c (dump_decl): If it's a typedef, print out the name of the
5376         decl, not just the underlying type.
5378         * decl.c (pushdecl): If the old duplicate decl was a TYPE_DECL,
5379         update the IDENTIFIER_TYPE_VALUE of its name.
5381         * decl2.c (finish_file): When processing the initializer for a
5382         static member, pretend that the dummy function is a member of the
5383         same class.
5385 Fri Apr 15 15:56:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
5387         * class.c (build_vtable_entry): revert Apr 4 change.
5388         * decl2.c (mark_vtable_entries): replace pure virtual function
5389         decl with abort's.
5391 Fri Apr 15 13:49:33 1994  Jason Merrill  (jason@deneb.cygnus.com)
5393         * typeck.c (build_conditional_expr): Pedwarn on pointer/integer
5394         mismatch, and don't pedwarn on 0/function pointer mismatch.
5396         * typeck2.c (digest_init): Lose code for special handling of unions.
5397         (process_init_constructor): Since they're handled just fine here.
5398         Pedwarn on excess elements.
5400         * decl2.c (grokfield): Complain about local class method declaration
5401         without definition.
5403 Fri Apr 15 13:19:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5405         * method.c (emit_thunk):  Add extern declaration for
5406         current_call_is_indirect (needed for hppa).
5408 Thu Apr 14 16:12:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
5410         Improve local class support; allow classes in different blocks to
5411         have the same name.
5412         * decl.c (pushtag): Support local classes better.
5413         (pushdecl_nonclass_level): New function for pushing mangled decls of
5414         nested types into the appropriate scope.
5415         (xref_defn_tag): Use pushdecl_nonclass_level instead of
5416         pushdecl_top_level. 
5417         (grokfndecl): Don't mess with IDENTIFIER_GLOBAL_VALUE for local
5418         class methods.
5419         * method.c (do_inline_function_hair): Ditto.
5421         * class.c (finish_struct): It is legal for a class with no
5422         constructors to have nonstatic const and reference members.
5424 Thu Apr 14 07:15:11 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5426         * decl.c (push_overloaded_decl): Avoid giving errors about
5427         built-ins, since duplicate_decls will have given warnings/errors
5428         for them.
5430 Thu Apr 14 03:45:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
5432         * cvt.c (convert_to_reference): Warn about casting pointer type to
5433         reference type when this is probably not what they wanted.
5435 Wed Apr 13 13:12:35 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5437         * decl.c (finish_decl):  Don't mindlessly set TREE_USED for
5438         static consts any more (toplev.c has now been modified to
5439         not emit warnings if they are unused).
5441 Wed Apr 13 00:22:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
5443         * decl.c (grok_op_properties): If op new/delete get here with
5444         METHOD_TYPEs, do a revert_static_member_fn.
5446         * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Lose.
5447         * init.c (is_aggr_typedef): Don't look at
5448         IDENTIFIER_CLASS_TYPE_VALUE.
5449         (get_aggr_from_typedef): Ditto.
5450         (get_type_value): Ditto.
5451         * call.c (build_scoped_method_call): Don't rely on overloaded
5452         template names having IDENTIFIER_CLASS_VALUE set.
5454         * parse.y (component_decl_1, fn.def2): Revert rules for
5455         constructors.
5456         (component_decl_1, fn.def2): Use $1 instead of $$, since $$ is being
5457         clobbered.
5459         * decl.c (start_function): Only warn about `void main()' if pedantic
5460         || warn_return_type.
5462 Tue Apr 12 02:14:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
5464         Clean up overloading of the template name.
5465         * class.c (pushclass): overload the template name whenever pushing
5466         into the scope of a template class, not just if it is
5467         uninstantiated.
5468         (popclass): Correspondingly.
5469         * search.c (push_class_decls): Don't overload_template_name.
5470         * pt.c (overload_template_name): Don't set IDENTIFIER_LOCAL_VALUE or
5471         DECL_CONTEXT on things.
5472         * parse.y (left_curly): Don't overload_template_name.
5473         * class.c (finish_struct): Don't undo_template_name_overload.
5475         * method.c (build_opfncall): Only pass one argument to global op
5476         delete.
5478         * call.c (build_method_call): Use TYPE_VEC_DELETE_TAKES_SIZE to
5479         decide how many arguments to use for vec delete.
5481         * decl.c (grok_op_properties): Be consistent in modifying
5482         current_class_type.
5483         (grokdeclarator): Only complain about function decls with no return
5484         type if we're being pedantic.
5486 Mon Apr 11 00:10:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
5488         Add support for operator new [] and operator delete [].
5490         * tree.def: Add VEC_NEW_EXPR and VEC_DELETE_EXPR.
5491         * ptree.c (print_lang_type): Indicate vec new/delete.
5492         * parse.y: Support vec new/delete.
5493         * method.c (build_decl_overload): Deal with vec new/delete.
5494         (build_opfncall): Ditto.
5495         * lex.c (init_lex): Set up values of ansi_opname and opname_tab for
5496         vec new/delete.  vec new uses "__vn", and vec delete uses "__vd".
5497         * init.c (init_init_processing): Set up BIVN and BIVD.
5498         (do_friend): Don't clean up after mistaken setting of TREE_GETS_NEW,
5499         since it doesn't happen any more.
5500         (build_new): Support vec new.  Always call something.
5501         (build_x_delete): Support vec delete.
5502         (build_vec_delete): Lose dtor_dummy argument, add use_global_delete,
5503         and pass it to build_x_delete.
5504         * decl2.c (delete_sanity): Don't change behavior by whether or not
5505         the type has a destructor.  Pass use_global_delete to
5506         build_vec_delete.
5507         (coerce_delete_type): Make sure that the type returned has a first
5508         argument of ptr_type_node.
5509         * decl.c (init_decl_processing): Also declare the global vec
5510         new/delete.
5511         (grokdeclarator): Also force vec new/delete to be static.
5512         (grok_op_properties): Note presence of vec new/delete, and play with
5513         their args.  If vec delete takes the optional size_t argument, set
5514         TYPE_VEC_DELETE_TAKES_SIZE.
5515         * cp-tree.h (TYPE_GETS_{REG,VEC}_DELETE): New macros to simplify
5516         checking for one delete or the other.
5517         (lang_type): gets_new and gets_delete are now two bits long.  The
5518         low bit is for the non-array version.  Lose gets_placed_new.
5519         (TYPE_VEC_DELETE_TAKES_SIZE): New macro indicating that the vec
5520         delete defined by this class wants to know how much space it is
5521         deleting.
5522         (TYPE_VEC_NEW_USES_COOKIE): New macro to indicate when vec new must
5523         add a header containing the number of elements in the vector; i.e.
5524         when the elements need to be destroyed or vec delete wants to know
5525         the size.
5526         * class.c (finish_struct_methods): Also check for overloading vec
5527         delete.
5528         * call.c (build_method_call): Also delete second argument for vec
5529         delete.
5531         * decl.c (grokdeclarator): Correct complaints again.
5532         (grokdeclarator): Fix segfault on null declarator.
5533         (decls_match): Also accept redeclaration with no arguments if both
5534         declarations were in C context.  Bash TREE_TYPE (newdecl) here.
5535         (duplicate_decls): Instead of here.
5537         * parse.y (nested_name_specifier_1): Lose rules for dealing with
5538         syntax errors nicely, since they break parsing of 'const i;'.
5540         * decl.c (lookup_name): if (got_scope == current_class_type)
5541         val = IDENTIFIER_CLASS_VALUE (name).
5543         * search.c (lookup_nested_tag): Look in enclosing classes, too.
5545         * spew.c (yylex): Only look one character ahead when checking for a
5546         SCOPE.
5548         * lex.c (check_newline): Read first nonwhite char before
5549         incrementing lineno.
5551         * decl.c (grokdeclarator): Don't claim that typedefs are variables
5552         in warning.
5554         * parse.y: Divide up uses of unqualified_id into
5555         notype_unqualified_id and unqualified_id, so that TYPENAME can be
5556         used as an identifier after an object.
5558         * class.c (push_nested_class): Don't push into non-class scope.
5560         * decl.c (grokdeclarator): If an identifier could be a type
5561         conversion operator, but has no associated type, it's not a type
5562         conversion operator.
5564         * pt.c (unify): Check for equality of constants better.
5566         * decl.c (grokdeclarator): Don't complain about access decls.
5568 Sun Apr 10 02:39:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
5570         * decl.c (grokdeclarator): pedwarn about data definitions without
5571         types here.
5573         * parse.y (datadef): Don't pedwarn about decls without types here,
5574         since that is valid for functions.
5575         (fn.def2, component_decl): Support constructors with declmods again.
5576         (nomods_initdecls): For decls without any mods, so that we don't try
5577         to get declspecs from some arbitrary $0.
5579         * search.c (lookup_field): Use cp_error.
5581         * parse.y (nested_name_specifier_1): Don't check aggr/non-aggr type
5582         here; it breaks destructors for non-aggr types.
5584         * decl.c (lookup_name): Only look for TYPE_DECLs in base classes of
5585         a type being defined, like the comment says.
5586         If got_scope is not an aggregate, just return NULL_TREE.
5588         * pt.c (create_nested_upt): Kung's code for creating types nested
5589         within uninstantiated templates now lives here (it used to live in
5590         hack_more_ids).  It needs to be expanded.
5592         * parse.y: Stop calling see_typename so much.
5594         * decl.c (lookup_name): Deal with TTPs and UPTs.
5596         * lex.c (real_yylex): Don't set looking_for_typename just because we
5597         saw a 'new'.
5598         (dont_see_typename): #if 0 out.
5600         * spew.c (yylex): Increment looking_for_typename if the next
5601         character is SCOPE, rather than setting it to 1; this way, the value
5602         from seeing an aggr specifier will not be lost.  This kinda relies
5603         on looking_for_typename never being < 0, which is now true.
5605         * parse.y (nested_name_specifier_1): Accept TEMPLATE_TYPE_PARMs,
5606         too.
5607         (named_class_head_sans_basetype): Accept template types, too.  Oops.
5609 Fri Apr  8 16:39:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
5611         * decl2.c (reparse_decl_as_expr1): Handle SCOPE_REFs.
5613         * parse.y: Lose START_DECLARATOR.
5615         * search.c (lookup_nested_tag): New function to scan CLASSTYPE_TAGS
5616         for a class.
5618         * parse.y: Simplify fn.def2 and component_decl.  Support 'enum
5619         A::foo' syntax.  Catch invalid scopes better.
5621         * parse.y, lex.c: lose TYPENAME_COLON.
5623         * decl2.c (groktypefield): #if 0 out.
5625         * decl.c (lookup_name): If the type denoted by got_scope is
5626         currently being defined, look in CLASSTYPE_TAGS rather than FIELDS.
5628         * class.c (push_nested_class): Don't try to push into
5629         error_mark_node.
5631 Fri Apr  8 07:26:36 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5633         * Makefile.in (stamp-parse): Update count of conflicts to 33.
5635 Thu Apr  7 17:47:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
5637         A saner implementation of nested types that treats template types
5638         no differently from non-template types.  There are still some
5639         shortcomings of our system; most notably, it is difficult to look
5640         for a nested type that is hidden by another name, because of the way
5641         we keep track of hidden types.  But this shouldn't be a problem for
5642         just about anyone.  Perhaps lookup_field should be fixed up a bit.
5644         * spew.c: Moved handling of nested types/scoping from the lexer
5645         into the parser.  Removed variable template_type_seen_before_scope.
5646         Removed functions frob_identifier, hack_more_ids, and various cruft
5647         that was #if 0'd out in the past, reducing the size of the file from
5648         1146 lines to 450 lines.  We can't quite do away with spew.c yet,
5649         though; we still need it for do_aggr () and checking for SCOPE after
5650         the current identifier.  And setting lastiddecl.
5652         * parse.y: Moved handling of nested types/scoping from the lexer
5653         into the parser, using a new global variable `got_scope'.  Reduced
5654         the number of states by 53.  Implemented all uses of explicit global
5655         scope.  Removed terminals SCOPED_TYPENAME and SCOPED_NAME.  Removed
5656         nonterminals tmpl.1, scoped_base_class, id_scope, typename_scope,
5657         scoped_typename.  Added nonterminals nested_type,
5658         qualified_type_name, complete_type_name, qualified_id, ptr_to_mem,
5659         nested_name_specifier, global_scope, overqualified_id, type_name.
5660         Changed many others.  Added 9 new reduce/reduce conflicts, which are
5661         nested type parallels of 9 that were already in the grammar for
5662         non-nested types.  Eight of the now 33 conflicts should be removed
5663         in the process of resolving the late binding between variable and
5664         function decls.
5666         * gxxint.texi (Parser): Update.
5668         * cp-tree.h (IS_AGGR_TYPE_CODE): Add UNINSTANTIATED_P_TYPE.
5670         * lex.h: Add decl for got_scope.
5672         * lex.c (see_typename): Claim to be the lexer when calling
5673         lookup_name.
5675         * decl.c (lookup_name): When called from the lexer, look at
5676         got_scope and looking_at_typename; otherwise don't.
5678 Thu Apr  7 22:05:47 1994  Mike Stump  <mrs@cygnus.com>
5680         31th Cygnus<->FSF merge.
5682 Thu Apr  7 17:47:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
5684         * decl2.c (mark_vtable_entries): Call this to mark all the
5685         entries in the vtable addressable.
5686         (finish_decl_parsing): Handle SCOPE_REFs.
5688         * decl.c (decls_match): Always call compparms with strict == 1.
5689         Handle the special case of C function redecl here.
5690         (duplicate_decls): Only keep the old type if the new decl takes no
5691         arguments.
5693         * typeck.c (compparms): Also allow t1 to be ... if strict == 0.
5695 Thu Apr  7 16:17:50 1994  Mike Stump  <mrs@cygnus.com>
5697         * class.c (build_vtable_entry): Fix breakage introduced Apr 5
5698         17:48:41.
5700 Wed Apr  6 16:05:10 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5702         * init.c (build_virtual_init), search.c (build_vbase_vtables_init),
5703         ch-tree.h:  Every place these functions were called, the result was
5704         immediately passed to expand_expr_stmt.  Reduce redundancy by
5705         calling expand_expr_init *inside* these functions.  These
5706         makes for a simpler interface, and we don't have to build
5707         compound expressions.  Hence, rename these function to:
5708         expand_virtual_init and expand_vbase_vtables_init respectively.
5709         * init.c, decl.c:  Change callers of these functions.
5710         * init.c, cp-tree.h (expand_virtual_init):  Make static.
5712         * decl2.c (finish_file): Check TREE_PUBLIC||TREE_ADDRESSABLE
5713         rather than DECL_SAVED_INSNS before emitting inlines.
5715 Wed Apr  6 13:06:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
5717         * spew.c (init_spew): #if 0 out stuff used by arbitrate_lookup.
5719         * decl.c (duplicate_decls): If this is a new declaration of an
5720         extern "C" function, keep the type (for the argtypes).
5721         (redeclaration_error_message): Don't check DECL_LANGUAGE here.
5722         (decls_match): Call compparms with a value of strict dependent on
5723         the value of strict_prototypes for DECL_LANGUAGE (oldecl).
5725         * typeck.c (compparms): ... is only equivalent to non-promoting
5726         parms if we're not being strict.
5728         * parse.y (empty_parms): Don't check flag_ansi || pedantic here.
5730         * decl.c (init_decl_processing): if (flag_ansi || pedantic)
5731         strict_prototypes_lang_c = strict_prototypes_lang_cplusplus;
5733         * decl2.c (grok_function_init): Don't set DECL_INITIAL on pure
5734         virtuals.
5736 Tue Apr  5 17:48:41 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5738         Support for implementing vtables with thunks.
5739         * tree.def (THUNK_DECL):  New TREE_CODE.
5740         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY), tree.c
5741         (fnaddr_from_vtable_entry):  Handle flag_vtable_thunks case.
5742         * cp-tree.h (memptr_type):  New variable.
5743         * class.c (build_vtable_entry):  Build thunk if necessary.
5744         * class.c (build_vfn_ref):  If using thunks, don't need
5745         to add delta field from vtable (there is none!).
5746         * decl.c: Add memptr_type as well as vtable_entry_type.
5747         If using thunks, the latter is just ptr_type_node.
5748         * gc.c, typeck.c:  Use memptr_typeChange, not vtable_entry_type.
5749         * decl2.c (finish_vtable_vardecl):  Handle thunks.
5750         * expr.c (cplus_expand_expr):  Support THUNK_DECL.
5752         * decl.c (grokdeclarator):  Set DECL_THIS_EXTERN if "extern".
5753         * decl.c (start_function):  Set current_extern_inline based on
5754         DECL_THIS_EXTERN, not TREE_PUBLIC.
5755         * decl.c (finish_function):  Call mark_inline_for_output if needed,
5757         Improve intelligence about when to emit inlines.
5758         * cp-tree.h (lang_decl_flags):  New field saved_inline.
5759         * cp-tree.h (DECL_SAVED_INLINE):  New macro.
5760         * class.c (add_virtual_function):  Don't set TREE_ADDRESSABLE.
5761         * decl.h, decl.c (pending_addressable_inlines):  Removed.
5762         * decl2.c (pending_addressable_inlines):  Renamed to saved_inlines.
5763         * decl2.c (mark_inline_for_output):  Do nothing if
5764         DECL_SAVED_INLINE;  otherwise set it (and add to saved_inlines list).
5765         * decl2.c (finish_vtable_vardecl):  SET_CLASSTYPE_INTERFACE_KNOWN
5766         and set CLASSTYPE_INTERFACE_ONLY if there is a non-inline virtual.
5767         * decl2.c (finish_file):  Writing out inlines later, so we can
5768         also handle the ones needed for vtbales.
5769         * decl2.c (write_vtable_entries, finish_vtable_typedecl):  Removed.
5771         * cp-tree.h, class.c, decl2.c, search.c:  Remove -fvtable-hack
5772         and flag_vtable_hack.   Use -fvtable-thunks and flag_vtable_thunks
5773         instead.  (The rationale is that these optimizations both break binary
5774         compatibility, but should become the default in a future release.)
5776 Wed Apr  6 10:53:56 1994  Mike Stump  <mrs@cygnus.com>
5778         * class.c (modify_vtable_entries): Never reset the DECL_CONTEXT
5779         of a fndecl, as we might not be from that vfield.
5781 Tue Apr  5 17:43:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
5783         * class.c (add_virtual_function): fix bug for pure virtual, so
5784         that DECL_VINDEX of the dummy decl copied won't be error.
5785         (see also Apr 4 change)
5787 Tue Apr  5 17:23:45 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5789         * typeck.c (c_expand_return):  Before checking that we're not
5790         returning the address of a local, make sure it's a VAR_DECL.
5791         (And don't worry about it being a TREE_LIST.)
5793 Tue Apr  5 13:26:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
5795         * parse.y (YYDEBUG): Always define.
5796         * lex.c (YYDEBUG): Ditto.
5798 Mon Apr  4 11:28:17 1994  Kung Hsu  (kung@mexican.cygnus.com)
5800         * class.c (finish_struct): backup out the change below, put the
5801         new change for the same purpose. The change below breaks code.
5803         * class.c (finish_struct): if pure virtual, copy node and make
5804         RTL point to abort, then put in virtual table.
5805         * decl2.c (grok_function_iit): reinstate Mar 31 change.
5807 Sat Apr  2 03:12:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
5809         * init.c (build_new): pedwarn about newing const and volatile
5810         types.
5812         * tree.c (get_identifier_list): Only do the special handling
5813         thing if we're dealing with the main variant of the record type.
5815         * cvt.c (convert_to_reference): When converting between
5816         compatible reference types, use the pointer conversion machinery.
5817         Don't just blindly overwrite the old type.
5819 Fri Apr  1 17:14:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
5821         * call.c (build_method_call): When looking at global functions,
5822         be sure to use instance_ptr for the first argument, not some version
5823         of it that has been cast to a base class.  Also do this before
5824         comparing candidates.
5826 Thu Mar 31 19:50:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
5828         * call.c (build_method_call): Constructors can be called for
5829         const objects.
5831 Thu Mar 31 16:20:16 1994  Kung Hsu  (kung@mexican.cygnus.com)
5833         * decl2.c (grok_func_init): do not abort as rtl for pur virtual
5834         fucntions. They can be defined somewhere else.
5836 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
5838         * decl.c (init_decl_processing): Declare __builtin_return_address
5839         and __builtin_frame_address for C++ as well.
5841 Thu Mar 31 12:35:49 1994  Mike Stump  <mrs@cygnus.com>
5843         * typeck2.c (store_init_value): Integral constant variables are
5844         always constant, even when doing -fpic.
5846 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
5848         * decl.c (redeclaration_error_message): Pass the types to
5849         comptypes.
5851 Wed Mar 30 21:29:25 1994  Mike Stump  <mrs@cygnus.com>
5853         Cures incorrect errors about pure virtuals in a class, when they
5854         have been overridden in a derived class.
5856         * search.c (get_abstract_virtuals): Reimplement.
5857         * search.c (get_abstract_virtuals_1): New routine.
5859 Wed Mar 30 14:10:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
5861         * pt.c (push_template_decls): Make the pushed level pseudo
5862         global.
5864         * parse.y (extdefs): Don't pop everything if the current binding
5865         level is pseudo_global.
5867         * decl.c (pop_everything): Stop on reaching a pseudo-global
5868         binding level.
5870         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Change to more reliable test.
5872         * decl.c (duplicate_decls): Only copy DECL_SOURCE_{FILE_LINE} if
5873         the old decl actually had an initializer.
5875         * {various}: Clean up gcc -W complaints.
5877         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Currently defined to be
5878         (DECL_CONTEXT (NODE) != NULL_TREE).
5880         * parse.y (lang_extdef): Call pop_everything if necessary.
5882         * decl.c (pop_everything): New function for popping binding
5883         levels left over after a syntax error.
5884         (pushdecl): Use DECL_FUNCTION_MEMBER_P to decide whether or not
5885         a function is a member.
5887 Wed Mar 30 14:20:50 1994  Mike Stump  <mrs@cygnus.com>
5889         Cures calling a more base base class function, when a more derived
5890         base class member should be called in some MI situations.
5892         * search.c (make_binfo): Use more the more specialized base
5893         binfos from the binfo given as the second argument to make_binfo,
5894         instead of the unspecialized ones from the TYPE_BINFO.
5895         * class.c (finish_base_struct): Ditto, update callers.
5896         * search.c (dfs_get_vbase_types): Ditto.
5897         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
5898         * decl.c (xref_tag): Use NULL_TREE instead of 0.
5899         * lex.c (make_lang_type): Ditto.
5901 Wed Mar 30 14:10:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
5903         * decl.c (pushdecl): If pushing a C-linkage function, only do a
5904         push_overloaded_decl.
5905         (duplicate_decls): Standard overloading does not shadow built-ins.
5907 Tue Mar 29 00:54:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
5909         * pt.c (end_template_decl): Don't call push_overloaded_decl.
5911         * init.c (do_friend): Don't call push_overloaded_decl.
5913         * decl.c (pushdecl): Call push_overloaded_decl for functions and
5914         function templates.
5915         (duplicate_decls): functions and function templates are not
5916         duplicates, but don't complain about calling this function to
5917         compare them.
5918         (push_overloaded_decl): Don't deal with linkage.  Call
5919         duplicate_decls.
5920         (redeclaration_error_message): Deal with linkage.
5922         * decl.c (start_function): If push_overloaded_decl returns an
5923         older version of the function, deal with it.
5925         * decl.c (start_function): Be sure only to push_overloaded_decl
5926         for non-members.
5928         * decl.c (grokfndecl): Put back clearing of DECL_CHAIN for
5929         methods.
5930         (start_function): Lose broken and redundant code for checking old
5931         decl.
5933         * init.c (add_friend): Give line numbers of both friend decls
5934         when warning about re-friending.
5936         * pt.c (tsubst): Use comptypes rather than == to compare the
5937         types of the method as declared and as defined, since default
5938         parameters may be different.
5940         * call.c (build_method_call): Use brendan's candidate printing
5941         routine.
5943         * decl.c (start_method): Methods defined in the class body are
5944         inline whether or not it's a template class.
5946 Mon Mar 28 16:39:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
5948         * parse.y (initdcl0): Add "extern" to current_declspecs if
5949         have_extern_spec && ! used_extern_spcec.
5951         * tree.c (really_overloaded_fn): A fn with more than one
5952         overload.
5954         * pt.c (end_template_decl): Use really_overloaded_fn.
5956         * decl.c (duplicate_decls): When smashing a decl into a previous
5957         definition, keep the old file and line.
5958         Don't deal with overloaded functions.
5959         Lose old code for checking arg types of functions.
5960         Check for overloaded C functions.
5961         (pushdecl): Deal with overloaded functions.
5962         (start_decl): Expect pushdecl to return an appropriate function decl.
5963         (start_function): Ditto.
5964         (push_overloaded_decl): Don't check for overloaded C functions.
5966         * *.c: Stop using DECL_OVERLOADED, it being archaic.
5967         TREE_OVERLOADED should probably go, too.
5969 Mon Mar 28 14:00:45 1994  Ron Guilmette  (rfg@netcom.com)
5971         * typeck.c (comp_target_types): Call comp_target_parms with
5972         strict == 1.
5974 Sun Mar 27 00:07:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
5976         * parse.y (empty_parms): Don't parse () as (...) in extern "C"
5977         sections if we're compiling with -ansi or -pedantic.
5979         * decl.c (decls_match): Don't treat (int) and (int&) as matching.
5981         * decl2.c (grokfield): Don't pedwarn twice about initializing
5982         field.
5984         * decl.c (push_overloaded_decl): Warn about shadowing
5985         constructor.
5986         (redeclaration_error_message): Don't allow 'int a; int a;'
5988         * cvt.c (build_up_reference): Only check for valid upcast if
5989         LOOKUP_PROTECT is set, not just any flag.
5991 Fri Mar 25 01:22:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
5993         * lex.c (check_newline): When we see a #pragma implementation,
5994         also set it for the main input file.
5996         * init.c (build_new): Convert array size argument to size_t.
5998         * parse.y (primary): If we're doing a parenthesized type-id, call
5999         groktypename before passing it to build_new.
6001         * call.c (build_method_call): Deal properly with const and
6002         volatile for instances of reference type.
6004         * decl.c (store_return_init): Change 'if (pedantic) error' to 'if
6005         (pedantic) pedwarn'.
6007         * decl.c (grokdeclarator): Don't complain about putting `static'
6008         and `inline' on template function decls.
6010 Thu Mar 24 23:18:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
6012         * call.c (build_method_call): Preserve const & volatile on
6013         `this'.
6015 Thu Mar 24 16:21:52 1994  Mike Stump  <mrs@cygnus.com>
6017         * init.c (build_new, build_vec_delete): Use global new and delete
6018         for arrays. 
6019         * decl2.c (delete_sanity): Ditto.
6021 Thu Mar 24 02:10:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
6023         * cvt.c (convert_to_reference): If i is an lvalue,
6024         (int &)i -> *(int*)&i, as per 5.2.8p9 of the latest WP.
6025         (convert_force): Call convert_to_reference with LOOKUP_COMPLAIN.
6027 Wed Mar 23 17:45:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
6029         * decl.c (duplicate_decls): Also propagate DECL_TEMPLATE_MEMBERS
6030         and DECL_TEMPLATE_INSTANTIATIONS.
6032         * init.c (build_new): Handle array typedefs properly.
6034 Wed Mar 23 18:23:33 1994  Mike Stump  <mrs@cygnus.com>
6036         30th Cygnus<->FSF merge.
6038 Wed Mar 23 00:46:24 1994  Mike Stump  <mrs@cygnus.com>
6040         * class.c (modify_vtable_entries): Avoid running off the end of the
6041         virtuals list when processing a virtual destructor.
6042         * class.c (get_vtable_entry): Ditto.
6044 Wed Mar 23 00:23:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6046         * decl.c (duplicate_decls): If two template decls don't match,
6047         just return 0.
6049 Tue Mar 22 23:49:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
6051         * typeck.c (convert_for_assignment): Don't pedwarn about
6052         converting function pointer to void *.
6054 Tue Mar 22 22:23:19 1994  Mike Stump  <mrs@cygnus.com>
6056         Major revamp of pointer to member functions.  Cures major
6057         nonfunctionality when used in casts, and MI situations.
6059         * cvt.c (convert_force): Update call site of build_ptrmemfunc.
6060         * typeck.c (convert_for_assignment): Ditto.
6061         * typeck2.c (digest_init): Ditto.
6062         * typeck2.c (process_init_constructor): Simplify by moving code into
6063         digest_init.
6064         * typeck2.c (digest_init): Do default_conversions on init value, if
6065         we are processing pointer to member functions.
6066         * class.c (get_vfield_offset): Now non-static.  Convert bit offset
6067         into byte offset.
6068         * cp-tree.h (get_vfield_offset): Ditto.
6069         * typeck.c (get_member_function_from_ptrfunc): Convert down to right
6070         instance, before fetching vtable pointer.
6071         * typeck.c (get_delta_difference): New routine.
6072         * typeck.c (build_ptrmemfunc): Revamp to handle casting better, also
6073         get vtable pointer out of right subobject.
6075 Tue Mar 22 17:56:48 1994  Mike Stump  <mrs@cygnus.com>
6077         * search.c (get_binfo): Return NULL instead of aborting, when
6078         passed a UNION_TYPE.
6080 Tue Mar 22 12:44:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
6082         These patches implement handling of redefinition/redeclaration of
6083         templates.
6085         * typeck.c (comptypes): Simplify.  All TEMPLATE_TYPE_PARMs are
6086         considered compatible.
6088         * parse.y (template_def): Pass defn argument to end_template_decl.
6090         * pt.c (end_template_decl): Add defn argument.  Check for
6091         redefinition.  Simplify.
6093         * error.c (OB_UNPUT): New macro, to remove mistakes.
6094         (aggr_variety): Subroutine of dump_aggr_type.
6096         * decl.c (decls_match): Support templates.
6097         (duplicate_decls): No longer static.  Don't try to lay out template
6098         decls.
6099         (pushdecl): Simplify.
6101         * cp-tree.h (DECL_TEMPLATE_MEMBERS): Use DECL_SIZE instead of
6102         DECL_INITIAL.
6104 Mon Mar 21 11:46:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
6106         * error.c (dump_decl): Support class template decls.
6107         (dump_type): Don't adorn template type parms.
6109         * decl.c (duplicate_decls): Save DECL_TEMPLATE_INFO from old decl
6110         if it was a definition.
6111         (redeclaration_error_message): Do the cp_error thang, and reject
6112         redefinition of templates.
6114 Mon Mar 21 19:36:06 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6116         * decl.c (grokdeclarator):  Set TREE_PUBLIC for METHOD_TYPE
6117         in FIELD context, when appropriate.  Also,
6118         CLASSTYPE_INTERFACE_ONLY is irrelevant to setting TREE_PUBLIC.
6119         Also, simplify check for bogus return specifiers.
6121 Mon Mar 21 11:46:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
6123         * parse.y (after_type_declarator1): Expand type_quals.
6124         (notype_declarator1): Ditto.
6125         (absdcl1): Ditto.
6127 Sat Mar 19 01:05:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
6129         * decl.c (grokdeclarator): Treat class-local typedefs like static
6130         members; i.e. 'typedef int f();' means that f is a function type,
6131         not a method type.
6133         * parse.y (decl): Change direct_* back to *.
6134         (type_id): Change direct_abstract_declarator to absdcl.
6135         (direct_declarator, direct_initdecls, direct_initdcl0): Remove again.
6137 Fri Mar 18 12:47:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6139         These two patches fix crashes on instantiating a template inside a
6140         function with C linkage or containing labels.
6142         * class.c (current_lang_stacksize): No longer static.
6144         * decl.c (struct saved_scope): Add lang_base, lang_stack,
6145         lang_name, lang_stacksize, and named_labels.
6146         (push_to_top_level): Save them.
6147         (pop_from_top_level): Restore them.
6149         * gxxint.texi (Parser): Update.
6151         These two patches finish moving the task of expr/declarator
6152         ambiguity resolution from the lexer to the parser, and add one more
6153         r/r conflict.  START_DECLARATOR can now be nuked.
6155         * parse.y (decl): Add "direct_" in typespec X rules.
6156         (direct_declarator): New nonterminal for
6157         direct_after_type_declarator and direct_notype_declarator.
6158         (direct_initdecls): Like initdecls, but uses direct_initdcl0.
6159         (direct_initdcl0): Like initdcl0, but uses direct_declarator.
6160         (named_parm): Add typespec direct_declarator rule.
6162         * spew.c (yylex): #if 0 out START_DECLARATOR insertion.
6164         These two patches disable some excessive cleverness on the part of
6165         g++; a non-class declaration always hides a class declaration in the
6166         same scope, and g++ was trying to unhide it depending on the
6167         enclosing expression.
6169         * spew.c (arbitrate_lookup): #if 0 out.
6171         * decl.c (lookup_name): Never call arbitrate_lookup.
6173         * parse.y (complex_notype_declarator1): Add '*'
6174         complex_notype_declarator1 and '&' complex_notype_declarator1 rules.
6176         * parse.y (complex_direct_notype_declarator): Restore id_scope
6177         see_typename TYPENAME rule, remove all other rules beginning with
6178         those tokens.
6179         (notype_unqualified_id): Add '~' see_typename IDENTIFIER rule.
6181 Thu Mar 17 17:30:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
6183         These changes fix the compiler's handling of the functional cast/
6184         object declaration ambiguities in section 6.8 of the ARM.  They also
6185         add 11 reduce/reduce conflicts.  Sigh.
6187         * parse.y: Add precedence decls for OPERATOR and '~'.
6188         (notype_unqualified_id): New nonterminal, encompasses all of the
6189         ANSI unqualified-id nonterminal except TYPENAMEs.
6190         (expr_or_declarator): New nonterminal to delay parsing of code like
6191         `int (*a)'.
6192         (primary): Use notype_unqualified_id.
6193         (decl): Add typespec initdecls ';' and typespec declarator ';'
6194         rules.
6195         (initdcl0): Deal with the above.
6196         (complex_notype_declarator1): A notype_declarator that is not also
6197         an expr_or_declarator.
6198         (complex_direct_notype_declarator): A direct_notype_declarator that
6199         doesn't conflict with expr_or_declarator.  Use
6200         notype_unqualified_id.  Remove id_scope see_typename TYPENAME rule.
6201         (functional_cast): New nonterminal, for the three functional cast
6202         rules.  So that they can be moved after
6203         complex_direct_notype_declarator.
6204         (see_typename): Don't accept type_quals any more.
6206         * decl2.c (reparse_decl_as_expr): New function to deal with parse
6207         nodes for code like `int (*a)++;'.      
6208         (reparse_decl_as_expr1): Recursive subroutine of the above.
6209         (finish_decl_parsing): New function to deal with parse nodes for
6210         code like `int (*a);'.  See the difference?
6212 Thu Mar 17 12:16:10 1994  Mike Stump  <mrs@cygnus.com>
6214         These changes break binary compatibility in code with classes
6215         that use virtual bases.
6217         * search.c (dfs_get_vbase_types): Simplify and correct to make
6218         sure virtual bases are initialized in dfs ordering.
6219         * search.c (get_vbase_types): Simplify and make readable.
6221 Thu Mar 17 12:01:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
6223         * parse.y: s/ typename / type_id /g
6225 Wed Mar 16 17:42:52 1994  Kung Hsu  (kung@mexican.cygnus.com)
6227         * parse.y (typespec): add SCOPE TYPENAME for global scoped 
6228         type. e.g. ::B x.
6230         * decl.c (complete_array_type): fix a bug that in -pendantic
6231         mode even there's no initializer, it will continue to build
6232         default index.
6234 Wed Mar 16 17:43:07 1994  Jason Merrill  (jason@deneb.cygnus.com)
6236         * parse.y (direct_notype_declarator): Add PTYPENAME rule, remove
6237         all of the scoped PTYPENAME rules.
6239 Wed Mar 16 16:39:02 1994  Mike Stump  <mrs@cygnus.com>
6241         * init.c (build_offset_ref): The value of A::typedef_name is
6242         always the TYPE_DECL, and never an error.
6244 Tue Mar 15 20:02:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
6246         * search.c (get_base_distance_recursive): Two binfos can only
6247         represent the same object if they are both via_virtual.
6249         * class.c (finish_base_struct): Check vbases for ambiguity, too.
6251         * search.c (get_vbase_types): Accept binfo argument, too.
6253 Tue Mar 15 19:22:05 1994  Kung Hsu  (kung@mexican.cygnus.com)
6255         * decl.c (complete_array_type): complete TYPE_DOMAIN of the 
6256         initializer also, because back-end requires it.
6258 Tue Mar 15 15:33:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
6260         * error.c (dump_expr): Support member functions (which show up as
6261         OFFSET_REFs).
6263 Mon Mar 14 16:24:36 1994  Mike Stump  <mrs@cygnus.com>
6265         * init.c (build_new): Set the return type of multidimensional
6266         news correctly.
6268 Fri Mar 11 15:35:39 1994  Kung Hsu  (kung@mexican.cygnus.com)
6270         * call.c (build_method_call): if basetype not equal to type
6271         of the instance, use the type of the instance in building
6272         destructor.
6274 Thu Mar 10 17:07:10 1994  Kung Hsu  (kung@mexican.cygnus.com)
6276         * parse.y (direct_notype_declarator): add push_nested_type for
6277         'template_type SCOPED_NAME' rule.
6279 Tue Mar  8 00:19:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
6281         * parse.y (parm): Add typed_declspec1 {absdcl, epsilon} rules.
6283 Sat Mar  5 04:47:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
6285         * parse.y (regcast_or_absdcl): New nonterminal to implement late
6286         reduction of constructs like `int ((int)(int)(int))'.
6287         (cast_expr): Use it.
6288         (sub_cast_expr): Everything that can come after a cast.
6289         (typed_declspecs1): typed_declspecs that are not typed_typespecs.
6290         (direct_after_type_declarator): Lose PAREN_STAR_PAREN rule.
6291         (direct_abstract_declarator): Replace '(' parmlist ')' rule with
6292         '(' complex_parmlist ')' and regcast_or_absdcl.
6293         (parmlist): Split
6294         (complex_parmlist): Parmlists that are not also typenames.
6295         (parms_comma): Enabler.
6296         (named_parm): A parm that is not also a typename.  Use declarator
6297         rather than dont_see_typename abs_or_notype_decl.  Expand
6298         typed_declspecs inline.
6299         (abs_or_notype_decl): Lose.
6300         (dont_see_typename): Comment out.
6301         (bad_parm): Break out abs_or_notype_decl into two rules.
6303 Fri Mar  4 18:22:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
6305         * decl2.c (reparse_decl_as_casts): New function to change parse
6306         nodes for `(int)(int)(int)' from "function taking int and returning
6307         function taking int and returning function taking int" to "... cast
6308         to int, cast to int, cast to int".
6310         * decl2.c (reparse_decl_as_expr): Recursive function to change
6311         parse nodes for `A()()' from "function returning function returning
6312         A" to "A().operator()".
6314         * parse.y (primary): Replace `typespec LEFT_RIGHT' rule with
6315         `typespec fcast_or_absdcl' rule.
6316         (fcast_or_absdcl): New nonterminal to implement late reduction of
6317         constructs like `A()()()()'.
6318         (typename): Replace `typespec absdcl1' rule with
6319         `typespec direct_abstract_declarator' rule.
6320         (direct_abstract_declarator): Replace `LEFT_RIGHT type_quals' rule
6321         with `fcast_or_absdcl type_quals' rule.
6323 Fri Mar  4 16:18:03 1994  Mike Stump  <mrs@cygnus.com>
6325         * tree.c (lvalue_p): Improve OFFSET_REF handling, so that it
6326         matches Section 5.5.
6328 Fri Mar  4 14:01:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6330         * error.c (dump_type_prefix): Don't print basetype twice for
6331         pmfs.
6333 Fri Mar  4 13:24:33 1994  Mike Stump  <mrs@cygnus.com>
6335         * typeck.c (convert_arguments): Handle setHandler(A::handlerFn)
6336         so that it is like setHandler(&A::handlerFn).  Cures an `invalid
6337         lvalue in unary `&''.
6339 Fri Mar  4 11:15:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6341         * gxxint.texi (Copying Objects): New section discussing default
6342         op= problems with virtual inheritance.
6344         * decl2.c (grokoptypename): Just does grokdeclarator and
6345         build_typename_overload, since the parser can't call grokdeclarator
6346         directly.
6348         * method.c (build_typename_overload): Set IDENTIFIER_GLOBAL_VALUE
6349         and TREE_TYPE on generated identifiers.
6351         * decl.c (grokdeclarator): Don't deal with TYPE_EXPRs anymore.
6353         * parse.y (parm): Convert `const char *' to `__opPCc' here.
6355         * error.c (dump_decl): Say sorry rather than my_friendly_aborting
6356         if we can't figure out what to do.
6357         (dump_type*): Ditto.
6359         * typeck2.c (build_m_component_ref): 'component' is an expr, not
6360         a decl.  Also move the IS_AGGR_TYPE check after the stripping of
6361         REFERENCE_TYPE.
6363 Fri Mar  4 04:46:05 1994  Mike Stump  <mrs@cygnus.com>
6365         * call.c (build_method_call): Handle b->setHandler(A::handlerFn)
6366         so that it is like b->setHandler(&A::handlerFn).  Cures an `invalid
6367         lvalue in unary `&''.
6369 Thu Mar  3 12:38:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
6371         * parse.y: Add precedence specification for START_DECLARATOR.
6372         (type_quals): Move before primary.
6373         (typename): Move before typed_declspecs, add 'typespec absdcl1' rule.
6375         * decl2.c (grokoptypename): Lose.
6377         * decl.c (grokdeclarator): Parse TYPE_EXPRs in the initial scan,
6378         rather than waiting until later.
6380 Wed Mar  2 14:12:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
6382         * parse.y (unary_expr): Use 'typename' in 'new' rules, rather
6383         than expanding it inline.
6384         (typename): Expand empty option of (former) absdcl inline.
6385         (abs_or_notype_decl): Ditto.
6386         (absdcl): Lose empty rule.
6387         (conversion_declarator): New nonterminal for 'typename' of 'operator
6388         typename'.
6389         (operator_name): Use it instead of absdcl.
6391         * parse.y: Add precedence declarations for SCOPED_TYPENAME,
6392         TYPEOF, and SIGOF.
6393         (typed_declspecs): Accept typed_typespecs, rather than typespec
6394         directly.  Add rules with reserved_typespecquals.
6395         (reserved_declspecs): Don't accept typespecqual_reserved at the
6396         beginning of the list.  The typed_declspecs rule will deal with this
6397         omission.
6398         (declmods): Accept nonempty_type_quals, rather than TYPE_QUAL
6399         directly.
6401         * parse.y (direct_notype_declarator,
6402         direct_after_type_declarator, direct_abstract_declarator): Split up
6403         the declarator1 nonterminals to match the draft standard and avoid
6404         ambiguities.
6405         (new_type_id, new_declarator, direct_new_declarator,
6406         new_member_declarator): New nonterminals to implement the subset of
6407         'typename' allowed in new expressions.
6408         (unary_expr): Use new_type_id instead of typename.
6409         (after_type_declarator1, absdcl1): Fix semantics of member pointers.
6410         (abs_member_declarator, after_type_member_declarator): Lose.
6412         * parse.y (absdcl1): Don't require parens around
6413         abs_member_declarator.
6414         (abs_member_declarator): Lose see_typename from rules.
6415         (after_type_member_declarator): Ditto.
6417         * tree.c (get_identifier_list): New function, containing code
6418         previously duplicated in get_decl_list and list_hash_lookup_or_cons.
6419         (get_decl_list): Use it.
6420         (list_hash_lookup_or_cons): Ditto.
6422         * parse.y (typed_declspecs, declmods): It's not necessary to hash
6423         the declspecs on class_obstack, so don't.  This way typed_typespecs
6424         can reduce to typed_declspecs.
6426 Wed Mar  2 14:29:18 1994  Jason Merrill (jason@cygnus.com)
6428         * cvt.c (build_up_reference): If we aren't checking visibility,
6429         also allow base->derived conversions.
6431 Mon Feb 28 15:14:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6433         * typeck.c (build_c_cast): Remove bogus hack when converting
6434         to a reference type.
6436         * cp-tree.h (lang_decl::vbase_init_list, DECL_VBASE_INIT_LIST):
6437         Removed, not used.
6438         (lang_stype::methods, lang_decl::next_method): New fields.
6439         (CLASSTYPE_METHODS, DECL_NEXT_METHOD):  New macros.
6440         * decl.c (duplicate_decls):  Preserve DECL_NEXT_METHOD.
6442         * cp-tree.h, decl2.c (flag_vtable_hack):  New flag.
6443         * decl2.c (finish_vtable_vardecl):  If flag_vtable_hack,
6444         and  !CLASSTYPE_INTERFACE_KNOWN, try to use the presence of
6445         a non-inline virtual function to control emitting of vtables.
6446         * class.c (finish_struct):  Build CLASSTYPE_METHODS list.
6447         * search.c (build_vbase_vtables_init):  Don't assemble_external
6448         (yet) if flag_vtable_hack.
6449         * class.c (build_vfn_ref):  Ditto.
6451 Mon Feb 28 14:54:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
6453         * parse.y (component_decl): Don't include "typed_declspecs
6454         declarator ';'" speedup, since it breaks enums.
6456 Fri Feb 25 15:43:44 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6458         * class.c (finish_struct):  Minor optimization for building
6459         fn_fields list.
6461 Fri Feb 25 15:23:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
6463         * decl.c (start_function): Fix detection of function overloading.
6465 Thu Feb 24 22:26:19 1994  Mike Stump  <mrs@cygnus.com>
6467         * lex.c (check_newline): #pragma interface can take a string
6468         argument, just like #pragma implementation.  #pragma implementation
6469         checks for garbage on the line, line #pragma interface does.  Main
6470         input files do not auto implement like named files, #pragma
6471         implementation must be used explicitly.
6473 Thu Feb 24 17:09:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
6475         * parse.y (components): Handle list of one again.
6476         (notype_components): Ditto.
6477         (after_type_declarator1): Take maybe_raises out again.
6479         * gxxint.texi (Parser): Document additional r/r conflict.
6481 Wed Feb 23 14:42:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
6483         * gxxint.texi (Parser): Add node.
6485         * Makefile.in (stamp-parse): Update expected conflict count.
6487         * parse.y (various): Replace "declmods declarator" with "declmods
6488         notype_declarator".  The comment saying that "declmods declarator ';'"
6489         corresponds to "int i;" was wrong; it corresponds to "const i;".
6490         (component_decl): Add "typed_declspecs declarator ';'" rule; this
6491         *does* correspond to "int i;".  Change "declmods components" to
6492         "declmods notype_components".
6493         (components): Don't deal with a list of one anymore.
6494         (notype_components): New nonterminal, corresponds to notype_declarator.
6495         ({after_,no}type_component_decl{,0}): More new nonterminals.
6496         ({after_,no}type_declarator): Fold in START_DECLARATOR token.
6497         Eliminates four reduce/reduce conflicts.
6499         (expr): Depend on nontrivial_exprlist instead of nonnull_exprlist.
6500         (nontrivial_exprlist): New nonterminal: A list of at least two
6501         expr_no_commas's.
6502         (nonnull_exprlist): Depend on nontrival_exprlist.
6503         Eliminates four reduce/reduce conflicts.
6505         (named_class_head): Move intermediate code block into separate
6506         nonterminal so that we can stick %prec EMPTY on it.
6508         Add more %prec EMPTY's to eliminate remaining shift/reduce
6509         conflicts.
6511         (after_type_declarator): Add maybe_raises to fndecl rules.
6512         (after_type_declarator_no_typename): Remove.
6513         For correctness.
6515         Document remaining reduce/reduce conflicts.
6517 Tue Feb 22 12:10:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
6519         * search.c (get_base_distance): Only bash BINFO_INHERITANCE_CHAIN
6520         (TYPE_BINFO (type)) if we care about the path.
6522         * tree.c (lvalue_p): A COND_EXPR is an lvalue if both of the
6523         options are.
6525 Mon Feb 21 19:59:40 1994  Mike Stump  <mrs@cygnus.com>
6527         * Makefile.in (mostlyclean): lex.c is a source file, don't
6528         remove.
6530 Sat Feb 19 01:27:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
6532         * parse.y: Eliminate 20 shift/reduce conflicts.
6534 Fri Feb 18 11:49:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
6536         * pt.c (type_unification): Add subr argument; if set, it means
6537         that we are calling ourselves recursively, so a partial match is OK.
6538         (unify): Support pointers to methods and functions.
6539         (tsubst): Support method pointers.
6540         * decl.c (build_ptrmemfunc_type): No longer static, so that
6541         tsubst can get at it.
6543         * init.c (is_aggr_typedef): Pretend template type parms are
6544         aggregates.
6545         * decl2.c (build_push_scope): If cname refers to a template type
6546         parm, just grin and nod.        
6548         * call.c (build_overload_call_real): Pass subr argument to
6549         type_unification.
6550         * pt.c (do_function_instantiation): Ditto.
6551         * class.c (instantiate_type): Ditto.
6553         * search.c (get_base_distance): If BINFO is a binfo, use it and
6554         don't mess with its BINFO_INHERITANCE_CHAIN.
6556         * cvt.c (convert_to_reference): Fix temporary generation.
6557         If ambiguous, return error_mark_node.
6559         * init.c (build_new): Put back some necessary code.
6561 Thu Feb 17 15:39:47 1994  Jason Merrill  (jason@deneb.cygnus.com)
6563         * init.c (build_new): Deal with array types properly.
6565         * search.c (get_binfo): Become a shell for get_base_distance.
6566         (get_binfo_recursive): Lose.
6567         (get_base_distance_recursive): Find the path to the via_virtual base
6568         that provides the most access.
6569         (get_base_distance): Ditto.
6571         * parse.y (explicit_instantiation): Syntax is 'template class
6572         A<int>', not 'template A<int>'.
6574         * typeck.c (convert_for_initialization): Remove bogus warning.
6576         * parse.y (datadef): Revert patch of Oct 27.
6578 Thu Feb 17 15:12:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6580         * class.c (build_vfn_ref):  Cast delta field to ptrdiff_type_node,
6581         rather than integer_type_node.  Does wonders for the Alpha.
6583 Thu Feb 17 13:36:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
6585         * decl.c (build_ptrmemfunc_type): Make sure that the pmf type
6586         goes onto the same obstack as its target type.
6588 Wed Feb 16 00:34:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
6590         * cvt.c (convert_to_reference): If converting via constructor
6591         on local level, go back to build_cplus_new approach.
6593         * tree.c (build_cplus_new): If with_cleanup_p, set cleanup slot
6594         to error_mark_node to prevent expand_expr from building a cleanup
6595         for this variable.
6597         * lex.c (default_assign_ref_body): Return *this from the memcpy
6598         version, too.
6600         * decl.c (grok_reference_init): Just return if called with
6601         error_mark_node, don't worry about initializing non-const reference
6602         with temporary.
6604         * cvt.c (convert_to_reference): Do the right thing for
6605         non-aggregate reference conversions, pedwarn when generating a
6606         non-const reference to a temporary.
6608         * class.c (finish_struct): TYPE_HAS_COMPLEX_{INIT,ASSIGN}_REF and
6609         TYPE_NEEDS_CONSTRUCTING all depend on TYPE_USES_VIRTUAL_BASECLASSES
6610         again.
6612 Tue Feb 15 19:47:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
6614         * decl.c (grok_reference_init): Pawn off a lot of the work on
6615         convert_to_reference.  Generally do the right thing.
6617         * cvt.c (convert_to_reference): Conform to the initial comment;
6618         i.e. don't create temps if decl != error_mark_node.  Handle
6619         cleanups better for temps that do get created.  Don't pretend
6620         that we can use an 'A' to initialize a 'const double &' just by
6621         tacking on a NOP_EXPR.  Support LOOKUP_SPECULATIVELY.
6623         * call.c (build_method_call): Set TREE_HAS_CONSTRUCTOR on
6624         constructor calls.      
6626 Mon Feb 14 14:50:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
6628         * decl.c (grok_reference_init): Make a temporary for initializing
6629         const reference from constant expression.
6631 Mon Feb 14 11:31:31 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6633         * cp-tree.h, decl.c (set_identifier_local_value):  Deleted function.
6634         * decl.c (pushdecl):  Define decl in correct binding_level
6635         (which isn't always the inner_binding_level).
6637         * cvt.c (build_up_reference):  Don't ever call expand_aggr_init.
6638         It's ugly, and I don't think it's the right thing to do.
6640         * cp-tree.h, class.c, decl.c, decl2.c, sp/search.c: 
6641         Remove NEW_CLASS_SCOPING, assuming it is always 1.
6642         * decl.c (pop_decl_level):  Removed; manually inlined.
6644 Sun Feb 13 19:04:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
6646         * class.h (candidate): Add basetypes field.
6648         * call.c (build_method_call): Do access checking after choosing a
6649         function, not before.
6651         * Makefile.in (cvt.o, call.o, method.o): Depend on class.h.
6652         (mostlyclean): Remove ../cc1plus.
6654 Fri Feb 11 11:52:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
6656         * class.c (finish_struct): Don't allow adjusting access to a field
6657         of a base class if a local field has the same name.
6659         * error.c (dump_type_prefix): Output basetype for METHOD_TYPEs.
6661 hu Jan 13 17:55:51 EST 1994 Gnanasekaran Swaminathan (gs4t@virginia.edu)
6663             * cp-tree.h (DESTRUCTOR_NAME_P): do not confuse AUTO_TEMP names
6664             with destructor names when either NO_DOLLAR_IN_LABEL or
6665             NO_DOT_IN_LABEL are not defined.
6667             Now `template <class T, T f(T&), const T*> class A {...}' works.
6669             * pt.c (grok_template_type): substitute template parm types
6670             with actual types in complex type as well.
6671             (coerce_template_parms): update the grok_template_type ()
6672             function call.
6674         * pt.c (tsubst): Traverse method list using DECL_CHAIN.
6676         * decl.c (grok_op_properties): Allow operator++/-- to have
6677         default arguments.
6679         * typeck2.c (store_init_value): Don't abort when called to
6680         initialize a type that needs constructing with a CONSTRUCTOR.
6682         * init.c (expand_aggr_init_1, CONSTRUCTOR case): If
6683         store_init_value fails, build and expand an INIT_EXPR.  If
6684         store_init_value succeeds, call expand_decl_init.
6686 Fri Feb 11 02:49:23 1994  Mike Stump  <mrs@cygnus.com>
6688         * class.c (build_vbase_path): Use complete_type_p instead of
6689         resolves_to_fixed_type_p to determine if the virtual bases are in
6690         their right place for the type of expr.  Cures problem of thinking a
6691         virtual base class is one place, when it is in fact someplace else.
6693 Fri Feb 11 00:26:46 1994  Mike Stump  <mrs@cygnus.com>
6695         * init.c (resolve_offset_ref): Make sure we first convert to
6696         intermediate type, if given, when dealing with members off `this'.
6697         Solves an incorrrect `type `foo' is not a base type for type
6698         `multiple'' when it is infact, a base type.
6700 Thu Feb 10 21:49:35 1994  Mike Stump  <mrs@cygnus.com>
6702         * class.c (modify_other_vtable_entries): Use get_binfo, instead
6703         of binfo_value.  Solves problem with compiler giving a `base class
6704         `B' ambiguous in binfo_value (compiler error)' on complex MI
6705         herarchies, when a virtual function is first defied in a virtual
6706         base class.
6708 Thu Feb 10 17:19:32 1994  Mike Stump  <mrs@cygnus.com>
6710         * class.c (build_vbase_path): Don't complain about ambiguous
6711         intermediate conversion when converting down to a virtual base
6712         class, even if they might seem to be ambiguous.
6714 Thu Feb 10 12:18:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
6716         * typeck2.c (build_functional_cast): #if 0 out constructor
6717         inheritance code, improve error messages.
6719         * class.c (finish_base_struct): Complain about base with only
6720         non-default constructors in derived class with no constructors.
6722         * decl.c (grokdeclarator): Fix detection of virtual new/delete.
6724 Wed Feb  9 22:02:32 1994  Mike Stump  <mrs@cygnus.com>
6726         * search.c (build_mi_virtuals, add_mi_virtuals,
6727         report_ambiguous_mi_virtuals): Removed unneeded code.
6728         * class.c (finish_struct_bits): Ditto.
6730 Wed Feb  9 11:27:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
6732         * pt.c (end_template_instantiation): Push decl before
6733         pop_from_top_level.
6735         * typeck2.c (build_m_component_ref): Make sure datum is of
6736         aggregate type.
6738         * init.c (get_type_value): New function, returns
6739         IDENTIFIER_TYPE_VALUE or IDENTIFIER_CLASS_TYPE_VALUE or NULL_TREE.
6741         * call.c (build_method_call): Don't die on call to destructor for
6742         non-type.
6744         * decl.c (grokdeclarator): Complain about virtual op new and op
6745         delete, make static virtuals unvirtual instead of unstatic.
6747         * typeck.c (build_c_cast): Also call default_conversion on
6748         methods.
6750         * decl.c (grokdeclarator): Don't complain about anonymous
6751         bitfields.
6753         * parse.y (simple_stmt, for loops): Move the continue point after
6754         the cleanups.
6756         * class.c (finish_struct): Fix setting of
6757         TYPE_HAS_COMPLEX_INIT_REF.
6759 Tue Feb  8 13:21:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
6761         * init.c (build_new): Deal with `new double (1)'.
6763         * class.c (finish_struct): TYPE_HAS_COMPLEX_*_REF are supersets of
6764         TYPE_HAS_REAL_*_REF, but TYPE_HAS_COMPLEX_INIT_REF is independent of
6765         TYPE_NEEDS_CONSTRUCTING.
6767         * decl.c (duplicate_decls): Propagate access decls.
6769         * typeck2.c (process_init_constructor): Accept empty_init_node
6770         for initializing unions.
6772         * class.c, lex.c, cp-tree.h: Use
6773         TYPE_HAS_COMPLEX_ASSIGN_REF where TYPE_HAS_REAL_ASSIGN_REF was used
6774         before, use TYPE_HAS_COMPLEX_INIT_REF for TYPE_NEEDS_CONSTRUCTING in
6775         some places.
6777         * decl.c (finish_decl): Don't complain about uninitialized const
6778         if it was initialized before.
6780 Mon Feb  7 18:12:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
6782         * lex.c (default_assign_ref_body): Don't deal with vbases for
6783         now.
6785         * decl.c (finish_decl): Fix reversed logic for objects and other
6786         things that need to be constructed but have no initializer.
6788         * class.c (finish_struct): Don't set TYPE_HAS_* flags that are
6789         set by grok_op_properties or finish_decl.
6791         * decl.c: Don't warn about extern redeclared inline unless
6792         -Wextern-inline is given.
6793         * decl2.c (lang_decode_option): Ditto.
6794         * cp-tree.h: Ditto.
6796 Mon Feb  7 17:29:24 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6798         * decl.c (pushdecl_with_scope): Fix thinko.  Add forward
6799         declaration.
6801         * decl.c (pushdecl_with_scope):  New function.
6802         * decl.c (pushdecl_top_level):  Use new function.
6803         * decl.c (pushtag):  Initialize newdecl.
6804         * decl.c (pushtag):  Push new type decl into correct scope.
6806 Mon Feb  7 14:42:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
6808         * call.c, cvt.c, init.c, search.c, cp-tree.h:
6809         Eradicate LOOKUP_PROTECTED_OK.
6811 Mon Feb  7 13:57:19 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6813         * decl.c (pushtag, xref_tag), cp-tree.h:  Add extra parameter
6814          'globalize' to signify implicit declarations.
6815         * decl.c (globalize_nested_type, maybe_globalize_type):  Removed.
6816         * decl.c (set_identifier_type_value_with_scope):  New function.
6817         * decl.c (set_identifier_local_value):  Simplify.
6818         * spew.c (yylex, do_addr):  Modify to return a _DEFN if a
6819         forward declaration (followed by ';' and not preceded by 'friend').
6820         * class.c, decl.c, except.c, init.c, parse.y,
6821         pt.c, search.c: Add new argument to calls to xref_tag and
6822         pushtag.
6824 Mon Feb  7 00:22:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6826         * cp-tree.h (ACCESSIBLY_UNIQUELY_DERIVED_P): New macro, means what
6827         ACCESSIBLY_DERIVED_FROM_P meant before.
6828         (ACCESSIBLY_DERIVED_FROM_P): Now disregards ambiguity.
6830         * cvt.c (build_up_reference): Call get_binfo with PROTECT == 1.
6832         * search.c (get_base_distance_recursive): Members and friends of
6833         a class X can implicitly convert an X* to a pointer to a private or
6834         protected immediate base class of X.
6835         (get_binfo_recursive): Ditto.
6836         (get_base_distance): Ignore ambiguity if PROTECT < 0.
6837         (get_binfo): Lose multiple values of PROTECT.
6838         (compute_access): Protected is OK if the start of the
6839         search is an accessible base class of current_class_type.
6841         * method.c (build_opfncall): Do check access on operator new here.
6843         * decl.c (finish_function): Don't check access on operator new
6844         here.
6846 Sun Feb  6 14:06:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
6848         * decl.c (xref_tag): The base of a derived struct is NOT always
6849         public.  Duh.
6851         * pt.c (do_explicit_instantiation): New function, called from
6852         parser to do explicit function instantiation.
6853         (type_unification): Allow the args list to be terminated with
6854         void_list_node.
6855         (do_pending_expansions): Look at i->interface for non-member
6856         templates.
6858         * parse.y (datadef): Move explicit_instantiation here.
6859         (structsp): From here.
6860         (datadef): Complain about `int;'.
6862 Sun Feb  6 12:33:18 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6864         * pt.c (end_template_instantiation), cp-tree.h:  Remove unused
6865         second parameter, and simplify first from a TREE_LIST where
6866         we only care about its TREE_VALUE to just the value (an IDENTIFIER).
6867         * pt.c (instantiate_member_templates):  Simplify argument list
6868         from a TREE_LIST to just an IDENTIFIER.
6869         * lex.c (yyprint):  PRE_PARSED_CLASS_DECL is now just an IDENTIFIER.
6870         * parse.y (template_instantiate_once):  Simplify accordingly.
6871         * decl.c (inner_binding_level): New.  Use various places to
6872         simplify.
6874 Sun Feb  6 02:49:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
6876         * typeck2.c (build_functional_cast): int() -> int(0).
6878 Sat Feb  5 00:53:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
6880         * class.c (finish_struct): Don't do a bitwise copy for op= if the
6881         class has a virtual function table.
6883         * typeck.c (convert_for_initialization): Restore warnings about
6884         not using defined op=.  Should really be my_friendly_aborts, I
6885         s'pose.
6887 Fri Feb  4 14:21:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
6889         * class.c (finish_struct): Tidy up conditions for doing bitwise
6890         copies of objects.
6892         * decl.c (build_default_constructor): #if 0 out.
6894         * *: Eradicate TYPE_GETS_{ASSIGNMENT,ASSIGN_REF,CONST_ASSIGN_REF,
6895         CONST_INIT_REF}, TYPE_HAS_REAL_CONSTRUCTOR.
6897         * decl.c (grokdeclarator): Don't return void_type_node for
6898         friends being defined here.
6900         * init.c (perform_member_init): Only do the init if it's useful.
6902         * lex.c (default_copy_constructor_body): If we don't need to do
6903         memberwise init, just call __builtin_memcpy.
6904         (default_assign_ref_body): Ditto.
6906         * decl.c (grokdeclarator): If friendp && virtualp, friendp = 0.
6908 Fri Feb  4 13:02:56 1994  Mike Stump  <mrs@cygnus.com>
6910         * lex.c (reinit_parse_for_method, cons_up_default_function):
6911         Don't give warn_if_unknown_interface warning when it came from a
6912         system header file.
6913         * pt.c (end_template_decl, instantiate_template): Ditto.
6914         * decl.c (start_decl): Ditto.
6916 Fri Feb  4 00:41:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
6918         * decl.c (grokdeclarator): Don't try to set TYPE_WAS_ANONYMOUS on
6919         enums.
6921         * decl2.c (constructor_name_full): Use IS_AGGR_TYPE_CODE instead of
6922         IS_AGGR_TYPE, since we don't know it's a type.
6924 Thu Feb  3 11:36:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
6926         * decl.c (grokdeclarator): Don't complain about anonymous unions.
6928         * cp-tree.h (TYPE_WAS_ANONYMOUS): This struct was originally
6929         anonymous, but had a name given to it by a typedef.
6931         * decl.c (grokdeclarator): When renaming an anonymous struct, set
6932         TYPE_WAS_ANONYMOUS.
6934         * decl2.c (constructor_name_full): Use TYPE_WAS_ANONYMOUS.
6936         * cp-tree.h (DECL_UNDEFINED_FRIENDS): #if 0 out.
6938         * init.c (xref_friend): Don't set up DECL_UNDEFINED_FRIENDS.
6939         (embrace_waiting_friends): Don't use DECL_UNDEFINED_FRIENDS.
6940         
6941         * decl.c (grokdeclarator): Set TYPE_NESTED_NAME properly on nested
6942         anonymous structs that get typedef'd.
6944         * decl.c (grokdeclarator): Always return void_type_node for
6945         friends.
6947         * error.c (dump_function_decl): Don't use DECL_CLASS_CONTEXT for
6948         friends.
6949         (dump_function_decl): Don't print out default args for
6950         a function used in an expression.
6952         * decl.c (grokdeclarator): Give error on abstract declarator used
6953         in an invalid context (i.e. `void (*)();').
6955         * error.c (cp_line_of): Support _TYPE nodes.
6956         (cp_file_of): Ditto.
6958         * cvt.c (build_up_reference): Don't abort if passed a SAVE_EXPR;
6959         it can happen for the RHS of an assignment stmt where the LHS is
6960         a COND_EXPR.
6962         * init.c (expand_aggr_init_1): Deal with bracketed initializer
6963         lists properly.
6965         * class.c (finish_struct): Deal with enumerators and typedefs
6966         again.
6968 Wed Feb  2 11:30:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
6970         * class.c (finish_struct): Tidy up loop over fields.
6972         * errfn.c (cp_thing): Don't advance twice after a format.
6974         * class.c (finish_struct): Complain about needing a constructor
6975         if a member has only non-default constructors, and don't try to
6976         generate a default constructor.
6978         * decl.c (finish_decl): Also do the constructor thing if
6979         TYPE_NEEDS_CONSTRUCTING is set (for arrays).
6981         * search.c (unuse_fields): New function: mark all fields in this
6982         type unused.
6983         (dfs_unuse_fields): Helper function.
6985         * class.c (pushclass): If the new class is the same as the old
6986         class, still unuse the fields.
6987         (unuse_fields): Move to search.c.
6989         * decl.c (grok_op_properties): Add friendp argument.
6990         (grokfndecl): Pass it.
6991         (start_method): Ditto.
6993         * decl2.c (delete_sanity): Add use_global_delete parameter to catch
6994         ::delete calls.
6996         * parse.y (unary_expr): Pass new parameter to delete_sanity.
6998         * lex.c (default_copy_constructor_body): Don't choke if the union
6999         has no fields.
7000         (default_assign_ref_body): Ditto.
7002         * call.c (compute_conversion_costs_ansi): Do the right thing for
7003         ellipsis matches.
7005         * decl.c (push_to_top_level): Optimize.
7007         * decl.c (start_function): Look for the lexical scope of a friend
7008         in DECL_CLASS_CONTEXT.
7010         * init.c (do_friend): Set DECL_CLASS_CONTEXT on global friends.
7012 Tue Feb  1 15:59:24 1994  Jason Merrill  (jason@deneb.cygnus.com)
7014         * cp-tree.h (TREE_GETS_PLACED_NEW): New macro.
7016         * init.c (init_init_processing): Don't assign BIN/BID to the
7017         IDENTIFIER_GLOBAL_VALUEs of their respective operators.
7018         (build_new): Check TREE_GETS_PLACED_NEW.
7020         * decl.c (grok_op_properties): Don't set TREE_GETS_NEW for a decl of
7021         op new with placement, set TREE_GETS_PLACED_NEW.
7023         * cp-tree.h (ANON_UNION_P): New macro.  Applies to decls.
7025         * class.c (finish_struct): Don't treat anonymous unions like
7026         other aggregate members.  Do synthesize methods for unions without
7027         a name, since they may or may not be "anonymous unions".
7029         * decl2.c (grok_x_components): Wipe out memory of synthesized methods
7030         in anonymous unions.
7032         * lex.c (default_copy_constructor_body): Support unions.
7033         (default_assign_ref_body): Ditto.
7035 Mon Jan 31 12:07:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
7037         * cp-tree.h: Fix documentation of LOOKUP_GLOBAL, add prototypes.
7039         * error.c (args_as_string): New function (%A), like type_as_string
7040         except NULL_TREE -> "..."
7042         * call.c (build_overload_call_real): Fix for new overloading.
7044         * decl.c (grok_op_properties): Set all of the TYPE_OVERLOADS_* flags
7045         here.
7047         * parse.y (operator_name): Instead of here.
7049         * typeck2.c (build_functional_cast): Treat a TREE_LIST as a list
7050         of functions.
7052         * call.c (build_overload_call_real): Support LOOKUP_SPECULATIVELY.
7054         * method.c (build_opfncall): Don't need to massage return value
7055         any more, call build_overload_call with all flags.
7057         * typeck.c (build_x_binary_op): Put back speculative call to
7058         build_opfncall.
7059         (build_x_unary_op): Ditto.
7060         (build_x_conditional_expr): Ditto.
7062 Mon Jan 31 10:00:30 1994  Mike Stump  <mrs@cygnus.com>
7064         * cvt.c (build_type_conversion_1): Change call to pedwarn into
7065         warning, and conditionalize upon warn_cast_qual.
7067 Fri Jan 28 11:48:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
7069         * search.c (lookup_field): If xbasetype is a binfo, copy it to
7070         avoid clobbering its inheritance info.
7072         * call.c (build_method_call): Don't overwrite basetype_path with
7073         TYPE_BINFO (inst_ptr_basetype) if they have the same type.
7075         * search.c (compute_access): Fix handling of protected inheritance
7076         and friendship with the enclosing class.
7078         * typeck2.c (store_init_value): Allow passing of TREE_CHAIN for
7079         initialization of arbitrary variable.
7081         * typeck2.c (build_functional_cast): Only try calling a method if
7082         one exists.
7084         * decl.c (grokdeclarator): Move handling of constructor syntax
7085         initialization into first loop for generality.
7086         (parmlist_is_random): Lose.
7088         * lex.c (cons_up_default_function): Set TREE_PARMLIST on arguments
7089         to default function.
7091 Thu Jan 27 19:26:51 1994  Jason Merrill  (jason@deneb.cygnus.com)
7093         * decl.c (grokparms): Abort if we get called with something we don't
7094         expect.
7096 Thu Jan 27 17:37:25 1994  Mike Stump  <mrs@cygnus.com>
7098         * call.c (build_overload_call_real): Change argument complain to
7099         flags to match style of rest of code.  Pass it down to
7100         build_function_call_real as necessary.
7101         * call.c (build_overload_call, build_overload_call_maybe): Change
7102         argument complain to flags to match style of rest of code.
7103         * cp-tree.h (build_function_call_real): Added fourth flags
7104         argument.
7105         * cvt.c (convert_to_reference): Only give warning messages, if
7106         LOOKUP_COMPLAIN is set.
7107         * typeck.c (build_x_function_call): Change simple complain
7108         argument to build_overload_call_maybe and build_overload_call, to
7109         LOOKUP_COMPLAIN to match style of rest of code.
7110         * typeck2.c (build_functional_cast): Ditto.
7111         * typeck.c (build_function_call_real): Add flags, so that we can
7112         not complain, if we don't want to complain.  Complain about
7113         arguments, if we are complaining, otherwise don't.
7114         * typeck.c (build_function_call, build_function_call_maybe):
7115         Stick in flags argument.
7116         * typeck.c (build_x_binary_op, build_x_unary_op,
7117         build_x_conditional_expr, build_x_compound_expr): Follow style of
7118         build_x_indirect_ref, as it is more correct and more common.
7120 Thu Jan 27 14:36:20 1994  Jason Merrill  (jason@deneb.cygnus.com)
7122         * call.c (build_method_call): Don't check for being called with
7123         a pointer.
7125         * decl2.c (finish_file): Don't play with DECL_CLASS_CONTEXT for the
7126         static initializer function.
7128         * init.c (build_member_call): Use convert_force here, too.
7130         * search.c (compute_access): Only treat static members specially
7131         if they are referenced directly.
7133 Wed Jan 26 18:28:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
7135         * gxxint.texi (Access Control): New node.
7137         * search.c (current_scope): New function; returns whichever of
7138         current_class_type and current_function_decl is the most nested.
7139         (compute_access): Total overhaul to make it clearer and more
7140         correct.  Don't use the cache for now; in the only situation where
7141         it was used before, it gained nothing.  This frees up three of the
7142         DECL_LANG_FLAGs for possible other use!
7144         * cp-tree.h: #if 0 out DECL_PUBLIC & friends.
7146         * typeck.c (build_component_ref_1): Don't check DECL_PUBLIC.
7148         * call.c (build_method_call): Use convert_force to cast `this' --
7149         rely on the access checking for the method itself.
7151         * init.c (is_friend): Do the nesting thing, handle types.  I am
7152         my own friend.
7153         (is_friend_type): Become a shell for is_friend.
7154         (add_friend): Never stick in ctype.
7155         Why are the friendship functions in init.c, anyway?
7157 Wed Jan 26 17:50:00 1994  Mike Stump  <mrs@cygnus.com>
7159         * cvt.c (build_type_conversion_1): Don't conditionalize call to
7160         pedwarn upon pedantic.
7162 Wed Jan 26 17:20:46 1994  Mike Stump  <mrs@cygnus.com>
7164         * cvt.c (convert_to_reference): Add 8.4.3 checking so that one
7165         gets a warning if one tries to initialize a non-const & from a
7166         non-lvalue.
7167         * cvt.c (convert_to_reference): Use %P format for argument
7168         numbers in warnings.
7170 Wed Jan 26 14:35:06 1994  Mike Stump  <mrs@cygnus.com>
7172         * init.c (build_delete): Follow style in call.c to construct the
7173         virtual call to the desctructor, as that code is right.  Fixes a
7174         problem of the compiler saying a pointer conversion is ambiguous.
7176 Wed Jan 26 11:28:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
7178         * cp-tree.h (VTABLE_NAME_P): Change other occurrence of
7179         VTABLE_NAME_FORMAT to VTABLE_NAME.
7181         * *: s/visibility/access/g
7183 Tue Jan 25 18:39:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
7185         * typeck.c (build_modify_expr): Don't smash references if INIT_EXPR.
7187 Tue Jan 25 13:54:29 1994  Mike Stump  <mrs@cygnus.com>
7189         * init.c (build_delete): Back out Jan 17th & 18th pacthes, as
7190         they break libg++.
7192 Tue Jan 25 13:11:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
7194         * decl.c (duplicate_decls): Fix pointer arithmetic.
7196 Mon Jan 24 15:50:06 1994  Chip Salzenberg  (chip@fin.uucp)
7198             [ cp-* changes propagated from c-* changes in 940114 snapshot ]
7199             * cp-parse.y (maybe_attribute): Allow multiple __attribute__
7200             clauses on a declaration.
7202 Mon Jan 24 17:06:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
7204         * class.c (finish_struct): Do synthesize methods for anon
7205         structs, just not unions.
7207 Mon Jan 24 13:50:13 1994  Kung Hsu  (kung@mexican.cygnus.com)
7209         * decl.c (xref_tag): handle anonymous nested type.
7210         * decl.c (globalize_nested_type): add no globalize bit check.
7211         * spew.c (hack_more_ids) : templated nested decl not push top
7212         level.
7214         * parse.y : get rid of 'goto do_components'. It is much better
7215         for debugging.
7217         * decl.c (is_anon_name): get rid of the function and use the
7218         macro ANON_AGGRNAME_P.
7219         * pt.c : ditto.
7221 Fri Jan 21 14:06:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
7223         * class.c (finish_struct): Don't synthesize any methods for
7224         anonymous structs/unions.
7226         * typeck.c (build_modify_expr): Don't treat pmf's as class objects.
7228 Thu Jan 20 18:56:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
7230         * method.c (build_opfncall): Call build_indirect_ref on
7231         synthesized instance for operator delete.
7233         * pt.c (type_unification): Don't abort if called with a list of
7234         types in ARGS.
7236         * class.c (instantiate_type): Deal with function templates.
7238 Thu Jan 20 16:55:35 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
7240         * Makefile.in (CC): Default to cc not gcc.
7242 Thu Jan 20 13:47:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7244         * typeck.c (build_modify_expr): Call constructor if appropriate.
7246         * decl.c (push_to_top_level): Clear out class-level bindings cache.
7248 Wed Jan 19 13:51:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
7250         * call.c (resolve_scope_to_name): Work recursively (previously only
7251         looked down one level).
7253         * lex.c (do_pending_inlines): If we're still dealing with the last
7254         batch of inlines, don't start working on a new one.
7256         * Makefile.in (stamp-parse): Update conflict count.
7257         (TAGS): Fix.
7259         * parse.y (explicit_instantiation): New rule; implements
7260         'template A<int>' syntax (though not 'template foo(int)' yet).
7261         (structsp): Add explicit_instantiation.
7263 Tue Jan 18 13:53:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
7265         * class.c (finish_struct, etc.): Simplify decision to synthesize
7266         a destructor.
7268         * call.c, class.c, cp-tree.h, decl.c, init.c,
7269         ptree.c, search.c, typeck.c, typeck2.c: Nuke
7270         TYPE_NEEDS_CONSTRUCTOR (change all calls to TYPE_NEEDS_CONSTRUCTING).
7271         * init.c (expand_aggr_init_1): Don't try non-constructor methods
7272         of initializing objects.
7273         (build_new): Don't try other methods if the constructor lookup fails.
7275         * class.c (finish_base_struct): Set cant_have_default_ctor and
7276         cant_synth_copy_ctor properly.
7277         (finish_struct): Ditto.
7279 Mon Jan 17 13:58:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
7281         * typeck.c (build_modify_expr_1): #if 0 out again.
7282         (build_modify_expr): #if 0 out memberwise init code again.
7284         * lex.c (default_copy_constructor_body): Be const-correct.
7285         (default_assign_ref_body): Ditto.
7287         * init.c (perform_member_init): Use TYPE_HAS_CONSTRUCTOR to decide
7288         whether or not to use it, rather than TYPE_NEEDS_CONSTRUCTING.
7289         (expand_aggr_init): Disable silent conversion from initializer list
7290         to list of args for a constructor.
7292         * class.c (base_info): Lose needs_default_ctor.
7293         (finish_base_struct): Ditto.
7294         (finish_struct): Ditto.
7296         * decl.c (init_decl_processing): Don't turn off flag_default_inline
7297         just because flag_no_inline is on.
7298         (finish_decl): Use TYPE_HAS_CONSTRUCTOR to decide to use
7299         constructor.
7301         * class.c (finish_struct): Synthesize default ctor whenever
7302         allowed.
7304         * Makefile.in (TAGS): Don't try to run etags on cp-parse.y.
7306 Sat Jan 15 18:34:33 1994  Mike Stump  <mrs@cygnus.com>
7308         * Makefile.in, configure: Handle the C++ front-end in a
7309         subdirectory.
7310         * cp-*: Move C++ front-end to cp/*.
7312 Fri Jan 14 14:09:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
7314         * cp-typeck.c (build_function_call_real): Modify to match other
7315         instances of taking the address of the function.
7317         * cp-class.c (finish_struct): Set TYPE_HAS_REAL_CONSTRUCTOR to 1 if
7318         there are non-synthesized constructors.
7319         Only set TYPE_NEEDS_CONSTRUCTOR if TYPE_HAS_REAL_CONSTRUCTOR.
7320         Always generate copy constructor if possible.
7322         * cp-tree.h (lang_type): Add has_real_constructor bitfield.
7323         (TYPE_HAS_REAL_CONSTRUCTOR): Define.
7325         * cp-lex.c (default_copy_constructor_body): Use init syntax
7326         for all bases.
7328         * cp-type2.c (store_init_value): Only give error for initializer list
7329         if TYPE_HAS_REAL_CONSTRUCTOR.
7331 Thu Jan 13 15:38:29 1994  Jason Merrill  (jason@deneb.cygnus.com)
7333         * cp-tree.h (DECL_SYNTHESIZED): Add defn.
7334         (lang_decl): Add synthesized bitfield to decl_flags.
7336         * cp-lex.c (cons_up_default_function): Use DECL_SYNTHESIZED to mark
7337         artificial methods, rather than a line # of 0.
7339 Fri Jan 14 18:25:29 1994  Kung Hsu  (kung@mexican.cygnus.com)
7341         * cp-decl (xref_tag): fix a bug in conflict type.
7342         * cp-parse.y : add SCOPED_NAME for uninstantiated template nested
7343         type reference.
7344         * cp-spew.c (yylex) : generated SCOPED_NAME token.
7345         * cp-lex.c (yyprint): handle SCOPED_NAME.
7347 Fri Jan 14 17:00:29 1994  Mike Stump  <mrs@cygnus.com>
7349         * cp-decl.c (pushdecl): Revert patch from Jan 11 19:33:03, as it is
7350         not right.
7352 Thu Jan 13 14:00:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
7354         * cp-decl2.c (grok_x_components): fix a bug that enum type does not
7355         have type_flags.
7357 Thu Jan 13 11:39:34 1994  Mike Stump  <mrs@cygnus.com>
7359         Ensure that all vtable pointers are initialized with all the right
7360         values.
7362         * cp-class.c (is_normal): Changed to reflect new meaning of
7363         CLASSTYPE_VFIELD_PARENT.
7364         * cp-class.c (maybe_fixup_vptrs): Use of
7365         CLASSTYPE_NEEDS_VIRTUAL_REINIT here is misguided.  Use
7366         BINFO_MODIFIED instead.
7367         * cp-class.c (finish_struct): Changed to reflect new meaning of
7368         CLASSTYPE_VFIELD_PARENT.
7369         * cp-decl.c (get_binfo_from_vfield): Removed, unneeded now.
7370         * cp-decl.c (finish_function): Use init_vtbl_ptrs, instead of open
7371         coding it here.
7372         * cp-init.c (init_vfields): Changed name to init_vtbl_ptrs, and
7373         re-implement.
7374         * cp-init.c (emit_base_init): Use new name init_vtbl_ptrs.
7375         * cp-tree.h (vfield_parent): Changed to integer.
7376         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): Changed docs to reflect new
7377         meaning.
7378         * cp-tree.h (init_vtbl_ptrs): Added init_vtbl_ptrs.
7380 Wed Jan 12 18:24:16 1994  Kung Hsu  (kung@mexican.cygnus.com)
7382         * cp-decl.c (xref_tag): re-implement globalize nested type.
7383         * cp-decl2.c (grok_x_components): ditto.
7384         * cp-parse.y: ditto.
7385         * cp-tree.h (lang_type): add no_globalize bit in type_flags.
7387 Wed Jan 12 14:08:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
7389         * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC on friend
7390         decls with a definition attached.
7392         * cp-typeck.c (build_modify_expr): Undo previous change in the case
7393         of INIT_EXPRs.
7395 Tue Jan 11 19:33:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
7397         * cp-typeck.c (build_modify_expr): Replace code for generating
7398         assignment semantics for classes with an error.
7399         (build_modify_expr_1): #if 0 out.
7401         * cp-decl.c (pushdecl): Patch bogus design of pushdecl
7402         behavior for overloaded functions (it doesn't push anything).
7404         * cp-class.c (finish_struct): When generating default op=,
7405         set TYPE_HAS_ASSIGNMENT.
7407 Mon Jan 10 18:48:06 1994  Mike Stump  <mrs@cygnus.com>
7409         * cp-cvt.c (convert): Make {double, clashing enum} -> enum
7410         invalid.
7411         * cp-typeck.c (convert_for_assignment): Simplify.
7412         * cp-decl2.c (warn_enum_clash): Removed.
7413         * invoke.texi (-Wenum-clash): Removed.
7414         * toplev.c (-Wenum-clash): Removed.
7416 Mon Jan 10 17:48:37 1994  Kung Hsu  (kung@mexican.cygnus.com)
7418         * cp-decl.c (finish_decl): fix incorrect popclass call.
7420         * cp-decl.c (is_anon_name): new function, check whether the name
7421         is anonymous name generated by compiler.
7422         * cp-decl.c (grokdeclarator): allow nested SCOPE_REF
7423         * cp-spew.c (hack_more_ids): handle nested type in template.
7424         * cp-parse.y : handle nested type reference in uninstantiated
7425         template.
7426         * cp-call.c (build_method_call): handle uninstantiated template
7427         case.
7428         * cp-pt.c (search_nested_type_in_tmpl): new function, search nested 
7429         type in template.
7430         * cp-pt.c (lookup_nested_type_by_name): new function, lookup nested 
7431         type by name.
7432         * cp-pt.c (tsubst): handle nested type search by name.
7434 Mon Jan 10 14:32:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
7436         * cp-init.c (build_member_call): Propagate qualifiers to new type.
7438         * cp-call.c (build_method_call): Count functions the new way.
7440 Fri Jan  7 19:03:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
7442         * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for nested classes,
7443         too.
7445 Tue Jan  4 16:45:51 1994  Kung Hsu  (kung@cirdan.cygnus.com)
7447         * cp-parse.y: change to handle whether to globalize nested class.
7448         * cp-decl.c(xref_tag, maybe_globalize_type): Ditto.
7450 Mon Jan  3 22:22:32 1994  Gerald Baumgartner  (gb@cygnus.com)
7452         * Makefile.in cp-call.c cp-class.c cp-cvt.c cp-decl.c cp-decl2.c
7453         cp-error.c cp-init.c cp-lex.c cp-lex.h cp-method.c cp-parse.y
7454         cp-spew.c cp-tree.c cp-tree.h cp-type2.c cp-typeck.c cp-xref.c
7455         gplus.gperf toplev.c: Incorporated C++ signature extension.
7456         * cp-sig.c: New file, contains most of signature processing.
7457         * cp-hash.h: Regenerated from gplus.gperf.
7459         * gcc.1 g++.1: Added explanation for  the `-fhandle-signatures'
7460         and `-fno-handle-signatures' command line flags.
7462         * gcc.texi: Changed the last-modification date.
7463         * invoke.texi: Added `-fhandle-signatures' in the list of
7464         C++ language options.  Added explanation for this option.
7466 Tue Dec 28 21:10:03 1993  Mike Stump  <mrs@cygnus.com>
7468         * cp-init.c (expand_vec_init): Remove comptypes test, as it is too
7469         harsh here.
7471 Tue Dec 28 13:42:22 1993  Mike Stump  <mrs@cygnus.com>
7473         * cp-pt.c (do_pending_expansions): Decide to expand a template
7474         member function, based upon it's class type, not the class type of
7475         the first place it was declared.
7477 Tue Dec 28 05:42:31 1993  Mike Stump  <mrs@cygnus.com>
7479         * cp-class.c (is_normal): New routine, use to determine when the
7480         given binfo is the normal one.  (The one that should have the simple
7481         vtable name.)
7482         * cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME
7483         to check if two fndecls are `the same'.  Sometimes this routine can
7484         modify the main vtable, and normal should be 1, in that case, so use
7485         is_normal() to determine if this is the main vtable for the class.
7486         Don't recurse down virtual bases, as they are shared, and we take
7487         care of them elsewhere.
7488         * cp-class.c (modify_vtable_entries): If we have already updated the
7489         vtable with the new virtual, don't do it again.
7490         * cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as
7491         appropriate.  Do virtual function overriding in virtual bases, after
7492         normal overriding, so that the base function list in DECL_VINDEX is
7493         not overridden, before we have a chance to run through the list.
7494         Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'.
7495         Make sure we pass the right address into modify_vtable_entries.
7496         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which
7497         binfo is the one that has the vtable that we based our vtable on.
7499 Fri Dec 24 09:40:52 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
7501         * cp-typeck.c (c_expand_start_case): Use default_conversion to
7502         convert expression from reference type if necessary.
7504 Wed Dec 22 17:58:43 1993  Jason Merrill  (jason@deneb.cygnus.com)
7506         * cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before
7507         trying to read its TREE_VALUE.
7509         * cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here.
7510         (finish_struct): Instead of here.
7512 Tue Dec 21 14:34:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7514         * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't
7515         have TYPE_PTRMEMFUNC_P set before we try to build its
7516         CLASSTYPE_ID_AS_LIST.
7517         (get_decl_list): Likewise, when trying to read it.
7519         * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined.
7520         (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT.
7522 Mon Dec 20 13:35:03 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7524         * cp-typeck.c (rationalize_conditional_expr): New function.
7525         (unary_complex_lvalue): Use it.
7526         (build_modify_expr): Use it, since trying to do an ADDR_EXPR of it
7527         with build_unary_op won't cut it.  Don't wrap the COND_EXPR with a
7528         SAVE_EXPR either.
7530         * cp-decl2.c (explicit_warn_return_type): Deleted variable.
7531         (lang_decode_option): Set warn_return_type, not explicit_*, for
7532         -Wreturn-type and -Wall.  This is what rest_of_compilation uses to
7533         decide if it should go into jump_optimize or not.
7534         * cp-tree.h (explicit_warn_return_type): Deleted.
7535         * cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*.
7536         (finish_function): Also complain about no return in a non-void fn if
7537         we're being pedantic (don't rely on use of -Wreturn-type).
7539 Fri Dec 17 15:45:46 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7541         * cp-decl.c (grokdeclarator): Forbid declaration of a function as
7542         static if it's being done inside another function.
7544         * cp-search.c (compute_visibility): Check for friendship both ways.
7546 Fri Dec 17 14:28:25 1993  Jason Merrill  (jason@deneb.cygnus.com)
7548         * cp-cvt.c (build_default_binary_type_conversion): Make error
7549         messages more helpful.
7551         * cp-error.c (op_as_string): New function, returns "operator =="
7552         given EQ_EXPR or suchlike.
7554 Fri Dec 17 13:28:11 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7556         * cp-call.c (print_n_candidates): New function.
7557         (build_overload_call_real): Use it when we complain about a call
7558         being ambiguous.
7560 Fri Dec 17 12:41:17 1993  Jason Merrill  (jason@deneb.cygnus.com)
7562         * cp-call.c (build_method_call): Fix checking for static call
7563         context.
7565         * cp-method.c (build_opfncall): Call build_indirect_ref on argument
7566         to operator new.
7568         * cp-init.c (build_new): Don't mess with rval when building
7569         indirect ref.
7571 Thu Dec 16 16:48:05 1993  Kung Hsu  (kung@cirdan.cygnus.com)
7573         * cp-lex.c (default_assign_ref_body): add check when TYPE_NESTED_
7574         NAME(type) may not be exist. It's not a problem for old compiler.
7576 Thu Dec 16 14:46:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7578         * cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's
7579         never used for anything.
7580         (struct lang_type, member type_flags): Delete field
7581         `alters_visibility', and up `dummy' by 1.
7582         * cp-class.c (finish_base_struct): Delete code that copies the
7583         setting of CLASSTYPE_ALTERS_VISIBILITIES_P.
7584         (finish_struct): Delete code that sets it.
7586 Thu Dec 16 14:44:39 1993  Jason Merrill  (jason@deneb.cygnus.com)
7588         * cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to
7589         build_method_call that I messed up before.
7591         * cp-search.c (get_base_distance): If protect > 1, allow immediate
7592         private base.
7594         * cp-class.c (finish_base_struct): Set cant_synth_* correctly.
7595         (finish_struct): Ditto.  Well, nigh-correctly; it won't deal
7596         properly with the case where a class contains an object of an
7597         ambiguous base class which has a protected op=.  Should be fixed
7598         when the access control code gets overhauled.
7599         (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly.
7601 Thu Dec 16 12:17:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7603         * cp-lex.c (real_yylex): Turn the code back on that deals with
7604         __FUNCTION__ and __PRETTY_FUNCTION__.  Don't use lookup_name, to
7605         avoid the ambiguity problems that led to it being turned off in the
7606         first place.
7608         * cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P
7609         to see if something is a method.
7611 Wed Dec 15 18:35:58 1993  Mike Stump  <mrs@cygnus.com>
7613         * cp-typeck.c (build_modify_expr): Avoid error messages on small
7614         enum bit fields.
7615         * cp-typeck.c (convert_for_assignment): Add missing argument to
7616         cp_warning and cp_pedwarn calls.
7618 Wed Dec 15 18:25:32 1993  Jason Merrill  (jason@deneb.cygnus.com)
7620         * cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base
7621         initializers; it's just anachronistic.
7623         * cp-decl.c (finish_decl): Don't require external-linkage arrays
7624         to have a complete type at declaration time when pedantic.
7626 Tue Dec 14 11:37:23 1993  Jason Merrill  (jason@deneb.cygnus.com)
7628         * cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set.
7630         * cp-call.c (build_method_call): Don't dereference pointer given
7631         as instance.
7633         * cp-decl.c (finish_function): Don't pass pointer to
7634         build_method_call.
7635         (finish_function): Ditto.
7637         * cp-typeck.c (build_x_function_call): Ditto.
7639         * cp-method.c (build_component_type_expr): Ditto.
7641         * cp-init.c (build_member_call): Ditto.
7642         (build_new): Ditto.
7644 Mon Dec 13 18:04:33 1993  Kung Hsu  (kung@cirdan.cygnus.com)
7646         * cp-decl.c (xref_tag): fix regression created by changes made 
7647         in Dec. 7 1993.
7648         * cp-decl.c (xref_defn_tag): fix parallel nested class problem.
7650 Fri Dec 10 12:40:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7652         * cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print
7653         out the final evaluation of the function, so we can see if ELLIPSIS,
7654         USER, and EVIL were set at the end.
7656         * cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue,
7657         only go for setting TRIVIAL_CODE if we are dealing with types that
7658         are compatible.
7660 Thu Dec  9 18:27:22 1993  Mike Stump  <mrs@cygnus.com>
7662         * cp-decl.c (flag_huge_objects): New flag to allow large objects.
7663         * toplev.c (lang_options): Ditto.
7664         * cp-decl2.c (flag_huge_objects, lang_f_options): Ditto.
7665         * cp-decl.c (delta_type_node): New type for delta entries.
7666         * cp-tree.h (delta_type_node): Ditto.
7667         * cp-decl.c (init_decl_processing): Setup delta_type_node.
7668         * cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use
7669         delta_type_node instead of short_integer_type_node. 
7670         * cp-class.c (build_vtable_entry): Ditto.
7672 Thu Dec  9 16:19:05 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7674         * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of
7675         NO_{DOLLAR,DOT} macro checks, so it always gets defined.
7676         (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL.
7678 Wed Dec  8 17:38:06 1993  Mike Stump  <mrs@cygnus.com>
7680         * cp-decl.c (finish_decl): Make sure things that can go into
7681         "common", do go into common, if -fcommon is given.
7683 Wed Dec  8 13:01:54 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7685         * cp-call.c (print_harshness) [DEBUG_MATCHING]: New function.
7686         (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out
7687         argument matching diagnostics to make instantly clear what the
7688         compiler is doing.
7690         * cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue,
7691         then check to see if the penalty was increased due to
7692         signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't.
7694 Tue Dec  7 18:29:14 1993  Kung Hsu  (kung@cirdan.cygnus.com)
7696         * cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution
7697         problem.
7699 Tue Dec  7 16:09:34 1993  Jason Merrill  (jason@deneb.cygnus.com)
7701         * cp-class.c (finish_struct): Before synthesizing methods, if no
7702         methods have yet been declared then set nonprivate_method.  Don't
7703         set non_private method after synthesizing a method.
7705         * cp-lex.c (extract_interface_info): If flag_alt_external_templates
7706         is set, tie emitted code to the location of template instantiation,
7707         rather than definition.
7709         * cp-tree.h: Declare flag_alt_external_templates.
7711         * cp-decl2.c (lang_decode_option): Support -falt-external-templates.
7713         * toplev.c (lang_options): Ditto.
7715        Mon Oct  4 12:50:02 1993  Chip Salzenberg  (chip@fin.uucp)
7717         [changes propagated from 930810 snapshot]
7718         * cp-decl.c (init_decl_processing): Make long long available for use
7719         as SIZE_TYPE and PTRDIFF_TYPE.
7720         (finish_decl): Allow file-scope static incomplete array.
7721         (grokdeclarator): Don't pass on const and volatile fron function
7722         value type to function type.
7723         Warn here for volatile fn returning non-void type.
7724         * cp-parse.y (attrib): Accept attributes `volatile' with alias
7725         `noreturn', and `const'.
7726         * cp-typeck.c (default_conversion): Don't lose const and volatile.
7727         (build_binary_op_nodefault): Generate pedantic warning for comparison
7728         of complete pointer type with incomplete pointer type.
7729         (build_c_cast): Be careful that null pointer constant be INTEGER_CST.
7731 Tue Dec  7 10:46:48 1993  Jason Merrill  (jason@deneb.cygnus.com)
7733         * cp-init.c (expand_vec_init): When creating a temporary for copying
7734         arrays, use the type of the source, not the target.
7736         * cp-cvt.c (convert): Pass an argument for errtype to
7737         convert_to_reference.
7739         * cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with
7740         methods, -> and `this'.
7742 Mon Dec  6 17:12:33 1993  Jason Merrill  (jason@deneb.cygnus.com)
7744         * cp-error.c (parm_as_string): New function; returns `this' or arg
7745         number.  Corresponds to %P.
7746         (dump_expr): Deal with method calls.
7748         * cp-cvt.c (convert_to_reference): Stop using warn_for_assignment.
7749         * cp-typeck.c (convert_for_assignment): Ditto.
7750         (warn_for_assignment): Lose.
7752 Mon Dec  6 11:33:35 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7754         * cp-call.c (ideal_candidate_ansi): Delete code that was never
7755         doing anything useful.  Instead, sort once, and DO NOT wipe
7756         out any codes with EVIL_CODE, since that's what we use as a
7757         marker for the end of the list of candidates.
7759         * cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN.
7761 Mon Dec  6 12:49:17 1993  Jason Merrill  (jason@deneb.cygnus.com)
7763         * cp-init.c (get_aggr_from_typedef): New function, like
7764         is_aggr_typedef but returns the _TYPE.
7766         * cp-call.c, cp-init.c, cp-method.c: Eradicate err_name.
7768 Sun Dec  5 18:12:48 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7770         * cp-lex.c (readescape): Pedwarn when a hex escape is out of range.
7772 Thu Nov 25 23:50:19 1993  Chip Salzenberg  (chip@fin.uucp)
7774         Delay language context change until beginning of next decl.
7776         * cp-lex.h (c_header_level): Removed.
7777         (pending_lang_change): Declared.
7778         * cp-lex.c (c_header_level): Renamed from in_c_header, made static.
7779         (pending_lang_change): Defined.
7780         (check_newline): Rework code that recognizes line number and
7781         filename changes.  Instead of pushing and popping lang context,
7782         increment and decrement pending_lang_change.
7783         (do_pending_lang_change):  Push and pop lang context according
7784         to value of pending_lang_change.
7785         * cp-parse.y (extdefs): Use lang_extdef instead of extdef.
7786         (extdef): Same as extdef, but call do_pending_lang_change() first.
7788 Mon Nov 15 15:39:15 1993  Chip Salzenberg  (chip@fin.uucp)
7790         * cp-typeck.c (build_binary_op_nodefault): Warn for ordered
7791         compare of ptr with 0 only if pedantic in both cases.
7793 Thu Nov 25 13:31:37 1993  Chip Salzenberg  (chip@fin.uucp)
7795         Reinstate the below patch, which got lost in the Cygnus merge:
7796         Tue Nov 23 13:59:24 1993  Hallvard B Furuseth  (hbf@durin.uio.no)
7797         * cp-parse.y (maybe_type_qual): Don't fail to set $$.
7799 Wed Nov 17 19:03:30 1993  Chip Salzenberg  (chip@fin.uucp)
7801         * cp-parse.y (attrib): Allow "ident(ident)" like the C front end.
7803 Fri Oct 22 20:43:37 1993  Paul Eggert  (eggert@twinsun.com)
7805         * cp-lex.c (real_yylex): Diagnose floating point constants
7806         that are too large.
7808 Wed Nov 17 19:10:37 1993  Chip Salzenberg  (chip@fin.uucp)
7810         * cp-type2.c (build_functional_cast): ARM page 16: When a class
7811         and an object, function or enumerator are declared in the same
7812         scope with the same name, the class name is hidden.
7814 Wed Nov 17 19:07:18 1993  Chip Salzenberg  (chip@fin.uucp)
7816         * cp-call.c (convert_harshness_ansi): Distinguish float, double,
7817         and long double from each other when overloading.
7818         (compute_conversion_costs_{ansi,old}, build_method_call,
7819         build_overlay_call_real, convert_to_aggr): Always set and
7820         always use H_LEN member of candidate structure.
7822 Mon Oct 11 23:10:53 1993  Chip Salzenberg  (chip@fin.uucp)
7824         * cp-decl.c (duplicate_decls): Note redeclarations of library
7825         functions, and generate distinct warnings for them.
7827 Mon Oct  4 12:26:49 1993  Chip Salzenberg  (chip@fin.uucp)
7829         Support format warnings in G++.
7831         * cp-tree.h: Protect against multiple inclusion.
7832         Declare all public functions in c-common.c (copy from c-tree.h).
7833         (STDIO_PROTO): Define.
7834         (warn_format): Declare.
7835         (record_format_info): Remove declaration.
7836         * cp-decl.c (init_decl_processing): Call init_function_format_info.
7837         * cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format.
7838         * cp-typeck.c (build_function_call_real): Call check_function_format.
7839         (record_format_info): Remove -- obsolete stub.
7841 Sat Jul 24 12:04:29 1993  Chip Salzenberg  (chip@fin.uucp)
7843         * cp-decl.c (duplicate_decls): Don't warn for non-extern var decl
7844         following an extern one (for -Wredundant-decls).
7845         * cp-parse.y (primary): In statement expression case, if compstmt
7846         returns something other than a BLOCK, return it unchanged.
7848 Thu Dec  2 20:44:58 1993  Chip Salzenberg  (chip@fin.uucp)
7850         * cp-decl.c (warn_extern_redeclared_static): New function made
7851         from code extracted from pushdecl.
7852         (duplicate_decls, pushdecl): Call new function.
7853         (lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE
7854         to be a TREE_LIST when function is declared in 'extern "C" {}'.
7856 Fri Dec  3 16:01:10 1993  Jason Merrill  (jason@deneb.cygnus.com)
7858         * cp-class.c (duplicate_tag_error): Use cp_error.
7859         (finish_base_struct): Check for ambiguity with direct base, and don't
7860         generate op= or copy ctor if it exists.
7862 Fri Dec  3 15:32:34 1993  Kung Hsu  (kung@cirdan.cygnus.com)
7864         * cp-init.c (expand_member_init): when initializer name is null,
7865         don't try to build it now because emit_base_init will handle it.
7867 Fri Dec  3 12:28:59 1993  Jason Merrill  (jason@deneb.cygnus.com)
7869         * cp-lex.c (init_lex): Initialize input_filename to "<internal>" for
7870         code such as ExceptionHandler::operator=.
7872 Fri Dec  3 10:32:08 1993  Jason Merrill  (jason@deneb.cygnus.com)
7874         * cp-decl.c (grokdeclarator): Don't try to print out dname when
7875         complaining about arrays of references if decl_context==TYPENAME,
7876         since it will be null.
7878         * cp-decl2.c: Default to flag_ansi_overloading.
7880 Thu Dec  2 18:05:56 1993  Kung Hsu  (kung@cirdan.cygnus.com)
7882         * cp-call.c (build_method_call): use binfo from instance if it's
7883         different from binfo (basetype_path) passed from above.
7885 Thu Dec  2 12:48:36 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7887 Wed Nov 17 19:14:29 1993  Chip Salzenberg  (chip@fin.uucp)
7889         cp-error.c (dump_expr): Use unsigned chars to output a
7890         TREE_REAL_CST in hex.
7892 Thu Dec  2 11:05:48 1993  Jason Merrill  (jason@deneb.cygnus.com)
7894         * cp-class.c (finish_struct): Fix typo in setting
7895         cant_synth_asn_ref.
7897         * cp-tree.h (TYPE_NESTED_NAME): New macro, does
7898         DECL_NESTED_TYPENAME (TYPE_NAME (NODE)).
7900         * cp-lex.c (default_copy_constructor_body): Change
7901         DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype).
7902         (default_assign_ref_body): Ditto.
7903         (default_copy_constructor_body): Call operator= explicitly for
7904         base classes that have no constructor.
7906 Thu Dec  2 10:47:15 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
7908         * cp-call.c (build_method_call): If the instance variable is
7909         converted to error_mark_node when we're trying to convert it to the
7910         base type of a method we're looking up, return error_mark_node.
7912 Thu Dec  2 10:41:16 1993  Torbjorn Granlund  (tege@cygnus.com)
7914         * cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR
7915         cases, tests for unsigned operands by peeking inside a NOP_EXPR.
7917 Wed Dec  1 13:33:34 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7919         * cp-call.c (compute_conversion_costs_ansi): Use the size of struct
7920         harshness_code, not the size of short, for clearing out the
7921         ansi_harshness.
7923         * cp-call.c (print_candidates): New function.
7924         (build_method_call): When we had some candidates, but didn't get a
7925         usable match, don't report that we got an error with the first
7926         candidate.  Instead, say there were no matches, and list the
7927         candidates with print_candidates.  In the second pass, make sure we
7928         clear out ever_seen, so we can accurately count the number of
7929         functions that qualified.
7931 Wed Dec  1 09:53:59 1993  Torbjorn Granlund  (tege@cygnus.com)
7933         * cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR
7934         only if op1 is known to be != -1.
7935         (build_binary_op_nodefault): Handle *_DIV_EXPR likewise.
7937 Tue Nov 30 14:07:26 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7939         * cp-method.c (hack_identifier): If the field itself is private, and
7940         not from a private base class, say so.
7942 Mon Nov 29 03:00:56 1993  Jason Merrill  (jason@deneb.cygnus.com)
7944         * cp-decl.c (grokdeclarator): Always warn on initialization of
7945         const member.
7947 Wed Nov 24 00:49:35 1993  Jason Merrill  (jason@deneb.cygnus.com)
7949         * cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly.
7950         (finish_base_struct): Set cant_synth_asn_ref properly.
7952         * cp-lex.c (cons_up_default_function): Add section for operator=.
7953         (default_assign_ref_body): New function, mostly cribbed from
7954         default_copy_constructor_body.
7956         * cp-class.c (base_info): Add members cant_synth_copy_ctor,
7957         cant_synth_asn_ref, no_const_asn_ref.
7958         (finish_base_struct): Update no_const_asn_ref, note that you should
7959         update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF.
7960         (finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and
7961         initialize them properly.  Set no_const_asn_ref properly.  Set
7962         cant_synth_* in some of the situations where they should be set.
7963         Propagate TYPE_GETS_ASSIGN_REF.  Use cant_synth_copy_ctor.  Add call
7964         to cons_up_default_function for operator=.
7966 Tue Nov 23 20:24:58 1993  Mike Stump  <mrs@cygnus.com>
7968         * cp-cvt.c (convert_force): Add code to perform casting of pointer
7969         to member function types.
7970         * cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate
7971         when the conversion should be done, regardless.
7972         * cp-tree.h (build_ptrmemfunc): Ditto.
7973         * cp-type2.c (digest_init): Ditto.
7974         * cp-typeck.c (convert_for_assignment): Ditto.
7976 Tue Nov 23 18:06:58 1993  Jason Merrill  (jason@deneb.cygnus.com)
7978         * cp-error.c (dump_expr): Do the right thing for variables of
7979         reference type.
7981         * cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF
7982         and its kin properly.
7983         (xref_tag): Propagate TYPE_GETS_ASSIGN_REF.
7985 Tue Nov 23 12:26:13 1993  Mike Stump  <mrs@cygnus.com>
7987         * cp-method.c (build_opfncall): Don't count pointer to member
7988         functions as aggregates here, as we don't want to look up methods in
7989         them.  The compiler would core dump if we did, as they don't have
7990         normal names.
7991         * cp-typeck.c (build_indirect_ref): Improve wording on error
7992         message.
7994 Mon Nov 22 14:22:23 1993  Jason Merrill  (jason@deneb.cygnus.com)
7996         * cp-decl.c (grok_op_properties): Allow operator?: with pedwarn
7997         (since it's supported in other compiler bits).
7999         * cp-method.c (report_type_mismatch): Use cp_error; ignore err_name
8000         argument.
8002         * cp-error.c (dump_function_decl): Don't print return type for
8003         constructors and destructors.
8005         * cp-cvt.c (cp_convert_to_pointer): Import code from
8006         convert_to_pointer so we can return error_mark_node in the case of an
8007         error, and to allow more meaningful error messages.
8008         (build_type_conversion): Don't go through void* when trying
8009         to convert to a pointer type.
8011         * cp-decl.c (grokfndecl): Move call to grok_op_properties back
8012         after grokclassfn so that it's dealing with the right decl.
8013         (grok_op_properties): Don't assert !methodp for op new and op delete.
8015         * cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now
8016         no uses of it in the compiler).
8018         * cp-call.c (build_scoped_method_call): Fix for destructors of simple
8019         types.
8020         (build_method_call): Ditto.
8022 Fri Nov 19 12:59:38 1993  Jason Merrill  (jason@deneb.cygnus.com)
8024         * cp-tree.c (count_functions): Abstraction function.
8026         * cp-call.c (build_overload_call_real): Deal with new overloading
8027         properly, remove dead code.
8029         * gcc.c (default_compilers): Generate and use .ii files in the
8030         intermediate stage of compiling C++ source.
8032 Fri Nov 19 11:26:09 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
8034         * cp-expr.c (cplus_expand_expr): Make call_target a valid memory
8035         address before using it, so it can be later safely compared.
8037 Fri Nov 12 15:30:27 1993  Jason Merrill  (jason@deneb.cygnus.com)
8039         * cp-pt.c (tsubst): Deal with new overloading.
8041         * cp-typeck.c (fntype_p): is the arg function type?
8042         (comp_target_parms): pedwarn on conversion from (anything) to (...).
8043         (build_x_function_call): Deal with new overloading.
8045         * cp-tree.c (decl_list_length): Deal with new overloading.
8046         (decl_value_member): Like value_member, but for DECL_CHAINs.
8048         * cp-decl.c (duplicate_decls): Deal with new overloading.
8049         (start_decl): Ditto.
8051         * cp-class.c (instantiate_type): Deal with new overloading.
8053         * cp-call.c (convert_harshness_ansi): Deal with new overloading.
8054         (convert_harshness_old): Deal with new overloading.
8055         (build_overload_call_real): Ditto.
8057 Mon Nov  8 13:50:49 1993  Jason Merrill  (jason@deneb.cygnus.com)
8059         * cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL
8060         if unambiguous, NULL_TREE otherwise.
8061         (get_first_fn): Returns the first appropriate FUNCTION_DECL.
8062         (is_overloaded_fn): Returns whether or not the passed tree is
8063         a function or list of functions.
8065         * cp-init.c (init_init_processing): use `get_first_fn' to find
8066         the FUNCTION_DEFN for new and delete.
8068         * cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut
8069         code size in half (I spit on special cases).
8071 Tue Sep  7 20:03:33 1993  Jason Merrill  (jason@deneb.cygnus.com)
8073         * cp-decl.c: Allow references and template type parameters as well
8075 Local Variables:
8076 eval: (auto-fill-mode)
8077 left-margin: 8
8078 fill-column: 76
8079 End: