OSDN Git Service

303c72a1c691fd7e899354eb92c66c0ce29848e7
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 Tue Jul 29 21:17:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
2
3         * call.c (resolve_args): New fn.
4         (build_new_function_call): Use it.
5         (build_object_call): Likewise.
6         (build_new_method_call): Likewise.
7
8 Mon Jul 28 16:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
9
10         * call.c (build_over_call): tsubst all default parms from templates.
11
12 Wed Jul 23 13:36:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
13
14         * decl.c (struct cp_function): Add static_labelno.
15         (push_cp_function_context): Save it.
16         (pop_cp_function_context): Restore it.
17
18 Tue Jul 22 14:43:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
19
20         * typeck.c (build_component_ref_1): Convert from reference.
21
22 Tue Jul 22 11:06:23 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
23
24         * parse.y (current_declspecs, prefix_attributes): Initialize to
25         NULL_TREE.
26
27         * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
28         before we try to force it to be a TREE_LIST.
29         (decl): Make sure $1.t is non-nil.
30
31 Sun Jul 20 11:53:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
32
33         * pt.c (uses_template_parms): Handle template first-parse codes.
34
35         * decl.c (cp_finish_decl): Only warn about user-defined statics.
36
37 Fri Jul 18 17:56:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
38
39         * pt.c (unify): Handle BOOLEAN_TYPE.
40
41         * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
42         * pt.c (tsubst): Don't set it.
43         * call.c (build_over_call): Use uses_template_parms.
44
45 Thu Jul 17 18:06:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
46
47         * method.c (build_overload_nested_name): Use static_labelno
48         instead of var_labelno.
49         (build_qualified_name): New fn.
50         (build_overload_name): Split out from here.
51         (build_static_name): Use build_qualified_name.
52         * decl.c (cp_finish_decl): Statics in extern inline functions 
53         have comdat linkage.
54         (start_function): Initialize static_labelno.
55
56 Thu Jul 17 11:20:17 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
57
58         * class.c (finish_struct_methods): add check of warn_ctor_dtor_privacy
59         before "all member functions in class [] are private"
60
61 Wed Jul 16 23:47:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
62
63         * lex.c (do_scoped_id): convert_from_reference.
64         * init.c (build_offset_ref): Likewise.
65
66 Wed Jul 16 15:57:42 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
67
68         * parse.y (empty_parms): Only use VOID_LIST_NODE for the PARMS if
69         we're in a C++ struct/class, not if we're doing `extern "C"'.
70
71 Wed Jul 16 12:34:29 1997  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
72
73         * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
74
75 Mon Jul 14 03:23:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
76
77         * typeck.c (get_member_function_from_ptrfunc): Promote index
78         before saving it.
79
80 Sun Jul 13 00:11:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
81
82         * tree.c (layout_basetypes): Move non-virtual destructor warning.
83         * decl.c (xref_basetypes): Remove non-virtual destructor warning.
84
85 Sat Jul 12 12:47:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
86
87         * decl.c (grokdeclarator): Call add_defarg_fn for the function
88         type, too.
89         * lex.c (add_defarg_fn): Adjust.
90         (do_pending_defargs): Adjust.  Don't skip the first parm.
91
92 Fri Jul 11 01:39:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
93
94         * decl.c (build_enumerator): Global enumerators are also readonly.
95
96         * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
97         (build_dynamic_cast): Call it and convert_from_reference.
98
99         * lex.c (add_defarg_fn): New fn.
100         (snarf_defarg): Don't add to defarg_types.
101         (do_pending_defargs): Lose defarg_types.  All fns we process now
102         have defargs.
103         * decl.c (grokfndecl): Call add_defarg_fn.
104
105         * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
106         * cp-tree.def: Add DEFAULT_ARG.
107         * spew.c (yylex): Call snarf_defarg as appropriate.
108         * parse.y: New tokens DEFARG and DEFARG_MARKER.
109         (defarg_again, pending_defargs, defarg, defarg1): New rules.
110         (structsp): Use pending_defargs.
111         (parms, full_parm): Use defarg.
112         * lex.c (init_lex): Initialize inline_text_firstobj.
113         (do_pending_inlines): Never pass the obstack to feed_input.
114         (process_next_inline): Call end_input instead of restore_pending_input.
115         (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
116         finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
117         * input.c (end_input): New fn.
118         (sub_getch): At the end of some fed input, just keep returning EOF
119         until someone calls end_input.
120         Remove 'obstack' field from struct input_source.
121         * decl.c (grokparms): Handle DEFAULT_ARG.
122         (replace_defarg): New fn.
123         * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
124
125 Wed Jul  9 13:44:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
126
127         * call.c (implicit_conversion): If nothing else works, try binding
128         an rvalue to a reference.
129
130 Wed Jul  9 13:04:38 1997  Geoffrey Noer  <noer@cygnus.com>
131
132         * decl.c (init_decl_processing): fix Jun 30 patch -- move
133         ifndef for Cygwin32 to include SIGSEGV.
134
135 Thu Jul  3 01:44:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
136
137         * class.c (finish_struct_1): Only complain about pointers without
138         copy stuff if there are any constructors.
139
140         * rtti.c (build_dynamic_cast): Call complete_type on the types.
141
142         * decl.c (grokfndecl): If the function we chose doesn't actually
143         match, die.
144
145         * decl2.c (grokclassfn): Don't specify 'const int' for the
146         artificial destructor parm.
147
148         * pt.c (type_unification): If we are called recursively, nothing 
149         decays.
150
151 Mon Jun 30 17:53:21 1997  Geoffrey Noer  <noer@cygnus.com>
152
153         * decl.c (init_decl_processing): Stop trying to catch signals
154         other than SIGABRT since the Cygwin32 library doesn't support
155         them correctly yet.  This fixes a situation in which g++ causes
156         a hang on SIGSEGVs and other such signals in our Win32-hosted
157         tools.
158
159 Mon Jun 30 14:50:01 1997  Jason Merrill  <jason@yorick.cygnus.com>
160
161         * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
162
163 Fri Jun 27 15:18:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
164
165         * typeck2.c (store_init_value): Always return the value if our 
166         type needs constructing.
167
168         * method.c (hack_identifier): Convert class statics from
169         reference, too.
170
171 Thu Jun 26 11:44:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
172
173         * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
174
175 Thu Jun 19 16:49:28 1997  Mike Stump  <mrs@cygnus.com>
176
177         * typeck.c (c_expand_return): Make sure we clean up temporaries at
178         the end of return x;
179
180 Thu Jun 19 12:28:43 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
181
182         * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
183
184 Tue Jun 17 18:35:57 1997  Mike Stump  <mrs@cygnus.com>
185
186         * except.c (expand_builtin_throw): Add support
187         -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
188
189 Mon Jun 16 01:24:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
190
191         * repo.c (extract_string): Null-terminate.
192
193         * cp-tree.h (TI_SPEC_INFO): New macro.
194         (CLASSTYPE_TI_SPEC_INFO): New macro.
195         * pt.c (push_template_decl): Correctly determine # of template parms 
196         for partial specs.
197
198         * call.c (compare_ics): Really fix 'this' conversions.
199
200         * pt.c (do_decl_instantiation): Don't crash on explicit inst of
201         non-template fn.
202
203         * pt.c (push_template_decl): Complain about mismatch in # of
204         template parms between a class template and a member template.
205
206 Sun Jun 15 02:38:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
207
208         * method.c (synthesize_method): You can't call
209         function_cannot_inline_p after finish_function.
210         * decl.c (finish_function): Turn on flag_inline_functions and turn
211         off DECL_INLINE before handing a synthesized method to the
212         backend.
213
214 Thu Jun 12 17:35:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
215
216         * method.c (synthesize_method): Remove July 30 change to never set
217         DECL_INLINE if at_eof.
218
219 Thu Jun 12 15:25:08 1997  Mike Stump  <mrs@cygnus.com>
220
221         * xref.c (GNU_xref_member): Ensure that the node has a
222         decl_lang_specific part before checking DECL_FRIEND_P.
223
224 Thu Jun 12 12:36:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
225
226         * pt.c (instantiate_class_template): Diagnose non-class types used
227         as bases.
228
229 Wed Jun 11 17:33:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
230
231         * typeck.c (build_conditional_expr): Use convert_for_initialization
232         instead of convert_and_check.
233
234 Wed Jun 11 12:31:33 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
235
236         * parse.y (typespec): Don't pedwarn for typeof.
237
238 Tue Jun 10 00:22:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
239
240         * repo.c (finish_repo): Only check changes if we would write a
241         repo file.
242
243         * call.c (compare_ics): Fix handling of 'this' conversions.
244
245         * pt.c (do_decl_instantiation): Support static data too.  Rename
246         from do_function_instantiation.
247         * cp-tree.h: Adjust.
248         * parse.y: Adjust.
249
250         * repo.c (extract_string): New fn.
251         (get_base_filename): Use it.
252         (init_repo): Compare old args with current args.
253
254 Mon Jun  9 14:25:30 1997  Mike Stump  <mrs@cygnus.com>
255
256         * Makefile.in, Make-lang.in: Protect C-ls with a comment
257         character, idea from Paul Eggert <eggert@twinsun.com>.
258
259 Mon Jun  9 01:52:03 1997  Jason Merrill  <jason@yorick.cygnus.com>
260
261         * typeck.c (c_expand_return): Be more persistent in looking for
262         returned temps.
263
264         * cvt.c (build_up_reference): Use NOP_EXPR for switching from
265         pointer to reference.
266
267         * class.c (build_vbase_path): Don't do anything if PATH has no steps.
268
269 Sun Jun  8 03:07:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
270
271         * init.c (build_member_call, build_offset_ref):
272         Use do_scoped_id instead of do_identifier.
273
274         * cvt.c (convert): Remove bogosity.
275
276 Sat Jun  7 20:50:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
277
278         * cvt.c (build_up_reference): Do checks of ARGTYPE and
279         TARGET_TYPE before trying to use get_binfo.
280
281 Fri Jun  6 17:36:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
282
283         * cvt.c (build_up_reference): Call get_binfo to get access control.
284
285         * decl2.c (import_export_decl): If we don't support weaks, leave
286         statics undefined.
287
288 Fri Jun  6 15:55:49 1997  Mike Stump  <mrs@cygnus.com>
289
290         * except.c (expand_builtin_throw): Add support for machines that
291         cannot access globals after throw's epilogue when
292         -fno-sjlj-exceptions is used.
293
294 Thu Jun  5 16:28:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
295
296         * parse.y: 'std::' becomes '::'.
297         * lex.c (real_yylex): Remove 'namespace' warning.
298         * init.c (build_member_call): Ignore 'std::'.
299         (build_offset_ref): Likewise.
300         * decl2.c (do_using_directive): Ignore 'using namespace std;'.
301         (do_toplevel_using_decl): Ignore 'using std::whatever'.
302         * decl.c (push_namespace): Just sorry.
303         (pop_namespace): Nop.
304         (init_decl_processing): Declare std namespace.
305
306 Tue Jun  3 18:08:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
307
308         * search.c (push_class_decls): A name which ambiguously refers to
309         several instantiations of the same template just refers to the
310         template.
311
312 Tue Jun  3 12:30:40 1997  Benjamin Kosnik  <bkoz@cirdan.cygnus.com>
313
314         * decl.c (build_enumerator): fix problem with unsigned long
315         enumerated values being smashed to ints, causing overflow
316         when computing next enumerated value. (for enum values around
317         MAX_VAL).
318
319 Mon Jun  2 17:40:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
320
321         * typeck.c (build_component_ref): Only call mark_used on a decl.
322
323 Thu May 29 15:54:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
324
325         * typeck.c (build_c_cast): Make the check for a ptr to function
326         more specific before possible default_conversion call.
327
328 Thu May 29 13:02:06 1997  Mike Stump  <mrs@cygnus.com>
329
330         * except.c (expand_exception_blocks): Simplify and fix and make
331         sure we don't end a region in a sequence, as expand_end_bindings
332         doesn't like it.
333
334 Wed May 28 17:08:03 1997  Mike Stump  <mrs@cygnus.com>
335
336         * except.c (init_exception_processing): Mark terminate as not
337         returning so that the optimizer can optimize better.
338
339 Tue May 27 19:49:19 1997  Mike Stump  <mrs@cygnus.com>
340
341         * cvt.c (convert): Don't do any extra work, if we can avoid it
342         easily.
343
344 Tue May 27 18:21:47 1997  Mike Stump  <mrs@cygnus.com>
345
346         * *.[chy]: Change cp_convert to ocp_convert, change convert to
347         cp_convert.  convert is now reserved for the backend, and doesn't
348         have the semantics a frontend person should ever want.
349
350 Fri May 23 10:58:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
351
352         * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
353         Lose -traditional support.
354
355 Thu May 22 15:41:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
356
357         * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
358
359         * parse.y (self_reference): Do it for templates, too.
360         * class.c (pushclass): Don't overload_template_name; the alias
361         generated by build_self_reference serves the same purpose.
362
363         * tree.c (list_hash): Make static, take more args.
364         (list_hash_lookup): Likewise.
365         (list_hash_add): Make static.
366         (list_hash_canon): Lose.
367         (hash_tree_cons): Only build a new node if one isn't already in the
368         hashtable.
369         (hash_tree_chain): Use hash_tree_cons.
370         * cp-tree.h: Adjust.
371         * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
372         of calling lookup_name.
373
374 Wed May 21 18:24:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
375
376         * pt.c (instantiate_class_template): TYPE_VALUES for an enum
377         doesn't refer to the CONST_DECLs.
378
379 Tue May 20 21:09:32 1997  Bob Manson  <manson@charmed.cygnus.com>
380
381         * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
382         is bigger.
383         (expand_class_desc): Convert the last argument to a sizetype.
384
385 Tue May 20 13:55:57 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
386
387         * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
388         __real__): Add reswords.
389         * hash.h: Regenerate.
390         * lex.h (rid): Add RID_COMPLEX.
391         (RID_LAST_MODIFIER): Set to RID_COMPLEX.
392         * lex.c (init_lex): Add building of RID_COMPLEX.  Unset reserved
393         word "complex" if -fno-gnu-keywords.
394         (real_yylex): General cleanup in line with what c-lex.c also has,
395         sans the cruft for traditional; add handling of SPEC_IMAG, complex
396         types, and imaginary numeric constants.
397         * parse.y (REALPART, IMAGPART): Add tokens.
398         (unary_expr): Add REALPART and IMAGPART rules.
399         * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
400         * decl.c (complex_{integer,float,double,long}_type_node): Define
401         types.
402         (init_decl_processing): Set up the types.
403         (grokdeclarator): Add handling of RID_COMPLEX.  Set and use
404         DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
405         * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
406         * cvt.c (cp_convert): Handle COMPLEX_TYPE.
407         * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
408         COMPLEX_TYPE case.
409         * method.c (build_overload_name): Add handling of the different
410         COMPLEX_TYPEs, prefixing them with `J'.
411         * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
412         as a template parm.
413         (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
414         * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
415         (mapcar): Handle COMPLEX_CST.
416         * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
417         (common_type): Add code for complex types.
418         (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
419         (convert_for_assignment): Likewise.
420         (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
421
422 Mon May 19 12:26:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
423
424         * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
425         tsubst_expr, as it might try to do overload resolution.
426
427 Sat May 17 10:48:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
428
429         * pt.c (instantiate_class_template): Oops.
430
431 Fri May 16 14:23:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
432
433         * cp-tree.def: Add TAG_DEFN.
434         * pt.c (tsubst_enum): New fn.
435         (instantiate_class_template): Use it.
436         (tsubst_expr): Support TAG_DEFN.
437         (tsubst): Support local enums.
438         (tsubst_copy): Likewise.
439         * decl.c (finish_enum): Likewise.
440         (start_enum): If this is a local enum, switch to permanent_obstack.
441
442 Wed May 14 19:08:28 1997  Mike Stump  <mrs@cygnus.com>
443
444         * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
445         (finish_function): Put the base init code for constructors just
446         after the parm cleanup insns.
447         (struct cp_function): Add last_parm_cleanup_insn.
448         (push_cp_function_context): Likewise.
449         (pop_cp_function_context): Likewise.
450         
451 Tue May 13 15:51:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
452
453         * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
454
455 Wed May  7 11:17:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
456
457         * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
458         for THUNK_FNDECL before we switch to temporary allocation.
459
460 Mon May  5 14:46:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
461
462         * call.c (build_new_op): Handle null arg2 for ?:.
463
464 Thu May  1 18:26:37 1997  Mike Stump  <mrs@cygnus.com>
465
466         * except.c (expand_exception_blocks): Ensure that we flow through
467         the end of the exception region for the exception specification.
468         Move exception region for the exception specification in, so that
469         it doesn't protect the parm cleanup.  Remove some obsolete code.
470         * decl.c (store_parm_decls): Likewise.
471         (finish_function): Likewise.
472
473 Tue Apr 29 15:38:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
474
475         * init.c (build_new): Fix nothrow handling.
476
477 Tue Apr 29 14:29:50 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
478
479         * init.c (emit_base_init): Don't warn about the initialization
480         list for an artificial member.
481
482 Fri Apr 25 17:47:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
483
484         * expr.c (do_case): Handle !START case for the error msg.
485
486 Fri Apr 25 11:55:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
487
488         * decl2.c, lang-options.h: New option -Weffc++.
489         * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
490         to -Weffc++.
491
492         * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
493         to MULTIPLE_SYMBOL_SPACES.
494
495 Wed Apr 23 18:06:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
496
497         * method.c (emit_thunk, generic case): Set current_function_is_thunk.
498
499         * method.c (emit_thunk, macro case): Set up DECL_RESULT.
500
501         * typeck.c (c_expand_return): Don't complain about returning void
502         to void in an artificial function.
503         * method.c (make_thunk): Change settings of READONLY/VOLATILE, 
504         don't set DECL_RESULT, set DECL_ARTIFICIAL.
505         (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC. 
506
507 Wed Apr 23 14:43:06 1997  Mike Stump  <mrs@cygnus.com>
508
509         * init.c (init_decl_processing): Add supoprt for setjmp/longjmp based
510         exception handling.
511         * except.c (init_exception_processing): Likewise.
512         (expand_end_catch_block): Likewise.
513         (expand_exception_blocks): Likewise.
514         (expand_throw): Likewise.
515         * exception.cc (__default_terminate): Likewise.
516
517         * init.c (perform_member_init): Use new method of expr level
518         cleanups, instead of cleanups_this_call and friends.
519         (emit_base_init): Likewise.
520         (expand_aggr_vbase_init_1): Likewise.
521         (expand_vec_init): Likewise.
522         * decl.c (cp_finish_decl): Likewise.
523         (expand_static_init): Likewise.
524         (store_parm_decls): Likewise.
525         (cplus_expand_expr_stmt): Likewise.
526         * decl2.c (finish_file): Likewise.
527         
528         * Make-lang.in (exception.o): Ok to compile with -O now.
529
530         * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
531         we know it will be done later by the backend.
532
533         * decl2.c (lang_f_options): Remove support for short temps.
534         * lang-options.h: Likewise.
535         
536 Wed Apr 23 04:12:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
537
538         * tree.c (varargs_function_p): New fn.
539         * method.c (emit_thunk): Replace broken generic code with code to
540         generate a heavyweight thunk function.
541
542 Tue Apr 22 02:45:18 1997  Jason Merrill  <jason@yorick.cygnus.com>
543
544         * pt.c (process_template_parm): pedwarn about floating-point parms.
545
546         * decl.c (grokdeclarator): inline no longer implies static.
547
548         * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
549
550 Mon Apr 21 15:42:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
551
552         * class.c (check_for_override): The signature of an overriding
553         function is not changed.
554
555         * call.c (build_over_call): Move setting of conv into the loop.
556
557 Sun Apr 20 16:24:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
558
559         * call.c (build_user_type_conversion_1): Really ignore rvalue
560         conversions when looking for a REFERENCE_TYPE.
561
562         * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
563         * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
564         * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
565         (build_unary_op): Likewise.
566         * call.c (build_over_call): See through a CONVERT_EXPR around the
567         ADDR_EXPR for on a temporary.
568         * typeck.c (c_expand_return): See through a CONVERT_EXPR around
569         the ADDR_EXPR for a local variable.
570
571 Fri Apr 18 12:11:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
572
573         * call.c (build_user_type_conversion_1): If we're trying to
574         convert to a REFERENCE_TYPE, only consider lvalue conversions.
575         (build_new_function_call): Print candidates.
576         (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
577         (reference_binding): Binding a temporary of a reference-related type
578         is BAD.
579
580 Thu Apr 17 14:37:22 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
581
582         * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
583         * tinfo2.cc (type_info::before): Likewise.
584
585 Mon Apr 14 12:38:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
586
587         * call.c (implicit_conversion): Oops.
588
589 Fri Apr 11 02:18:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
590
591         * call.c (implicit_conversion): Try to find a reference conversion
592         before binding a const reference to a temporary.
593
594 Wed Apr  2 12:51:36 1997  Mike Stump  <mrs@cygnus.com>
595
596         * exception.cc (__default_unexpected): Call terminate by default,
597         so that if the user overrides terminate, the correct function will
598         be called.
599         
600 Wed Mar 19 14:14:45 1997  Mike Stump  <mrs@cygnus.com>
601
602         * parse.y (left_curly): Avoid trying to use any fields of
603         error_mark_node, as there aren't any.
604
605 Thu Mar 13 16:33:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
606
607         * lex.c (do_identifier): Avoid breaking on overloaded methods
608         as default arguments.
609
610 Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  <Hans-Peter.Nilsson@axis.se>
611
612         * call.c (add_template_candidate): Initialize the variable "dummy".
613
614 Mon Mar 10 15:13:14 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>
615
616         * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
617         before we try to use TYPE_SIZE and TREE_CONSTANT on it.
618
619 Fri Mar  7 13:19:36 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
620
621         * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
622         (debug_binfo): Delete decl, not needed.
623
624         * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
625         promotes_to_aggr_type): Delete fns.
626         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
627         SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
628         PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
629
630         * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
631
632         * friend.c (is_friend_type): Delete fn.
633         * cp-tree.h (is_friend_type): Delete decl.
634
635         * decl.c (original_result_rtx, double_ftype_double,
636         double_ftype_double_double, int_ftype_int, long_ftype_long,
637         float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
638         * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
639
640         * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
641         fwd decls.
642         * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
643
644         * decl.c (pushdecl_nonclass_level): #if 0, unused.
645         * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
646
647         * lex.c (reinit_lang_specific): #if 0, unused.
648         * cp-tree.h (reinit_lang_specific): #if 0 decl.
649
650         * decl.c (revert_static_member_fn): Make static, adding fwd decl.
651         * cp-tree.h (revert_static_member_fn): Delete decl.
652
653         * class.c (root_lang_context_p): Delete fn.
654         * cp-tree.h (root_lang_context_p): Delete decl.
655
656         * decl.c (set_current_level_tags_transparency): #if 0, unused.
657         * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
658
659         * lex.c (set_vardecl_interface_info): Make static.
660         * cp-tree.h (set_vardecl_interface_info): Delete decl.
661
662         * call.c (find_scoped_type): Make static.
663         * cp-tree.h (find_scoped_type): Delete decl.
664
665         * search.c (convert_pointer_to_vbase): Make static.
666         * cp-tree.h (convert_pointer_to_vbase): Delete decl.
667
668         * decl.c (const_ptr_type_node): Likewise.
669         * cp-tree.h (const_ptr_type_node): Delete decl.
670
671         * typeck.c (common_base_type): Make static.
672         * cp-tree.h (common_base_types): Delete erroneous decl.
673
674         * pt.c (classtype_mangled_name): Make static.
675         * cp-tree.h (classtype_mangled_name): Delete decl.
676
677         * lex.c (check_newline): Make static.
678         * cp-tree.h (check_newline): Delete decl.
679
680         * typeck.c (build_x_array_ref): Delete fn, same idea as
681         grok_array_decl.
682         * cp-tree.h (build_x_array_ref): Delete decl.
683
684         * lex.c (copy_decl_lang_specific): Delete fn, same idea as
685         copy_lang_decl.
686         * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
687
688         * class.c (build_vtable_entry): Make static.
689         * cp-tree.h (build_vtable_entry): Delete decl.
690
691         * class.c (build_vbase_pointer): Make static.
692         * cp-tree.h (build_vbase_pointer): Delete decl.
693
694         * sig.c (build_sptr_ref): Add forward decl and make static.
695         * cp-tree.h (build_sptr_ref): Delete decl.
696
697         * call.c (build_new_method_call): Add forward decl and make static.
698         * cp-tree.h (build_new_method_call): Delete decl.
699
700         * call.c (build_object_call): Make static.
701         * class.c (check_for_override, complete_type_p, mark_overriders):
702         Likewise.
703         * decl.c (cp_function_chain): Likewise.
704         * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
705         Likewise.
706         * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
707         Likewise.
708         * tree.c (build_cplus_array_type_1): Likewise.
709         * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
710         (comp_target_parms): Likewise.
711
712         * init.c (build_builtin_call): Make static.
713         * cp-tree.h (build_builtin_call): Delete decl.
714
715         * typeck.c (binary_op_error): Delete decl.
716         * cp-tree.h (binary_op_error): Likewise.
717
718 Thu Mar  6 16:13:52 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
719
720         * call.c (build_method_call): Compare against error_mark_node
721         directly, rather than the ERROR_MARK tree code.
722         * cvt.c (cp_convert): Likewise.
723         * decl.c (print_binding_level): Likewise.
724         (duplicate_decls): Likewise.
725         (grokdeclarator): Likewise.
726         (grokdeclarator): Likewise.
727         * init.c (expand_aggr_init_1): Likewise.
728         (decl_constant_value): Likewise.
729         * method.c (build_opfncall): Likewise.
730         (hack_identifier): Likewise.
731         * typeck.c (build_modify_expr): Likewise.
732
733         * typeck.c (build_c_cast): Don't decl TYPE as register tree.
734
735 Sun Mar  2 02:54:36 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
736
737         * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
738
739         * pt.c (coerce_template_parms): Add new error message.
740
741         * method.c (build_overload_value): Implement name mangling for
742         floating-point template arguments.
743
744         * method.c (build_overload_int, icat, dicat): Fix mangling of template
745         arguments whose absolute value doesn't fit in a signed word.
746
747 Mon Mar  3 12:14:54 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
748
749         * friend.c: New file; put all of the friend stuff in here.
750         * init.c: Instead of here.
751         * Makefile.in (CXX_OBJS): Add friend.o.
752         (friend.o): Add dependencies.
753         * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
754
755 Sun Mar  2 11:04:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
756
757         * call.c (build_scoped_method_call): Complain if the scope isn't a
758         base.
759
760 Wed Feb 26 11:31:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
761
762         * parse.y (left_curly): Don't crash on erroneous type.
763
764         * init.c (build_delete): Fix type of ref.
765
766 Tue Feb 25 12:41:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
767
768         * search.c (get_vbase_1): Renamed from get_vbase.
769         (get_vbase): Wrapper, now non-static.
770         (convert_pointer_to_vbase): Now static.
771
772         * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
773         * init.c (build_delete): Pass one.
774         (build_partial_cleanup_for): Use build_scoped_method_call.
775         * decl.c (finish_function): Pass a binfo.
776
777 Mon Feb 24 15:00:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
778
779         * call.c (build_over_call): Only synthesize non-trivial copy ctors.
780
781         * typeck.c (build_c_cast): Lose other reference to flag.
782
783         * call.c (build_field_call): Don't look for [cd]tor_identifier.
784         * decl2.c (delete_sanity): Remove meaningless use of
785         LOOKUP_HAS_IN_CHARGE.
786         * decl.c (finish_function): Use build_scoped_method_call instead
787         of build_delete for running vbase dtors.
788         * init.c (build_delete): Call overload resolution code instead of
789         duplicating it badly.
790
791 Thu Feb 20 15:12:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
792
793         * call.c (build_over_call): Call mark_used before trying to elide
794         the call.
795
796         * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
797
798 Wed Feb 19 11:18:53 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
799
800         * typeck.c (build_modify_expr): Always pedwarn for a cast to
801         non-reference used as an lvalue.
802
803 Wed Feb 19 10:35:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
804
805         * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
806
807 Tue Feb 18 15:40:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
808
809         * parse.y (handler): Fix template typo.
810
811 Sun Feb 16 02:12:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
812
813         * error.c (lang_decl_name): New fn.
814         * tree.c (lang_printable_name): Use it.
815
816 Fri Feb 14 16:57:05 1997  Mike Stump  <mrs@cygnus.com>
817
818         * g++spec.c: Include config.h so that we can catch bzero #defines
819         from the config file.
820
821 Tue Feb 11 13:50:48 1997  Mike Stump  <mrs@cygnus.com>
822
823         * new1.cc: Include a declaration for malloc, to avoid warning, and
824         avoid lossing on systems that require one (ones that define malloc
825         in xm.h).
826
827 Mon Feb 10 22:51:13 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
828
829         * decl2.c (max_tinst_depth): New variable.
830         (lang_decode_option): Parse "-ftemplate-depth-NN" command line
831         option.
832         * pt.c (max_tinst_depth): Variable moved.
833         * lang-options.h: Declare "-ftemplate-depth-NN" command line option
834         as legal.
835
836 Fri Feb  7 15:43:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
837
838         * decl.c (xref_basetypes): Allow a base class that depends on
839         template parms to be incomplete.
840
841         * decl2.c (build_expr_from_tree): Support typeid(type).
842         * rtti.c (get_typeid): Support templates.
843         (expand_si_desc, expand_class_desc): Fix string length.
844         (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
845
846 Tue Feb  4 11:28:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
847
848         * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
849
850         * pt.c (tsubst): Put it back for -fno-ansi-overloading.
851
852 Mon Feb  3 18:41:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
853
854         * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
855         smashes together template and non-template decls of the same
856         signature.
857
858 Thu Jan 30 19:18:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
859
860         * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
861
862 Wed Jan 29 11:40:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
863
864         * decl.c (duplicate_decls): Next route, pedwarn about different
865         exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
866
867 Tue Jan 28 20:43:29 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
868
869         * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
870         (struct lang_type): Delete has_default_implementation member.
871         Increase dummy to 21.
872         * decl.c (start_method): Delete usage.
873
874         * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
875         store_after_parms, start_decl_1, auto_function): Add decls.
876         (get_arglist_len_in_bytes, declare_implicit_exception,
877         have_exceptions_p, make_type_decl, typedecl_for_tag,
878         store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
879         build_component_type_expr, cplus_exception_name,
880         {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
881         * call.c (build_this): Make static.
882         (is_complete): Likewise.
883         (implicit_conversion): Likewise.
884         (reference_binding): Likewise.
885         (standard_conversion): Likewise.
886         (strip_top_quals): Likewise.
887         (non_reference): Likewise.
888         (build_conv): Likewise.
889         (user_harshness): Likewise.
890         (rank_for_ideal): Likewise.
891         * decl.c (start_decl_1): Delete forward decl.
892         (push_decl_level): Make static.
893         (resume_binding_level): Make static.
894         (namespace_bindings_p): Make static.
895         (declare_namespace_level): Make static.
896         (lookup_name_real): Make static.
897         (duplicate_decls): Make static.  Take register off NEWDECL and
898         OLDDECL parm decls.
899         * decl2.c (get_sentry): Make static.
900         (temp_name_p): Delete fn.
901         * except.c (auto_function): Delete decl.
902         * lex.c (handle_{cp,sysv}_pragma): Make static.
903         (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
904         * method.c (do_build_{copy_constructor,assign_ref}): Make static.
905         * pt.c (tsubst_expr_values): Make static.
906         * rtti.c (combine_strings): Delete decl.
907
908 Tue Jan 28 16:40:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
909
910         * pt.c (push_template_decl): Handle getting a typedef.
911
912         * call.c (build_new_function_call): Complain about void arg.
913
914 Tue Jan 28 15:25:09 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
915
916         * decl.c (duplicate_decls): Give pedwarn of different exceptions
917         if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
918
919 Mon Jan 27 19:21:29 1997  Mike Stump  <mrs@cygnus.com>
920
921         * except.c (expand_throw): Don't expand the cleanup tree here,
922         since we are not going to write the rtl out.  Fixes problem with
923         -g -O on SPARC.
924
925 Mon Jan 27 16:24:35 1997  Sean McNeil  <sean@mcneil.com>
926
927         * Make-lang.in: Add $(exeext) as necessary.
928
929 Mon Jan 27 13:20:39 1997  Mike Stump  <mrs@cygnus.com>
930
931         * parse.y (handler_seq): Must have at least one catch clause.
932
933 Sat Jan 25 12:00:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
934
935         * call.c (add_builtin_candidate): Restore ?: hack.
936
937         * decl.c (grok_op_properties): More warnings.
938
939 Sat Jan 25 08:50:03 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
940
941         * decl.c (duplicate_decls): On second thought, do it as a pedwarn
942         still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
943
944         * decl.c (duplicate_decls): Scale back to a warning, and only do
945         'em if -pedantic.
946
947 Fri Jan 24 17:52:54 1997  Mike Stump  <mrs@cygnus.com>
948
949         * decl.c (duplicate_decls): pedwarn mismatched exception
950         specifications.
951
952 Thu Jan 23 18:18:54 1997  Mike Stump  <mrs@cygnus.com>
953
954         * call.c (build_new_method_call): Don't display the invisible
955         argument for controlling virtual bases.
956
957 Thu Jan 23 16:48:10 1997  Mike Stump  <mrs@cygnus.com>
958
959         * new: Add nothrow new and delete, bad_alloc and throw specifications
960         for delete.
961         * decl.c (init_decl_processing): Add throw specification for delete.
962         * new.cc (nothrow): Define.
963         * lex.c (real_yylex): Removing warning that throw and friends are
964         keywords.
965         * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
966         * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
967         * Make-lang.in: Add new{1,2}.{cc,o}.
968
969 Thu Jan 23 16:39:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
970
971         * lex.c (cons_up_default_function): Fix return type of synth op=.
972
973         * init.c (emit_base_init): Add warnings for uninitialized members
974         and bases.
975
976         * decl.c (xref_basetypes): Add warning for non-polymorphic type
977         with destructor used as base type.
978
979         * decl.c (grok_op_properties): Add warning for op= returning void.
980         * typeck.c (c_expand_return): Add warning for op= returning anything
981         other than *this.
982
983         * class.c (finish_struct_1): Add warning for class with pointers
984         but not copy ctor or copy op=.
985
986         * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
987         * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
988         (instantiate_template): If -fexternal-templates, add this
989         instantiation to pending_templates.
990
991         * decl2.c (copy_assignment_arg_p): Disable old hack to support
992         Booch components.
993
994 Tue Jan 21 18:32:04 1997  Mike Stump  <mrs@cygnus.com>
995
996         * cvt.c (cp_convert): Pedwarn enum to pointer conversions.
997
998 Mon Jan 20 17:59:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
999
1000         * call.c (standard_conversion): Handle getting references.  Tack
1001         on RVALUE_CONV here.  Do it for non-class types, too.
1002         (reference_binding): Pass references to standard_conversion.
1003         (implicit_conversion): Likewise.
1004         (add_builtin_candidate): Disable one ?: kludge.
1005         (convert_like): Handle RVALUE_CONVs for non-class types.
1006         (joust): Disable the other ?: kludge.
1007
1008 Mon Jan 20 14:53:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1009
1010         * decl.c (init_decl_processing): Add code to build up common
1011         function types beforehand, to avoid creation then removal of
1012         things already in the hash table.
1013
1014 Mon Jan 20 14:43:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
1015
1016         * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
1017         the arguments.
1018
1019         * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
1020         current_template_parms.
1021
1022 Fri Jan 17 10:25:42 1997  Jason Merrill  <jason@yorick.cygnus.com>
1023
1024         * search.c (lookup_field): Don't return a function, check want_type.
1025
1026 Thu Jan 16 18:14:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1027
1028         * init.c (build_new): Make sure PLACEMENT has a type.
1029
1030 Thu Jan 16 17:40:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
1031
1032         * init.c (build_new): Support new (nothrow).
1033
1034 Wed Jan 15 12:38:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
1035
1036         * pt.c (instantiate_decl): Also do push_to_top_level before setting
1037         up DECL_INITIAL.
1038
1039         * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
1040         * pt.c (tsubst): Defer instantiation of default args.
1041         * call.c (build_over_call): Until here.
1042
1043 Wed Jan 15 10:08:10 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1044
1045         * search.c (lookup_field): Make sure we have an
1046         IDENTIFIER_CLASS_VALUE before we try to return it.
1047
1048 Thu Jan  9 07:19:01 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1049
1050         * call.c (build_method_call): Delete unused var PARM.
1051         (build_overload_call_real): Likewise.
1052         (build_object_call): Delete unused var P.
1053         (build_new_op): Likewise.
1054         * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
1055         var definitions, which are never used.
1056         (shadow_tag): Delete unused var FN.
1057         * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
1058         * init.c (build_new): Delete unused var ALLOC_TEMP.
1059         * method.c (hack_identifier): Delete unused var CONTEXT.
1060         (do_build_copy_constructor): Delete unused var NAME.
1061         (synthesize_method): Delete unused var BASE.
1062         * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
1063         * rtti.c (build_headof): Delete unused var VPTR.
1064         (get_typeid): Delete unused var T.
1065         * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
1066         and ORIG_OP2.
1067         (build_ptrmemfunc): Delete unused vars U and NINDEX.
1068         * typeck2.c (build_functional_cast): Delete unused var BINFO.
1069
1070 Wed Jan  8 13:09:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
1071
1072         * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
1073         things in a type being defined.
1074         * decl.c (finish_enum): Reverse the values so that they are in
1075         the correct order.
1076
1077         * pt.c (instantiate_class_template): Don't initialize
1078         BINFO_BASETYPES until the vector is filled out.
1079         (unify): Don't abort on conflicting bindings, just fail.
1080         (instantiate_decl): Do push_tinst_level before any tsubsting.
1081
1082         * method.c (build_overload_value): Handle getting a
1083         TEMPLATE_CONST_PARM for a pointer.
1084
1085 Tue Jan  7 14:00:58 1997  Jason Merrill  <jason@yorick.cygnus.com>
1086
1087         * init.c (expand_member_init): Don't give 'not a base' error for
1088         templates.
1089
1090         * pt.c (instantiate_decl): Call import_export_decl later.
1091
1092         * pt.c (instantiate_class_template): Return a value.
1093
1094         * parse.y (extension): New rule for __extension__.
1095         (extdef, unary_expr, decl, component_decl): Use it.
1096
1097 Tue Jan  7 09:20:28 1997  Mike Stump  <mrs@cygnus.com>
1098
1099         * class.c (base_binfo): Remove unused base_has_virtual member.
1100         (finish_base_struct): Likewise.
1101         (finish_struct_1): Likewise.
1102
1103 Tue Dec 31 20:25:50 1996  Mike Stump  <mrs@cygnus.com>
1104
1105         * search.c (expand_upcast_fixups): Fix bogus code generation
1106         problem where the generated code uses the wrong index into the
1107         runtime built vtable on the stack.  Old code could clobber random
1108         stack values.
1109
1110 Tue Dec 31 15:16:56 1996  Mike Stump  <mrs@cygnus.com>
1111
1112         * init.c (perform_member_init): Make sure the partial EH cleanups
1113         live on the function_obstack.
1114
1115 Fri Dec 27 10:31:40 1996  Paul Eggert  <eggert@twinsun.com>
1116
1117         * Make-lang.in (g++spec.o): Don't use $< with an explicit target;
1118         this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
1119
1120 Tue Dec 24 10:24:03 1996  Jeffrey A Law  (law@cygnus.com)
1121
1122         * decl.c (grokvardecl): Avoid ANSI style initialization.
1123
1124 Sun Dec 22 04:22:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
1125
1126         * pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
1127
1128 Fri Dec 20 17:09:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
1129
1130         * pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
1131
1132 Fri Dec 20 12:17:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1133
1134         * g++spec.c (lang_specific_driver): Put missing hyphen in front of
1135         arguments we compare against.  Start the count of I at 1, not 0,
1136         since argv[0] is still the command.
1137
1138 Thu Dec 19 11:53:57 1996  Stan Shebs  <shebs@andros.cygnus.com>
1139
1140         * lang-specs.h: Accept .cp as an C++ extension.
1141
1142 Mon Dec 16 22:43:31 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1143
1144         * cp-tree.h (ptr_reasonably_similar): Add decl.
1145
1146 Thu Dec 12 15:00:35 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1147
1148         * decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
1149         pointer.  New local SPECBITS with the parm's value.
1150         (grokdeclarator): Pass &specbits down.
1151
1152         * parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
1153         before we try to do C_SET_EXP_ORIGINAL_CODE on it.
1154
1155         * search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
1156         CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
1157
1158         * decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
1159         not an error_mark_node.
1160
1161 Sat Dec  7 17:20:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
1162
1163         * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
1164         * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
1165         
1166 Fri Dec  6 14:40:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
1167
1168         * decl.c (grokdeclarator): When giving an anonymous struct a name,
1169         replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
1170         not affected).
1171
1172         * typeck2.c (build_m_component_ref): If component is a pointer
1173         to data member, resolve the OFFSET_REF now.
1174
1175         * call.c (convert_like): Don't go into infinite recursion.
1176
1177         * pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
1178
1179         * class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
1180         * tree.c (layout_basetypes): And on the vbase ptr.
1181
1182 Thu Dec  5 02:11:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
1183
1184         * decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
1185         CHAR_TYPE_SIZE so bool is always the same size as another type.
1186
1187         * decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
1188
1189 Tue Dec  3 23:18:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
1190
1191         * decl2.c (grok_x_components): Remove synthesized methods from
1192         TYPE_METHODS of an anonymous union, complain about member
1193         functions.
1194         * decl.c (shadow_tag): Wipe out memory of synthesized methods in
1195         anonymous unions.
1196         (finish_function): Just clear the DECL_RTL of our arguments.
1197
1198 Fri Nov 29 21:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
1199
1200         * decl2.c (finish_file): Emit DWARF debugging info for static data
1201         members.
1202
1203         * pt.c (tsubst): If t is a stub decl, return the stub decl for type.
1204
1205 Wed Nov 27 14:47:15 1996  Bob Manson  <manson@charmed.cygnus.com>
1206
1207         * typeck.c (build_component_ref): Don't die if COMPONENT isn't a
1208         IDENTIFIER_NODE.
1209
1210 Wed Nov 27 16:05:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
1211
1212         * Make-lang.in (g++-cross$(exeext)): Fix typo.
1213
1214 Wed Nov 27 08:14:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1215
1216         Make the g++ driver now be a standalone program, rather than one
1217         that tries to run the gcc driver after munging up the options.
1218         * Make-lang.in (g++.c, g++spec.o): New rules.
1219         (g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
1220         added.
1221         (g++$(exeext)): New rule, based on xgcc rule.
1222         (g++-cross$(exeext)): Now just copies g++$(exeext) over.
1223         * g++spec.c: New file.
1224         * g++.c: Removed file.
1225
1226 Tue Nov 26 19:01:09 1996  Mike Stump  <mrs@cygnus.com>
1227
1228         * cvt.c (build_up_reference): Arrange for any temporary values
1229         that have been keep in registers until now to be put into memory.
1230
1231 Mon Nov 25 15:16:41 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1232
1233         * Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
1234         that make -j3 bootstrap works better.
1235
1236 Sun Nov 24 02:09:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
1237
1238         * decl.c (pushtag): Do pushdecl for anon tags.
1239
1240 Thu Nov 21 16:30:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
1241
1242         * typeck.c (c_expand_return): Fix logic.
1243         (unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
1244
1245 Wed Nov 20 18:47:31 1996  Bob Manson  <manson@charmed.cygnus.com>
1246
1247         * g++.c (main): Make sure arglist has a final NULL entry.  Add
1248         PEXECUTE_LAST to the flags passed to pexecute, as otherwise
1249         stdin/stdout of the invoked program are redirected to
1250         nowheresville.
1251
1252 Tue Nov 19 16:12:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
1253
1254         * decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
1255
1256 Tue Nov 19 15:48:19 1996  Mike Stump  <mrs@cygnus.com>
1257
1258         * init.c (resolve_offset_ref): Handle obj.vfn better.
1259         * typeck.c (build_component_ref): Set TREE_TYPE on result from
1260         build_vfn_ref.
1261
1262 Tue Nov 19 13:14:33 1996  Mike Stump  <mrs@cygnus.com>
1263
1264         * typeck.c (convert_for_assignment): Also handle anachronistic
1265         implicit conversions from (::*)() to cv void*.
1266         * cvt.c (cp_convert_to_pointer): Likewise.
1267
1268 Mon Nov 18 17:05:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
1269
1270         * lex.c (handle_cp_pragma): Fix bogus warning.
1271
1272 Mon Nov 18 16:10:43 1996  Mike Stump  <mrs@cygnus.com>
1273
1274         * cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
1275         (METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
1276
1277 Thu Nov 14 23:18:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
1278
1279         * class.c (finish_struct_1): Support DWARF2_DEBUG.
1280         * search.c (dfs_debug_mark): Likewise.
1281         * decl2.c (finish_vtable_vardecl): Likewise.
1282         * decl.c (pushtag, finish_enum): Likewise.
1283         * lex.c (check_newline): Use debug_* instead of calling *out
1284         functions directly.
1285
1286 Thu Nov 14 15:21:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1287
1288         * Make-lang.in (cplib2.ready): Add else clause to avoid problems
1289         on some picky hosts.
1290
1291 Wed Nov 13 12:32:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
1292
1293         * class.c (finish_struct_1): A class has a non-trivial copy
1294         constructor if it has virtual functions.
1295
1296         * cvt.c (cp_convert): Always call a constructor.
1297
1298         * call.c (reference_binding): Still tack on a REF_BIND
1299         for bad conversions.
1300         (build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
1301
1302         * typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
1303         (c_expand_return): Likewise.
1304         * typeck2.c (digest_init): Likewise for { }.
1305         * init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
1306         * cvt.c (cp_convert): Handle failure better.
1307
1308 Wed Nov 13 11:51:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1309
1310         * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
1311         of GCC be path-relative. 
1312
1313 Wed Nov 13 11:27:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
1314
1315         * Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
1316         it does need choose-temp.o and pexecute.o.
1317
1318 Wed Nov 13 07:53:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1319
1320         * g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
1321         that we still use it.
1322         (P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
1323
1324 Wed Nov 13 02:00:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
1325
1326         * init.c (expand_default_init): Avoid calling constructors to 
1327         initialize reference temps.
1328
1329         * cvt.c (convert_to_reference): Fix.
1330
1331 Tue Nov 12 19:10:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
1332
1333         * cvt.c (cp_convert): Simplify for flag_ansi_overloading.
1334         (convert_to_reference): Likewise.
1335         * typeck.c (convert_for_initialization): Likewise.
1336         * init.c (expand_default_init): Likewise.
1337         (expand_aggr_init_1): Likewise.
1338         * cp-tree.h (CONV_NONCONVERTING): Lose.
1339         * typeck.c (build_c_cast): Lose allow_nonconverting parm.
1340         * *.c: Adjust.
1341         * call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
1342
1343 Tue Nov 12 16:29:04 1996  Brendan Kehoe  <brendan@canuck.cygnus.com>
1344
1345         * pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
1346
1347 Tue Nov 12 15:26:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
1348
1349         * init.c (expand_aggr_init_1): Don't crash on non-constructor
1350         TARGET_EXPR.
1351
1352 Tue Nov 12 14:00:50 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1353
1354         * g++.c: Include gansidecl.h.
1355         (VPROTO, PVPROTO, VA_START): Delete.
1356         (choose_temp_base_try, choose_temp_base, perror_exec,
1357         run_dos) [__MSDOS__]: Delete fns.
1358         (pfatal_with_name): Delete fn.
1359         (temp_filename): Declare like in gcc.c.
1360         (pexecute, pwait, choose_temp_base): Declare from gcc.c.
1361         (error_count, signal_count): Define.
1362         (error): Delete both definitions.
1363         (PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
1364         (pfatal_pexecute): Add fn from gcc.c.
1365         (main): Rename local VERBOSE var to VERBOSE_FLAG.  Rewrite the
1366         code to use the pexecute stuff also used by gcc.c.
1367         (MIN_FATAL_STATUS): Define.
1368         * Make-lang.in (g++): Add dependency on and linking with
1369         choose-temp.o and pexecute.o.
1370
1371         * cp-tree.h: Include gansidecl.h.
1372         (STDIO_PROTO): Delete #undef/#define.
1373         * cvt.c (NULL): Delete #undef/#define.
1374         * expr.c (NULL): Likewise.
1375         * init.c (NULL): Likewise.
1376         * rtti.c (NULL): Likewise.
1377         * xref.c (NULL): Likewise.
1378
1379         * cp-tree.h (build_user_type_conversion): Add prototype.
1380         * call.c (build_user_type_conversion): Delete prototype.  Correct
1381         decl of FLAGS arg to be an int.
1382         * cvt.c (build_user_type_conversion): Likewise.
1383
1384 Tue Nov 12 12:16:20 1996  Jason Merrill  <jason@yorick.cygnus.com>
1385
1386         * cp-tree.def: Add TRY_BLOCK and HANDLER.
1387         * except.c (expand_start_catch_block): Support templates.
1388         * parse.y (try_block, handler_seq): Likewise.
1389         * pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
1390
1391 Mon Nov 11 13:57:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
1392
1393         * pt.c (current_template_args): New fn.
1394         (push_template_decl): Use it.
1395         * decl.c (grokdeclarator): Use it.
1396
1397         * decl2.c (build_expr_from_tree): Dereference ref vars.
1398
1399         * decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
1400         the decl-specifier-seq.
1401
1402         * decl.c (grok_op_properties): Don't force the type of a conversion
1403         op to be complete.  Don't warn about converting to the same type
1404         for template instantiations.
1405
1406         * decl2.c (finish_file): Don't call instantiate_decl on synthesized
1407         methods.
1408
1409 Mon Nov 11 13:20:34 1996  Bob Manson  <manson@charmed.cygnus.com>
1410
1411         * typeck.c (get_delta_difference): Remove previous bogusness.
1412         Don't give errors if force is set.
1413
1414 Fri Nov  8 17:38:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
1415
1416         * decl2.c (finish_file): Don't emit debug info.
1417         * decl.c (pushdecl): Lose obsolete code.
1418         (grokdeclarator): Still do the long long thing after complaining.
1419         * search.c (note_debug_info_needed): Don't do anything if we're in a 
1420         template.
1421         * method.c (synthesize_method): For non-local classes,
1422         push_to_top_level first.
1423
1424 Fri Nov  8 11:52:28 1996  Bob Manson  <manson@charmed.cygnus.com>
1425
1426         * typeck.c (get_delta_difference): Add no_error parameter.
1427         (build_ptrmemfunc): Call get_delta_difference with no_error set;
1428         we don't want error messages when converting unrelated
1429         pointer-to-member functions.
1430
1431 Thu Nov  7 11:16:24 1996  Mike Stump  <mrs@cygnus.com>
1432
1433         * error.c (dump_expr): Improve the wording on error messages that
1434         involve pointer to member functions.
1435
1436 Tue Nov  5 17:12:05 1996  Mike Stump  <mrs@cygnus.com>
1437
1438         * cvt.c (cp_convert_to_pointer): Move code for conversions from
1439         (::*)() to void* or (*)() up a bit, so that we can convert from
1440         METHOD_TYPEs as well.
1441
1442 Tue Nov  5 14:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
1443
1444         * rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
1445         There are no 'member' types.
1446         (get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
1447         (build_x_typeid): Handle errors.
1448
1449 Mon Nov  4 17:43:12 1996  Mike Stump  <mrs@cygnus.com>
1450
1451         * typeck.c (convert_for_assignment): Handle anachronistic implicit
1452         conversions from (::*)() to void* or (*)().
1453         * cvt.c (cp_convert_to_pointer): Likewise.
1454         (cp_convert_to_pointer_force): Remove cp_convert_to_pointer
1455         conversions from here.
1456         * decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
1457         * lang-options.h: Likewise.
1458         * decl2.c (warn_pmf2ptr): Define.
1459         * cp-tree.h: Declare it.
1460         * typeck2.c (digest_init): Allow pmfs down into
1461         convert_for_initialization.
1462
1463 Sun Nov  3 09:43:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
1464
1465         * typeck.c (c_expand_return): Fix for returning overloaded fn.
1466
1467 Fri Nov  1 08:53:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
1468
1469         * cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
1470         * decl.c (grok_reference_init): Pass DIRECT_BIND.
1471         * cvt.c (build_up_reference): Don't mark 'this' addressable.  Use
1472         DIRECT_BIND.
1473         * call.c (convert_like): Don't pass INDIRECT_BIND.
1474         * typeck.c (convert_arguments): Likewise.
1475         * typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
1476
1477 Thu Oct 31 17:08:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
1478
1479         * typeck.c (mark_addressable): Support TARGET_EXPR, unify with
1480         similar code in build_up_ref.
1481         * cvt.c (build_up_reference): Drastically simplify.
1482
1483 Mon Oct 28 12:45:05 1996  Jeffrey A Law  (law@cygnus.com)
1484
1485         * typeck.c (signed_or_unsigned_type): If the given type already
1486         as the correct signedness, then just return it.
1487
1488         * typeck.c ({un,}signed_type): If can't do anything, call
1489         signed_or_unsigned_type.
1490
1491 Thu Oct 24 14:21:59 1996  Bob Manson  <manson@charmed.cygnus.com>
1492
1493         * decl2.c (copy_assignment_arg_p): Don't buy the farm if
1494         current_class_type is NULL.
1495
1496 Wed Oct 23 00:43:10 1996  Jason Merrill  <jason@gerbil.cygnus.com>
1497
1498         * class.c (finish_struct_1): Avoid empty structs by adding a field
1499         so layout_type gets the mode right.
1500
1501         * typeck.c (c_expand_return): Drastically simplify.
1502
1503 Mon Oct 21 22:34:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
1504
1505         * typeck.c (decay_conversion): Handle overloaded methods.
1506
1507 Fri Oct 18 16:03:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
1508
1509         * call.c (build_over_call): A TARGET_EXPR has side-effects.
1510
1511 Thu Oct 17 11:31:59 1996  Mike Stump  <mrs@cygnus.com>
1512
1513         * cvt.c (convert_to_pointer_force): Add code to support pointer to
1514         member function to pointer to function conversions.
1515         * init.c (resolve_offset_ref): Add code to allow faked up objects,
1516         ignoring them if they are not used, and giving an error, if they
1517         are needed.
1518         * typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
1519         code, and so that we can give an error, if we needed an object,
1520         and one was not provided.
1521         (build_c_cast): Don't call default_conversion when we want to
1522         convert to pointer to function from a METHOD_TYPE.
1523
1524 Mon Oct 14 00:28:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
1525
1526         * Make-lang.in (cplib2.ready): Fix logic.
1527
1528         * decl.c (shadow_tag): Only complain about non-artificial function
1529         members.
1530
1531         * class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
1532
1533 Fri Oct 11 16:12:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
1534
1535         * expr.c (cplus_expand_expr): Pre-tweak call_target like
1536         expand_inline_function would.
1537
1538         * pt.c (mark_decl_instantiated): If extern_p, call
1539         mark_inline_for_output.
1540
1541 Thu Oct 10 15:58:08 1996  Mike Stump  <mrs@cygnus.com>
1542
1543         * typeck.c (unary_complex_lvalue): Add code to handle intermediate
1544         pmd conversions.
1545
1546         * typeck.c (get_delta_difference): Fix wording, as we can be used
1547         for pointer to data members.
1548
1549 Tue Oct  8 12:43:51 1996  Bob Manson  <manson@charmed.cygnus.com>
1550
1551         * pt.c (tsubst): If the function decl isn't a member of this
1552         template, return a copy of the decl (including copying the
1553         lang-specific part) so we don't hose ourselves later.
1554
1555 Thu Oct  3 16:24:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
1556
1557         * class.c (finish_struct): Remove DWARF-specific tag handling.
1558         * decl.c (pushtag): Likewise.
1559         (finish_function): Always clear DECL_ARGUMENTS on function decls with
1560         no saved RTX.
1561         * decl2.c (finish_file): Emit DWARF debugging info for static data
1562         members.
1563
1564 Wed Oct  2 21:58:01 1996  Bob Manson  <manson@charmed.cygnus.com>
1565
1566         * decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
1567         isn't the same as the new one before we whack it.
1568
1569 Mon Sep 30 13:38:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
1570
1571         * class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
1572         lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
1573         warn_traditional and warn_strict_prototypes; remove ancient
1574         'overload' code; remove references to flag_traditional.
1575
1576 Mon Sep 30 12:58:40 1996  Mike Stump  <mrs@cygnus.com>
1577
1578         * input.c (sub_getch): Handle 8-bit characters in string literals.
1579
1580 Sun Sep 29 03:12:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
1581
1582         * tree.c (mapcar): Handle CONSTRUCTORs.
1583         (copy_to_permanent): Handle expression_obstack properly.
1584
1585         * Make-lang.in (cplib2.txt): Also depend on the headers.
1586
1587         * rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
1588         INT_TYPE_SIZE.
1589         (expand_class_desc): Use USItype for offset field.
1590         * tinfo.h (struct __class_type_info): Likewise.
1591
1592         * method.c (build_overload_int): TYPE_PRECISION should be applied
1593         to types.
1594
1595 Sat Sep 28 14:44:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
1596
1597         * call.c (build_new_op): A COND_EXPR involving void must be a
1598         builtin.
1599
1600 Fri Sep 27 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
1601
1602         * typeck.c (build_x_component_ref): New fn.
1603         (build_object_ref): Use it.
1604         * parse.y (primary): Use it.
1605         * decl2.c (build_expr_from_tree): Use it.
1606         * cp-tree.h: Declare it.
1607
1608         * decl.c (start_decl): variable-sized arrays cannot be initialized.
1609         * error.c (dump_type_suffix): Handle variable arrays.
1610
1611 Fri Sep 27 13:14:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1612
1613         * Make-lang.in (exception.o): Put back compiling it with -fPIC.
1614
1615 Fri Sep 27 03:00:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
1616
1617         * decl.c (lookup_name_real): Don't try to look up anything in a
1618         TYPENAME_TYPE.
1619
1620         * tinfo2.cc (__throw_type_match_rtti): Oops.
1621
1622 Thu Sep 26 22:11:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1623
1624         * Make-lang.in (exception.o): Use -fno-PIC for now.
1625
1626 Thu Sep 26 10:59:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
1627
1628         * rtti.c (build_dynamic_cast): Pass tinfo fns rather than
1629         calling them.
1630         (get_tinfo_fn_dynamic): Extracted from build_typeid.
1631         * tinfo2.cc (__dynamic_cast): Adjust.
1632         
1633         * rtti.c (build_typeid): Use resolves_to_fixed_type_p.
1634         (build_x_typeid): Likewise.
1635
1636         * parse.y: Call build_x_typeid instead of build_typeid.
1637         * cp-tree.def: Add TYPEID_EXPR.
1638         * pt.c (tsubst_copy): Handle typeid.
1639         * decl2.c (build_expr_from_tree): Likewise.
1640         * rtti.c (build_x_typeid): Throw bad_typeid from here.
1641         (build_typeid): Not here.
1642         * cp-tree.h: Declare build_x_typeid.
1643
1644 Wed Sep 25 17:26:16 1996  Jason Merrill  <jason@yorick.cygnus.com>
1645
1646         * call.c (convert_like): Pull out constant values.
1647
1648         * tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
1649
1650 Wed Sep 25 17:28:53 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
1651
1652         * decl.c (init_decl_processing): Create short int types before
1653         creating size_t in case a machine description needs to use
1654         unsigned short for size_t.
1655
1656 Tue Sep 24 18:18:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
1657
1658         * Make-lang.in (exception.o): Turn off pic.
1659
1660         * tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
1661         type, multi-level ptr conversions.
1662
1663         * rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
1664         (throw_bad_cast): Use it.
1665         (throw_bad_typeid): New fn.
1666         (build_typeid): Throw bad_typeid as needed.
1667         Use build_call.
1668         (synthesize_tinfo_fn): Handle functions and arrays before checking
1669         for cv-quals.
1670
1671         * Remove .h from standard C++ headers, add new.h, move into inc
1672         subdirectory.
1673
1674         * exception*: Remove pointer from object, constructors.  Add
1675         default exception::what that uses type_info::name.  Add
1676         __throw_bad_typeid.
1677
1678         * init.c (build_new): Don't add a cookie to new (void *) T[2].
1679
1680 Mon Sep 23 15:21:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
1681
1682         * Make-lang.in: Building C++ code depends on cc1plus.
1683
1684 Mon Sep 23 12:38:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1685
1686         * decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
1687         a HOST_WIDE_INT, not a tree.
1688
1689 Mon Sep 23 12:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
1690
1691         * exception.cc: Don't include <stdlib.h>.
1692
1693         * Make-lang.in (c++.clean): Remove cplib2.*.
1694
1695 Mon Sep 23 09:42:19 1996  Doug Evans  <dje@canuck.cygnus.com>
1696
1697         * parse.y (component_decl_1, component_costructor_declarator case):
1698         Pass attributes/prefix_attributes in tree list.
1699
1700 Mon Sep 23 01:18:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
1701
1702         * tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
1703
1704 Sun Sep 22 05:31:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
1705
1706         * lex.c (do_identifier): Don't do deferred lookup in a template
1707         header.
1708
1709         * typeck2.c (store_init_value): Oops.
1710
1711         * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}: 
1712         New files for C++ lang-support library.
1713         * Make-lang.in (CXX_EXTRA_HEADERS): Define.
1714         (CXX_LIB2FUNCS): Define.
1715         And rules for building the C++ lang-support code.
1716         * config-lang.in (headers): Define.
1717         (lib2funcs): Define.
1718
1719 Sat Sep 21 19:17:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
1720
1721         * decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
1722         digest_init.
1723         * pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
1724         * typeck2.c (store_init_value): Check for initializing pmf with { }
1725         here.
1726         (process_init_constructor): Not here.
1727
1728 Thu Sep 19 16:41:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
1729
1730         * pt.c (begin_template_parm_list): Increment
1731         processing_template_decl here.
1732         (end_template_parm_list): Not here.
1733         (process_template_parm): No need to add 1 to it now.
1734         * *.c: Use processing_template_decl instead of current_template_parms
1735         to check for being in a template.
1736
1737         * pt.c (uses_template_parms): Handle SCOPE_REF.  Fix CONSTRUCTOR.
1738         (tsubst_copy): Handle CONSTRUCTOR.
1739         (instantiate_decl): Set up context properly for variables.
1740         * decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
1741         * class.c (finish_struct): Reverse CLASSTYPE_TAGS.
1742
1743 Wed Sep 18 13:30:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1744
1745         * lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
1746
1747 Wed Sep 18 04:24:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
1748
1749         * method.c (make_thunk): Call comdat_linkage before setting the
1750         TREE_CODE.
1751
1752         * decl2.c (comdat_linkage): Use make_decl_one_only.
1753         (import_export_decl): Likewise.
1754         * decl.c (init_decl_processing): Check supports_one_only instead of
1755         SUPPORTS_WEAK.
1756
1757 Sat Sep 14 08:34:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
1758
1759         * decl2.c (grokfield): Tighten checking for access decls.
1760
1761         * decl.c (make_typename_type): Resolve references to
1762         current_class_type.  Set CLASSTYPE_GOT_SEMICOLON.
1763         (lookup_name_real): Types that depend on a template parameter get
1764         an implicit 'typename' unless they're in the current scope.
1765         (start_decl_1): We don't care about incomplete types that depend
1766         on a template parm.
1767         (grokdeclarator): Resolve 'typename's in the type specifier that
1768         refer to members of the current scope.
1769
1770         * call.c (build_over_call): Remove 'inline called before
1771         definition' diagnostic.
1772         (build_method_call): Likewise.
1773         * decl.c (duplicate_decls): Downgrade 'used before declared
1774         inline' to a warning, only with -Winline.
1775
1776 Fri Sep 13 17:31:40 1996  Stan Shebs  <shebs@andros.cygnus.com>
1777
1778         * mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
1779
1780 Wed Sep 11 22:38:13 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
1781
1782         * call.c (build_method_call): When calling a signature
1783         default implementation, as in other cases, let instance_ptr simply
1784         be instance.
1785
1786 Wed Sep 11 22:14:44 1996  Mike Stump  <mrs@cygnus.com>
1787
1788         * parse.y (simple_stmt): Cleanup and use do_poplevel ().
1789
1790 Wed Sep 11 22:10:48 1996  Mike Stump  <mrs@cygnus.com>
1791
1792         * except.c (expand_start_catch_block): Add a pushlevel so that -g
1793         works on hppa and SPARC.
1794
1795 Wed Sep 11 10:18:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1796
1797         * typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
1798
1799 Mon Sep  9 19:51:14 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
1800
1801         * call.c (build_over_call): Check first whether DECL_CONTEXT exists
1802         before testing whether it's a signature.
1803
1804 Sun Sep  8 16:06:57 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
1805
1806         * call.c (build_new_method_call): Don't complain about signature
1807         pointers and references not being an aggr type.
1808         (build_this): If a signature pointer or reference was passed in,
1809         just return it.
1810         (build_new_method_call): If instance is a signature pointer, set
1811         basetype to the signature type of instance.
1812         * sig.c (build_signature_method_call): Deleted basetype and
1813         instance parameters, they can be found as the DECL_CONTEXT of
1814         function and as the first argument passed in.
1815         * cp-tree.h: Changed declaration of build_signature_method_call.
1816         * call.c (build_method_call): Deleted first two arguments in call
1817         of build_signature_method_call.
1818         (build_over_call): Added call to build_signature_method_call.
1819
1820 Thu Sep  5 16:51:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
1821
1822         * typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
1823         target_expr.
1824
1825 Thu Sep  5 10:05:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1826
1827         * cvt.c (convert_to_reference): Use %#T, not %#D, for error.
1828
1829 Wed Sep  4 17:16:09 1996  Bob Manson  <manson@charmed.cygnus.com>
1830
1831         * except.c (expand_start_try_stmts): Move to except.c in the backend.
1832         (expand_end_try_stmts): Remove.
1833
1834         * init.c (perform_member_init): Use add_partial_entry () instead
1835         of directly manipulating lists.
1836         (emit_base_init): Ditto.
1837
1838 Wed Sep  4 12:14:36 1996  Mike Stump  <mrs@cygnus.com>
1839
1840         * except.c (expand_exception_blocks): Always make sure USE and
1841         CLOBBER insns that came at the end still do, the backend relies
1842         upon this.
1843
1844 Wed Sep  4 07:44:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
1845
1846         * call.c (build_over_call): We can only use a TARGET_EXPR of the
1847         right type.
1848
1849 Tue Sep  3 19:26:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
1850
1851         * cvt.c (convert_to_reference): Revert last change, don't complain
1852         about temp without target decl.
1853
1854 Tue Sep  3 10:22:56 1996  Mike Stump  <mrs@cygnus.com>
1855
1856         * decl.c (grokdeclarator): Don't core dump when void() is given.
1857
1858 Tue Sep  3 02:38:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
1859
1860         * decl.c (copy_args_p): Don't crash.
1861
1862 Fri Aug 30 14:26:57 1996  Mike Stump  <mrs@cygnus.com>
1863
1864         * pt.c (tsubst): And support template args inside the exception
1865         specification.
1866
1867         * pt.c (tsubst): Add support for exception specifications in
1868         template functions.
1869
1870 Fri Aug 30 10:01:55 1996  Mike Stump  <mrs@cygnus.com>
1871
1872         * cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
1873         fields now.
1874         * cp-tree.h (start_decl): Eliminate the throw spec parameter.
1875         (start_function): Likewise.
1876         (start_method): Likewise.
1877         (grokfield): Likewise.
1878         (make_call_declarator): Add throw spec parameter.
1879         (set_quals_and_spec): Add routine.
1880         * lex.c (set_quals_and_spec): Likewise.
1881         * decl.h (grokdeclarator): Eliminate the throw spec parameter.
1882         * decl.c (shadow_tag): Eliminate the throw spec parameter to
1883         grokdeclarator.
1884         (groktypename): Likewise.
1885         (start_decl): Eliminate the throw spec parameter.  Eliminate the
1886         throw spec parameter to grokdeclarator.  Eliminate the throw spec
1887         field in DECL_STMT.
1888         (cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
1889         (grokfndecl): Remove useless set of raises.
1890         (grokdeclarator): Eliminate the throw spec parameter.  Eliminate
1891         the throw spec parameter to start_decl.  Pull the throw spec out
1892         of the call declarator.
1893         (grokparms): Eliminate the throw spec parameter to grokdeclarator.
1894         (start_function): Eliminate the throw spec parameter.  Eliminate
1895         the throw spec parameter to grokdeclarator.
1896         (start_method): Likewise.
1897         * decl2.c (grokfield): Likewise.
1898         (grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
1899         (grokoptypename): Likewise.
1900         (finish_file): Eliminate the throw spec parameter to
1901         start_function.  Add throw spec to make_call_declarator.
1902         * except.c (init_exception_processing): Add throw spec to
1903         make_call_declarator.  Eliminate the throw spec parameter to
1904         start_decl.
1905         (expand_start_catch_block): Eliminate the throw spec parameter to
1906         grokdeclarator.
1907         (expand_builtin_throw): Add throw spec to make_call_declarator.
1908         Eliminate the throw spec parameter to start_function.
1909         (start_anon_func): Likewise.
1910         * lex.c (make_call_declarator): Add throw spec parameter.
1911         (set_quals_and_spec): New routine.
1912         (cons_up_default_function): Add throw spec to make_call_declarator.
1913         Eliminate the throw spec parameter to grokfield.
1914         * method.c (synthesize_method): Eliminate the throw spec parameter
1915         to start_function.
1916         * pt.c (process_template_parm): Eliminate the throw spec parameter
1917         to grokdeclarator.
1918         (tsubst): Add throw spec to make_call_declarator.
1919         (tsubst_expr): Eliminate the throw spec parameter to start_decl.
1920         (do_function_instantiation): Eliminate the throw spec parameter to
1921         grokdeclarator.  Eliminate the throw spec parameter to
1922         start_function.
1923         * rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
1924         to start_function.
1925         * parse.y (datadef): Remove non-winning optimization.
1926         (decl): Likewise.
1927         (fndef): Remove ambiguous error productions uncovered by grammer
1928         fixing.
1929         (constructor_declarator): Add exception_specification_opt here.
1930         (component_constructor_declarator): Likewise.
1931         (direct_after_type_declarator): Likewise.
1932         (complex_direct_notype_declarator): Likewise.
1933         (direct_abstract_declarator): Likewise.
1934         (fn.def1): Remove exception_specification_opt.
1935         (fn.def2): Likewise.
1936         (condition): Likewise.
1937         (initdcl0): Likewise.
1938         (initdcl): Likewise.
1939         (notype_initdcl0): Likewise.
1940         (nomods_initdcl0): Likewise.
1941         (component_decl_1): Likewise.
1942         (component_declarator): Likewise.
1943         (after_type_component_declarator0): Likewise.
1944         (after_type_component_declarator): Likewise.
1945         (notype_component_declarator): Likewise.
1946
1947 Wed Aug 28 01:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
1948
1949         * call.c (build_over_call): Also use an INIT_EXPR when
1950         initializing anything from an rvalue.
1951
1952         * call.c (build_over_call): Call stabilize_reference when building
1953         an INIT_EXPR instead of calling the copy ctor.
1954
1955         * call.c (joust): Extend the previous change to all comparisons.
1956
1957         * decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and 
1958         NO_LINKAGE_HEURISTICS.
1959
1960         * decl2.c (finish_file): Emit any statics that weren't already.
1961
1962         * typeck.c (build_static_cast): Implement.
1963         * tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
1964         * decl.c (grokparms): Use can_convert_arg instead of
1965         implicit_conversion directly.
1966         (copy_args_p): New fn.
1967         * cvt.c (convert_to_reference): Don't complain about temp with
1968         static_cast.
1969         (build_up_reference): Handle TARGET_EXPRs.
1970         * call.c (build_over_call): Elide unnecessary temps.
1971         (can_convert*): Use new overloading code.
1972
1973 Tue Aug 27 13:12:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
1974
1975         * call.c: Move TYPE_PTR*_MACROS ...
1976         * cp-tree.h: To here.
1977         * typeck.c (build_reinterpret_cast): Implement.
1978
1979         * call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
1980         ptr_complete_ob.
1981         (joust): If we're comparing a function to a builtin and the worst
1982         conversion for the builtin is worse than the worst conversion for the
1983         function, take the function.
1984
1985         * typeck.c (build_const_cast): Implement.
1986         (comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
1987         (comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
1988
1989 Tue Aug 27 13:14:58 1996  Bob Manson  <manson@charmed.cygnus.com>
1990
1991         * rtti.c (build_dynamic_cast): Don't try to dereference exprtype
1992         too early. Make sure we explode if exprtype turns out to be a
1993         NULL_TREE when it shouldn't be.
1994
1995 Tue Aug 27 10:56:21 1996  Mike Stump  <mrs@cygnus.com>
1996
1997         * cp-tree.h: New routine make_call_declarator.
1998         * lex.c (make_call_declarator): Define it.
1999         * except.c (init_exception_processing): Use it.
2000         (expand_builtin_throw): Likewise.
2001         (start_anon_func): Likewise.
2002         * decl2.c (finish_file): Likewise.
2003         * lex.c (cons_up_default_function): Likewise.
2004         * parse.y: Likewise.
2005         * pt.c (tsubst): Likewise.
2006         
2007 Mon Aug 26 17:40:03 1996  Mike Stump  <mrs@cygnus.com>
2008
2009         * decl2.c (groktypefield): Remove unused code.
2010
2011 Mon Aug 26 17:00:33 1996  Mike Stump  <mrs@cygnus.com>
2012
2013         * gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
2014         * parse.y: Likewise.  Change maybe_type_qual into maybe_cv_qualifier.
2015         Change type_quals into cv_qualifiers.  Change nonempty_type_quals into
2016         nonempty_cv_qualifiers.
2017         * hash.h: Rebuild.
2018         
2019         * lex.c (make_pointer_declarator): Change type_quals into
2020         cv_qualifiers.
2021         (make_reference_declarator): Likewise.
2022         
2023 Thu Aug 22 01:09:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
2024
2025         * decl.c (start_function): Only check interface_* for templates
2026         with flag_alt_external_templates.
2027
2028         * call.c (build_new_op): Check for comparison of different enum types.
2029         (build_over_call): Fix arg # output.
2030
2031         * typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
2032
2033 Wed Aug 21 00:13:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
2034
2035         * call.c (build_new_op): Check for erroneous args.
2036
2037         * call.c (build_new_method_call): Add missing args to cp_error.
2038
2039         * tree.c (error_type): Dont print reference-to-array.
2040
2041         * typeck.c (convert_for_assignment): Don't say contravariance for
2042         removing const.
2043
2044 Tue Aug 20 13:23:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
2045
2046         * call.c (build_over_call): Diagnose bad convs for `this'.
2047
2048         * lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
2049         on _ctor_arg.
2050
2051         * call.c (convert_like): Handle bad convs.
2052         (build_over_call): Handle bad convs better.
2053
2054         * decl2.c: -fansi-overloading is now the default.
2055
2056         * call.c (build_new_method_call): Check for erroneous args.
2057
2058         * pt.c (instantiate_class_template): Propagate
2059         TYPE_USES_MULTIPLE_INHERITANCE.
2060
2061 Tue Aug 20 13:09:57 1996  Mike Stump  <mrs@cygnus.com>
2062
2063         * call.c (enforce_access): Add static to routine.
2064
2065 Sun Aug 18 14:35:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
2066
2067         * call.c (build_user_type_conversion_1): Fix bad handling.
2068         (compare_ics): Likewise.
2069
2070 Sat Aug 17 21:54:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
2071
2072         * call.c (standard_conversion): Oops.
2073
2074 Sat Aug 17 16:28:11 1996  Geoffrey Noer  <noer@cygnus.com>
2075
2076         * g++.c: Update test for win32 (&& ! cygwin32).
2077
2078 Sat Aug 17 03:45:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
2079
2080         * typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
2081         (ptr_reasonably_similar): New fn.
2082         * call.c (BAD_RANK): New rank.
2083         (ICS_BAD_FLAG): New macro.
2084         (standard_conversion): Handle almost-right pointer conversions.
2085         (reference_binding): Handle bad rvalue bindings.
2086         (add_*_candidate): Stuff.
2087         (build_over_call): Pass bad conversions to convert_for_initialization.
2088         (compare_ics): Handle bad convs.
2089         (joust): Likewise.
2090
2091 Fri Aug 16 15:02:19 1996  Bob Manson  <manson@charmed.cygnus.com>
2092
2093         * init.c (expand_vec_init): Use ptrdiff_type_node instead of
2094         integer_type_node when computing pointer offsets.
2095
2096 Fri Aug 16 01:28:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
2097
2098         * tree.c (lvalue_type): New fn.
2099         (error_type): New fn.
2100         * call.c (op_error): Use error_type.
2101         (add_conv_candidate): Use lvalue_type.
2102         (add_builtin_candidates): Likewise.
2103         * error.c (args_as_string): Use error_type.
2104
2105 Thu Aug 15 17:27:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
2106
2107         * pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
2108         (tsubst): Not here.
2109
2110         * decl.c (init_decl_processing): With -ansi, __null's type is the
2111         signed integral type with the same number of bits as a pointer.
2112         Introduce a new variable null_node for it.
2113         * cp-tree.h: Adjust.
2114         * call.c (null_ptr_cst_p): Adjust.
2115
2116 Thu Aug 15 17:09:54 1996  Mike Stump  <mrs@cygnus.com>
2117
2118         * except.c (do_unwind): Mark %i7 as used on the SPARC so we can
2119         optimize.
2120
2121 Thu Aug 15 01:36:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
2122
2123         * decl2.c (import_export_decl): Ignore #pragma interface for tinfo
2124         fns of classes without virtual functions.
2125
2126         * call.c (add_function_candidate): Handle `this' specially.
2127         (compare_ics): Likewise.
2128
2129 Tue Aug 13 12:16:10 1996  Jason Merrill  <jason@yorick.cygnus.com>
2130
2131         * typeck.c (build_conditional_expr): Fix handling of __null.
2132
2133         * decl2.c (comdat_linkage): New fn.
2134         (import_export_vtable): Use it.
2135         (import_export_decl): Use it.
2136         * method.c (make_thunk): Use it.
2137
2138 Mon Aug 12 00:09:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
2139
2140         * pt.c (end_template_decl): If we don't actually have parms, return.
2141         * parse.y (template_header): Accept 'template <>'.
2142
2143         * errfn.c: Allow 5 args.
2144
2145 Sun Aug 11 15:20:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
2146
2147         * tree.c (make_temp_vec): New fn.
2148         * pt.c (push_template_decl): Handle partial specs.
2149         (instantiate_class_template): Likewise.
2150         (more_specialized): Use get_bindings.
2151         (more_specialized_class): New fn.
2152         (get_class_bindings): New fn.
2153         (most_specialized_class): New fn.
2154         (do_function_instantiation): List candidates for ambiguous case.
2155         * decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
2156         (shadow_tag): Call push_template_decl for partial specializations.
2157         * parse.y: Likewise.
2158         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
2159         DECL_TEMPLATE_MEMBERS.
2160         * call.c (print_z_candidates): Reduce duplication.
2161
2162 Fri Aug  9 14:36:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
2163
2164         * decl2.c (lang_decode_option): Allow -fansi-overloading.
2165
2166 Thu Aug  8 17:04:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
2167
2168         * pt.c (get_bindings): New fn.
2169         (most_specialized): Likewise.
2170         (do_function_instantiation): Use them.
2171         (add_maybe_template): New fn.
2172         * cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
2173         * call.c (build_new_op): Handle guiding decls.
2174         (build_new_function_call): Likewise.
2175         * decl2.c (finish_file): Likewise.
2176
2177         * decl2.c (mark_used): Do synthesis here.
2178         * call.c (build_method_call): Not here.
2179         (build_over_call): Or here.
2180         * typeck.c (build_function_call_real): Or here.
2181         * tree.c (bot_manip): Call mark_used on functions used in default
2182         args.
2183
2184 Thu Aug  8 17:48:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
2185
2186         * decl2.c (import_export_vtable): Delete code that disabled vtable
2187         heuristic on systems with ASM_OUTPUT_EXTERNAL.
2188
2189 Wed Aug  7 12:44:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
2190
2191         * typeck.c (build_x_function_call): Handle static call context
2192         better.
2193
2194         * decl.c (finish_function): Set the DECL_CONTEXT of the result to
2195         the function, not its outer block.
2196
2197         * call.c (build_field_call): Pass fields on to build_opfncall
2198         regardless of TYPE_OVERLOADS_CALL_EXPR.
2199         (build_method_call): Pass on to build_new_method_call sooner.
2200
2201         * typeck.c (build_ptrmemfunc): Just return what instantiate_type
2202         gives us.
2203         * class.c (instantiate_type): Don't put a POINTER_TYPE to
2204         METHOD_TYPE on an expression.  Also make a copy of rhs instead of
2205         modifying it.
2206
2207 Tue Aug  6 12:58:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
2208
2209         * call.c (compare_ics): Handle qual_conv after lvalue_conv.
2210         (add_builtin_candidate): Don't take enums for ++.
2211         (build_new_method_call): Handle non-aggregates and field calls.
2212         Move new overloading code from...
2213         * cvt.c: Here.
2214
2215         * decl.c (grokparms): Don't check default args in templates.
2216
2217 Mon Aug  5 17:17:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
2218
2219         * cvt.c (build_new_op): Fix args to build_unary_op.
2220         (add_builtin_candidates): Don't call type_promotes_to on float.
2221
2222         * decl.c (grokparms): Check the type of the default arg.
2223
2224         * cvt.c (build_new_op): Pass non-overloaded cases on rather than
2225         returning NULL_TREE.
2226
2227         * typeck.c (build_x_binary_op): Avoid doing extra work.
2228         (build_x_unary_op): Likewise.
2229         (build_x_conditional_expr): Likewise.
2230         * cvt.c (build_over_call): Return.
2231         (add_builtin_candidate): Fix MEMBER_REF.
2232         (build_new_op): Likewise.
2233
2234 Mon Aug  5 17:07:47 1996  Mike Stump  <mrs@cygnus.com>
2235
2236         * method.c (build_overload_name): Put bug fix into code but leave
2237         disabled for now so we can be bug compatible with older releases
2238         that do repeats incorrectly.  In the future, we can enable it.
2239
2240 Mon Aug  5 13:46:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
2241
2242         * cvt.c (convert_like): Don't call build_cplus_new twice.
2243
2244         * call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
2245         Control new overloading code with -fansi-overloading.
2246
2247 Sun Aug  4 15:29:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
2248
2249         * cvt.c (build_over_call): Call build_cplus_new.
2250         * call.c (build_method_call): Likewise.
2251         * typeck.c (build_function_call_real): Likewise.
2252         (build_conditional_expr): If both operands are TARGET_EXPRs, wrap
2253         the COND_EXPR in a TARGET_EXPR so they use the same slot.
2254
2255         * cvt.c (build_up_reference): Propagate INDIRECT_BIND to 
2256         recursive calls.
2257         * typeck.c (complete_type): Propagate
2258         TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
2259
2260 Sat Aug  3 14:05:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
2261
2262         * cvt.c (joust): More ?: kludging.  Sigh.
2263         (build_over_call): Don't try to synthesize global fns.
2264
2265         * search.c (lookup_conversions): Use binfo marking.
2266
2267 Sat Aug  3 12:33:42 1996  Bob Manson  <manson@charmed.cygnus.com>
2268
2269         * search.c (build_mi_matrix): Use the correct value of cid
2270         when determining the new mi_size.
2271
2272 Sat Aug  3 01:27:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
2273
2274         * cvt.c (add_builtin_candidates): Do consider type conversion ops
2275         for the first parms of += et al.
2276         (strip_top_quals): New fn.
2277         (reference_binding): Use it instead of TYPE_MAIN_VARIANT.
2278         (implicit_conversion): Likewise.
2279         (add_builtin_candidates): Be careful about arrays.
2280         (build_new_method_call): Handle vtable optimization.
2281
2282 Fri Aug  2 01:26:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
2283
2284         * cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
2285         * cvt.c (reference_binding): Use it.
2286         (implicit_conversion): Use it.
2287         (add_builtin_candidate, COND_EXPR): Use it.
2288
2289         * cvt.c (build_new_function_call): Check for error args.
2290
2291         * typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
2292
2293         * gxx.gperf: Add __null.
2294         * hash.h: Regenerate.
2295         * lex.h: Add RID_NULL.
2296         * lex.c (init_lex): Create null_pointer_node here, stick it in
2297         RID_NULL.
2298         * decl.c (init_decl_processing): Still set its type here.
2299         * cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
2300         (convert_to_pointer_force): Likewise.
2301         (null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
2302         if (! pedantic).
2303         * call.c (convert_harshness): Use null_ptr_cst_p.
2304         * typeck.c (convert_for_assignment): Likewise.  Don't produce
2305         null_pointer_node.
2306
2307         * error.c (args_as_string): Handle lists of actual args, too.
2308         * cvt.c (null_ptr_cst): Support (void*)0 for now.
2309         (build_user_type_conversion_1): Improve diagnostics.
2310         (build_new_function_call): Likewise.
2311         (build_object_call): Likewise.
2312         (build_new_method_call): Likewise.  Move call before def diagnostic...
2313         (build_over_call): Here.
2314
2315         * cvt.c (build_new_method_call): Don't complain about no match if
2316         LOOKUP_SPECULATIVELY.
2317         (build_over_call): Fix 'this' for virtual fn.
2318         (build_new_method_call): Add diagnostic.
2319
2320 Thu Aug  1 16:45:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
2321
2322         * cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
2323         constructors to be passed in.
2324         (build_over_call): Likewise.
2325         (build_user_type_conversion_1): Pass them in.
2326         (convert_like): Likewise.
2327         (build_object_call): Handle overloaded conversions.
2328         (build_over_call): Pass the right args to build_vfn_ref.
2329         (standard_conversion): Fix pmf convs.
2330         (joust): Handle comparing statics and non-statics.
2331         (build_new_method_call): New fn.
2332         * call.c (build_method_call): Call it if NEW_OVER.
2333
2334 Thu Aug  1 16:06:14 1996  Mike Stump  <mrs@cygnus.com>
2335
2336         * lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
2337         %D instead.
2338
2339 Thu Aug  1 15:24:02 1996  Mike Stump  <mrs@cygnus.com>
2340
2341         * except.c (expand_throw): Use maybe_build_cleanup_and_delete
2342         instead of just maybe_build_cleanup so that we deallocate the
2343         thrown object.
2344
2345 Thu Aug  1 15:18:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2346
2347         * decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
2348         * cp-tree.h (finish_prevtable_vardecl): Add decl.
2349
2350 Thu Aug  1 11:53:51 1996  Bob Manson  <manson@charmed.cygnus.com>
2351
2352         * pt.c (instantiate_class_template): Call complete_type. Also, if
2353         we're at the end of the file and we just instantiated a template
2354         class with a vtable, call finish_prevtable_vardecl.
2355
2356         * error.c (dump_decl): Don't explode (or explode more gracefully
2357         as appropriate) if the object being dumped has a null type.
2358         (dump_expr): Likewise.
2359
2360         * search.c (build_mi_matrix): Ensure that mi_size is large enough,
2361         by counting the number of nodes that we'll need before allocating
2362         the array.
2363         (lookup_fnfields): Fix comment.
2364         (breadth_first_search): Fix comment.
2365
2366 Wed Jul 31 09:57:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
2367
2368         * pt.c (instantiate_class_template): Propagate TYPE_PACKED and
2369         TYPE_ALIGN.
2370         * class.c (finish_struct): Call cplus_decl_attributes here.
2371         (finish_struct_1): Not here.
2372         * cp-tree.h: Adjust.
2373
2374         * pt.c (type_unification): New parameter STRICT.
2375         (unify): If STRICT, don't allow cv addition or base deduction.
2376         * call.c, class.c, cvt.c, cp-tree.h: Adjust.
2377
2378 Tue Jul 30 13:06:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
2379
2380         * search.c (get_template_base{_recursive}): New fns.
2381         * pt.c (more_specialized): New fn.
2382         (do_function_instantiation): Use it.
2383         (unify): Handle base deduction.
2384         * cvt.c (joust): Use more_specialized.
2385         Don't arbitrarily choose between non-builtin candidates.
2386         (build_over_call): Call require_complete_type.
2387
2388         * decl.c (start_function): Statics are static even in a #pragma
2389         interface file.
2390
2391         * decl2.c (import_export_vtable): Disable vtable heuristic on
2392         systems with ASM_OUTPUT_EXTERNAL.
2393
2394         * cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
2395         (standard_conversion): No std conv to enum type.
2396
2397         * cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
2398         for ptm's.
2399
2400         * cvt.c (reference_binding): Bind directly to a base subobject of
2401         a class rvalue.
2402
2403         * cvt.c (build_new_op): Enforce access control.
2404
2405 Tue Jul 30 09:22:53 1996  Bob Manson  <manson@charmed.cygnus.com>
2406
2407         * typeck2.c (process_init_constructor): When scanning the
2408         union for a named field, skip things that aren't FIELD_DECLs.
2409
2410         * method.c (synthesize_method): Don't scan fndecl's rtl if
2411         we're at the end of the file; just assume the function can't
2412         be inlined.
2413
2414 Mon Jul 29 15:48:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
2415
2416         * cvt.c (build_builtin_candidate): Stick a dummy conversion in if
2417         it failed.
2418
2419         * cvt.c (build_user_type_conversion_1): Handle overloaded
2420         conversion ops.
2421
2422         * cvt.c (add_builtin_candidates): Don't consider type conversion
2423         operators for the first parameter of operator=.
2424
2425 Mon Jul 29 15:33:55 1996  Bob Manson  <manson@charmed.cygnus.com>
2426
2427         * typeck.c (complete_type): Only call layout_type if we're not
2428         expanding a template.
2429
2430 Mon Jul 29 14:40:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
2431
2432         * cvt.c (compare_ics): Oops.
2433
2434         * cvt.c (op_error): Oops.
2435
2436         * cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
2437         * cvt.c: Add IDENTITY_RANK before others.  Use real_lvalue_p.
2438         (build_conv): Use them.
2439         (implicit_conversion): Use them.
2440         (convert_like): Handle them.
2441         (build_new_op): Handle builtin COND_EXPR again.
2442         (add_builtin_candidates): Strip cv-quals.  Fix oops.  Include enums
2443         in lists of types for COND_EXPR.
2444         (add_builtin_candidate): Add enum candidates for COND_EXPR.
2445
2446 Mon Jul 29 12:05:40 1996  Bob Manson  <manson@charmed.cygnus.com>
2447
2448         * typeck.c (build_modify_expr): Always attempt to build a call to
2449         the assignment operator, even if we're using a default one.
2450         (convert_for_initialization): Call complete_type.
2451
2452 Mon Jul 29 11:25:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
2453
2454         * cvt.c (reference_binding): A REF_BIND gets the reference type.
2455         (implicit_conversion): Likewise.
2456         (convert_like): Likewise.
2457         (compare_ics): Likewise.
2458         (compare_qual): Likewise.
2459         (print_z_candidates): Handle no candidates.
2460         (build_new_op): Don't handle builtin COND_EXPR for now.
2461
2462 Sat Jul 27 11:27:47 1996  Stan Shebs  <shebs@andros.cygnus.com>
2463
2464         * cvt.c (build_builtin_candidate): Init local var in an ANSI way.
2465
2466 Fri Jul 26 01:07:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
2467
2468         * cvt.c (joust): If the candidates are the same, arbitrarily pick one.
2469
2470         * cvt.c (build_builtin_candidate): Oops.
2471         (build_new_op): Oops.
2472
2473         * method.c (build_opfncall): Pass COND_EXPR on.
2474         * cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
2475         (add_builtin_candidate{,s}): Likewise.
2476         (add_builtin_candidates): Likewise.
2477         (print_z_candidates, op_error, build_new_op): Likewise.
2478         (type_decays_to): New fn.
2479         * lex.c (init_lex): Just say ?: for COND_EXPR.
2480
2481 Thu Jul 25 09:33:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
2482
2483         * typeck.c (complete_type): Call layout_type rather than building
2484         a new array type.
2485
2486         * cvt.c (add_builtin_candidate): Pointer arithmetic candidates
2487         only use ptrdiff_t.
2488
2489 Wed Jul 24 12:45:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
2490
2491         * cvt.c: Always compile the new overloading code (but don't use it).
2492         (implicit_conversion): Add a BASE_CONV when converting to
2493         the same class type.
2494         (convert_like): Handle BASE_CONV.
2495
2496 Tue Jul 23 12:46:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
2497
2498         * cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
2499         (add_builtin_candidate): Likewise.
2500
2501         NEW_OVER changes:
2502         * typeck.c (build_x_function_call): Try an operator function
2503         whenever we call an object of class type.
2504         * method.c (build_opfncall): Pass CALL_EXPRs through.
2505         * cvt.c (implicit_conversion): Do const-ref case first.
2506         (add_conv_candidate, build_object_call, op_error): New fns.
2507         (ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
2508         ({add,build}_builtin_candidate{,s}, print_z_candidates): Display 
2509         builtin candidates.
2510         (build_new_op): Handle CALL_EXPR.  Don't try to decay void.
2511         Fall back on preincrement handling.  Use op_error.  
2512         Handle warn_synth.
2513         (convert_like): Pass INDIRECT_BIND.  Don't try to do anything with 
2514         an error_mark_node.
2515         (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
2516         properly.
2517
2518 Mon Jul 22 16:21:55 1996  Bob Manson  <manson@charmed.cygnus.com>
2519
2520         * pt.c (tsubst_expr): Handle CONTINUE_STMT.
2521
2522 Mon Jul 22 15:38:58 1996  Mike Stump  <mrs@cygnus.com>
2523
2524         * typeck.c (build_component_ref_1): Use build_component_ref
2525         instead of open coding it here.
2526
2527 Mon Jul 22 12:18:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
2528
2529         * g++.c (main): Don't link with -lg++.
2530
2531         NEW_OVER changes:
2532         * cvt.c (convert_to_reference): Don't use convert_from_refeence on
2533         result of build_type_conversion.
2534         (cp_convert): Only call build_method_call for ctors if
2535         build_type_conversion failed.
2536         (ptr_complete_ob): New function.
2537         (TYPE_PTR{,OB,MEM}_P): New macros.
2538         ({add,build}_builtin_candidate{,s}): New functions.
2539         (print_z_candidates): Handle builtins.
2540         (build_user_type_conversion_1): Don't use conversion fns for 
2541         converting to a base type.
2542         (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
2543         (build_user_type_conversion): Use convert_from_reference.
2544         (build_new_op): New function.
2545         (build_over_call): Fix handling of methods.
2546         (compare_ics): Handle AMBIG_CONV properly.
2547         * typeck2.c: Increment abort count.
2548         * method.c (build_opfncall): Forward most requests to build_new_op.
2549         * cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
2550
2551 Fri Jul 19 17:59:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2552
2553         * error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
2554         invalid second argument to dump_expr_list.
2555
2556 Fri Jul 19 14:04:05 1996  Mike Stump  <mrs@cygnus.com>
2557
2558         * decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
2559
2560 Thu Jul 18 14:48:23 1996  Bob Manson  <manson@charmed.cygnus.com>
2561
2562         * decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
2563         ASSEMBLE_EXTERNAL.
2564
2565 Mon Jul 15 17:48:43 1996  Mike Stump  <mrs@cygnus.com>
2566
2567         * typeck2.c (process_init_constructor): New pedwarn for using { }
2568         to initialize a pointer to member function.
2569         * typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
2570         we can avoid the new error.
2571
2572 Mon Jul 15 15:42:03 1996  Mike Stump  <mrs@cygnus.com>
2573
2574         * typeck.c (build_ptrmemfunc1): New function to hide details of
2575         pointer to member functions better.
2576
2577 Mon Jul 15 14:23:02 1996  Mike Stump  <mrs@cygnus.com>
2578
2579         * init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
2580         methods into the actual method, as we know the implied object is
2581         not used.
2582
2583 Mon Jul 15 13:08:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2584
2585         * parse.y (maybecomma_warn): Only emit the pedwarn if we're not
2586         inside a system header.
2587
2588 Fri Jul 12 16:30:05 1996  Bob Manson  <manson@charmed.cygnus.com>
2589
2590         * call.c (build_method_call): Call complete_type on the
2591         instance type.
2592
2593 Thu Jul 11 17:16:40 1996  Mike Stump  <mrs@cygnus.com>
2594
2595         * typeck.c (build_component_ref): Always build up an OFFSET_REF
2596         for obj_ptr->func so that we can know which object to use in a
2597         method call.
2598
2599 Wed Jul 10 19:36:37 1996  Mike Stump  <mrs@cygnus.com>
2600
2601         * typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
2602         around things.  Also improve maintainability.
2603
2604 Wed Jul 10 18:20:11 1996  Bob Manson  <manson@charmed.cygnus.com>
2605
2606         * decl.c (grokdeclarator): Check for overflow when evaluating an
2607         array dimension.
2608
2609 Wed Jul 10 17:26:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
2610
2611         * cvt.c (cp_convert): Don't check for ambiguity with constructor
2612         if NEW_OVER.
2613
2614         * typeck.c (build_x_function_call): Pass function overload
2615         questions to new overloading code if NEW_OVER.
2616         * init.c (expand_aggr_init_1): Only check for type conversion ops
2617         if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
2618         Don't check for ambiguity with constructor if NEW_OVER.
2619         * cvt.c (convert_to_reference): Dereference the result of a type
2620         conversion operator.
2621         (build_conv): Propagate ICS_USER_FLAG.
2622         (implicit_conversion): Call instantiate_type.
2623         Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
2624         (add_function_candidate): Fix cv-quals on argtype.
2625         (print_z_candidates): New function.
2626         (build_new_function_call): Call it.
2627         (build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
2628         consider non-converting constructors.
2629         Call print_z_candidates.
2630         Return an AMBIG_CONV for an ambiguous conversion.
2631         (build_user_type_conversion): Handle AMBIG_CONV.
2632         (convert_like): Fix test for building TARGET_EXPR.
2633         Call instantiate_type.
2634         Handle AMBIG_CONV and LVALUE_CONV.
2635         (build_over_call): Handle 0 args and ellipsis.
2636         * cp-tree.def: Add AMBIG_CONV.
2637
2638 Tue Jul  9 17:48:48 1996  Mike Stump  <mrs@cygnus.com>
2639
2640         * decl.c (lookup_name_real): If we find mem in obj when parsing
2641         `obj->mem', make sure we return the right value.
2642
2643 Tue Jul  9 16:11:28 1996  Bob Manson  <manson@charmed.cygnus.com>
2644
2645         * search.c (get_base_distance): Call complete_type.
2646
2647 Tue Jul  9 12:46:34 1996  Mike Stump  <mrs@cygnus.com>
2648
2649         * decl.c (store_bindings): Make static.
2650
2651 Mon Jul  8 16:42:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
2652
2653         * init.c (expand_aggr_init_1): Don't check type conversions if
2654         NEW_OVER.
2655
2656         * cvt.c (z_candidate): Put back template field.
2657         (add_function_candidate): Set it.
2658         (add_template_candidate): Likewise.
2659         (joust): Use it.
2660         (compare_qual): Handle references and pointers to members.
2661         (compare_ics): Handle reference bindings.
2662
2663         * decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
2664
2665 Mon Jul  8 16:18:56 1996  Bob Manson  <manson@charmed.cygnus.com>
2666
2667         * call.c (compute_conversion_costs): Call complete_type.
2668
2669         * tree.c (vec_binfo_member): Use comptypes instead of comparing
2670         pointers, so we can handle template parameters.
2671
2672 Fri Jul  5 16:51:53 1996  Bob Manson  <manson@charmed.cygnus.com>
2673
2674         * cvt.c (cp_convert_to_pointer): We have to call complete_type
2675         here; let's make it explicit instead of a side effect of an
2676         error check.
2677
2678 Wed Jul  3 16:29:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
2679
2680         * cvt.c (z_candidate): Remove template field.
2681         (reference_binding): Handle binding to temporary.
2682         (implicit_conversion): Likewise.
2683         (add_function_candidate): Handle artificial constructor parms.
2684         Handle functions with too few parms.
2685         (add_template_candidate): New function.
2686         (build_user_type_conversion_1): Handle constructors.
2687         (convert_like): Likewise.
2688         (build_over_call): Likewise.
2689         (build_new_function_call): Support templates.
2690         (compare_ics): Fix reference, inheritance handling.
2691
2692 Mon Jul  1 22:58:18 1996  Bob Manson  <manson@charmed.cygnus.com>
2693
2694         * decl.c: Add signed_size_zero_node.
2695         (init_decl_processing): Build it.
2696         * class.c (prepare_fresh_vtable): Use it instead of size_zero_node
2697         when we're trying to make a negative delta.
2698
2699 Mon Jul  1 17:56:19 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2700
2701         Stop doing this damn index==strchr variable name confusion.
2702         * class.c (add_virtual_function): Change local var INDEX to be
2703         named IDX.
2704         (add_method): Likewise.
2705         * lex.c (print_parse_statistics): Likewise.
2706         * search.c (make_memoized_table_entry): Likewise.
2707         (lookup_fnfields_here): Likewise.
2708         (lookup_field): Likewise.
2709         (lookup_fnfields): Likewise.
2710         (get_baselinks): Likewise.
2711         * sig.c (build_signature_table_constructor): Likewise.
2712         (build_signature_method_call): Likewise.
2713         * typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
2714         (get_member_function_from_ptrfunc): Likewise.
2715         (build_ptrmemfunc): Change local var INDEX to be IDX.
2716         (c_expand_start_case): Likewise.
2717
2718 Sat Jun 29 14:05:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
2719
2720         * cvt.c (cp_convert_to_pointer): Move user-defined type conversion
2721         handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
2722         (convert_to_reference): Use build_type_conversion to convert to
2723         the reference type directly.
2724         (standard_conversion): Fix void* case, non-conversions.
2725         (reference_binding): Fix expr == 0 case, non-conversions.
2726         (convert_like): Support REF_BIND.
2727         (compare_qual): Split out from compare_ics.
2728         (compare_ics): Use it, handle icses with only a qual_conv.
2729
2730         * init.c (expand_vec_init): Don't crash if decl is NULL.
2731
2732 Fri Jun 28 11:52:51 1996  Stan Shebs  <shebs@andros.cygnus.com>
2733
2734         * mpw-config.in: New file, configury for Mac MPW.
2735         * mpw-make.sed: New file, makefile editing for MPW.
2736
2737 Thu Jun 27 15:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
2738
2739         * pt.c (instantiate_class_template): Call repo_template_used.
2740
2741         * search.c (lookup_conversions): Only lookup conversions in
2742         complete types.
2743
2744 Thu Jun 27 12:59:53 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2745
2746         * cp-tree.def: Renamed from tree.def, to avoid confusion with
2747         gcc's tree.def.
2748         * cp-tree.h, lex.c: Include cp-tree.def.
2749         * Makefile.in (CXX_TREE_H): Reference cp-tree.def.
2750
2751 Wed Jun 26 18:29:47 1996  Bob Manson  <manson@charmed.cygnus.com>
2752
2753         * init.c (build_vec_delete_1): Call complete_type.
2754
2755 Mon Jun 24 17:17:32 1996  Mike Stump  <mrs@cygnus.com>
2756
2757         * except.c (start_anon_func): Make sure anonymous functions are
2758         never external.
2759
2760 Fri Jun 21 15:10:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
2761
2762         * decl.c (finish_function): If function_depth > 1, set nested.
2763
2764         * decl2.c (grokbitfield): Revert Bob's change.
2765         * class.c (finish_struct_1): Fix handling of named bitfield widths.
2766
2767 Thu Jun 20 23:35:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
2768
2769         * pt.c (add_pending_template): Handle types.
2770         (lookup_template_class): With -fexternal-templates, just add the class
2771         to pending_templates instead of instantiating it now.
2772         * decl2.c (finish_file): Handle types in pending_templates.
2773
2774 Thu Jun 20 14:08:40 1996  Bob Manson  <manson@charmed.cygnus.com>
2775
2776         * decl2.c (grokbitfield): Handle constant decls appropriately.
2777         Give an appropriate error message now instead of spewing core
2778         later.
2779
2780 Thu Jun 20 13:01:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
2781
2782         * decl2.c: Don't turn on thunks by default for now.
2783
2784 Wed Jun 19 11:37:04 1996  Jason Merrill  <jason@yorick.cygnus.com>
2785
2786         * typeck.c (complete_type): Handle error_mark_node.
2787         (common_type, OFFSET_TYPE): Handle template_type_parms.
2788
2789 Tue Jun 18 10:02:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
2790
2791         * pt.c (instantiate_decl): If at_eof, call import_export_decl
2792         regardless of DECL_INLINE.
2793
2794         * typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
2795
2796         * class.c (finish_struct_bits): Copy TYPE_SIZE.
2797
2798         * rtti.c (build_dynamic_cast): Support templates.
2799         * tree.def: Support DYNAMIC_CAST_EXPR.
2800         * pt.c (tsubst_copy): Likewise.
2801         * decl2.c (build_expr_from_tree): Likewise.
2802
2803 Mon Jun 17 15:23:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
2804
2805         * typeck.c (build_static_cast): Support templates.
2806         (build_const_cast): Likewise.
2807         * tree.def: Support CONST/STATIC_CAST_EXPR.
2808         * pt.c (tsubst_copy): Likewise.
2809         * decl2.c (build_expr_from_tree): Likewise.
2810
2811 Sun Jun 16 12:33:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
2812
2813         * decl2.c (finish_vtable_vardecl): Don't trust
2814         TREE_SYMBOL_REFERENCED for vtables of local classes.
2815
2816 Fri Jun 14 18:13:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
2817
2818         * pt.c (tsubst_copy): Handle operator T.
2819
2820 Wed Jun 12 17:52:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2821
2822         * init.c (build_delete): Move creation of PARMS inside test of
2823         TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
2824
2825 Tue Jun 11 15:09:18 1996  Bob Manson  <manson@charmed.cygnus.com>
2826
2827         * typeck.c (build_conditional_expr): Don't assume that
2828         the arguments to ?: are always pointers or records.
2829
2830 Tue Jun 11 13:56:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
2831
2832         * decl2.c (import_export_decl): Still emit static/weak/comdat
2833         copies of inline template functions with -fno-implicit-templates.
2834
2835 Tue Jun 11 11:42:13 1996  Bob Manson  <manson@charmed.cygnus.com>
2836
2837         * init.c (build_delete): Determine the complete basetype
2838         path to the destructor we're calling.
2839
2840 Fri Jun  7 15:30:10 1996  Bob Manson  <manson@charmed.cygnus.com>
2841
2842         * decl.c (build_enumerator): Always copy the INTEGER_CST used to
2843         initialize the enum, because we really and truly don't know where
2844         it came from.
2845         (start_enum): Don't copy integer_zero_node because
2846         build_enumerator will do it.
2847
2848 Fri Jun  7 11:11:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
2849
2850         * decl.c (finish_function): Do access control on base destructors.
2851
2852         * pt.c (tsubst, case FUNCTION_DECL): Set up
2853         IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
2854         hose us.
2855
2856 Fri Jun  7 10:37:33 1996  Mike Stump  <mrs@cygnus.com>
2857
2858         * cvt.c (build_up_reference): If we have already extended the
2859         lifetime of the temporary, don't try it again.
2860         * typeck.c (c_expand_return): Don't try and convert the return
2861         value twice when we want a reference, once is enough.
2862         
2863 Tue Jun  4 15:41:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
2864
2865         * pt.c (tsubst_expr, case DECL_STMT): Don't pass
2866         LOOKUP_ONLYCONVERTING at all for now.
2867
2868         * search.c (add_conversions): Put the conversion function in
2869         TREE_VALUE, the basetype in TREE_PURPOSE.
2870         * cvt.c (build_type_conversion): Adjust.
2871         * cvt.c (build_expr_type_conversion): Adjust.
2872         * call.c (user_harshness): Adjust.
2873
2874 Mon Jun  3 15:30:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
2875
2876         * method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
2877         backend's benefit.
2878
2879 Mon Jun 10 18:58:19 1996  Mike Stump  <mrs@cygnus.com>
2880
2881         * except.c (expand_start_catch_block): Add a dummy region, if we
2882         get an error, so that we can avoid core dumping later.
2883
2884 Fri May 31 14:56:13 1996  Mike Stump  <mrs@cygnus.com>
2885
2886         * cp-tree.h (OFFSET_REF): Remove.
2887         * tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
2888         * expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
2889         * init.c (expand_aggr_init_1): Likewise.
2890         (build_new): Likewise.
2891         * typeck.c (expand_target_expr): Likewise.
2892
2893 Fri May 31 14:22:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
2894
2895         * typeck.c (build_modify_expr): Don't use TREE_VALUE on a
2896         TARGET_EXPR.
2897
2898 Wed May 29 17:04:33 1996  Mike Stump  <mrs@cygnus.com>
2899
2900         * cvt.c (build_up_reference): Redo how and when temporaries are
2901         created.
2902         * decl.c (grok_reference_init): Don't try and be smart about
2903         running cleanups.
2904
2905 Wed May 29 16:02:08 1996  Mike Stump  <mrs@cygnus.com>
2906
2907         * cvt.c (build_up_reference): Add NULL_TREE to all calls to build
2908         (TARGET_EXPR...), now that it has 4 arguments.
2909         * tree.c (build_cplus_new): Likewise.
2910
2911 Thu May 23 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
2912
2913         * error.c (dump_expr, case CAST_EXPR): Handle T() properly.
2914
2915         * pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
2916         * decl.c (struct saved_scope): Remove named_labels,
2917         {base,member}_init_list.
2918         (maybe_push_to_top_level): Don't set them.  Call
2919         push_cp_function_context if appropriate.
2920         (pop_from_top_level): Likewise.
2921
2922         * method.c (do_build_assign_ref): Remove obsolete check of
2923         TYPE_HAS_ASSIGN_REF (basetype).
2924
2925         * decl.c (grokfndecl): Diagnose user definition of
2926         implicitly-declared methods.
2927
2928 Thu May 23 12:13:08 1996  Bob Manson  <manson@charmed.cygnus.com>
2929
2930         * method.c (do_build_copy_constructor): Add code to give
2931         meaningful error messages instead of crashing.
2932         (do_build_assign_ref): Don't synthesize assignment operators for
2933         classes containing reference or const members.
2934
2935         * class.c (struct base_info): Remove cant_synth_copy_ctor
2936         and cant_synth_asn_ref.
2937         (finish_base_struct): Remove the code that tries to conditionalize
2938         synthesis of copy constructors & assignment operators based on
2939         access permissions. Instead, let it fail when it tries to
2940         synthesize the copy constructor. This will give meaningful error
2941         messages instead of silently generating code to perform a bitcopy.
2942
2943 Wed May 22 11:45:19 1996  Bob Manson  <manson@charmed.cygnus.com>
2944
2945         * lex.c (real_yylex): Remove old-n-crufty #if 0 code for
2946         determining types for constant values.
2947
2948         * decl.c (struct named_label_list): Use instead of stuffing
2949         random items into a TREE_LIST node.
2950         (named_label_uses): Use the new struct.
2951         (poplevel): Likewise.
2952         (lookup_label): Likewise.
2953         (define_label): Add an error message to tell the user the line
2954         where the goto is located in addition to the destination of the
2955         goto.
2956         (init_decl_processing): Use NULL instead of NULL_TREE to initialize
2957         named_label_uses.
2958         (finish_function): Likewise.
2959         
2960         (start_decl): Complain about defining a static data member
2961         in a different type from which it was declared.
2962
2963 Wed May 22 09:33:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
2964
2965         * cvt.c (build_expr_type_conversion): Adjust.
2966
2967 Tue May 21 11:21:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
2968
2969         * call.c (build_method_call): Always convert 'this' to the
2970         appropriate type.
2971
2972         * search.c (add_conversions): Put the conversion function in
2973         TREE_VALUE, the type in TREE_PURPOSE.
2974         * cvt.c (build_type_conversion): Adjust.
2975         * call.c (user_harshness): Adjust.
2976
2977         * method.c (emit_thunk): Call temporary_allocation and
2978         permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
2979
2980         * tree.c (build_cplus_array_type): Handle tweaking of
2981         TYPE_MAIN_VARIANT here.
2982         * typeck.c (common_type): Not here.
2983
2984         * typeck.c (complete_type): Only try to complete an array type if
2985         it has a domain.
2986
2987 Mon May 20 14:55:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
2988
2989         * decl.c (grokvardecl): Call complete_type.
2990         (grokdeclarator): Call complete_type for PARM_DECLs.
2991
2992 Fri May 17 16:41:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
2993
2994         * pt.c (instantiate_class_template): Re-set
2995         CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
2996
2997 Fri May 17 14:56:55 1996  Mike Stump  <mrs@cygnus.com>
2998
2999         * cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
3000         smart enough to do it right.
3001         * tree.c (cp_expand_decl_cleanup): Likewise.
3002         * decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
3003         cp_expand_decl_cleanup.
3004         (store_parm_decls): Likewise.
3005         (hack_incomplete_structures): Likewise.
3006         * except.c (push_eh_cleanup): Likewise.
3007
3008 Fri May 17 13:13:51 1996  Mike Stump  <mrs@cygnus.com>
3009
3010         * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
3011         frontend to the backend where it belongs.
3012         * tree.c (unsave_expr): Likewise.
3013         (unsave_expr_now): Likewise.
3014         * tree.def (UNSAVE_EXPR): Likewise.
3015         * cp-tree.h (unsave_expr): Likewise.
3016         (unsave_expr_now): Likewise.
3017
3018 Fri May 17 11:02:41 1996  Mike Stump  <mrs@cygnus.com>
3019
3020         * init.c (emit_base_init): Make sure the partial EH cleanups live
3021         on the function_obstack.
3022
3023 Thu May 16 15:29:33 1996  Bob Manson  <manson@charmed.cygnus.com>
3024
3025         * expr.c (do_case): Don't try to dereference null TREE_TYPEs
3026         when checking for pointer types.
3027
3028 Thu May 16 13:38:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
3029
3030         * pt.c (instantiate_class_template): Remove obsolete check for
3031         access declarations.
3032
3033 Thu May 16 13:34:15 1996  Mike Stump  <mrs@cygnus.com>
3034
3035         * call.c (build_overload_call): Simplify calls to
3036         build_overload_call by removing last parameter.
3037         (build_method_call): Likewise.
3038         * cp-tree.h: Likewise.
3039         * method.c (build_opfncall): Likewise.
3040         * typeck.c (build_x_function_call): Likewise.
3041
3042 Thu May 16 13:15:43 1996  Mike Stump  <mrs@cygnus.com>
3043
3044         * call.c (default_parm_conversions): Factor out common code.
3045         (build_method_call): Use it.
3046         (build_overload_call_real): Use it.
3047
3048 Wed May 15 14:46:14 1996  Mike Stump  <mrs@cygnus.com>
3049
3050         * call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
3051         but pedwarn as the code is bogus.
3052         * typeck.c (decay_conversion): Likewise.
3053         (build_function_call_real): Use build_addr_func instead of
3054         default_conversion.  Don't allow pointer-to-method functions down
3055         here.
3056         (build_unary_op): Use real pointer-to-member functions instead of
3057         fake ones.
3058         (build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
3059         (convert_for_assignment): Removed some obsolete code.
3060         * decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
3061         build_x_function_call instead of current_class_ptr.  Only call
3062         digest_init once on an initializer, we do this just checking
3063         TREE_TYPE.
3064         (build_expr_from_tree): Pass current_class_ref to
3065         build_x_function_call instead of current_class_ptr.
3066         * init.c (build_member_call): Likewise.
3067         * pase.y: Likewise.
3068         * error.c (dump_expr): Handle OFFSET_REFs better.
3069         * pt.c (unify): Handle pointer-to-member functions better.
3070         * decl.c (finish_function): Clear out current_class_ref just like
3071         we do for current_class_ptr.
3072
3073         * typeck.c (get_delta_difference): Handle virtual bases better.
3074
3075 Tue May 14 16:37:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
3076
3077         * sig.c (build_signature_table_constructor): Use the delta for
3078         the original basetype for this virtual function with thunks.
3079         (build_signature_method_call): We still need to adjust 'this'
3080         with thunks.
3081
3082 Tue May 14 16:27:25 1996  Mike Stump  <mrs@cygnus.com>
3083
3084         * call.c (build_addr_func): New routine.  Used to get the `real'
3085         address of a function or a method.  Needed to avoid getting a
3086         pointer-to-member function.
3087         (build_call): New routine to build CALL_EXPRs.
3088         (build_method_call): Use it.
3089         * cvt.c (convert_to_aggr): Likewise.
3090         * typeck.c (build_function_call_real): Likewise.
3091         * sig.c (build_signature_table_constructor): Use build_addr_func.
3092         * cp-tree.h (build_call, build_addr_func): Declare them.
3093
3094 Tue May 14 12:47:47 1996  Mike Stump  <mrs@cygnus.com>
3095
3096         * cp-tree.h (LOOKUP_AGGR): Remove, unused.
3097         * parse.y: Remove uses of LOOKUP_AGGR.
3098
3099 Tue May 14 12:07:51 1996  Mike Stump  <mrs@cygnus.com>
3100
3101         * *.[chy]: Rename current_class_decl to current_class_ptr, and
3102         C_C_D to current_class_ref.
3103
3104 Mon May 13 16:55:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
3105
3106         * call.c (convert_harshness): Tighten up pointer conversions.
3107
3108 Sat May 11 04:33:50 1996  Doug Evans  <dje@canuck.cygnus.com>
3109
3110         * decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
3111         (finish_file): Likewise.
3112
3113 Fri May 10 11:09:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
3114
3115         * cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
3116
3117         * method.c (emit_thunk): Set flag_omit_frame_pointer in default
3118         code.
3119
3120 Thu May  9 18:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
3121
3122         * decl2.c: Turn on thunks by default where supported.
3123
3124 Tue May  7 20:39:57 1996  Mike Stump  <mrs@cygnus.com>
3125
3126         * cp-tree.h (build_overload_call_maybe): Removed.
3127         * call.c (build_overload_call_real): Invert meaning of last arg to
3128         be require_complete.
3129         (build_overload_call): Likewise.
3130         * typeck.c (build_x_function_call): Use build_overload_call_real
3131         instead of build_overload_call_maybe.
3132
3133 Mon May  6 01:23:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
3134
3135         * decl2.c (finish_file): Don't try to emit functions that haven't
3136         been compiled.
3137
3138 Fri May  3 09:30:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
3139
3140         * decl2.c (finish_vtable_vardecl): Oops.
3141
3142         * decl.c (maybe_push_to_top_level): Do save previous_class_*.
3143         Also store the bindings from previous_class_values.
3144         (pop_from_top_level): Restore them.
3145
3146 Thu May  2 21:56:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
3147
3148         * decl2.c (finish_vtable_vardecl): Only write out vtable if its
3149         symbol has been referenced.
3150         (finish_file): Re-join synthesis/vtable loop with inline emission
3151         loop, disable inlining when an inline is output.
3152
3153 Thu May  2 17:20:02 1996  Mike Stump  <mrs@cygnus.com>
3154
3155         * except.c (init_exception_processing): Setup saved_in_catch.
3156         (push_eh_cleanup): Reset __eh_in_catch.
3157         (expand_start_catch_block): Set __eh_in_catch.
3158
3159 Thu May  2 16:21:17 1996  Mike Stump  <mrs@cygnus.com>
3160
3161         * except.c (push_eh_cleanup): Add tracking for whether or not we
3162         have an active exception object.
3163         (expand_builtin_throw): Use it to make sure a rethrow without an
3164         exception object is caught.
3165
3166 Thu May  2 11:26:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
3167
3168         * decl.c (maybe_push_to_top_level): Clear out class-level bindings
3169         cache.
3170
3171 Wed May  1 11:26:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
3172
3173         * decl2.c (finish_file): Also use sentries for vars with
3174         DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
3175         created).
3176
3177         * lex.c (handle_cp_pragma): Disable #pragma
3178         interface/implementation if SUPPORTS_ONE_ONLY > 1.
3179
3180 Tue Apr 30 11:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
3181
3182         * method.c (emit_thunk): Wrap default case in
3183         temporary/permanent_allocation.
3184
3185         * method.c (make_thunk): Use DECL_ONE_ONLY.
3186         (emit_thunk): Call assemble_end_function.
3187
3188 Mon Apr 29 15:38:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
3189
3190         * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
3191         (import_export_decl): Likewise.
3192         (finish_prevtable_vardecl): Disable vtable hack if
3193         SUPPORTS_ONE_ONLY > 1.
3194
3195 Mon Apr 29 14:32:47 1996  Mike Stump  <mrs@cygnus.com>
3196
3197         * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
3198         PREDECREMENT_EXPRs take two arguments, not one.
3199
3200 Mon Apr 29 00:27:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
3201
3202         * class.c (build_vtable_entry): Don't build thunks for abstract
3203         virtuals.
3204
3205         * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
3206         frontend.
3207
3208 Sat Apr 27 16:45:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
3209
3210         * class.c (set_rtti_entry): Use size_zero_node.
3211         (build_vtable): Likewise.
3212
3213 Sat Apr 27 14:48:57 1996  Jason Merrill  <jason@phydeaux.cygnus.com>
3214
3215         * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
3216         (prepare_fresh_vtable): Likewise.
3217
3218 Fri Apr 26 13:14:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
3219
3220         * method.c (emit_thunk): Call mark_used on the target function.
3221
3222         * call.c (build_method_call): Don't warn about pending templates.
3223
3224 Thu Apr 25 14:55:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
3225
3226         * decl2.c (finish_file): Fix list walking logic.
3227
3228         * typeck2.c (check_for_new_type): Only warn if -pedantic.
3229
3230 Wed Apr 24 15:41:15 1996  Bob Manson  <manson@charmed.cygnus.com>
3231
3232         * class.c (finish_struct_1): Remove old code for
3233         dont_allow_type_definitions.
3234         * cp-tree.h: Likewise.
3235         * spew.c: Make sure cp-tree.h is included before parse.h, so the
3236         definition of flagged_type_tree is found before it is used.
3237         * lex.c: Likewise.
3238         * parse.y: Added the ftype member to the type union, and changed a
3239         number of rules to use it instead of ttype. Added calls to
3240         check_for_new_type() as appropriate.
3241         * typeck2.c (check_for_new_type): New function for checking
3242         if a newly defined type appears in the specified tree.
3243         * cp-tree.h: Add new type flagged_type_tree. Add a prototype
3244         for check_for_new_type().
3245
3246 Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
3247
3248         * decl2.c (finish_file): Only use a sentry if the decl is public.
3249
3250         * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
3251         don't pass LOOKUP_ONLYCONVERTING.
3252
3253 Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
3254
3255         * typeck.c (common_type): Fix the ARRAY_TYPE case so it
3256         properly keeps track of const and volatile type modifiers.
3257
3258 Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
3259
3260         * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
3261         * pt.c (comp_template_args): Use it.
3262
3263         * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
3264         assemble_external for artificial function decls.
3265
3266         * decl.c (cp_finish_decl): Oops.
3267
3268 Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
3269
3270         * decl2.c (import_export_decl): Put static data member templates
3271         into common storage, or make them weak, depending on whether they
3272         are dynamically or statically initialized.
3273         (get_sentry): New function.
3274         (finish_file): Do import_export_decl for static data members before
3275         building the init/fini functions.  Don't init/fini a variable that's
3276         EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
3277         push/pop_temp_slots.
3278         * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
3279         expand_static_init thang.
3280         * method.c (get_id_2): New function.
3281
3282 Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
3283
3284         * parse.y (empty_parms): Make sure we use C++-style prototypes
3285         when we're declaring member functions.
3286
3287 Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
3288
3289         * Makefile.in (CONFLICTS): 16 s/r conflicts.
3290         * parse.y (self_template_type): New nonterminal.
3291
3292 Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
3293
3294         * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
3295         name.
3296         * parse.y (base_class.1): Allow 'typename foo::bar'.
3297
3298         * lex.c (check_newline): Remove #pragma code that plays with the
3299         input stream, since we now deal with tokens.  Clear nextchar when
3300         we're done.
3301         (handle_cp_pragma): Use real_yylex.
3302         (handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
3303         in one place.
3304
3305         * lex.c (check_for_missing_semicolon): Handle SELFNAME.
3306
3307         * lex.c (handle_cp_pragma): Fix "#pragma implementation".
3308
3309 Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
3310
3311         * parse.y: New token SELFNAME for potential constructor.
3312         * spew.c (yylex): Handle it.
3313         * lex.c (identifier_type): Produce it.
3314
3315         * parse.y (complete_type_name): In :: case, don't push class binding.
3316         (complex_type_name): Likewise.
3317
3318 Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
3319
3320         * typeck.c (build_reinterpret_cast): Handle pointer to member
3321         functions.
3322
3323 Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3324
3325         * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
3326         pragmas.
3327         (check_newline): Put the vtable/unit/implementation/interface pragma
3328         code into handle_cp_pragma, replacing it with a call.
3329         (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
3330         args.  Get the next token after handling the pragma token.
3331
3332 Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
3333
3334         * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
3335         (convert_to_pointer_force): Likewise.
3336
3337         * init.c (build_new): Fix array new without -fcheck-new.
3338
3339 Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
3340
3341         * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
3342         tree.c: Lose TYPE_NESTED_NAME.
3343
3344         * parse.y (nested_name_specifier_1): Don't treat non-identifiers
3345         as identifiers.
3346
3347         * tree.def: Add VEC_INIT_EXPR.
3348         * expr.c (cplus_expand_expr): Handle it.
3349         * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
3350         the extra file-scope symbol nastiness.
3351
3352 Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
3353
3354         * method.c (make_thunk): Thunks are static.
3355         (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
3356
3357         * decl2.c (mark_vtable_entries): Emit thunks as needed.
3358         (finish_file): Don't emit them here.
3359
3360 Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
3361
3362         * rtti.c (build_dynamic_cast): Handle null pointers.
3363         (ifnonnull): New function.
3364
3365 Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
3366
3367         * call.c (build_method_call): Remember the original basetype we
3368         were called with. Give an error message instead of trying
3369         (incorrectly) to call a non-static member function through a
3370         non-inherited class.
3371
3372         * search.c (expand_upcast_fixups): Mark the new fixup as
3373         DECL_ARTIFICIAL.
3374
3375 Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
3376
3377         * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
3378
3379         * class.c (set_rtti_entry): Fix for thunks.
3380
3381         * decl2.c (import_export_decl): Still emit typeinfo fns for
3382         cv-variants of builtin types.
3383
3384         * rtti.c (expand_class_desc): Set up base_info_type_node here.
3385         (init_rtti_processing): Instead of here.
3386
3387 Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
3388
3389         * rtti.c (init_rtti_processing): Do init regardless of -frtti.
3390         (build_typeid): Only complain about taking dynamic typeid without
3391         -frtti.
3392
3393         * decl2.c: flag_rtti defaults to 1.
3394
3395         * rtti.c (get_tinfo_var): The general class case is now smaller.
3396         (init_rtti_processing): Pack the latter three fields of base_info
3397         into 32 bits.
3398
3399 Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
3400
3401         * init.c (expand_member_init): Don't dump if name is NULL_TREE.
3402
3403 Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
3404
3405         * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
3406         (push_memoized_context): Split out code to undefer pop_type_level to
3407         (clear_memoized_cache): here.
3408         (pop_memoized_context): We can only handle one layer of deferral of
3409         pop_type_level so clear the cache, if there was a previous level.
3410
3411 Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
3412
3413         * rtti.c (init_rtti_processing): Build up base_info_type_node.
3414         (expand_class_desc): Use one pointer to an array of base_info
3415         structs, passed using a CONSTRUCTOR.
3416
3417 Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
3418
3419         * class.c (build_vbase_path): Remove block extern for
3420         flag_assume_nonnull_objects here.
3421         (build_vfn_ref): Split out functionality into build_vtbl_ref.
3422         (build_vtbl_ref): New routine.
3423         (build_vtable): Set up rtti info here.
3424         (add_virtual_function): Note in CLASSTYPE_RTTI the best
3425         place where we can get the rtti pointers from to avoid having to
3426         search around for a place.
3427         (finish_base_struct): Likewise.
3428         (finish_struct_1): Likewise.  Never create totally new vtables
3429         with totally new vtable pointers for rtti.  Disable code to layout
3430         vtable pointers better until we want to break binary
3431         compatibility.
3432         * rtti.c (build_headof_sub): New routine to convert down to a
3433         sub-object that has an rtti pointer in the vtable.
3434         (build_headof): Use it.  Also, use build_vtbl_ref now to be more
3435         maintainable.
3436         (build_dynamic_cast): Make sure we have saved it, if we need to.
3437         * search.c (dfs_init_vbase_pointers): Disable code that deals with
3438         a more efficient vtable layout, enable later.
3439         * call.c (flag_assume_nonnull_objects): Moved declaration to
3440         * cp-tree.h: here.  Declare build_vtbl_ref.
3441         * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
3442         function calls that want a tree.
3443
3444 Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
3445
3446         * rtti.c (build_dynamic_cast): Handle downcasting to X* given
3447         other X subobjects in the most derived type.  Ack.
3448
3449         * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
3450         get_typeid will do it for us.
3451         (get_typeid_1): Break out call-building for expand_*_desc to use.
3452         (get_typeid): Call it.
3453         (expand_*_desc): Likewise.
3454         * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
3455         and void *.
3456         (init_decl_processing): Lose builtin_type_tdescs lossage.
3457         * decl2.c (finish_vtable_vardecl): Remove obsolete code.
3458
3459 Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
3460
3461         * pt.c (tsubst): When calling set_nested_typename, use
3462         TYPE_NESTED_NAME (current_class_type) instead of
3463         current_class_name.
3464
3465         * decl.c (pushdecl): Likewise.
3466         (pushdecl_class_level): Likewise.
3467         (grokdeclarator): Use NULL_TREE instead of 0 in the call to
3468         set_nested_typename.
3469
3470 Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
3471
3472         * rtti.c (synthesize_tinfo_fn): Handle arrays.
3473
3474         * cp-tree.h (DECL_REALLY_EXTERN): New macro.
3475
3476 Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
3477
3478         * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
3479         (init_rtti_processing): Lose bad_cast_type.
3480         (build_dynamic_cast): Use throw_bad_cast.
3481
3482         * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
3483
3484         * decl2.c (finish_file): Don't synthesize artificial functions
3485         that are external and not inline.
3486
3487         * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
3488
3489         * decl2.c (finish_file): Handle having new inlines added to
3490         saved_inlines by synthesis.
3491
3492         * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
3493
3494 Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
3495
3496         RTTI rewrite to initialize nodes as needed, not require that
3497         users #include <typeinfo>, complete functionality and reduce wasted 
3498         space.
3499         * rtti.c (init_rtti_processing): New fn.
3500         (build_typeid): The vtable entry is now a function.
3501         (get_tinfo_var): New fn.
3502         (get_tinfo_fn): Likewise.
3503         (get_typeid): Use it.
3504         (build_dynamic_cast): Declare and use entry point __dynamic_cast.
3505         (build_*_desc): Rename to expand_*_desc and rewrite to use entry
3506         points __rtti_*.
3507         (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
3508         (synthesize_tinfo_fn): New fn.
3509         * method.c (build_t_desc_overload): Lose.
3510         (build_overload_with_type): More generic.
3511         * decl.c (init_decl_processing): Call init_rtti_processing.
3512         * class.c (set_rtti_entry): Use get_tinfo_fn.
3513         * decl2.c (mark_vtable_entries): Mark the rtti function.
3514         (finish_prevtable_vardecl): Don't build_t_desc.
3515         (import_export_decl): Handle tinfo functions.
3516         (finish_file): Likewise.
3517         * typeck.c (inline_conversion): New fn.
3518         (build_function_call_real): Use it.
3519         * cp-tree.h: Add decls.
3520
3521         * method.c (hack_identifier): Also convert component_refs from
3522         references.
3523
3524         * lex.c (cons_up_default_function): Use the type, not the name, in
3525         declspecs.
3526
3527         * decl2.c (import_export_vtable): Fix weak vtables.
3528
3529 Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
3530
3531         * search.c (get_base_distance_recursive): Fix access checks for
3532         protected bases.
3533
3534 Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3535
3536         * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
3537         cp-tree.h.
3538         (convert_harshness): Add prototypes wrapped by PROTO.
3539         * decl2.c (grok_function_init): Likewise.
3540         (do_toplevel_using_decl): Change to void return type.
3541         * class.c (build_vtable_entry): Remove decl of make_thunk.
3542         (merge_overrides): Fix order of arg definitions.
3543         (finish_vtbls): Likewise.
3544         (fixup_vtable_deltas): Likewise.
3545         (modify_all_direct_vtables): Likewise.
3546         (modify_all_indirect_vtables): Likewise.
3547         * search.c (get_base_distance_recursive): Likewise.
3548         (get_abstract_virtuals_1): Likewise.
3549         (fixup_virtual_upcast_offsets): Likewise.
3550         (lookup_fnfields_1): Add prototypes wrapped by PROTO.
3551         * init.c (perform_member_init): Fix order of arg definitions.
3552         (expand_aggr_init_1): Add prototypes wrapped by PROTO.
3553         * cp-tree.h (make_thunk): Add decl.
3554         (overload_template_name, push_template_decl): Add decls.
3555         (do_toplevel_using_decl): Change to void return type.
3556         (vec_binfo_member): Add decl.
3557
3558 Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3559
3560         * typeck.c (mark_addressable, convert_for_assignment,
3561         convert_for_initialization, pointer_int_sum, pointer_diff,
3562         unary_complex_lvalue): Add prototypes wrapped by PROTO.
3563         (convert_sequence): #if 0 fn decl, since definition also is.
3564
3565 Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
3566
3567         * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
3568         cast to pointer types for type searching.
3569
3570 Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3571
3572         * typeck.c (get_delta_difference): Use cp_error, not error, in the
3573         case where BINFO == 0.
3574
3575 Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
3576
3577         * call.c (build_method_call): Fix wording of error messages so
3578         constructors come out right.
3579
3580 Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
3581
3582         * decl.c (push_overloaded_decl): Don't warn about hidden
3583         constructors when both the type and the function are declared
3584         in a system header file.
3585
3586 Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
3587
3588         * class.c (finish_struct_1): Propagate the TYPE_PACKED
3589         flag for the type to the type's fields.
3590
3591 Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3592
3593         * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
3594
3595 Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
3596
3597         * class.c (base_info, finish_base_struct): Replace 
3598         needs_virtual_dtor with base_has_virtual.
3599
3600         (finish_struct_1): Remove the old code that tried to make default
3601         destructors virtual. Use base_has_virtual when checking if we need
3602         to add a vtable entry for the rtti code.
3603
3604 Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
3605
3606         * pt.c (push_template_decl): Complain about template decl with
3607         inappropriate declaration.
3608
3609 Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
3610
3611         * typeck.c (build_x_unary_op): Remove bogus check for taking
3612         the address of a member function.
3613
3614 Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
3615
3616         * parse.y (constructor_declarator): Only push the class if
3617         we are not already in the class.
3618
3619 Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
3620
3621         * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
3622         Add additional argument to INIT_CUMULATIVE_ARGS.
3623
3624 Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
3625
3626         * decl.c (shadow_tag): Fix error about anon union with methods.
3627
3628         * parse.y (self_reference): Only generate a self-reference if this
3629         is a non-template class.
3630         (opt.component_decl_list): Only use it if it was generated.
3631
3632         * parse.y (component_decl_1): Use constructor_declarator.
3633         (fn.def2): Likewise.
3634         (notype_component_declarator0): Likewise.
3635
3636 Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
3637
3638         * typeck.c (build_x_unary_op): Add checks for taking the address
3639         of a TARGET_EXPR or of a member function, and give appropriate
3640         warnings.
3641
3642 Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
3643
3644         * pt.c (process_template_parm): Allow template type parms to be
3645         used as types for template const parms.
3646
3647 Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
3648
3649         * init.c (expand_vec_init): Ensure the eh cleanups are on the
3650         function_obstack.
3651
3652 Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
3653
3654         * decl.c (lookup_name_real): Be even more picky about the
3655         ambiguous lookup warning.
3656         (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
3657         * parse.y (constructor_declarator): Rather than here.
3658
3659         * parse.y (constructor_declarator): New nonterminal.
3660         (fn.def1): Use it.
3661         (explicit_instantiation): Likewise.
3662
3663 Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
3664
3665         Add implicit declaration of class name at class scope.
3666         * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
3667         * parse.y (self_reference): New nonterminal.
3668         (opt.component_decl_list): Use it.
3669         (fn.def1): Add nested_name_specifier type_name cases.
3670         * class.c (build_self_reference): New function.
3671         (finish_struct): Handle access_default later, move self-reference
3672         decl to the end.
3673         * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
3674         * cp-tree.h: Adjust.
3675
3676         * pt.c (do_function_instantiation): Separate handling of member
3677         functions and non-member functions properly.
3678
3679 Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
3680
3681         * pt.c (process_template_parm): Improve error for 'volatile class K'.
3682
3683         * class.c (finish_struct_1): Check the right slot for destructors.
3684
3685         * decl.c (start_enum): Complain about enum templates.
3686
3687 Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
3688
3689         * init.c (resolve_offset_ref): Offset pointers to member data by one.
3690         * typeck.c (unary_complex_lvalue): Likewise.
3691
3692 Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
3693
3694         * typeck.c (c_expand_return): Check for a returned local
3695         array name, similar to the check for an ADDR_EXPR.
3696
3697 Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
3698
3699         * decl.c (cp_finish_decl): Don't build cleanups for static
3700         variables here.
3701
3702 Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
3703
3704         * typeck.c (build_modify_expr): Fix error messages to be more
3705         accurate.
3706         * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
3707         assignment operators.
3708         * error.c (assop_as_string): Likewise.  Add support for `%Q' for
3709         assignment operators.
3710
3711 Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
3712
3713         * decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
3714         give an error if initialized.  Pedwarn about nested type with the
3715         same name as its enclosing class.
3716
3717         * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
3718
3719         * typeck.c (require_complete_type): Be sure to instantiate the
3720         MAIN_VARIANT of the type.
3721
3722         * decl2.c (finish_file): Instantiate pending templates before
3723         processing static constructors and destructors.
3724
3725         * pt.c (instantiate_decl): Don't instantiate functions at toplevel
3726         unless at_eof.
3727
3728 Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
3729
3730         * decl2.c (delete_sanity): If error_mark_node is passed
3731         in as an expression, quit while we're ahead.
3732
3733         * decl.c (grokdeclarator): Give an error message if `friend'
3734         is combined with any storage class specifiers.
3735
3736 Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
3737
3738         * parse.y (named_complex_class_head_sans_basetype): Don't crash on
3739         definition of nonexistent nested type.
3740
3741         * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
3742         not to say 'typedef'.
3743
3744 Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3745
3746         * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
3747         * search.c (dfs_walk, dfs_init_vbase_pointers,
3748         expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
3749         (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
3750
3751 Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
3752
3753         * except.c (build_throw): Support minimal parse.
3754         * pt.c (tsubst_copy): Support THROW_EXPR.
3755         * decl2.c (build_expr_from_tree): Likewise.
3756
3757         * pt.c (mangle_class_name_for_template): Always allocate
3758         scratch_firstobj.
3759
3760 Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
3761
3762         * cvt.c (cp_convert_to_pointer): Give an appropriate error
3763         when trying to cast from an incomplete type.
3764
3765 Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
3766
3767         * pt.c (instantiate_class_template): Don't bother setting up
3768         CLASSTYPE_TAGS explicitly, as the nested types will add
3769         themselves.
3770
3771 Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
3772
3773         * decl.c (shadow_tag): Remove old error check for usage of
3774         an enum without a previous declaration.
3775         (xref_tag): Add error message about usage of enums without a
3776         previous declaration.
3777
3778 Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
3779
3780         * lex.c (do_identifier): Only do name consistency check if we're
3781         parsing.
3782
3783         * pt.c (push_template_decl): Don't crash if we get a member defn
3784         that doesn't match.
3785
3786         * decl.c (xref_tag_from_type): New function to do an xref without
3787         always having to figure out code_type_node.
3788         * cp-tree.h: Declare it.
3789         * pt.c (instantiate_class_template): Use it for friend classes.
3790         (lookup_template_class): Use it.
3791
3792         * typeck2.c (build_functional_cast): Pull out a single parm before
3793         passing it to build_c_cast.
3794
3795 Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
3796
3797         * expr.c (do_case): Give an error message if a pointer is
3798         given as a case value.
3799
3800 Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
3801
3802         * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
3803         an overload list.
3804
3805         * lex.c (cons_up_default_function): Really, now, interface hackery
3806         does not apply to synthesized methods.
3807
3808 Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
3809
3810         * call.c (build_method_call): Ctors and dtors now have special names
3811         with respect to lookups.
3812         * class.c (add_method): Likewise.
3813         (grow_method): Likewise.
3814         (finish_struct_methods): Likewise.
3815         (warn_hidden): Likewise.
3816         (finish_struct_1): Likewise.
3817         * cvt.c (convert_to_reference): Likewise.
3818         (convert_to_aggr): Likewise.
3819         (cp_convert): Likewise.
3820         * decl2.c (check_classfn): Likewise.
3821         * init.c (expand_member_init): Likewise.
3822         (expand_default_init): Likewise.
3823         (expand_aggr_init_1): Likewise.
3824         (build_offset_ref): Likewise.
3825         (build_new): Likewise.
3826         (build_delete): Likewise.
3827         * lex.c (do_inline_function_hair): Likewise.
3828         * search.c (lookup_field_1): Likewise.
3829         (lookup_fnfields_here): Likewise.
3830         (lookup_field): Likewise.
3831         (lookup_fnfields): Likewise.
3832         (get_virtual_destructor): Likewise.
3833         (dfs_debug_mark): Likewise.
3834         (dfs_pushdecls): Likewise.
3835         (dfs_compress_decls): Likewise.
3836         * tree.c (layout_basetypes): Likewise.
3837         * typeck.c (build_component_ref): Likewise.
3838         (build_x_function_call): Likewise.
3839         (build_modify_expr): Likewise.
3840         (convert_for_initialization): Likewise.
3841         (build_functional_cast): Likewise.
3842         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
3843         (CTOR_NAME): New.
3844         (DTOR_NAME): New.
3845         * decl.c (ctor_identifier): New.
3846         (dtor_identifier): New.
3847         (init_decl_processing): Set them.
3848
3849 Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
3850
3851         * typeck.c (build_component_ref): Don't get confused by fields whose
3852         context has no type name, like pointer to member functions.
3853
3854 Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
3855
3856         * decl.c (grokdeclarator): Handle typedef without declarator.
3857
3858         * pt.c (tsubst): Handle SCOPE_REF in declarator.
3859
3860         * parse.y (bad_parm): Catch another case of missing `typename'.
3861
3862         * lex.c (yyprint): Handle TYPE_DECLs.
3863
3864         * decl.c (start_function): Don't try to be clever.
3865
3866         * lex.c: Lose compiler_error_with_decl.
3867         * typeck2.c: Lose error_with_aggr_type.
3868         (incomplete_type_error): Use cp_* instead of old functions.
3869         (readonly_error): Likewise.
3870         * typeck.c (convert_arguments): Likewise.
3871         * search.c (lookup_nested_field): Likewise.
3872         * method.c (make_thunk): Likewise.
3873         * decl.c (grokparms): Likewise.
3874         * cp-tree.h: Update.
3875
3876         * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
3877         and value.
3878
3879 Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
3880
3881         * method.c (build_opfncall): When deleting a pointer to an
3882         array, build a new pointer to the tree past any ARRAY_TYPE
3883         nodes.
3884
3885 Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3886
3887         * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
3888
3889 Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
3890
3891         * pt.c (instantiate_decl): Only call import_export_decl if at_eof
3892         and ! DECL_INLINE.
3893
3894         * decl.c (finish_function): Don't set nested based on
3895         hack_decl_function_context.
3896         * parse.y (function_try_block): Check for nested function.
3897         (pending_inlines): Likewise.
3898
3899         * decl2.c (build_expr_from_tree): If a unary op already has a
3900         type, just return it.
3901
3902         * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
3903
3904         * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
3905         (finish_file): Check the return value of walk_vtables.
3906         (finish_prevtable_vardecl): Return int.
3907         (finish_vtable_vardecl): Likewise.
3908         (prune_vtable_vardecl): Likewise.
3909         * lex.c (set_vardecl_interface_info): Likewise.
3910         * cp-tree.h: Adjust return types.
3911
3912         * class.c (delete_duplicate_fields_1): Don't complain about
3913         duplicate nested types if they're the same type.
3914         (finish_struct): Remove check for duplicate.
3915         * decl2.c (grokfield): Don't check for typedef of anonymous type.
3916
3917 Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
3918
3919         * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
3920
3921         * decl.c (grokdeclarator): Lose special handling of class-level
3922         typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
3923         SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
3924
3925         * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
3926
3927         * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
3928
3929         * search.c (compute_access): Fix handling of anonymous union
3930         members.
3931         * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
3932         from anonymous unions to their members.
3933
3934         * typeck.c (build_x_function_call): For static member functions,
3935         hand off to build_member_call.
3936
3937 Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
3938
3939         * typeck.c (build_component_ref): Handle OFFSET_REFs.
3940
3941         * init.c (expand_vec_init): Fix init == 0 case.
3942
3943 Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
3944
3945         * init.c (build_new): Pedwarn about init and array new.
3946         (expand_vec_init): Handle lists, use convert_for_initialization
3947
3948         * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
3949         when converting to an aggregate type.
3950         * cvt.c (cp_convert): Pass it through.
3951
3952         * typeck.c (build_conditional_expr): Handle user-defined
3953         conversions to slightly different types.
3954
3955         * decl.c (grokdeclarator): Force an array type in a parm to be
3956         permanent.
3957
3958         * decl2.c (do_using_directive): Sorry.
3959         (do_namespace_alias): Likewise.
3960         * lex.c (real_yylex): Warn about using the `namespace' keyword.
3961
3962 Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
3963
3964         * parse.y (datadef): Move call to note_list_got_semicolon up.
3965
3966 Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
3967
3968         * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
3969
3970 Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
3971
3972         * decl.c (cp_finish_decl): The exception regions have to be
3973         nested, not overlapping.  We start the exception region for a
3974         decl, after it has been fully built, and all temporaries for it
3975         have been cleaned up.
3976
3977 Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
3978
3979         * tree.c (vec_binfo_member): Don't core dump if we have no bases.
3980
3981 Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
3982
3983         * tree.def: Add RETURN_INIT.
3984         * pt.c (instantiate_decl): Handle RETURN_INIT.
3985         * decl.c (store_return_init): Handle minimal_parse_mode.
3986
3987         * tree.c (cp_build_type_variant): Just return an error_mark_node.
3988         * decl.c (make_typename_type): Don't try to get the file and line
3989         of an identifier.
3990         * typeck.c (comptypes): Handle TYPENAME_TYPE.
3991
3992 Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
3993
3994         * decl.c (poplevel): Make sure we clear out and restore old local
3995         non-VAR_DECL values by default when they go out of scope.
3996
3997 Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
3998
3999         * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
4000         referring to addresses of variables and functions.
4001
4002         * error.c (dump_expr): Support SIZEOF_EXPR.
4003
4004         * init.c (do_friend): Use the return value of check_classfn.
4005
4006         * typeck.c (convert_arguments): Call complete_type.
4007
4008         * method.c (hack_identifier): After giving an error, set value to
4009         error_mark_node.
4010
4011 Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
4012
4013         * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
4014         lossage for local classes.
4015         * cp-tree.h: Declare it.
4016         * decl.c (lookup_name_real): Evil, painful hack for local classes.
4017         (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
4018         Use hack_decl_function_context.
4019         (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
4020         (start_function): Use hack_decl_function_context.
4021         (finish_function): Likewise.
4022         * method.c (synthesize_method): Likewise.
4023         * lex.c (process_next_inline): Likewise.
4024         (do_pending_inlines): Likewise.
4025         * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
4026         done with it.
4027
4028 Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
4029
4030         * sig.c (build_signature_pointer_or_reference_type): Align
4031         signature pointers/references on 8-byte boundaries so they can be
4032         grabbed 2 words at a time on a Sparc.
4033
4034 Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
4035
4036         * method.c (hack_identifier): Requiring a static chain is now a
4037         hard error.
4038         * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
4039         functions.
4040
4041 Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
4042
4043         * init.c (build_offset_ref): Call complete_type.
4044
4045         * decl.c (pop_from_top_level): Always pop previous_class_type.
4046
4047         * parse.y: Handle multiple decls in a for-init-statement.
4048         * pt.c (tsubst_expr): Likewise.
4049
4050         * pt.c (tsubst): Use tsubst_expr for the second operand of an
4051         ARRAY_REF.
4052
4053         * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
4054         (poplevel_class): Set it here.
4055         (pop_from_top_level): Pop it here if we're returning to class scope.
4056         * class.c (pushclass): Don't set it here.
4057
4058         * decl.c (maybe_push_to_top_level): Save current_template_parms,
4059         and clear it if !pseudo.
4060         (pop_from_top_level): Restore it.
4061
4062         * decl2.c (finish_file): Push the dummy each time we walk the list
4063         of vtables.
4064
4065         * error.c (dump_expr): Support LOOKUP_EXPR and actually do
4066         something for CAST_EXPR.
4067         
4068 Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
4069
4070         * cvt.c (cp_convert): Warn about implicit conversion of the
4071         address of a function to bool, as it is always true.
4072
4073 Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
4074
4075         * typeck.c (c_expand_return): Fix warning for local externs returned.
4076
4077 Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
4078
4079         * tree.c (mapcar): Propagate const and volatile properly.
4080
4081         * typeck.c (complete_type): Be sure to instantiate the
4082         MAIN_VARIANT of the type.
4083
4084         * method.c (synthesize_method): Class interface hackery does not
4085         apply to synthesized methods.
4086
4087 Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
4088
4089         * pt.c (comp_template_args): Use comptypes rather than just
4090         checking for TEMPLATE_TYPE_PARM equivalence.
4091
4092         * typeck.c (build_x_function_call): Call complete_type before
4093         checking TYPE_OVERLOADS_CALL_EXPR.
4094
4095 Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
4096
4097         * g++.c (main): Check also for new define ALT_LIBM.
4098
4099 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
4100
4101         * pt.c (instantiate_class_template): If we don't have a pattern
4102         yet, that's OK.
4103         (coerce_template_parms): If we see a local class, bail.
4104
4105         * decl.c (grok_reference_init): Make sure there's a type before
4106         checking its code.
4107
4108         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
4109         (push_template_decl): Likewise.
4110
4111         * parse.y (named_class_head): Set
4112         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
4113
4114         * decl.c (xref_tag): Diagnose redeclaration of template
4115         type-parameter name.
4116
4117         * error.c (dump_type): Handle anonymous template type parms.
4118
4119         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
4120         TYPE_STUB_DECL.
4121         (coerce_template_parms): Likewise.
4122
4123 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
4124
4125         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
4126         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
4127
4128 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
4129
4130         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
4131         before trying to get its STUB_DECL.
4132         (coerce_template_parms): Likewise.
4133
4134         * parse.y (template_type_parm): If they didn't use 'class',
4135         pretend they did after giving an error.
4136
4137         * pt.c (coerce_template_parms): Diagnose use of local class.
4138
4139         * decl.c (grok_reference_init): Use instantiate_type.
4140
4141         * error.c (dump_expr): Handle TEMPLATE_DECLs.
4142
4143         * parse.y (named_class_head): Diagnose mismatching types and tags.
4144
4145         * decl.c (pushdecl): Type decls and class templates clash with
4146         artificial type decls, not hide them.
4147
4148         * decl.c (redeclaration_error_message): Diagnose redefinition of
4149         templates properly.
4150         (duplicate_decls): Diagnose disallowed overloads for template
4151         functions, too.
4152
4153         * decl.c (start_decl): Call complete_type before checking for a
4154         destructor.
4155
4156         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
4157
4158         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
4159
4160 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
4161
4162         * decl.c (grok_op_properties): Don't check for operator++(int) in
4163         a template.
4164
4165         * tree.c (perm_manip): Return a copy of variable and function
4166         decls with external linkage.
4167
4168         * tree.def: Change some of the min tree codes to type "1".
4169         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
4170         * method.c (build_overload_int): Emit something arbitrary for
4171         anything but an INTEGER_CST if we're in a template.
4172
4173         * decl.c (cp_finish_decl): Call complete_type before deciding
4174         whether or not to lay out the decl.
4175
4176         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
4177
4178 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
4179
4180         * typeck2.c (build_x_arrow): Call complete_type.
4181
4182         * pt.c (add_pending_template): Broken out.
4183         (lookup_template_class): If -fexternal-templates, call it for all
4184         the methods of implemented types.
4185         (instantiate_class_template): Instead of instantiating them here.
4186         (instantiate_decl): Handle -fexternal-templates earlier.
4187
4188 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4189
4190         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
4191         memoized lookup stuff inside GATHER_STATISTICS.
4192
4193 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
4194
4195         * decl.c (start_decl): Complain about array of incomplete type
4196         here.
4197         (grokdeclarator): Not here.
4198
4199         * parse.y (template_parm): Expand full_parm inline so we can set
4200         the rule's precedence.
4201
4202         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
4203         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
4204         * decl2.c (grokbitfield): Don't check for integer constant here.
4205         * class.c (finish_struct_1): Check here.
4206
4207         * decl.c (define_label): Make the min decl go on permanent_obstack.
4208
4209         * pt.c (unify): Don't handle CONST_DECLs.
4210         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
4211         (tsubst_copy): Likewise.
4212
4213         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
4214         CONST_DECL for a template parm.
4215
4216 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
4217
4218         * decl.c (grokdeclarator): Complain about array of incomplete type
4219         here.
4220         (start_decl_1): Not here.
4221
4222         * pt.c (tsubst): Handle pointer-to-function declarators.
4223
4224         * method.c (hack_identifier): If pedantic, diagnose local class
4225         methods that require a static chain.
4226
4227         * decl.c (grok_op_properties): No longer static.
4228         * cp-tree.h: Declare it.
4229         * pt.c (tsubst): Call it for operators.
4230         Use tsubst_copy for TREE_VECs.
4231
4232         * parse.y (template_arg): The expr has precedence like '>'.
4233
4234 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
4235
4236         * pt.c (coerce_template_parms): Don't coerce an expression using
4237         template parms.
4238         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
4239         (tsubst): Don't use build_index_2_type if the max_value uses template
4240         parms.
4241         * method.c (build_overload_int): Emit something arbitrary for an
4242         expression using template parms.
4243
4244         * parse.y (template_close_bracket): New non-terminal to catch use
4245         of '>>' instead of '> >' in template class names.
4246         (template_type): Use it.
4247         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
4248
4249         * tree.def: Add CAST_EXPR.
4250         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
4251         CONVERT_EXPR for minimal_parse_mode.
4252         * typeck.c (build_c_cast): Likewise.
4253         * pt.c (tsubst_copy): Likewise.
4254         * decl2.c (build_expr_from_tree): Likewise.
4255         * error.c (dump_expr): Likewise.
4256
4257 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4258
4259         * except.c (SetTerminate, SetUnexpected): Put back global vars.
4260         (init_exception_processing): Put back decl/init of
4261         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
4262         fns from libstdc++.
4263
4264         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
4265         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
4266         Delete unused fns.
4267         * cp-tree.h (declare_uninstantiated_type_level,
4268         uninstantiated_type_level_p): Delete prototypes.
4269
4270 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
4271
4272         * pt.c (tsubst_expr): Add default return.
4273
4274 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4275
4276         * error.c (fndecl_as_string): Delete unused arg CNAME.
4277         * sig.c (build_signature_table_constructor,
4278         build_signature_method_call): Fix calls.
4279
4280         * class.c (the_null_vtable_entry): Delete var definition.
4281         (init_class_processing): Delete tree the_null_vtable_entry init.
4282         * decl.c (no_print_{functions, builtins}): Declare as static.
4283         (__tp_desc_type_node): #if 0 var definition.
4284         (init_type_desc): #if 0 init of __tp_desc_type_node.
4285         (vb_off_identifier): Move var decl into init_decl_processing.
4286         (current_function_assigns_this): Declare as static.
4287         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
4288         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
4289         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
4290         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
4291         * init.c (BI_header_type, BI_header_size): Declare as static.
4292         * pt.c (template_classes): Delete unused var.
4293         (add_pending_template): Delete decl for non-existent fn.
4294         (lookup_template_class): Delete vars CODE and TAG_CODE.
4295         (instantiate_template): Delete unused var TARGS.
4296         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
4297         Delete decls.
4298         (__tp_desc_type_node): #if 0 var decl.
4299         (fndecl_as_string): Fix prototype.
4300
4301 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
4302
4303         * tree.def: Add GOTO_STMT.
4304         * pt.c (tsubst_expr): Support goto and labels.
4305         * decl.c (define_label): Support minimal parsing.
4306         * parse.y (simple_stmt): Likewise.
4307
4308 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4309
4310         * xref.c (GNU_xref_member): Only define/set var I if
4311         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
4312         used.
4313         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
4314         (GNU_xref_end): Fix call.
4315         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
4316         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
4317
4318         * tree.c (build_exception_variant): Delete unused vars I, A, T,
4319         T2, and CNAME.
4320         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
4321         (mapcar): Delete unused var CODE.
4322         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
4323         (break_out_cleanups): Fix call.
4324         (bot_manip): Likewise.
4325         * call.c (build_method_call): Likewise.
4326         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
4327         Likewise.
4328         * typeck.c (unary_complex_lvalue, build_modify_expr,
4329         convert_for_initialization): Likewise.
4330         * typeck2.c (build_functional_cast): Likewise.
4331         * cp-tree.h (build_cplus_new): Fix prototype.
4332
4333         * repo.c (open_repo_file): Delete unused var Q.
4334         (repo_compile_flags, repo_template_declared,
4335         repo_template_defined, repo_class_defined, repo_inline_used,
4336         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
4337         (repo_get_id, repo_vtable_used): Declare as static. 
4338         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
4339         prototypes.
4340
4341 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
4342
4343         * parse.y (pending_inlines): Add function_try_block case.
4344
4345         * pt.c (unify): Fix for template const parms.
4346
4347 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4348
4349         * lex.c (extract_interface_info): Delete forward decl.
4350         (default_copy_constructor_body, default_assign_ref_body): Delete
4351         decls for non-existent functions.
4352         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
4353         (init_lex): Delete setting them.
4354         (cons_up_default_function): Delete unused vars FUNC_BUF,
4355         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
4356         #if 0'd synth code.
4357         (toplevel, expression_obstack): Delete unused extern decls.
4358         (tree_node_kind): Delete unused enum.
4359         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
4360         GATHER_STATISTICS.
4361         (tree_node_kind_names): Delete unused extern decl.
4362         (synth_obstack): Delete unused var.
4363         (init_lex): Don't set it.
4364         (init_parse): Add decl before use.
4365         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
4366         (current_unit_{name, language}): Delete unused vars. 
4367         (check_newline): Don't bother setting them, just accept the #pragma.
4368         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
4369         (current_unit_{name, language}): Delete decls.
4370
4371         * search.c: Wrap all of the memoized functions, macros, and
4372         variables inside #ifdef GATHER_STATISTICS.
4373         (lookup_field, lookup_fnfields): Likewise.
4374         (init_search_processing): Likewise.
4375         (reinit_search_statistics): Wrap whole function.
4376         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
4377
4378         * decl.c (finish_function): Only call pop_memoized_context if
4379         GATHER_STATISTICS is defined.
4380         (start_function): Likewise for push_memoized_context.
4381         * class.c (pushclass, popclass): Likewise.
4382
4383         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
4384         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
4385
4386         * cvt.c (cp_convert): Delete unused local var FORM.
4387         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
4388         prototypes.
4389
4390 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
4391
4392         * pt.c (do_poplevel): Oops; really return what we get from
4393         poplevel this time.
4394
4395 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4396
4397         * cp-tree.h (is_aggr_type): Add prototype.
4398
4399         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
4400         * method.c ({push,pop}_cp_function_context): Delete decls.
4401         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
4402         (SetUnexpected, SetTerminate): Delete unused vars.
4403         (init_exception_processing): Don't set SetUnexpected or
4404         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
4405         (output_exception_table_entry): Delete unused array LABEL.
4406         (expand_internal_throw): Delete unused var PARAMS.
4407         (expand_start_catch_block): Delete unused var CLEANUP.
4408         (emit_exception_table): Delete unused var EH_NODE_DECL.
4409         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
4410         GOTO_UNWIND_AND_THROW.  Don't set them.
4411         (end_eh_unwinder): Add top decl.
4412         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
4413         (exception_section, push_rtl_perm, do_function_call,
4414         lang_interim_eh, push_eh_cleanup, eh_outer_context,
4415         expand_end_eh_spec, end_eh_unwinder): Declare as static.
4416         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
4417         throw_used): Likewise.
4418         * cp-tree.h (expand_end_eh_spec): Delete prototype.
4419
4420         * search.c (dfs_mark, dfs_mark_vtable_path,
4421         dfs_unmark_vtable_path, dfs_mark_new_vtable,
4422         dfs_unmark_new_vtable, dfs_clear_search_slot,
4423         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
4424         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
4425         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
4426         functions.
4427         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
4428         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
4429         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
4430         Only define #ifdef GATHER_STATISTICS.
4431         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
4432         is defined.
4433         (vbase_decl): Delete var definition.
4434         (init_search): Delete old decl.
4435         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
4436         never actually used.
4437         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
4438         (get_base_distance_recursive): Delete unused fourth arg
4439         BASETYPE_PATH.  Fix call .
4440         (get_base_distance): Fix call.
4441         (push_class_decls): Delete unused var ID.
4442         (make_memoized_table_entry): Declare as static.
4443         (breadth_first_search): Declare as static.
4444         (tree_has_any_destructor_p): Declare as static.
4445         (pop_class_decls): Delete unused arg pop_class_decls.
4446         * class.c (popclass): Fix call to pop_class_decls.
4447         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
4448         tree_has_any_destructor_p): Delete prototypes.
4449
4450         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
4451         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
4452         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
4453         (build_user_desc): Delete unused var T.
4454         (build_class_desc): Delete unused vars T and OFF.
4455         (build_t_desc): Delete unused var NAME_STRING.
4456         (build_headof): Make static.
4457         (get_bad_cast_node): Likewise.
4458         (get_def_to_follow): Likewise.
4459         * cp-tree.h (init_type_desc): Add prototype.
4460         (build_headof): Remove prototype.
4461
4462 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
4463
4464         * pt.c (tsubst): Only look for matching decls at file scope for
4465         non-member functions.
4466
4467         * call.c (build_scoped_method_call): Handle scoped destructor
4468         calls in templates.
4469
4470         * decl.c (*_top_level): Also save previous_class_values.
4471
4472         * pt.c (tsubst_expr): Support do {} while loops.
4473         * parse.y (simple_stmt): Likewise.
4474         * tree.def: Likewise.
4475
4476         * method.c (build_overload_identifier): For a class nested in a
4477         template class, don't mangle in the template parms from our
4478         context.
4479
4480         * lex.c, cp-tree.h: Remove support for template instantiations in
4481         the pending_inlines code.
4482         * pt.c: Remove dead functions and unused arguments.
4483         (uses_template_parms): TYPENAME_TYPEs always use template parms.
4484         * parse.y: Stop passing anything to end_template_decl.
4485         * tree.c (print_lang_statistics): Only print tinst info #ifdef
4486         GATHER_STATISTICS.
4487
4488 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4489
4490         * init.c (expand_recursive_init{,_1}): Delete decls. 
4491         (sort_member_init): Delete unused var INIT.
4492         (emit_base_init): Delete unused var X.
4493         (build_offset_ref): Delete unused var CNAME.
4494         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
4495         (emit_base_init): Delete unused local var BASE.  Delete extern
4496         decl of IN_CHARGE_IDENTIFIER.
4497         (build_delete): Delete unused local var VIRTUAL_SIZE.
4498
4499         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
4500         (build_delete): Fix call.
4501         * decl2.c (delete_sanity): Likewise.
4502         * cp-tree.h (build_vec_delete): Update prototype.
4503
4504         * typeck.c (common_base_type): Delete unused var TMP.
4505         (build_binary_op): Delete local var ARGS_SAVE.
4506         (build_array_ref): Delete unused var ITYPE.
4507         (c_expand_return): Delete unused var USE_TEMP.
4508
4509         * typeck.c (compexcepttypes): Delete unused arg STRICT.
4510         (comptypes): Fix calls.
4511         * decl.c (duplicate_decls): Likewise.
4512         * cp-tree.h (compexcepttypes): Delete extra arg.
4513
4514         * decl2.c (check_classfn): Delete unused second arg CNAME.
4515         * decl.c (start_decl, grokfndecl): Fix calls.
4516         * init.c (do_friend): Likewise.
4517         * cp-tree.h (check_classfn): Update prototype.
4518
4519         * cp-tree.h (signature_error, import_export_vtable,
4520         append_signature_fields, id_in_current_class, mark_used,
4521         copy_assignment_arg_p): Add decls.
4522         * decl2.c (mark_used): Delete decl.
4523
4524         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
4525
4526         * class.c (get_vtable_entry): Diable unused function.
4527         (doing_hard_virtuals): Delete unused static global var.
4528         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
4529         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
4530         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
4531         (modify_one_vtable): Delete unused var OLD_RTTI.
4532         (finish_struct_anon): Delete unused vars OFFSET and X.
4533         (finish_struct_bits): Delete unused var METHOD_VEC.
4534         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
4535         for-scope local variable METHODS.
4536
4537         * call.c (user_harshness): Delete unused/unneeded arg PARM.
4538         (ideal_candidate): Delete unused args BASETYPE and PARMS.
4539         (build_method_call): Delete unused args passed into ideal_candidate.
4540         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
4541         * cp-tree.h (synthesize_method): Add decl.
4542
4543         * decl.c (note_level_for_for): Give void return type.
4544         (pushdecl_nonclass_level): Likewise.
4545         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
4546         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
4547         (suspend_binding_level): Delete unused var LEVEL.
4548         (duplicate_decls): Delete unused var CTYPE.
4549         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
4550         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
4551         PTR_ENDLINK.
4552         (grokdeclarator): Delete unused var C.
4553         (grokdeclarator): Delete unused var SIZE_VARIES.
4554         (grokparms): Delete unused var SAW_VOID.
4555         (start_function): Delete unused var OLDDECL.
4556         (cplus_expand_expr_stmt): Delete unused var
4557         REMOVE_IMPLICIT_IMMEDIATELY. 
4558
4559         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
4560
4561         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
4562
4563 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
4564
4565         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
4566         (build_min_nt): Likewise.
4567         * pt.c (do_pushlevel): Emit line note.
4568         (do_poplevel): Return what we get from poplevel.
4569         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
4570         * parse.y: Use do_pushlevel and do_poplevel.
4571         * cp-tree.h: Declare do_poplevel.
4572         
4573         * cp-tree.h: Declare at_eof.
4574         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
4575         * decl2.c (import_export_decl): Renamed from import_export_inline.
4576         (finish_file): Call it to do interface handling for statics.
4577         * pt.c (tsubst_copy): Call mark_used on variables and functions
4578         used here.
4579
4580         * decl2.c (finish_file): Don't emit statics we can't generate.
4581         * pt.c (instantiate_decl): Don't set interface on instantiations
4582         we can't generate.
4583
4584         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
4585         * tree.c (print_lang_statistics): Print max template depth.
4586         * pt.c (push_tinst_level): Dump entire instantiation context.
4587         (instantiate_class_template): Use it and pop_tinst_level.
4588         (instantiate_decl): Likewise.
4589
4590         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
4591         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
4592
4593 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
4594
4595         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
4596         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
4597         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
4598         the new template implementation.
4599
4600 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4601
4602         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
4603
4604 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
4605
4606         * decl.c (cp_finish_decl): Delay emitting the debug information for
4607         a typedef that has been installed as the canonical typedef, if the
4608         type has not yet been defined.
4609
4610 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
4611
4612         * decl2.c (grokfield): Still call pop_nested_class for access decls.
4613
4614 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4615
4616         * decl.c (lookup_label): Call label_rtx.
4617
4618         * decl.c (make_binding_level): New function.
4619         (pushlevel, pushlevel_class): Call it instead of explicit
4620         duplicate calls to xmalloc.
4621
4622         * decl.c (init_decl_processing): Delete useless build_pointer_type
4623         call.
4624
4625         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
4626         (sizet_ftype_string): Delete variable.
4627         (init_decl_processing): Add built-in functions fabsf, fabsl,
4628         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
4629         variable strlen_ftype, used for strlen.
4630
4631 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
4632
4633         * decl.c (push_to_top_level): Start from current_binding_level
4634         again for now; the stl hacks depend on g++ being broken in this
4635         way, and it'll be fixed in the template rewrite.
4636
4637         * tree.def: Add USING_DECL.
4638         * decl2.c (do_class_using_decl): Implement.
4639         (grokfield): Pass access decls off to do_class_using_decl instead of
4640         grokdeclarator.
4641         * error.c (dump_decl): Handle USING_DECLs.
4642         * decl.c (grokdeclarator): Remove code for handling access decls.
4643         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
4644         as access decls for now.
4645         (finish_struct): Don't check USING_DECLs for other uses of the name.
4646
4647         * search.c (get_matching_virtual): Use cp_error_at.
4648
4649 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4650
4651         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
4652         match c-typeck.c.
4653         (self_promoting_args_p): Move the check that TYPE is non-nil
4654         before trying to look at its main variant.
4655         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
4656
4657         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
4658         Delete macros.
4659         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
4660         (do_friend): Delete call to xref_friend.
4661         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
4662
4663         * typeck.c (convert_sequence): #if 0 unused function.
4664
4665         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
4666         be in decl_in_memory_p.
4667         (decl_in_memory_p): Delete decl.
4668         * expr.c (decl_in_memory_p): Delete fn.
4669         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
4670
4671         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
4672
4673 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
4674
4675         * class.c (finish_struct_1): Check for a pure-specifier on a
4676         non-virtual function here.
4677
4678         * decl2.c (grok_function_init): Don't check whether the function
4679         is virtual here.
4680         (grokfield): Don't call check_for_override here.
4681
4682         * decl.c (push_to_top_level): Start from inner_binding_level,
4683         check class_shadowed in class levels.
4684
4685 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
4686
4687         * decl.c (resume_level): Ignore things that don't have names, instead
4688         of core dumping.
4689
4690 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4691
4692         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
4693
4694 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
4695
4696         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
4697         synthesized dtor.
4698
4699         * parse.y (complete_type_name): Bind global_scope earlier.
4700         (complex_type_name): Likewise.
4701         (qualified_type_name): Remove.
4702
4703 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
4704
4705         * decl.c (grokfndecl): Move code that looks for virtuals in base
4706         classes...
4707         * class.c (check_for_override): ... to a new function.
4708         (finish_struct_1): Call it.
4709
4710         * cp-tree.h: Declare warn_sign_compare.
4711
4712         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
4713         rather than extra_warnings to decide whether to warn about
4714         comparison of signed and unsigned.
4715
4716         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
4717         implies -Wsign-compare.  -Wall doesn't imply -W.
4718
4719 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
4720
4721         * typeck.c (build_component_ref): Fix to handle anon unions in base
4722         classes as well.
4723
4724 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4725
4726         * class.c (resolves_to_fixed_type_p): Delete code dealing with
4727         a WITH_CLEANUP_EXPR, since we don't generate them any more.
4728         * cvt.c (build_up_reference): Likewise.
4729         * decl.c (grok_reference_init): Likewise.
4730         (cp_finish_decl): Likewise.
4731         * error.c (dump_expr): Likewise.
4732         * tree.c (real_lvalue_p): Likewise.
4733         (lvalue_p): Likewise.
4734         (build_cplus_new): Likewise.
4735         (unsave_expr_now): Likewise.
4736         * typeck.c (unary_complex_lvalue, build_modify_expr,
4737         c_expand_return): Likewise.
4738
4739 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4740
4741         Make the C++ front-end pay attention to attributes for structures.
4742         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
4743         finish_struct_1.
4744         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
4745         Take out old round_up_size use and setting the DECL_ALIGN possibly
4746         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
4747         can override what the attribute set.
4748         * cp-tree.h (finish_struct): Update prototype.
4749         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
4750         attributes to finish_struct.
4751         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
4752         value down into finish_struct.
4753         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
4754
4755 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
4756
4757         * decl.c (poplevel):  Re-word dead for local handling.
4758         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
4759         (cp_finish_decl):  If is_for_scope, check for duplicates so
4760         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
4761
4762         * lex.c (do_identifier):  Use global binding in preference of
4763         dead for local variable.
4764
4765 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
4766
4767         * init.c (initializing_context): Handle anon union changes, the
4768         context where fields of anon unions can be initialized now has to be
4769         found by walking up the TYPE_CONTEXT chain.
4770
4771 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
4772
4773         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
4774         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
4775         (obscure_complex_init): If bss is supported, always set
4776         DECL_INITIAL to error_mark_node.
4777
4778 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4779
4780         * init.c (is_friend): Make sure there's a context before we see if
4781         it's an aggr type.
4782
4783 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
4784
4785         * init.c (is_friend): Classes are not friendly with nested classes.
4786
4787 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
4788
4789         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
4790         and record its result.
4791
4792 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
4793
4794         * class.c (finish_struct_anon): Switch around code to not move anon
4795         union elements around, nor mess up their contexts, nor offsets,
4796         instead we now build up the right number of COMPONENT_REFs for all
4797         the anon unions that may be present at build_component_ref time.
4798         * typeck.c (lookup_anon_field): New routine to handle field lookup
4799         on fields without names.  We find them, based upon their unique type
4800         instead.
4801         * typeck.c (build_component_ref): Allow FIELD_DECL components.
4802         Handle finding components in anonymous unions, and ensure that a
4803         COMPONENT_REF is built for each level as necessary.
4804
4805 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
4806
4807         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
4808         code that ensures that copy ctors are used if appropriate.
4809
4810 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4811
4812         * init.c (build_vec_delete): Only give an error if base isn't an
4813         error_mark_node.
4814
4815 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
4816
4817         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
4818         (yylex): If we see `new', keep slurping.
4819
4820 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
4821
4822         * class.c (finish_struct_1): Move code for handling anon unions...
4823         (finish_struct_anon): to here.  Fixup so that we do the offset
4824         calculations right, and so that the fields are physically moved to
4825         the containers's chain.
4826
4827 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4828
4829         * decl.c (grokdeclarator): Avoid trying to get an operand off an
4830         identifier node.
4831
4832 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
4833
4834         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
4835         POINTER_SIZE to agree with expr.c.
4836
4837 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
4838
4839         * search.c (lookup_field): Don't report ambiguities if protect is 0,
4840         instead return NULL_TREE.
4841
4842 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
4843
4844         * class.c (finish_struct_1): Call warn_hidden if we want warnings
4845         about overloaded virtual functions.
4846         (warn_hidden): New routine to warn of virtual functions that are
4847         hidden by other virtual functions, that are not overridden.
4848         (get_basefndecls): New routine, used by warn_hidden.
4849         (mark_overriders): New routine, used by warn_hidden.
4850         * search.c (get_matching_virtual): Remove old warning that just
4851         isn't very useful.
4852
4853 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4854
4855         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
4856
4857         * typeck.c (null_ptr_cst_p): Delete unused fn.
4858         (build_function_call_maybe): Delete unused fn.
4859
4860         * expr.c (extract_init): #if 0 the code after unconditional return 0
4861         for now.
4862
4863         Delete old cadillac code.
4864         * edsel.c: Remove file.
4865         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
4866         * Makefile.in (CXX_OBJS): Delete edsel.o.
4867         (edsel.o): Delete rule.
4868         * cp-tree.h (flag_cadillac): Delete var decl.
4869         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
4870         * decl2.c (flag_cadillac): Delete var definition.
4871         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
4872         (grokfield): Delete code depending on flag_cadillac.
4873         (finish_anon_union): Likewise.
4874         * class.c (finish_struct_1): Likewise.
4875         (pushclass): Likewise.
4876         (popclass): Likewise.
4877         (push_lang_context): Likewise.
4878         (pop_lang_context): Likewise.
4879         * decl.c (init_decl_processing): Likewise.
4880         (start_decl): Likewise.
4881         (cp_finish_decl): Likewise.
4882         (xref_tag): Likewise.
4883         (finish_enum): Likewise.
4884         (start_function): Likewise.
4885         (finish_function): Likewise.
4886         (finish_stmt): Likewise.
4887         * lex.c (lang_init): Likewise.
4888         (check_newline): Likewise.
4889
4890         * lex.c (do_pending_inlines): Delete synthesized method kludge.
4891
4892         Delete defunct, ancient garbage collection implementation.
4893         * rtti.c: New file with the RTTI stuff from gc.c.
4894         * gc.c: Removed file (moved the remaining stuff into rtti.c).
4895         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
4896         (rtti.o): New rule, replacing gc.o.
4897         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
4898         * cp-tree.h: Delete gc-related fn decls.
4899         (DECL_GC_OFFSET): Delete macro.
4900         (flag_gc): Delete extern decl.
4901         * decl.c (current_function_obstack_index): Delete var decl.
4902         (current_function_obstack_usage): Delete var decl.
4903         (start_function): Delete clearing of current_function_obstack_index
4904         and current_function_obstack_usage.
4905         (init_decl_processing): Delete code relying on -fgc.
4906         Delete call to init_gc_processing.
4907         (cp_finish_decl): Delete calls to build_static_gc_entry and
4908         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
4909         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
4910         and to expand_expr of a __gc_main call.
4911         (maybe_gc_cleanup): Delete var decl.
4912         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
4913         * decl2.c (flag_gc): Delete var decl.
4914         (lang_f_options): Delete offering of -fgc.
4915         (lang_decode_option): Delete -fgc and -fno-gc handling.
4916         (get_temp_regvar): Delete gc code.
4917         * init.c (build_new): Delete gc code.
4918         * lex.c (init_lex): Delete checking of flag_gc.
4919
4920         * typeck.c (convert_arguments): Delete gc code.
4921         (build_component_addr): Delete -fgc warning.
4922         (build_modify_expr): Delete gc code.
4923
4924         * decl2.c (build_push_scope): Delete fn.
4925         * cp-tree.h (build_push_scope): Delete decl.
4926
4927         * search.c (clear_search_slots): Delete fn.
4928         * cp-tree.h (clear_search_slots): Delete decl.
4929
4930         * search.c (tree_needs_constructor_p): Delete fn.
4931         * cp-tree.h (tree_needs_constructor_p): Delete decl.
4932
4933         * tree.c (id_cmp): Delete fn.
4934
4935         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
4936         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
4937
4938         * tree.c (decl_value_member): Delete fn.
4939         * cp-tree.h (decl_value_member): Delete decl.
4940
4941         * tree.c (list_hash_lookup_or_cons): Delete fn.
4942         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
4943
4944         * method.c (cplus_exception_name): Delete fn.
4945         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
4946
4947         * spew.c (shift_tokens): Delete fn.
4948
4949 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
4950
4951         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
4952         to cp_finish_decl.
4953         * parse.y: Likewise.
4954
4955 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4956
4957         * tree.c (build_cplus_staticfn_type): Delete function definition;
4958         never used.
4959         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
4960
4961         * tree.c (virtual_member): Delete function definition; never used.
4962         * cp-tree.h (virtual_member): Delete decl.
4963
4964 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
4965
4966         * typeck.c (build_component_ref): Handle getting vbase pointers
4967         out of complex multiple inheritance better.
4968
4969 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
4970
4971         * typeck.c (build_object_ref): Make sure we use the real type, not
4972         any reference type.
4973
4974 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
4975
4976         * tree.c (build_exception_variant): Don't create new types if we
4977         don't have to, also build new types on the right obstack.
4978
4979 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
4980
4981         * decl.c (store_bindings): Split out from push_to_top_level.
4982         (push_to_top_level): Call it for b->type_shadowed on class binding
4983         levels.
4984
4985 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
4986
4987         * search.c (expand_upcast_fixups): Fix so that offsets stored in
4988         vbase_offsets are always right.  Fixes a problem where virtual base
4989         upcasting and downcasting could be wrong during conversions on this
4990         during virtual function dispatch at ctor/dtor time when dynamic
4991         vtable fixups for deltas are needed.  This only sounds easier than
4992         it is.  :-)
4993         (fixup_virtual_upcast_offsets): Change to reflect new calling
4994         convention for expand_upcast_fixups.
4995
4996 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4997
4998         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
4999         check that it's usable as the bitfield width.
5000
5001 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5002
5003         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
5004         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
5005         only ever used for functions in it.
5006
5007 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
5008
5009         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
5010         (nested_type): Likewise.
5011         (nested_name_specifier): Use lastiddecl.
5012
5013         * decl.c (grokdeclarator): Adjust accordingly.
5014         * init.c (expand_member_init): Likewise.
5015         * parse.y (base_class): Likewise.
5016         * typeck2.c (build_functional_cast): Likewise.
5017
5018         * typeck2.c (build_functional_cast): Fill in name after we've
5019         checked for non-aggr type.
5020
5021 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
5022
5023         * decl2.c (warn_pointer_arith): Default to on.
5024
5025 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
5026
5027         * lex.c (is_rid): New function.
5028         * decl.c (grokdeclarator): Diagnose reserved words used as
5029         declarator-ids.
5030
5031 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
5032
5033         * tree.c (get_decl_list): Don't lose cv-quals.
5034
5035         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
5036         typespecs used as declarator-ids.
5037
5038 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
5039
5040         * decl.c (poplevel): When poping a level, don't give a warning for
5041         any subblocks that already exist.
5042
5043 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
5044
5045         * typeck.c (build_object_ref): Finish what I started.
5046
5047         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
5048
5049         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
5050
5051         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
5052         scope.
5053
5054 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
5055
5056         * decl.c (xref_tag): Handle passing a type in directly.
5057
5058         * parse.y (qualified_type_name): Pull out the type.
5059         (nested_type): Likewise.
5060         Take types directly instead of as identifiers.
5061         * call.c (build_scoped_method_call): Take types directly instead of
5062         as identifiers.
5063         * decl.c (xref_basetypes): Likewise.
5064         * init.c (expand_member_init): Likewise.
5065         (build_member_call): Likewise.
5066         (build_offset_ref): Likewise.
5067         * typeck2.c (build_scoped_ref): Likewise, remove bogus code.
5068         * method.c (do_build_assign_ref): Likewise.
5069         * decl.c (grokdeclarator): Handle a type appearing as the
5070         declarator-id for constructors.
5071         * method.c (do_build_copy_constructor): current_base_init_list now
5072         uses the types directly, not their names.
5073         * init.c (sort_base_init): Likewise.
5074         (expand_member_init): Likewise.
5075         * init.c (is_aggr_type): New function, like is_aggr_typedef.
5076
5077 Mon Jan 15 08:45:01 1996  Jeffrey A Law  <law@cygnus.com>
5078
5079         * tree.c (layout_basetypes): Call build_lang_field_decl instead
5080         of build_lang_decl if first arg is a FIELD_DECL.
5081
5082 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5083
5084         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
5085         non-empty.
5086         * except.c (expand_start_catch_block): Set TREE_USED to avoid
5087         warnings about the catch handler.
5088
5089 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
5090
5091         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
5092         expand_target_expr.
5093
5094 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5095
5096         Fix access control to use trees rather than integers.
5097         * class.c (access_{default, public, protected, private,
5098         default_virtual, public_virtual, private_virtual}_node): Add
5099         definitions.
5100         (init_class_processing): Do creation of those nodes.
5101         * cp-tree.h (access_type): Delete enum decl.
5102         (access_{default, public, protected, private, default_virtual,
5103         public_virtual, private_virtual}_node): Add decls.
5104         (compute_access): Change return type.
5105         * search.c (compute_access): Have tree return type, instead of enum.
5106         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
5107         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
5108         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
5109         * parse.y (VISSPEC): Make ttype rather than itype.
5110         (base_class_access_list): Likewise.
5111         * *.[cy]: Change all refs of `access_public' to `access_public_node',
5112         etc.
5113         * call.c (build_method_call): Make ACCESS be a tree.
5114         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
5115         * cvt.c (convert_to_aggr): Likewise.
5116         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
5117         Likewise.
5118         * method.c (hack_identifier): Likewise.
5119         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
5120
5121 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
5122
5123         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
5124         frontend, and make it more consistent with respect to
5125         warn_pointer_arith.
5126
5127 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
5128
5129         * decl.c (pushdecl): Check for duplicate parameter names.
5130
5131 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
5132
5133         * decl.c (expand_static_init): Call assemble_external for atexit.
5134
5135 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
5136
5137         * except.c (do_unwind): Remove some generated dead code.
5138         (eh_outer_context): New routine, factor out some common code from
5139         expand_builtin_throw and end_eh_unwinder.  Add code to do return
5140         address masking for the PA.
5141         (expand_builtin_throw): Use eh_outer_context instead of open coding
5142         it here.
5143         (end_eh_unwinder): Likewise.
5144
5145 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
5146
5147         * except.c (expand_throw): Call assemble_external for __empty, if we
5148         use it.
5149
5150 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
5151
5152         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
5153         NORMAL_RETURN_ADDR_OFFSET.
5154         (end_eh_unwinder): Likewise.
5155
5156 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
5157
5158         * gc.c (build_dynamic_cast): Make sure we don't cast away const
5159         when dealing with references, and make sure we handle dynamic
5160         casting to a cv qualified reference.
5161
5162 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
5163
5164         * except.c (struct eh_context): New structure top hold eh context
5165         information.
5166         (push_eh_context): New routine.
5167         (pop_eh_context): Likewise.
5168         * decl.c (push_cp_function_context): Use them.
5169         (pop_cp_function_context): Likewise.
5170
5171 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
5172
5173         * decl2.c (finish_file): Also prune uninteresting functions in the
5174         inline emission loop.
5175
5176 Wed Dec 20 02:32:07 1995  Jeffrey A Law  <law@cygnus.com>
5177
5178         * sig.c (build_signature_table_constructor): Mark functions
5179         in the signature as referenced.
5180
5181 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
5182
5183         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
5184         the inline emission stuff.
5185
5186 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
5187
5188         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
5189         weak symbols.   
5190         * lang-options.h: Add -f{no-,}weak.
5191         * decl.c (init_decl_processing): If the target does not support weak
5192         symbols, don't use them.
5193         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
5194
5195 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
5196
5197         * init.c (expand_member_init): warning for base init after members.
5198
5199 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
5200
5201         * cvt.c (build_expr_type_conversion): Don't convert to a reference
5202         type.
5203
5204 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
5205
5206         * method.c (report_type_mismatch): Improve wording for volatile
5207         mismatches.
5208
5209 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
5210
5211         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
5212         expand_assignment, as the later doesn't handle things that have
5213         copy constructors well.  The compiler would do bitwise copying,
5214         instead of ctor calling in some cases.
5215
5216 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
5217
5218         * g++.c (my_strerror): Return "cannot access" if errno is 0.
5219         (pfatal_with_name, perror_exec): Don't assume that
5220         the returned value from my_strerror contains no '%'s.
5221         (concat): Remove.
5222         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
5223
5224 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
5225
5226         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
5227         TYPE_METHODS/TREE_CHAIN mean what they used to. 
5228         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
5229         instead of TYPE_METHODS.
5230         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
5231         * tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
5232         * cp-tree.h (CLASSTYPE_METHODS): Lose.
5233         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
5234         TYPE_METHODS.
5235         (struct lang_decl): Lose next_method field.
5236         (DECL_NEXT_METHOD): Lose.
5237         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
5238         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
5239         anymore.
5240         (finish_struct_methods): Don't mess with the TREE_CHAINs in
5241         fn_fields.
5242
5243         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
5244         vector.
5245
5246         * call.c (build_method_call): Synthesize here even when not inlining.
5247         * typeck.c (build_function_call_real): Likewise.
5248
5249 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
5250
5251         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
5252         == DBX_DEBUG, call dbxout_start_new_source_file and
5253         dbxout_resume_previous_source_file when appropriate.
5254
5255 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
5256
5257         * except.c (start_anon_func): Push to the top level.
5258         (end_anon_func): Pop from the top level.
5259
5260 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
5261
5262         * cp-tree.h (build_cleanup): New routine to build cleanups.
5263         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
5264         call at ctor time and use atexit to run it later.
5265         * decl2.c (build_cleanup): New routine, taken from finish_file.
5266         (finish_file): Use build_cleanup instead, and don't put function
5267         local statics in global dtor list.
5268         
5269 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
5270
5271         * except.c (expand_throw): Ensure that we have cleanups, if we try
5272         and expand cleanups.
5273
5274 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
5275
5276         * except.c (expand_throw): Add logic to manage dynamic cleanups for
5277         the EH object.
5278         (expand_end_catch_block): Use the magic of expand_goto, instead of
5279         emit_jump so that we get the cleanup for any catch clause parameter
5280         and the cleanup for the exception object.  Update to reflect label
5281         changes.
5282         (push_eh_cleanup): New routine to register a cleanup for an
5283         exception object.
5284         (empty_fndecl): Used to default cleanup actions to
5285         nothing.
5286         (init_exception_processing): Setup empty_fndecl.  Setup
5287         saved_cleanup.
5288         (expand_start_catch_block): Update to reflect label changes.  Call
5289         push_eh_object to register the cleanup for the EH object.
5290         (start_anon_func): New routine to start building lambda expressions
5291         from trees.
5292         (end_anon_func): New routine to end them.
5293         (struct labelNode): Change so that we can use tree labels, or rtx
5294         labels.
5295         (saved_cleanup): Object to check for dynamic cleanups for the
5296         exception handling object.
5297         (push_label_entry): Change so that we can use tree labels, or rtx
5298         labels.
5299         (pop_label_entry): Likewise.
5300         (top_label_entry): Likewise.
5301         (expand_start_all_catch): Use tree label instead of rtx label, so
5302         that we can get the magic of expand_goto.
5303         (expand_end_all_catch): Update to reflect label changes.
5304
5305         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
5306         use UNSAVE_EXPRs.
5307         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
5308         building_cleanup logic, as we now use UNSAVE_EXPRs.
5309         * cp-tree.h (unsave_expr): Declare it.
5310         * decl.c (building_cleanup): Remove.
5311         (maybe_build_cleanup): Remove building_cleanup logic, and use
5312         UNSAVE_EXPR instead.
5313
5314 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
5315
5316         * gc.c (build_t_desc): Update error message to say <typeinfo>.
5317
5318 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5319
5320         * decl.c (pushdecl): Only warn about shadowing a local variable if
5321         warn_shadow is true.
5322
5323 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
5324
5325         * typeck.c (build_binary_op_nodefault): Added warning about
5326         comparisons between different enum types with -Wall, unless
5327         -fenum-int-equiv set.
5328
5329 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
5330
5331         * class.c (finish_struct_1): Skip down to the inner type in
5332         multidimensional arrays.  Ensures ctors will be made for types that
5333         need constructing.
5334
5335 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
5336
5337         * decl.c (last_dtor_insn): New to track the last compiler generated
5338         insn in a dtor.
5339         (store_parm_decls): Set it.
5340         (finish_function): Use it to see if the dtor is empty.  Avoid doing
5341         vtable setup all the time, if we can.
5342         (struct cp_function): Add last_dtor_insn.
5343         (push_cp_function_context): Save it.
5344         (pop_cp_function_context): Restore it.
5345
5346 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
5347
5348         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
5349         warnings.
5350
5351 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
5352
5353         * typeck.c (expand_target_expr): Make sure targets get put into the
5354         current temp_slot_level, so that the free_temp_slots call will reuse
5355         them.
5356
5357 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
5358
5359         * class.c (finish_struct_1): Delay delta fixups for virtual bases
5360         until after we have done the hard virtuals, to avoid a bogus `every
5361         virtual function must have a unique final overrider' for virtual
5362         functions that are only overridden by hard virtuals.
5363
5364 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
5365
5366         * pt.c (do_function_instantiation): Don't try to find a file-scope
5367         template for a member function.
5368
5369 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
5370
5371         * g++.c (main): Add handling of -nodefaultlibs.
5372
5373 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
5374
5375         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
5376         distinguish between direct bindings of reference variables, and
5377         indirect bindings of reference variables.
5378         * cvt.c (build_up_reference): Use it.
5379         * typeck.c (convert_arguments): Use it to indicate this is an
5380         indirect binding.
5381         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
5382         as they are unused.
5383         (expand_static_init): Likewise.
5384         (cplus_expand_expr_stmt): Likewise.
5385         * decl2.c (finish_file): Likewise.
5386         * init.c (perform_member_init): Likewise.
5387         (emit_base_init): Likewise.
5388         (expand_aggr_vbase_init_1): Likewise.
5389
5390 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5391
5392         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
5393         get a DECL_LANG_SPECIFIC node.
5394         * cp-tree.h (lang_decl_flags): Add new member `level'.
5395         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
5396         decl_flags level member.
5397
5398 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5399
5400         * call.c (build_method_call): Make sure instance has a
5401         TYPE_LANG_SPECIFIC node before we dive into it.  
5402
5403 Sat Nov  4 20:01:52 1995  Jason Molenda  <crash@phydeaux.cygnus.com>
5404
5405         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
5406
5407 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
5408
5409         * decl.c (duplicate_decls): When smashing decls, smash staticness in
5410         the usual way.
5411
5412 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
5413
5414         * decl.c (poplevel): Handle the merging of subblocks of cleanups
5415         when finishing blocks that have already been created (usually due to
5416         the fixup goto code).  Fixes bad debugging information.
5417
5418 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
5419
5420         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
5421         that's not a list of overloaded functions.
5422
5423 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5424
5425         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
5426         before trying to use DECL_ABSTRACT_VIRTUAL_P.
5427
5428 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
5429
5430         * decl2.c (mark_used): New function for hooking into setting of
5431         TREE_USED on decls.
5432         * call.c (build_method_call): Use it.
5433         * class.c (instantiate_type): Likewise.
5434         * init.c (build_offset_ref): Likewise.  Don't call assemble_external
5435         for all like-named functions.
5436         * method.c (hack_identifier): Likewise.
5437         (emit_thunk): Don't call assemble_external.
5438         (make_thunk): Create thunk as a FUNCTION_DECL so that it
5439         gets the right mode and ENCODE_SECTION_INFO works.
5440         
5441         * parse.y: Use mark_used.  Pass operator names to do_identifier.
5442         * lex.c (do_identifier): Handle operator names.
5443
5444         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
5445
5446 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5447
5448         * errfn.c: Include stdio.h.
5449         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
5450
5451 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
5452
5453         * typeck2.c (digest_init): Always convert initializers to the
5454         right type.
5455
5456 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
5457
5458         * init.c (member_init_ok_or_else): Don't allow member initializers
5459         for indirect members, as it is invalid.
5460
5461 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5462
5463         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
5464
5465 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
5466
5467         * parse.y (for.init.statement): Catch compound statements inside for
5468         initializations, if we're being pedantic.
5469
5470 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
5471
5472         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
5473         looking for.
5474
5475 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
5476
5477         * error.c (dump_expr): Don't core dump when a boolean expression is
5478         used as a default argument.
5479
5480 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
5481
5482         * class.c (finish_struct_bits): Check aggregate_value_p instead of
5483         RETURN_IN_MEMORY.
5484
5485 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
5486
5487         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
5488         BLKmode type that would otherwise be returned in registers.
5489
5490 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5491
5492         * g++.c (WITHLIBC): New macro.
5493         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
5494         saw_libc and pass it at the end if it was set.
5495
5496 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5497
5498         * parse.y (fn.def1): Call split_specs_attrs in
5499         declmods notype_declarator case.
5500
5501 Sun Nov 26 14:47:42 1995  Richard Kenner  <kenner@mole.gnu.ai.mit.edu>
5502
5503         * Version 2.7.2 released.
5504
5505 Mon Nov 20 14:05:00 1995  Mike Stump  <mrs@cygnus.com>
5506
5507         * g++.c (pfatal_with_name): Add missing third argument to concat.
5508
5509 Thu Oct 26 13:59:54 1995  Mike Stump  <mrs@cygnus.com>
5510
5511         * init.c (expand_aggr_init): Handle cv qualifiers on the object's
5512         type.
5513
5514 Sat Nov 11 08:25:55 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5515
5516         * Version 2.7.1 released.
5517
5518 Thu Nov  2 17:02:47 1995  Jason Merrill  <jason@yorick.cygnus.com>
5519
5520         * call.c (convert_harshness): Handle references to arrays.
5521
5522 Fri Oct 27 14:20:21 1995  Jason Merrill  <jason@yorick.cygnus.com>
5523
5524         * typeck.c (comp_target_types): Check multi-level pointer
5525         conversions in both directions.
5526
5527 Tue Oct 17 21:39:05 1995  Jason Merrill  <jason@yorick.cygnus.com>
5528
5529         * parse.y (explicit_instantiation): Fix 'extern template' with no
5530         return type.
5531
5532 Mon Oct 16 14:35:20 1995  Jason Merrill  <jason@yorick.cygnus.com>
5533
5534         * parse.y (explicit_instantiation): Support automatic instantiation
5535         of constructors.
5536         (named_class_head_*): Support out-of-class definition of nested
5537         types.
5538
5539 Wed Oct 11 12:20:56 1995  Mike Stump  <mrs@cygnus.com>
5540
5541         * search.c (envelope_add_decl): New routine.  Fix so that
5542         methods are hidden in the same way that other members are.
5543         (dfs_pushdecls): Cleanup and move functionality out of line,
5544         into envelope_add_decl. 
5545
5546 Tue Oct 10 15:46:01 1995  Mike Stump  <mrs@cygnus.com>
5547
5548         * typeck.c (mark_addressable): Only call assemble_external if we
5549         have started the output file.
5550
5551 Tue Oct 10 11:27:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
5552
5553         * decl.c (start_function): Fix earlier cv-quals change.
5554
5555 Mon Oct  9 23:53:05 1995  Mike Stump  <mrs@cygnus.com>
5556
5557         * parse.y (complex_direct_notype_declarator): Only push the class if
5558         we are not already in the class.
5559
5560 Mon Oct  9 11:22:03 1995  Doug Evans  <dje@canuck.cygnus.com>
5561
5562         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
5563         Update olddecl's attributes too.
5564         (grokdeclarator): #if 0 out call to build_decl_attribute_variant.
5565         * typeck.c (common_type): Call merge_machine_type_attributes.
5566
5567 Fri Oct  6 14:44:27 1995  Mike Stump  <mrs@cygnus.com>
5568
5569         * typeck.c (mark_addressable): Add missing call to
5570         assemble_external.
5571
5572 Wed Oct  4 15:06:39 1995  Mike Stump  <mrs@cygnus.com>
5573
5574         * decl.c (store_parm_decls): Make sure the unwinder start comes
5575         before the exception specification start.
5576         * except.c (expand_exception_blocks): Make sure the unwinder end
5577         comes after the terminate protected catch clause region and after
5578         the end of the exception specification region.
5579
5580 Wed Oct  4 12:47:02 1995  Jason Merrill  <jason@yorick.cygnus.com>
5581
5582         * lex.c (real_yylex): Fix identifier case for linemode.
5583         (handle_sysv_pragma): Don't abort when we see a pragma we don't
5584         recognize.
5585
5586 Tue Oct  3 14:09:46 1995  Mike Stump  <mrs@cygnus.com>
5587
5588         * decl.c (store_parm_decls): Add a call to start_eh_unwinder.
5589         * except.c (init_exception_processing): __throw doesn't take any
5590         arguments.
5591         (expand_builtin_throw): Likewise.  Always use Pmode, instead of SImode
5592         for all pointers.  Use expand_builtin_return_addr to unwind the
5593         first level off the stack.
5594         (do_unwind): Always use Pmode, instead of SImode for all pointers.
5595         (expand_exception_blocks): Add a call to end_eh_unwinder.
5596         (start_eh_unwinder, end_eh_unwinder): New routines to build machine
5597         independent stack unwinders for function/method calls.
5598         
5599 Mon Oct  2 17:20:42 1995  Mike Stump  <mrs@cygnus.com>
5600
5601         * tree.c (unsave_expr_now): Make sure we process the argument list
5602         of any called functions.  Fixes incorrect code generation for
5603         cleanups.
5604
5605 Mon Oct  2 13:04:16 1995  Mike Stump  <mrs@cygnus.com>
5606
5607         * typeck.c (get_member_function_from_ptrfunc): Save function if it
5608         needs it.  Cures core dump on things like (this->*(f()))().
5609
5610 Sat Sep 23 22:51:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5611
5612         * decl.c (start_function): Conform to gcc cv-quals convention (no
5613         expression has a cv-qualified type) in RESULT_DECLs.
5614         * method.c (make_thunk): Likewise.
5615
5616 Fri Sep 22 10:21:13 1995  Mike Stump  <mrs@cygnus.com>
5617
5618         * decl.c (pushtag): Add in the namespace name for the tag.
5619
5620 Thu Sep 21 13:11:13 1995  Mike Stump  <mrs@cygnus.com>
5621
5622         * parse.y (maybe_base_class_list, base_class_list, base_class,
5623         base_class_access_list): Make sure we see the typenames for base
5624         classes.
5625         * lex.c (see_typename): Instead of failing to see a typename when
5626         there is no next token, perfer a typename, and get the next token.
5627
5628 Wed Sep 20 12:35:27 1995  Michael Meissner  <meissner@cygnus.com>
5629
5630         * decl.c (init_decl_processing): Add __builtin_expect.
5631
5632 Tue Sep 19 16:48:11 1995  Mike Stump  <mrs@cygnus.com>
5633
5634         * cvt.c (cp_convert_to_pointer): Don't allow leftover conversions to
5635         or from pointer to member functions, they must all be handled before
5636         this point.
5637
5638 Fri Sep 15 17:14:47 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5639
5640         * init.c (resolve_offset_ref): Fix wording of non-static member
5641         being referenced as a static.
5642
5643 Fri Sep 15 12:39:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5644
5645         * typeck.c (build_indirect_ref): Only bash pointer if we actually
5646         call build_expr_type_conversion.
5647
5648 Thu Sep 14 18:24:56 1995  Jason Merrill  <jason@deneb.cygnus.com>
5649
5650         * cvt.c (build_expr_type_conversion): Handle conversion from
5651         reference.
5652         * typeck.c (build_indirect_ref): Avoid infinite recursion.
5653
5654 Thu Sep 14 17:23:28 1995  Mike Stump  <mrs@cygnus.com>
5655
5656         * decl.c (expand_start_early_try_stmts): New routine to start a try
5657         block at the start of the function, for function-try-blocks.
5658         * cp-tree.h (expand_start_early_try_stmts): Declare it.
5659         * parse.y (function_try_block): Use it, instead of doing it here, as
5660         we don't want to include rtl.h here, as that conflicts with RETURN
5661         in the parser.
5662
5663 Wed Sep 13 18:32:24 1995  Mike Stump  <mrs@cygnus.com>
5664
5665         * lex.c (reinit_parse_for_block): Support saving inline
5666         function-try-blocks, uses peekyylex.
5667         * parse.y (eat_saved_input): New rule, permit the parser to see that
5668         END_OF_SAVED_INPUT is ok, as it can see this when parsing the
5669         handlers of a function-try-block.
5670         (fndef): Use it.
5671         (component_decl): Make sure TRY and RETURN can come after fn.def2.
5672         * spew.c (peekyylex): New routine to peek at what will come next.
5673
5674 Wed Sep 13 16:52:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5675
5676         * typeck.c (comptypes): Tighten up comparisons of template type
5677         parms.
5678
5679         * decl.c (duplicate_decls): Turn off whining about virtual functions
5680         redeclared inline for now.
5681
5682 Wed Sep 13 11:13:40 1995  Mike Stump  <mrs@cygnus.com>
5683
5684         * decl.c (store_in_parms): New routine to put things before we
5685         put base inits.
5686         * cp-tree.h (store_in_parms): Declare it.
5687         * decl.c (store_parm_decls): Use it to makr sure the starting of the
5688         eh spec comes before base inits.
5689         (finish_function): Use sequences instead of the obsolete
5690         reorder_insns.
5691         * parse.y (fndef): Enhance readability and maintainability.  Update
5692         to include function_try_block syntax.
5693         (function_try_block): Add.
5694
5695 Tue Sep 12 17:43:07 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5696
5697         * call.c (convert_harshness): Use comptypes, not ==, to check if
5698         TYPE and PARMTYPE are equivalent on a function type.
5699
5700 Tue Sep 12 17:31:33 1995  Douglas Rupp  <drupp@cs.washington.edu>
5701
5702         * Make-lang.in (cc1plus) : Removed unnecessary $(exeext).
5703
5704 Mon Sep 11 23:24:07 1995  Mike Stump  <mrs@cygnus.com>
5705
5706         * except.c (expand_throw): Never allocate storage for thrown pointer
5707         to objects.
5708
5709 Mon Sep 11 19:36:45 1995  Mike Stump  <mrs@cygnus.com>
5710
5711         * except.c (expand_start_catch_block): Pointers to objects come
5712         back from catch matching already dereferenced, don't dereference
5713         again.
5714
5715 Mon Sep 11 15:46:28 1995  Mike Stump  <mrs@cygnus.com>
5716
5717         * except.c (expand_throw): Only decay the throw expression, don't do
5718         any default conversions.  This is so that one can throw and catch
5719         characters, and not have them match integers.
5720
5721 Mon Sep 11 13:46:45 1995  Mike Stump  <mrs@cygnus.com>
5722
5723         * error.c (dump_aggr_type): Deal with anonymous unions that don't
5724         have a TYPE_NAME.
5725
5726 Fri Sep  8 20:40:27 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5727
5728         * lex.c (handle_sysv_pragma): Deal with getting a comma from yylex.
5729
5730 Fri Sep  8 15:51:41 1995  Mike Stump  <mrs@cygnus.com>
5731
5732         * except.c (expand_end_eh_spec): Handle empty EH specifications.
5733
5734 Fri Sep  8 15:27:22 1995  Mike Stump  <mrs@cygnus.com>
5735
5736         * cp-tree.h (expand_start_eh_spec): Declare new routine.
5737         (expand_end_eh_spec): Likewise.
5738         * decl.c (store_parm_decls): Call expand_start_eh_spec to process
5739         exception specifications.
5740         * except.c (expand_leftover_cleanups): Remove unused parameter.
5741         (expand_end_catch_block): Likewise.
5742         (expand_exception_blocks): Likewise.
5743         (expand_start_eh_spec): New routine to mark the start of an
5744         exception specification region.
5745         (expand_end_eh_spec): New routine to mark the end of an exception
5746         specification region.
5747         (expand_exception_blocks): Call expand_end_eh_spec to process
5748         exception specifications.
5749
5750 Fri Sep  8 14:40:48 1995  Per Bothner  <bothner@kalessin.cygnus.com>
5751
5752         * lex.c (do_identifier):  Use global binding in preference of
5753         dead for local variable.
5754
5755 Wed Sep  6 19:32:59 1995  Mike Stump  <mrs@cygnus.com>
5756
5757         * cp-tree.h (build_exception_variant): Remove used first argument.
5758         * decl.c (duplicate_decls): Likewise.
5759         (grokfndecl): Likewise.
5760         (revert_static_member_fn): Likewise.
5761         * decl2.c (grok_method_quals): Likewise.
5762         * tree.c (build_exception_variant): Likewise.
5763         * typeck.c (common_type): Likewise.
5764         * decl2.c (grokclassfn): After changing the type, call
5765         build_exception_variant, if necessary.
5766
5767 Tue Sep  5 15:56:27 1995  Mike Stump  <mrs@cygnus.com>
5768
5769         * except.c (expand_throw): Run cleanups for the throw expression.
5770
5771 Wed Aug 30 15:24:38 1995  Stephen L. Favor  <sfavor@tigger.intecom.com>
5772
5773         * except.c (expand_builtin_throw): Moved gen_label_rtx calls beyond
5774         the store_parm_decls call which does initialization in the emit_*
5775         code concerning label numbering.
5776         
5777 Thu Aug 31 09:01:07 1995  Mike Stump  <mrs@cygnus.com>
5778
5779         * except.c (expand_internal_throw): Let the frontend be responsible
5780         for managing all frontend EH parameters, the backend routine only
5781         needs to deal with backend values.  type and value are no longer
5782         passed to __throw.
5783         (init_exception_processing): Likewise.
5784         (expand_start_all_catch): Likewise.
5785         (expand_end_all_catch): Likewise.
5786         (expand_leftover_cleanups): Likewise.
5787         (expand_end_catch_block): Likewise.
5788         (expand_builtin_throw): Likewise.
5789         (expand_throw): Likewise.
5790         
5791 Tue Aug 29 15:04:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5792
5793         * cp-tree.h (DECL_REAL_CONTEXT): Give the real declaration context
5794         for a decl.
5795         * decl.c (cp_finish_decl): Use it.
5796
5797 Tue Aug 29 10:30:27 1995  Mike Stump  <mrs@cygnus.com>
5798
5799         * except.c (expand_internal_throw): Oops, almost forgot type and
5800         value are now trees.
5801
5802 Mon Aug 28 17:57:45 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5803
5804         Fix the attribute handling to make sure they get noted before we
5805         create the function's RTL, in case they can affect that.
5806         * decl.c (grokfndecl): New arg ATTRLIST.  Run
5807         cplus_decl_attributes before creating the decl's rtl.
5808         (grokdeclarator): New arg ATTRLIST, passed down into grokfndecl.
5809         (shadow_tag, groktypename, start_decl, start_method): Pass a
5810         NULL_TREE to grokdeclarator's new last arg.
5811         * decl2.c (grokfield): New arg ATTRLIST, passed into grokdeclarator.
5812         (grokbitfield, grokoptypename): Pass a NULL_TREE to
5813         grokdeclarator's new last arg.
5814         * except.c (expand_start_catch_block): Likewise.
5815         * pt.c (process_template_parm, end_template_decl,
5816         do_function_instantiation): Likewise.
5817         * cp-tree.h (grokfield): Add arg.
5818         (grokdeclarator): Move the prototype from here...
5819         * decl.h: ...to here.
5820         * lex.c (cons_up_default_function): Pass NULL_TREE to grokfield
5821         ATTRLIST argument.
5822         * parse.y: Create a list for the grokfield arg where appropriate,
5823         and pass it down instead of calling cplus_decl_attributes.
5824
5825 Mon Aug 28 15:07:24 1995  Mike Stump  <mrs@cygnus.com>
5826
5827         * except.c: Always allow turning on exception handling.  Allow cross
5828         compilations to use EH.
5829
5830 Thu Aug 24 17:39:24 1995  Mike Stump  <mrs@cygnus.com>
5831
5832         * except.c (saved_pc, saved_throw_type, saved_throw_value): Use
5833         trees, instead of rtxs, and don't depend on using special machine
5834         dependent registers.
5835         (expand_internal_throw): Likewise.
5836         (init_exception_processing): Likewise.
5837         (expand_start_all_catch): Likewise.
5838         (expand_end_all_catch): Likewise.
5839         (expand_start_catch_block): Likewise.
5840         (expand_leftover_cleanups): Likewise.
5841         (expand_end_catch_block): Likewise.
5842         (expand_builtin_throw): Likewise.
5843         (expand_throw): Likewise.
5844
5845 Wed Aug 23 17:25:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5846
5847         * cvt.c (build_expr_type_conversion): Handle conversions to
5848         reference types.
5849
5850 Wed Aug 23 15:33:59 1995  Mike Stump  <mrs@cygnus.com>
5851
5852         * except.c (do_unwind): Work around backend bug with -fpic.
5853
5854 Tue Aug 22 17:20:07 1995  Per Bothner  <bothner@kalessin.cygnus.com>
5855
5856         * decl2.c (flag_new_for_scope):  Add a new mode that follows ANSI
5857         for-scoping, but supports (and warns about) old programs.
5858         Make the new mode (with value 1) the default.
5859         (lang_f_options):  The on-value for flag_new_for_scope is now 2.
5860         * cp-tree.h (DECL_DEAD_FOR_LOCAL, DECL_ERROR_REPORTED): New macros
5861         (DECL_SHADOWED_FOR_VAR):  Likewise.
5862         * decl.c (struct binding_level):  New fields dead_vars_from_for
5863         and is_for_scope.
5864         (note_level_for_for):  New function.
5865         (poplevel):  Special processing if is_for_scope.
5866         (pushdecl):  Warn if for-scope variable shadows local.
5867         * lex.c (do_identifier):  Handle old (non-ANSI) for scoping,
5868         and warn if conflicts.
5869         * parse.y (FOR):  Call note_level_for_for.
5870
5871 Mon Aug 21 10:28:31 1995  Jason Merrill  <jason@deneb.cygnus.com>
5872
5873         * decl2.c (import_export_inline): Class interface hackery does not
5874         apply to synthesized methods.
5875
5876 Sun Aug 20 16:29:00 1995  Mike Stump  <mrs@cygnus.com>
5877
5878         * search.c (virtual_context): Find the right context more often.
5879         Solves a `recoverable compiler error, fixups for virtual function'
5880         problem.
5881
5882 Sun Aug 20 13:53:24 1995  Mike Stump  <mrs@cygnus.com>
5883
5884         * except.c (expand_start_all_catch): Ensure that we always transfer
5885         control to the right EH handler, by rethrowing the end label on the
5886         region, instead of hoping we are nested and falling through.
5887         (expand_leftover_cleanups): Likewise.
5888         (end_protect): Since we now rethrow the end label, put a
5889         nop after it, so that outer regions are recognized.
5890         * init.c (build_vec_delete_1): New routine to handle most of vector
5891         deleting, all code moved here from build_vec_delete.
5892         (build_array_eh_cleanup): Use build_vec_delete_1 to do all the real
5893         work.
5894         (expand_vec_init): If the array needs partial destructing, setup an
5895         EH region to handle it.
5896         (build_vec_delete): Move lots of code to build_vec_delete_1, use
5897         build_vec_delete_1 to do the grunt work.
5898         
5899 Sat Aug 19 14:25:33 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5900
5901         Handle decl attributes properly for function definitions without
5902         previous attribute-loaded declarations.
5903         * decl.c (start_function): New arg ATTRS.  Add a call to
5904         cplus_decl_attributes with it before we create the RTL.
5905         * cp-tree.h (start_function): Update prototype.
5906         * parse.y (fn.def1): Pass ATTRS into start_function instead of
5907         trying to call cplus_decl_attributes too late.  Pass a NULL_TREE
5908         for other use.
5909         * decl2.c (finish_file): Pass NULL_TREE as fourth arg to
5910         start_function.
5911         * method.c (synthesize_method): Likewise.
5912         * except.c (expand_builtin_throw): Likewise for start on __throw.
5913
5914 Sat Aug 19 13:36:08 1995  Mike Stump  <mrs@cygnus.com>
5915
5916         * class.c (set_rtti_entry): Turn on -fvtable-thunk -frtti support.
5917         This changes -fvtable-thunks vtable layout, so a recompile will be
5918         necessary, if you use -fvtable-thunks.
5919         (get_vtable_entry): Use n, instead of i to be consistent with the
5920         rest of the compiler.
5921         (get_vtable_entry_n): Likewise.
5922         (add_virtual_function): Add a slot for the tdesc, if -fvtable-thunks
5923         are being used.
5924         (finish_struct_1): Likewise.
5925         (skip_rtti_stuff): New routine to collapse similar code from many
5926         different parts of the compiler.  I think I got them all.
5927         (modify_one_vtable): Use it.
5928         (fixup_vtable_deltas1): Likewise.
5929         (override_one_vtable): Likewise.
5930         * decl2.c (mark_vtable_entries): Likewise.
5931         * tree.c (debug_binfo): Likewise.
5932         * search.c (expand_upcast_fixups): Likewise.
5933         (get_abstract_virtuals_1): Likewise.  Use virtuals, instead of tmp to
5934         consistent with the rest of the compiler.
5935         (get_abstract_virtuals): Likewise.
5936         * cp-tree.h (skip_rtti_stuff): New routine, declare it.
5937         * gc.c (build_headof): Support -fvtable-thunk and -frtti together.
5938         (build_typeid): Likewise.
5939         (build_classof): Remove old style way of doing rtti.  Remove support
5940         for `classof' and `headof'.
5941         * gxx.gperf: Likewise.
5942         * hash.h: Likewise.
5943         * parse.y: Likewise.
5944
5945 Fri Aug 18 17:31:58 1995  Jason Merrill  <jason@deneb.cygnus.com>
5946
5947         * decl.c (start_function): Clear ctor_label and dtor_label.
5948
5949         * class.c (finish_struct_1): Fix handling of access decls.
5950
5951 Tue Aug 15 19:21:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5952
5953         * class.c (finish_struct): Only do minimal processing here, so it
5954         can be used for class template definitions, as well.
5955         (finish_struct_1): New function with the rest of the code.
5956
5957 Tue Aug 15 09:46:16 1995  Mike Stump  <mrs@cygnus.com>
5958
5959         * class.c (prepare_fresh_vtable): On second though, always build the
5960         offset (see Aug 10 change), unless -fvtable-thunks is given.  It
5961         does this by calling the new routine set_rtti_entry.
5962         (finish_struct): Likewise.
5963         (set_rtti_entry): New routine to update the rtti information at the
5964         start of the vtable.
5965
5966 Mon Aug 14 12:21:22 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5967
5968         * error.c (dump_decl, case IDENTIFIER_NODE): Only work on a dtor
5969         if it's declared in the C++ language spec.
5970         (dump_function_decl): Likewise.
5971         (dump_function_name): Likewise.
5972         (ident_fndecl): Make sure we got something back from lookup_name.
5973         * decl.c (start_function): Likewise.
5974
5975 Fri Aug 11 16:52:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5976
5977         * call.c (build_method_call): Don't call build_new when calling a
5978         constructor without an instance.
5979
5980 Thu Aug 10 20:00:17 1995  Mike Stump  <mrs@cygnus.com>
5981
5982         * class.c (prepare_fresh_vtable): Always build the offset to the
5983         complete object, as it doesn't cost much.  This allows dynamic_cast
5984         to void * to work when -frtti isn't given.
5985         (finish_struct): Likewise.
5986
5987 Thu Aug 10 16:31:28 1995  Mike Stump  <mrs@cygnus.com>
5988
5989         * except.c (build_eh_type): Split out some functionality to new
5990         routine named build_eh_type_type.
5991         (build_eh_type_type): New routine.
5992         (expand_start_catch_block): Use build_eh_type_type, as we never want
5993         the dynamic type of the catch parameter, just the static type.
5994         Fixes core dumps when -frtti is used and one catchs pointers to
5995         classes.
5996
5997 Thu Aug 10 14:55:29 1995  Mike Stump  <mrs@cygnus.com>
5998
5999         * except.c (expand_builtin_throw): Since we now use normal calling
6000         conventions for __throw, we have to remove the first layer off the
6001         stack, so that the next context we search for handlers is the outer
6002         context instead of the context that had the call to __throw, if we
6003         don't immediately find the desired context.
6004
6005 Tue Aug  8 17:44:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6006
6007         * tree.c (cp_expand_decl_cleanup): Returns int, not tree.
6008         * cp-tree.h: Update.
6009
6010         * parse.y (template_type_parm): Add support for `typename'.
6011
6012 Tue Aug  8 12:06:31 1995  Mike Stump  <mrs@cygnus.com>
6013
6014         * except.c (expand_internal_throw): New internal routine to throw a
6015         value.
6016         (expand_end_all_catch, expand_leftover_cleanups): All throwers
6017         changed to use `expand_internal_throw' instead of jumping to throw
6018         label.
6019         (expand_end_catch_block, expand_throw): Likewise.
6020         (throw_label): Removed.
6021         (expand_builtin_throw): Changed so that EH parameters are passed by
6022         normal function call conventions.  Completes Aug 4th work.
6023
6024 Fri Aug  4 17:17:08 1995  Mike Stump  <mrs@cygnus.com>
6025
6026         * cp-tree.h (expand_builtin_throw): Declare it.
6027         * decl2.c (finish_file): Call expand_builtin_throw.
6028         * except.c (make_first_label): Remove.
6029         (init_exception_processing): Don't use a LABEL_REF for throw_label,
6030         instead use a SYMBOL_REF, this is so that we don't use LABEL_REFs in
6031         other functions that don't really appear in those functions.  This
6032         solves a problem where cc1plus consumed exponential amounts of
6033         memory when -Wall was used.
6034         (expand_end_all_catch, expand_leftover_cleanups,
6035         expand_end_catch_block, expand_throw): Change all uses of
6036         throw_label to match new style.
6037         (do_unwind): Rename parameter to inner_throw_label, as it is now
6038         different from throw_label.  Also, assume that our caller will wrap
6039         the passed label with a LABEL_REF, if needed.
6040         (expand_builtin_throw): Make external, change so that the generated
6041         throw is now a real function.
6042         (expand_exception_blocks): Never generate throw code inside another
6043         function.
6044
6045 Fri Aug  4 12:20:02 1995  Mike Stump  <mrs@cygnus.com>
6046
6047         * decl.c (grokdeclarator): Move checking of mutable const objects
6048         and mutable static objects down, as we might decide during parsing
6049         to unset staticp or constp (for example, when const is part of the
6050         object being pointed to).
6051
6052 Thu Aug  3 17:13:43 1995  Mike Stump  <mrs@cygnus.com>
6053
6054         * except.c (output_exception_table_entry): Enhance portability to
6055         weird machines.
6056         (emit_exception_table): Likewise.
6057
6058 Thu Aug  3 16:41:38 1995  Mike Stump  <mrs@cygnus.com>
6059
6060         * typeck.c (build_ptrmemfunc): Handle casting of pointer to
6061         non-virtual member functions.
6062
6063 Wed Aug  2 11:58:25 1995  Mike Stump  <mrs@cygnus.com>
6064
6065         * gc.c (build_typeid): Strip cv qualifiers so that const T&, T&, T
6066         and const T all match.
6067
6068 Wed Aug  2 11:25:33 1995  Mike Stump  <mrs@cygnus.com>
6069
6070         * except.c (build_eh_type): Strip cv qualifiers so that const T&,
6071         T&, T and const T all match.
6072
6073 Tue Aug  1 14:20:16 1995  Mike Stump  <mrs@cygnus.com>
6074
6075         * except.c: Fix up comments, cleanup code and eliminate exceptNode,
6076         exceptStack, exceptstack, push_except_stmts, pop_except_stmts,
6077         new_except_stack, push_last_insn, pop_last_insn, insn_save_node and
6078         InsnSave.  Also, numerous speed improvements, and correctness
6079         improvements.  Double faulting in all situations should now be
6080         handled correctly.
6081         (expand_start_all_catch): Instead of having many terminate protected
6082         regions, just have one.
6083         (expand_start_catch_block): No longer have to protect
6084         false_label_rtx, as it isn't used for EH region marking.
6085         (expand_end_catch_block): Expand out EH cleanups here by using
6086         expand_leftover_cleanups.
6087         (expand_end_all_catch): Use sequences instead of playing with insn
6088         links directly.
6089         (expand_exception_blocks): Likewise.  Also protect all catch clauses
6090         with one terminate region.
6091
6092 Mon Jul 31 13:24:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6093
6094         * method.c (report_type_mismatch): Don't talk about an object
6095         parameter for non-methods.
6096
6097 Sun Jul 30 13:13:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6098
6099         * class.c (finish_struct): Catch private and protected members of
6100         anonymous unions here.
6101         * decl2.c (finish_anon_union): And here.
6102         * parse.y: Instead of here.
6103
6104         * errfn.c (ARGSLIST): Support passing four args.
6105         * error.c (cv_as_string): New function.
6106         (cp_printers): Add it.
6107         * call.c (build_method_call): Report 'const' at end of pseudo-decl.
6108
6109         * method.c (report_type_mismatch): Deal with a bad_arg of 0.
6110
6111         * init.c (expand_aggr_init): Handle volatile objects, too.
6112
6113 Sat Jul 29 13:42:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6114
6115         * decl.c (struct binding_level): Keep list of incomplete decls.
6116         (print_binding_level): Use list_length to count them.
6117         (pushdecl): Build up the list.
6118         (hack_incomplete_structures): Walk it and prune completed decls.
6119
6120 Fri Jul 28 15:26:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6121
6122         * typeck.c (comp_target_types): Don't check const and volatile for
6123         function types.
6124         (comp_ptr_ttypes_real): Likewise.
6125
6126 Thu Jul 27 15:40:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6127
6128         * typeck.c (comp_target_types): Fix.
6129
6130 Thu Jul 27 15:10:48 1995  Mike Stump  <mrs@cygnus.com>
6131
6132         * cp-tree.h (unsave_expr_now, build_unsave_expr,
6133         cp_expand_decl_cleanup): Declare new routines.
6134         * decl.c (cp_finish_decl, store_parm_decls,
6135         hack_incomplete_structures): Change all cals from
6136         expand_decl_cleanup to cp_expand_decl_cleanup.
6137         * gc.c (protect_value_from_gc): Likewise.
6138         * expr.c (cplus_expand_expr): Handle UNSAVE_EXPRs.
6139         * tree.c (unsave_expr): New routine to build an UNSAVE_EXPR.
6140         (unsave_expr_now): Backend routine used by tree expander.
6141         (cp_expand_decl_cleanup): Wrap second argument in an UNSAVE_EXPR to
6142         work around a limitation in the backend.  The backend uses the
6143         cleanups multiple times, on disjoint control flows, so we cannot
6144         pass unsaved SAVE_EXPRs to the backend.
6145         * tree.def (UNSAVE_EXPR): New tree code.
6146         * typeck.c (c_expand_return): Move goto/return code up inside
6147         conditional, as we don't always want to do this, we only want to do
6148         this when we don't otherwise finish with this control flow.
6149
6150 Thu Jul 27 10:38:43 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6151
6152         * parse.y (typespec): Only complain about typeof if we're not
6153         getting it from a system header.
6154
6155 Thu Jul 27 10:26:23 1995  Doug Evans  <dje@canuck.cygnus.com>
6156
6157         Clean up prefix attribute handling.
6158         * parse.y (reserved_declspecs): Link prefix attributes with declspecs.
6159         (declmods): Likewise.
6160         (all rules that reference typed_declspecs and declmods): Call
6161         split_specs_attrs or strip_attrs to separate declspecs and attrs.
6162         (lang_extdef): Delete resetting of prefix_attributes.
6163         (template_def, notype_declarator rule): Use NULL_TREE for
6164         prefix_attributes.
6165         (condition): Use NULL_TREE for prefix_attributes.
6166         (setattrs): Deleted.
6167         (nomods_initdcl0): Set prefix_attributes to NULL_TREE.
6168         (component_decl): Delete resetting of prefix_attributes.
6169         (component_decl_1, notype_components rule): Use NULL_TREE for
6170         prefix_attributes.
6171         (simple_stmt): Delete resetting of prefix_attributes.
6172
6173 Mon Jul 24 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6174
6175         * call.c (convert_harshness): Deal with reference conversions before
6176         others.  Actually do array->pointer decay.  Call comp_target_types
6177         with pointer types rather than their targets.
6178
6179         * typeck.c (comp_target_types): Avoid assigning D const * to B *.
6180
6181 Mon Jul 24 08:54:46 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6182
6183         * pt.c (to_be_restored): Move decl to global scope.
6184
6185 Sat Jul 22 12:22:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6186
6187         * decl.c (start_decl): Put back clearing of DECL_IN_AGGR_P.
6188
6189 Fri Jul 21 17:09:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6190
6191         * decl.c (grokdeclarator): Downgrade error about 'extern int A::i'
6192         to pedwarn.
6193
6194         * pt.c (instantiate_template): Also avoid instantiation if the
6195         function has already been declared to be a specialization.
6196
6197         * decl2.c (check_classfn): Ignore cname argument, and return the
6198         matching function.
6199
6200         * decl.c (start_decl): Handle declarations of member functions
6201         outside of the class (i.e. specialization declarations).
6202
6203 Thu Jul 20 10:34:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6204
6205         * class.c (finish_struct): Don't mess with the type of bitfields.
6206
6207         * various.c: s/TYPE_POINTER_TO/build_pointer_type/.
6208
6209 Thu Jul 20 01:43:10 1995  Mike Stump  <mrs@cygnus.com>
6210
6211         * init.c (expand_aggr_init): Assume LOOKUP_ONLYCONVERTING if init
6212         is not a parameter list (TREE_LIST).
6213         (expand_default_init): If LOOKUP_ONLYCONVERTING is set, then set
6214         LOOKUP_NO_CONVERSION so that we don't allow two-level conversions,
6215         but don't set it otherwise.
6216
6217 Wed Jul 19 20:32:01 1995  Mike Stump  <mrs@cygnus.com>
6218
6219         * init.c (expand_default_init): Don't allow two-level conversions
6220         during construction.
6221
6222 Wed Jul 19 18:06:37 1995  Mike Stump  <mrs@cygnus.com>
6223
6224         * gc.c (build_headof): The type of dyncasting to a pointer to cv
6225         void, should be pointer to cv void.
6226
6227 Wed Jul 19 17:25:43 1995  Mike Stump  <mrs@cygnus.com>
6228
6229         * gc.c (build_dynamic_cast): Allow casting in const.
6230
6231 Wed Jul 19 16:34:27 1995  Mike Stump  <mrs@cygnus.com>
6232
6233         * typeck.c (build_const_cast): If we are passed error_mark_node,
6234         return it.
6235
6236 Wed Jul 19 15:24:48 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6237
6238         * class.c (push_nested_class): Make sure TYPE is non-nil.
6239
6240         * cvt.c (type_promotes_to): Watch for error_mark_node on the
6241         incoming TYPE.
6242
6243 Wed Jul 19 13:23:12 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
6244
6245         * cp-tree.h (SIGTABLE_VT_OFF_NAME): Renamed from SIGTABLE_OFFSET_NAME.
6246         (SIGTABLE_VB_OFF_NAME): New macro.
6247         (vt_off_identifier): Renamed from offset_identifier.
6248         (vb_off_identifier): Added extern declaration.
6249
6250         * decl.c (vt_off_identifier): Renamed from offset identifier.
6251         (vb_off_identifier): New variable to hold the identifier for the
6252         sigtable field vb_off.
6253         (init_decl_processing): Initialize vb_off_identifier.
6254         Renamed vt_off_identifier from offset_identifier.
6255         * sig.c (build_signature_method_call): Renamed offset_identifier and
6256         local variable offset to vt_off_identifer and vt_off, respecitively.
6257         * sig.c (build_signature_table_constructor): Renamed offset to vt_off.
6258
6259         * decl.c (init_decl_processing): Add vb_off field to
6260         sigtable_entry_type.  Reorder fields so that pfn gets properly
6261         aligned at a 64 bit boundary on the Alpha.
6262         * sig.c (build_signature_table_constructor): Build the constructor
6263         according to the new layout.  Set the vb_off field to -1 for now.
6264
6265         * decl.c (init_decl_processing): Align sigtable_entry_type on word
6266         boundaries instead of double word boundaries to save space.
6267
6268 Tue Jul 18 16:58:37 1995  Mike Stump  <mrs@cygnus.com>
6269
6270         * cvt.c (cp_convert): Always call build_cplus_new for a ctor.
6271
6272 Tue Jul 18 14:24:53 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6273
6274         * parse.y (opt.component_decl_list): Only forbid private/protected
6275         in anonymous unions.  We need to make this know when the type is
6276         defined for an object, to not give the error.
6277
6278 Mon Jul 17 14:22:44 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6279
6280         * parse.y (opt.component_decl_list): Don't allow access control
6281         as private or protected for union members.
6282
6283 Sun Jul 16 14:01:00 1995  Jim Wilson  <wilson@chestnut.cygnus.com>
6284
6285         * lex.c (check_newline): For 'p' case, move goto skipline line to
6286         before end brace for 'pragma'.
6287
6288 Fri Jul  7 13:55:58 1995  Mike Stump  <mrs@cygnus.com>
6289
6290         * g++.1: Tiny updates.
6291
6292 Fri Jul  7 13:05:20 1995  Mike Stump  <mrs@cygnus.com>
6293
6294         * decl.c (cp_finish_decl): Only destruct local static variables if
6295         they are constructed, and only construct the first time control
6296         passes completely through its declaration (if not initialized with a
6297         constant-expression).
6298         (expand_static_init): Likewise.
6299
6300 Wed Jul  5 14:05:04 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6301
6302         * typeck.c (comptypes, case OFFSET_REF): If either offset basetype
6303         is a TEMPLATE_TYPE_PARM, give a match.
6304
6305 Fri Jun 30 15:42:57 1995  Mike Stump  <mrs@cygnus.com>
6306
6307         * method.c (build_overload_value): Handle encoding of null pointer
6308         constants (or any pointer with a constant numeric value) for
6309         templates.
6310
6311 Fri Jun 30 13:45:51 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6312
6313         * call.c (convert_harshness): Add QUAL_CODE when we're faced with
6314         const vs non-const for void conversions.
6315
6316 Fri Jun 30 10:19:52 1995  Mike Stump  <mrs@cygnus.com>
6317
6318         * except.c (expand_start_all_catch): Fix problem with finding an
6319         outer nested try block when there is no code to separate it from an
6320         inner try block.
6321
6322 Fri Jun 30 02:22:26 1995  Mike Stump  <mrs@cygnus.com>
6323
6324         * search.c (dfs_pushdecls): Consume 2 or 3 orders of magnitude less
6325         memory please when virtual bases are used.
6326
6327 Thu Jun 29 19:03:47 1995  Mike Stump  <mrs@cygnus.com>
6328
6329         * class.c (build_vbase_path): Avoid testing things that cannot be
6330         null to see if they are null.
6331         * cvt.c (convert_pointer_to_vbase): Remove code that doesn't work.
6332         * decl.c (finish_function): Pass a type into the new
6333         convert_pointer_to_vbase instead of a binfo.
6334         * search.c (convert_pointer_to_vbase): Rewritten to use get_vbase
6335         and convert_pointer_to_real.
6336         (expand_indirect_vtbls_init): Use convert_pointer_to_vbase instead
6337         of the more cryptic call to get_vbase.
6338
6339 Thu Jun 29 09:35:05 1995  Mike Stump  <mrs@cygnus.com>
6340
6341         * decl.c (BOOL_TYPE_SIZE): Fix broken SLOW_BYTE_ACCESS check.
6342
6343 Thu Jun 29 03:43:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6344
6345         * pt.c (instantiate_template): Don't strip 'this' twice.
6346
6347         * pt.c (coerce_template_parms): Allow null pointer constants.
6348
6349         * decl.c (revert_static_member_fn): But only if DECL_ARGUMENTS is
6350         set.
6351
6352 Wed Jun 28 18:39:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6353
6354         * decl.c (revert_static_member_fn): Also remove 'this' from
6355         DECL_ARGUMENTS.
6356         * decl2.c (check_classfn): Don't revert this function until we get a
6357         match.
6358
6359 Wed Jun 28 14:07:27 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6360
6361         * parse.y (component_decl): Clear PREFIX_ATTRIBUTES here.
6362
6363 Wed Jun 28 11:05:13 1995  Mike Stump  <mrs@cygnus.com>
6364
6365         * decl2.c (finish_file): Handle global vector news.
6366         * init.c (build_new): Encode vector news so that later we will know
6367         how many elements there are.
6368
6369 Mon Jun 26 13:38:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6370
6371         * expr.c (cplus_expand_expr): Don't mess with temp slots.
6372
6373         * decl2.c (warn_if_unknown_interface): Don't crash if tinst_for_decl
6374         returns null.
6375
6376         * decl2.c (check_classfn): Use revert_static_member_fn.
6377         * decl.c (revert_static_member_fn): Diagnose static member functions
6378         declared const or volatile.
6379
6380         * decl2.c (grokfield): Check for missing default args here, too.
6381         (check_default_args): Function to do the checking.
6382         * decl.c (pushdecl): Use it.
6383
6384         * decl.c (pushdecl): Don't warn about shadowing a member of `this'
6385         if there is no `this'.
6386
6387 Sun Jun 25 11:34:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6388
6389         * call.c (build_method_call): Downgrade 'called before definition'
6390         to a warning, as it ought to go away after Monterey.
6391
6392 Sat Jun 24 14:18:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6393
6394         * pt.c (coerce_template_parms): Don't do extra checking on pointer
6395         to member arguments.
6396
6397         * class.c (finish_struct): const and reference members don't prevent
6398         a class from being an aggregate.
6399
6400         * class.c (finish_struct): Signatures are always aggregates.
6401
6402 Fri Jun 23 17:20:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6403
6404         * decl2.c (check_classfn): Improve error message.
6405
6406         * pt.c (tsubst): Handle PROMOTE_PROTOTYPES.
6407
6408 Thu Jun 22 01:50:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6409
6410         * typeck.c (comptypes): Don't ignore method quals.
6411
6412         * class.c (finish_struct): Non-abstract virtuals are always USED.
6413
6414         * decl.c (build_ptrmemfunc_type): The underlying union type isn't
6415         IS_AGGR_TYPE, either.
6416         * class.c (finish_struct): Use CLASSTYPE_NON_AGGREGATE instead.
6417         * cp-tree.h: Likewise.
6418
6419         * cp-tree.h (lang_type): Add aggregate.
6420         (CLASSTYPE_AGGREGATE): New macro.
6421         (TYPE_NON_AGGREGATE_CLASS): Likewise.
6422         * class.c (finish_struct): Determine whether a class is an
6423         aggregate.
6424         * decl.c (cp_finish_decl): Check TYPE_NON_AGGREGATE_CLASS instead of
6425         TYPE_NEEDS_CONSTRUCTING.
6426         * typeck2.c (digest_init): Check TYPE_NON_AGGREGATE_CLASS for
6427         subobjects, too.
6428
6429         * pt.c (tsubst, PARM_TYPE): Propagate DECL_ARTIFICIAL.
6430
6431         * decl.c (start_function): For pre-parsed functions, layout all of
6432         the parm decls again.
6433         (grokvardecl): TREE_PUBLIC depends on DECL_THIS_EXTERN, not
6434         DECL_EXTERNAL.
6435
6436         * pt.c (coerce_template_parms): Improve checking for invalid
6437         template parms.
6438
6439 Wed Jun 21 12:01:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6440
6441         * decl.c (grokdeclarator): Forbid declaration of a static member
6442         with the same name as its enclosing class.
6443
6444 Mon Jun 19 10:28:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6445
6446         * decl.c (finish_function): Clear current_class_decl.
6447
6448         * typeck.c (build_conditional_expr): Use convert (boolean_type_node
6449         instead of truthvalue_conversion.
6450
6451         * class.c (finish_struct): A data member with the same name as the
6452         class doesn't suppress constructors.
6453
6454 Fri Jun 16 18:11:39 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
6455
6456         * decl.c (start_function): If current_class_decl is a signature
6457         pointer, don't dereference it but set C_C_D to current_class_decl.
6458
6459 Fri Jun 16 17:06:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6460
6461         * decl.c (duplicate_decls): Complain about virtual functions
6462         redeclared to be inline.
6463
6464 Fri Jun 16 13:20:38 1995  Mike Stump  <mrs@cygnus.com>
6465
6466         * decl.c (get_unique_name): New routine to name unnamed namespaces.
6467         (push_namespace): Use get_unique_name for naming unnamed namespaces.
6468
6469 Thu Jun 15 15:00:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6470
6471         * parse.y: Call cplus_decl_attributes with prefix_attributes where
6472         appropriate.
6473
6474 Wed Jun 14 19:24:49 1995  Mike Stump  <mrs@cygnus.com>
6475
6476         * search.c (get_vbase): New routine to switch hierarchies from the
6477         CLASSTYPE_VBASECLASSES to the normal one.
6478         (expand_indirect_vtbls_init): Use get_vbase to figure out how we
6479         want to convert to a vbase pointer.
6480
6481 Mon Jun 12 17:50:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6482
6483         * pt.c (instantiate_class_template): Add the new instantiation to
6484         template_classes.
6485         (do_pending_expansions): Call instantiate_member_templates on all of
6486         the classes in template_classes.
6487
6488 Mon Jun 12 12:36:59 1995  Mike Stump  <mrs@cygnus.com>
6489
6490         * decl.c (complete_array_type): Fill in the TYPE_DOMAIN of our
6491         TYPE_MAIN_VARIANT if it is not filled in.
6492         * init.c (build_delete): If the TYPE_DOMAIN is not set, give an
6493         error instead of core dumping.
6494
6495 Mon Jun 12 10:41:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6496
6497         * call.c (can_convert): Also check for distance > 0.
6498         (can_convert_arg): Likewise.
6499         (user_harshness): Likewise.
6500
6501 Fri Jun  9 19:17:21 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6502
6503         * g++.c (MATH_LIBRARY): Provide default.
6504         (main): Always link with the math library if we link with libstdc++.
6505
6506         * decl.c (start_function): Complain about redefinition of a function
6507         even when the pending_inline version is compiled after the other
6508         version.
6509
6510 Thu Jun  8 15:44:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6511
6512         * gc.c (build_dynamic_cast): Build up a reference to a parameter of
6513         aggregate type.
6514
6515 Wed Jun  7 15:31:57 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6516
6517         * init.c (build_vec_delete): Resolve an offset ref before we try to
6518         use it.
6519
6520 Wed Jun  7 14:19:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6521
6522         * typeck.c (build_modify_expr): If the class lacks a constructor or
6523         assignment operator, return error_mark_node.
6524         (common_type): Use build_cplus_array_type.
6525
6526 Tue Jun  6 09:41:27 1995  Mike Stump  <mrs@cygnus.com>
6527
6528         * class.c (dont_allow_type_definitions): New variable set when types
6529         cannot be defined.
6530         (finish_struct): Use it.
6531         * cp-tree.h (dont_allow_type_definitions): Define it.
6532         * parse.y (primary, handler_seq): Set it.
6533
6534 Mon Jun  5 18:49:38 1995  Mike Stump  <mrs@cygnus.com>
6535
6536         * method.c (build_opfncall): Use DECL_CHAIN, not TREE_CHAIN for
6537         results from lookup_fnfields.  Always give warning/error on bad
6538         code.
6539
6540 Mon Jun  5 11:39:37 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6541
6542         * init.c (member_init_ok_or_else): Don't allow initialization of
6543         an ancestor's member from within a constructor.
6544
6545 Mon Jun  5 11:20:34 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
6546
6547         * sig.c (build_signature_table_constructor): Use DECL_CONTEXT
6548         instead of DECL_CLASS_CONTEXT for calculating the vfield offset so
6549         abstract virtual functions are handled correctly.
6550
6551         * sig.c (build_signature_table_constructor): Store the correct
6552         delta in signature table entries.  It does not yet work for
6553         classes with virtual base classes as implementations of signatures.
6554         (build_signature_method_call): Add the delta to the object_ptr
6555         before generating the function call.
6556
6557         * call.c (build_method_call): Make instance_ptr the signature
6558         pointer itself instead of dereferencing the optr.
6559         * sig.c (build_signature_method_call): Dereference the optr for the
6560         direct and virtual calls.
6561
6562         * sig.c (build_signature_table_constructor): Make the tag for
6563         default implementations -1 instead of 2.
6564         (build_signature_method_call): Change the generated conditional
6565         expression correspondingly.
6566
6567         * sig.c (build_signature_pointer_constructor): Deleted the sorry
6568         message that said we can't handle multiple inheritance for
6569         implementations of signatures
6570         (build_signature_method_call): Use the offset from the sigtable
6571         entry instead of the vptr field from the signature pointer for
6572         building a virtual function call.
6573
6574         * class.c (build_vfn_ref): Deleted signature specific code, we don't
6575         call this function anymore from build_signature_method_call.
6576
6577         * cp-tree.h (SIGNATURE_VPTR_NAME): Deleted.  We use the right vptr
6578         field in the object now instead of in the signature pointer/ref. 
6579         (build_vptr_ref): Deleted extern declaration.
6580         * sig.c (build_vptr_ref): Deleted.
6581         (build_signature_pointer_or_reference_type): Deleted construction of
6582         the vptr field.
6583         (build_signature_pointer_constructor): Deleted initialization of/
6584         assignment to the vptr field.
6585
6586         * sig.c (build_signature_table_constructor): Convert the signature
6587         table entry fields to their correct types.
6588
6589         * sig.c (build_signature_table_constructor): Don't call digest_init
6590         for the fields of a sigtable entry, it's wasted time.
6591
6592         * sig.c (build_signature_table_constructor): Correctly set the
6593         offset and index fields of a sigtable entry.  Build the constructor
6594         the way digest_init does, digest_init can't handle initializing an
6595         anonymous union inside a struct.
6596         (build_signature_method_call): Use the index field instead of the
6597         delta field to get the vtable index.
6598
6599         * decl.c (init_decl_processing): Fix number of fields for building
6600         sigtable_entry_type.
6601
6602         * cp-tree.h (tag_identifier, offset_identifier): Added extern decls.
6603         (SIGTABLE_CODE_NAME): Renamed to SIGTABLE_TAG_NAME.
6604         (SIGTABLE_PFN_NAME): Deleted, we'll use VTABLE_PFN_NAME instead.
6605         * decl.c (tag_identifier, offset_identifier): New variables to
6606         hold the identifiers for the sigtable fields tag and offset.
6607         (init_decl_processing): Initialize these variables.
6608         (init_decl_processing): Use these variables to build the
6609         sigtable_entry_type structure.  Rename the code and offset fields
6610         to tag and delta, respectively; add offset and index fields. Changed
6611         types of fields from short_integer_type_node to delta_type_node.
6612         * sig.c (build_signature_table_constructor): Rename code and offset
6613         to tag and delta, respectively.
6614         (build_signature_method_call): Likewise.  Use above variables.
6615
6616 Thu Jun  1 17:03:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6617
6618         * decl.c (lookup_name_real): Don't try to look anything up in an
6619         erroneous object.
6620
6621 Fri Jun  2 10:30:14 1995  Mike Stump  <mrs@cygnus.com>
6622
6623         * method.c (build_overload_int): New routine.  Break out
6624         functionality from build_overload_value so we can reuse it.
6625         (build_overload_value): Handle pointer to member functions as value
6626         parameters for templates.
6627         (build_overload_identifier): Since template parameters are shared
6628         among all instantiations, we have to substitute in the real types
6629         in TREE_TYPE (parm).
6630         pt.c (coerce_template_parms): Likewise.
6631         (push_template_decls): Likewise.
6632         (grok_template_type): Deleted as template parameters are shared
6633         among all instantiations.
6634
6635 Wed May 31 19:10:32 1995  Mike Stump  <mrs@cygnus.com>
6636
6637         * decl.c (grokdeclarator): Always give errors on constant overflow
6638         for array indices.
6639
6640 Wed May 31 11:39:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6641
6642         * typeck.c (commonparms): Don't abort if simple_cst_equal returns < 0.
6643         (build_c_cast): Don't tack on a NON_LVALUE_EXPR when casting to
6644         reference type.
6645         (build_indirect_ref): Fix check for *&.
6646
6647 Fri Jun 16 06:54:03 1995  Mike Stump  <mrs@cygnus.com>
6648
6649         * Version 2.7.0 released.
6650
6651 Fri Jun 16 15:07:29 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6652
6653         * Make-lang.in (DEMANGLER_PROG): Add LIBS.
6654
6655 Thu Jun 15 15:00:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6656
6657         * decl.c (define_function): Don't set DECL_INTERFACE_KNOWN.
6658
6659 Wed Jun  7 20:00:31 1995  Mike Stump  <mrs@cygnus.com>
6660
6661         * *.[chy]: Change all callers of finish_decl to cp_finish_decl.
6662         * decl.c (finish_decl): New routine to handle call backs from the
6663         mid end (declare_hidden_char_array).
6664
6665 Wed Jun  7 19:02:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6666
6667         * decl.c (start_function): Handle setting C_C_D here.
6668         (set_C_C_D): Removed.
6669         (struct saved_scope): Remove class_decl.
6670         (push_to_top_level): Don't save current_class_decl.
6671         (pop_from_top_level): Don't restore current_class_decl or C_C_D.
6672         (struct cp_function): Add C_C_D.
6673         (push_cp_function_context): Save C_C_D.
6674         (pop_cp_function_context): Restore C_C_D.
6675
6676 Fri Jun  2 11:05:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6677
6678         * decl.c (set_C_C_D): New function.  suspend_momentary before
6679         building C_C_D.
6680         (pop_from_top_level): Call it.
6681         (start_function): Likewise.
6682         (pop_cp_function_context): Likewise.
6683
6684         * class.c, cp-tree.h, decl.c, decl2.c, parse.y: Lose all references
6685         to current_vtable_decl, CLASSTYPE_INST_VAR and CLASSTYPE_VTBL_PTR.
6686
6687         * decl.c (push_cp_function_context): Save current_class_decl.
6688         (pop_cp_function_context): Restore current_class_decl and set C_C_D.
6689         (pop_from_top_level): Don't use CLASSTYPE_INST_VAR to set C_C_D.
6690         (start_function): Likewise.
6691
6692         * class.c (popclass): Don't mess with current_class_decl,
6693         current_vtable_decl, or C_C_D.
6694
6695 Mon May 29 12:45:10 1995  Paul Eggert  <eggert@twinsun.com>
6696
6697         * Make-lang.in (c++.mostlyclean): Remove $(DEMANGLER_PROG).
6698
6699 Wed May 24 15:55:18 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6700
6701         * decl.c (duplicate_decls): Check simple_cst_equal result against 0.
6702         * decl2.c (finish_anon_union): Likewise.
6703         * method.c (largest_union_member): Likewise.
6704
6705 Wed May 24 14:41:11 1995  H.J. Lu  <hjl@nynexst.com>
6706
6707         * Make-lang.in (cxxmain.o): Replace single quotes with backslashes.
6708
6709 Mon May 22 17:38:48 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6710
6711         * Make-lang.in (g++, g++-cross, cc1plus, DEMANGLER_PROG):
6712         Use $@ instead of output name so works even if have .exe.
6713         (cxxmain.o): Use cp if ln -s fails.
6714         (c++.install-man): Use $(exeext) in executable names.
6715         (c++.mostlyclean, stage[1-4]): Use $(objext) in object file names.
6716         * Makefile.in (../cc1plus): Use $(exeext) in name of executable.
6717
6718 Wed May 24 01:39:03 1995  Jason Merrill  <jason@deneb.cygnus.com>
6719
6720         * call.c (build_method_call): parms can be null, duh.
6721
6722 Tue May 23 01:32:09 1995  Jason Merrill  <jason@deneb.cygnus.com>
6723
6724         * call.c (build_method_call): If convert_arguments failed, just bail.
6725
6726 Fri May 19 10:31:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6727
6728         * cvt.c (convert_force): Pass LOOKUP_NORMAL to cp_convert.
6729
6730         * tree.c (copy_to_permanent): Oops.
6731
6732 Fri May 19 10:01:07 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6733
6734         * cp-tree.h (break_out_target_exprs): Add decl.
6735
6736 Thu May 18 13:02:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6737
6738         * decl.c (start_function): Move *all* interface handling stuff after
6739         the pushdecl.
6740
6741         * tree.c (mapcar): Renamed from make_deep_copy and generalized.
6742         (perm_manip): Return t if permanent, otherwise 0.
6743         (copy_to_permanent): Use them.
6744         (bot_manip): Helper for break_out_target_exprs.
6745         (break_out_target_exprs): New function.  Uses mapcar.
6746
6747         * typeck.c (convert_arguments): Use it.
6748
6749         * method.c (hack_identifier): Use convert_from_reference to
6750         dereference a reference.
6751
6752 Wed May 17 17:54:54 1995  Mike Stump  <mrs@cygnus.com>
6753
6754         * call.c (convert_harshness): Move reference bashing before pointer
6755         to member bashing.
6756
6757 Wed May 17 16:57:53 1995  Mike Stump  <mrs@cygnus.com>
6758
6759         * cvt.c (convert_to_reference): Only complain, if complaints are
6760         wanted.
6761         * typeck.c (build_function_call_real): Likewise.  If
6762         LOOKUP_SPECULATIVELY is set and something won't work, return
6763         NULL_TREE.
6764         * cvt.c (cp_convert): Likewise.  Pass flags down to build_method_call.
6765         (convert): Pass LOOKUP_NORMAL to cp_convert.
6766         * typeck.c (convert_for_assignment): Likewise.
6767         (convert_force): Pass LOOKUP_COMPLAIN to cp_convert.
6768         (convert_arguments): Get out early if we get an error_mark_node.
6769         (convert_for_initialization): Use cp_convert instead of convert so
6770         that we can pass flags down.
6771         * cp-tree.h (LOOKUP_SPECULATIVELY): Added documentation.
6772
6773 Wed May 17 01:43:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6774
6775         * typeck2.c (store_init_value): Don't take the MAIN_VARIANT of the
6776         decl type.
6777
6778         * class.c (finish_struct): Don't complain about a class with no
6779         user-defined constructors but with a member that has no default
6780         constructor, as this is OK for aggregates.
6781
6782         * expr.c (cplus_expand_expr, NEW_EXPR): If this is an explicit
6783         constructor call, mark slot addressable.
6784
6785 Tue May 16 18:37:51 1995  Douglas Rupp  <drupp@cs.washington.edu>
6786
6787         * g++.c: Changed WINNT to _WIN32.
6788
6789 Tue May 16 12:40:16 1995  Jason Merrill  <jason@lisa.cygnus.com>
6790
6791         * lex.c (handle_sysv_pragma): Don't use token_buffer.
6792
6793 Tue May 16 12:05:26 1995  Mike Stump  <mrs@cygnus.com>
6794
6795         * call.c (resolve_scope_to_name): Add initial semantic support for
6796         namespaces.
6797         * class.c (finish_struct): Likewise.
6798         * cp-tree.h (NAMESPACE_LEVEL): Likewise.
6799         * cvt.c (build_up_reference, convert_to_reference): Likewise. 
6800         * decl.c (binding_level::namespace_p, suspend_binding_level): Likewise.
6801         (resume_binding_level, toplevel_bindings_p): Likewise
6802         (namespace_bindings_p, declare_namespace_level): Likewise.
6803         (resume_level, push_namespace, pop_namespace): Likewise.
6804         (pop_everything, pushtag, duplicate_decls, pushdecl): Likewise.
6805         (implicitly_declare, lookup_namespace_name): Likewise.
6806         (lookup_name_real, start_decl, make_temporary_for_reference): Likewise.
6807         (obscure_complex_init, finish_decl, expand_static_init): Likewise.
6808         (grokvardecl, grokdeclarator, parmlist_is_exprlist): Likewise.
6809         (store_parm_decls, hack_incomplete_structures): Likewise.
6810         * decl2.c (get_temp_name, finish_anon_union): Likewise.
6811         (current_namespace, push_namespace, pop_namespace): Likewise.
6812         (do_namespace_alias, do_toplevel_using_decl): Likewise.
6813         (do_class_using_decl): Likewise.
6814         * error.c (dump_decl): Likewise.
6815         * init.c (build_member_call, build_offset_ref): Likewise.
6816         * lex.c (identifier_type): Likewise.
6817         * parse.y (lang_extdef, using_decl, extdef): Likewise.
6818         (component_decl_1, nested_name_specifier_1): Likewise.
6819         * spew.c (yylex): Likewise.
6820         * tree.def (NAMESPACE_DECL): Likewise.
6821
6822 Tue May 16 11:55:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6823
6824         * decl.c (push_overloaded_decl): Return the new decl even if it
6825         can't be pushed.
6826
6827 Tue May 16 11:00:37 1995  Jason Merrill  <jason@lisa.cygnus.com>
6828
6829         * typeck.c (decay_conversion): Split out from default_conversion.
6830         (default_conversion): Call it.
6831         (build_binary_op): Likewise.
6832         (build_binary_op_nodefault): Use decay_conversion for truth ops.
6833
6834 Mon May 15 12:47:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6835
6836         * decl.c (warn_extern_redeclared_static): This is a pedwarn.
6837         (duplicate_decls): Always use the old decl's linkage info.  Don't
6838         play with linkage of consts.
6839         (pushdecl): Don't play with linkage of consts.
6840         (redeclaration_error_message): Don't complain about an old public
6841         decl and a new non-public decl here.
6842         (grokvardecl): Handle linkage of consts here.
6843         (grokdeclarator): An 'extern inline' is public.  Pass constp to
6844         grokvardecl.
6845         (start_function): Wait until after the pushdecl to do some linkage
6846         stuff.
6847
6848         * decl2.c (import_export_vtable): Make duplicates weak rather than
6849         static if supported.
6850         (import_export_inline): Likewise.
6851         * pt.c (do_pending_expansions): Likewise.
6852
6853         * class.c (build_vbase_path): flag_assume_nonnull_objects only
6854         affects reference conversion.
6855
6856         * init.c (emit_base_init): Build up an RTL_EXPR and add it to
6857         rtl_expr_chain.
6858         * decl.c, decl2.c: s/base_init_insns/base_init_expr/.
6859
6860 Tue May 16 07:06:28 1995  Paul Eggert  <eggert@twinsun.com>
6861
6862         * method.c (numeric_output_need_bar): Renamed from misspelling.
6863
6864         * typeck.c (build_ptrmemfunc): Fix misspellings in messages.
6865
6866 Sun May 14 10:26:22 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6867
6868         * lang-options.h, lang-specs.h: New files.
6869
6870 Thu May 11 00:31:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6871
6872         * typeck.c (default_conversion): Don't check for BLKmode before
6873         pulling out the decl_constant_value.
6874
6875         * decl.c (start_function): Clear named_labels and shadowed_labels.
6876
6877         * typeck.c (build_function_call_real): Also synthesize methods here.
6878
6879 Wed May 10 00:55:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6880
6881         * decl2.c (finish_file): Synthesize exported methods before the
6882         reconsider loop.
6883
6884         * parse.y: Move declaration of flag_new_for_scope to file scope.
6885
6886 Tue May  9 19:10:33 1995  Mike Stump  <mrs@cygnus.com>
6887
6888         * decl2.c: Add flag_new_for_scope for new -ffor-scope flag.
6889         * parse.y (FOR): Conditionalize the pushing and poping of scope for
6890         the for-init-statement upon the new flag_new_for_scope.
6891         * parse.y (try_block): Simplify and use compstmt.
6892
6893 Mon May  8 12:41:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6894
6895         * decl.c (define_function): Mark function decl artificial.
6896
6897 Sun May  7 00:51:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6898
6899         * parse.y (simple_stmt, FOR): Put back push/pop for condition scope.
6900
6901         * decl2.c (grokclassfn): DECLs don't have cv-qualified types.
6902         * tree.c (build_cplus_method_type): Likewise.
6903
6904         * cp-tree.h (SET_DECL_ARTIFICIAL): Just set DECL_ARTIFICIAL to 1.
6905
6906         * typeck.c (build_function_call_real): If convert_arguments failed,
6907         just bail.
6908         (convert_arguments): If one of the arguments is error_mark_node,
6909         just bail.
6910
6911 Sat May  6 02:39:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6912
6913         * decl.c (duplicate_decls): Don't check DECL_NOT_REALLY_EXTERN for
6914         decls that don't include it.
6915
6916 Fri May  5 14:23:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6917
6918         * decl.c (duplicate_decls): Decls that have DECL_INTERFACE_KNOWN or
6919         DECL_NOT_REALLY_EXTERN set aren't extern decls.
6920
6921         * typeck.c (build_indirect_ref): Don't call default_conversion for a
6922         parameter of reference_type.
6923         * cvt.c (convert_from_reference): Just use build_indirect_ref.
6924
6925         * pt.c (do_type_instantiation): Only instantiate member functions
6926         that actually come from templates.
6927
6928 Fri May  5 09:46:05 1995  Mike Stump  <mrs@cygnus.com>
6929
6930         * parse.y: Generalized cleanup of poplevels, and compound statements
6931         and compound statements in try blocks.  Rewritten `for' rule so that
6932         the scope of variables declared in the for clause is shortened to
6933         span just to the end of the statement, instead of the whole
6934         containing block.
6935
6936 Fri May  5 00:37:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6937
6938         * call.c (convert_harshness): Handle pointers to members better.
6939
6940 Thu May  4 16:00:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6941
6942         * decl2.c (delete_sanity): Do access control here.
6943         * init.c (build_delete): Instead of here.
6944
6945         * Make-lang.in: Build c++filt.
6946
6947 Wed May  3 02:59:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6948
6949         * decl2.c (cplus_decl_attributes): If we just modified a TYPE_DECL,
6950         update our IDENTIFIER_TYPE_VALUE.
6951
6952 Fri Apr 28 07:58:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6953
6954         * lex.c (cons_up_default_function): Fix linkage of #pragma
6955         implemented functions.
6956
6957 Thu Apr 27 16:56:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6958
6959         * method.c (build_overload_name): Simplify and fix repeated type
6960         folding.
6961
6962         * decl.c (grokdeclarator): Prohibit pointers to void or reference
6963         members.
6964
6965 Thu Apr 27 09:49:07 1995  Mike Stump  <mrs@cygnus.com>
6966
6967         * typeck2.c (process_init_constructor): Make sure initializers are
6968         fully digested.
6969
6970 Thu Apr 27 01:11:55 1995  Jason Merrill  <jason@python.cygnus.com>
6971
6972         * lex.c (cons_up_default_function): Always defer synthesis.
6973
6974 Thu Apr 27 00:20:37 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6975
6976         * decl2.c (mark_inline_for_output): Don't play with pending_inline
6977         stuff.
6978
6979 Wed Apr 26 17:48:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6980
6981         * call.c (user_harshness): New function; like build_type_conversion,
6982         but doesn't actually build anything.
6983         (compute_conversion_costs): Use it instead of build_type_conversion.
6984
6985 Wed Apr 26 17:11:25 1995  Jason Merrill  <jason@deneb.cygnus.com>
6986
6987         * typeck.c (build_function_call_real): Improve error message for
6988         calling a non-function.
6989
6990         * method.c (hack_identifier): Lose check for calling a data member.
6991
6992 Wed Apr 26 16:59:13 1995  Mike Stump  <mrs@cygnus.com>
6993
6994         * typeck2.c (build_functional_cast): Remove very old cruft.
6995         Seems like good code is generated without it.
6996
6997 Wed Apr 26 00:47:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6998
6999         * method.c (do_build_assign_ref): Fix handling of anonymous unions.
7000         (do_build_copy_constructor): Likewise.
7001
7002         * parse.y (simple_stmt, SWITCH): Call {push,pop}_switch.
7003
7004         * decl.c (push_switch): New function.
7005         (pop_switch): Likewise.
7006         (define_case_label): Check for jumping over initialization.
7007
7008         * call.c (build_method_call): Check for an inline function being
7009         called before its definition has been seen.
7010         * typeck.c (build_function_call_real): Likewise.
7011
7012         * decl.c (duplicate_decls): Check for a function being redeclared
7013         inline after its address has been taken.
7014
7015         * typeck.c (build_conditional_expr): Handle related class lvalues.
7016
7017 Tue Apr 25 13:20:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7018
7019         * pt.c (do_pending_expansions): Don't expand unused templates.
7020
7021         * parse.y (component_decl): Accept a lone semicolon.
7022
7023 Tue Apr 25 00:25:56 1995  Jason Merrill  <jason@rtl.cygnus.com>
7024
7025         * call.c (build_method_call): Don't allow an RTL_EXPR to serve as the
7026         object parameter anymore.
7027
7028         * expr.c (cplus_expand_expr): Don't create RTL_EXPRs with no insns.
7029
7030 Mon Apr 24 12:35:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7031
7032         * parse.y (simple_stmt, decl case): Clear prefix_attributes.
7033         (lang_extdef): Likewise.
7034
7035         * parse.y (maybe_parmlist): New rule for use in declarators where
7036         this could either be a list of expressions or parameters.  Calls
7037         suspend_momentary before deciding which.
7038         (direct_after_type_declarator): Use it.
7039         (complex_direct_notype_declarator): Use it.
7040
7041         * pt.c (tsubst): Propagate attributes const and noreturn.
7042
7043         * typeck.c (build_modify_expr): If warn_synth, call build_opfncall
7044         before doing the default thing.
7045
7046 Thu Apr 27 21:49:36 1995  Doug Evans  <dje@cygnus.com>
7047
7048         * typeck.c (common_type): Call lookup_attribute instead of
7049         value_member.
7050
7051 Tue Apr 25 18:07:43 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7052
7053         * Make-lang.in: Change "realclean" to "maintainer-clean".
7054
7055 Sun Apr 23 12:32:38 1995  Mike Stump  <mrs@cygnus.com>
7056
7057         * decl2.c (finish_file): Fix broken linked list handling.
7058
7059 Fri Apr 21 18:08:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7060
7061         * class.c (finish_base_struct): Don't set TYPE_HAS_COMPLEX_*_REF
7062         as often.
7063         (finish_struct): Likewise.
7064
7065         * various: Use TYPE_HAS_TRIVIAL_* instead of TYPE_HAS_COMPLEX_*.
7066
7067         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): New macro.
7068         (TYPE_HAS_TRIVIAL_ASSIGN_REF): New macro.
7069
7070 Fri Apr 21 15:52:22 1995  Jason Merrill  <jason@python.cygnus.com>
7071
7072         * typeck.c (c_expand_return): Only expand a returned TARGET_EXPR if
7073         it is of the same type as the return value.
7074
7075 Fri Apr 21 03:01:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7076
7077         * decl2.c (finish_file): Reconsider if synthesizing a method wrote
7078         out its assembly.
7079
7080         * typeck.c (convert_for_initialization): Don't call a trivial copy
7081         constructor.
7082
7083         * typeck2.c (store_init_value): Only abort if the type has a
7084         non-trivial copy constructor.
7085
7086         * typeck.c (c_expand_return): If we're returning in a register and
7087         the return value is a TARGET_EXPR, expand it.  Only do
7088         expand_aggr_init if we're returning in memory.
7089         (expand_target_expr): Function to expand a TARGET_EXPR.
7090         (build_modify_expr): Use it.
7091
7092         * tree.c (build_cplus_new): Layout the slot.
7093
7094         * expr.c (cplus_expand_expr): Use expand_call to expand the call
7095         under a NEW_EXPR, so the target is not discarded.
7096
7097 Thu Apr 20 14:59:31 1995  Mike Stump  <mrs@cygnus.com>
7098
7099         * gc.c (build_dynamic_cast): Tighten error checking.
7100
7101 Thu Apr 20 11:23:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7102
7103         * expr.c (cplus_expand_expr): Only abort if the returned target is
7104         different from what we expected if the type has a non-trivial copy
7105         constructor.
7106
7107         * decl2.c (cplus_decl_attributes): Attributes applied to a template
7108         really apply to the template's result.
7109
7110         * tree.c (lvalue_p): Check IS_AGGR_TYPE instead of TREE_ADDRESSABLE
7111         to decide whether to consider a CALL_EXPR an lvalue.
7112
7113         * class.c (finish_struct_bits): Only set TREE_ADDRESSABLE if the
7114         type has a non-trivial copy constructor.
7115
7116         * decl.c (start_function): If interface_known, unset
7117         DECL_NOT_REALLY_EXTERN on the function.
7118
7119 Wed Apr 19 16:53:13 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7120
7121         * pt.c (do_function_instantiation): Handle explicit instantiation of
7122         member functions.
7123         (do_type_instantiation): Handle 'inline template class foo<int>',
7124         meaning just spit out the vtable.
7125
7126         * lex.c (cons_up_default_function): Set DECL_NOT_REALLY_EXTERN on
7127         the consed functions.
7128
7129         * decl2.c (import_export_inline): Set DECL_INTERFACE_KNOWN.
7130
7131 Wed Apr 19 16:28:17 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7132
7133         * call.c, class.c, decl2.c, gc.c, init.c, parse.y, pt.c, search.c,
7134         typeck.c: Include output.h.
7135
7136 Wed Apr 19 14:57:21 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
7137
7138         * call.c (build_method_call): Allow a signature member functions to
7139         be called from a default implementation.
7140
7141 Wed Apr 19 10:21:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7142
7143         * repo.c (finish_repo): Remember what directory we are in.
7144
7145         * search.c (expand_upcast_fixups): Don't mess with abort_fndecl.
7146
7147         * repo.c: Use obstacks instead of fixed-size buffers.  Don't spit
7148         out the second copy of the symbol name.  Don't remember COLLECT_GCC.
7149
7150 Wed Apr 19 02:32:40 1995  Mike Stump  <mrs@cygnus.com>
7151
7152         * search.c (virtual_context): New function to get the virtual
7153         context of a function.
7154         (expand_upcast_fixups): New function to generate runtime vtables.
7155         (fixup_virtual_upcast_offsets): Likewise.
7156         (expand_indirect_vtbls_init): Use fixup_virtual_upcast_offsets to
7157         ensure that the this offsets for upcasts from virtual bases into
7158         other virtual bases or non-virtual bases are correct at construction
7159         time and destruction time.
7160         * class.c (fixup_vtable_deltas): Modify to fixup all offsets in all
7161         vtables in all virtual bases, instead of just one vtable in each
7162         virtual base.
7163         (fixup_vtable_deltas1): Likewise.
7164
7165 Tue Apr 18 03:57:35 1995  Michael Meissner  <meissner@cygnus.com>
7166
7167         * Makefile.in (lex.o): Add dependency on c-pragma.h.
7168
7169         * lex.c (handle_sysv_pragma): Use NULL_PTR and NULL_TREE as
7170         appropriate, instead of 0.
7171
7172 Mon Apr 17 12:28:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7173
7174         * decl.c (pushdecl): Use decls_match, not duplicate_decls, for
7175         comparing local and global decls.
7176
7177 Fri Apr 14 01:46:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7178
7179         * typeck.c (convert_arguments): Only prohibit passing to ... of
7180         types with non-trivial copy constructors.
7181
7182         * repo.c (repo_template_used): Don't try to mess with no id.
7183
7184 Fri Apr 14 23:32:50 1995  Per Bothner  <bothner@rtl.cygnus.com>
7185
7186         * decl.c (duplicate_decls):  Use cp_warning_at for redundant-decls.
7187
7188 Thu Apr 13 15:37:42 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7189
7190         * cp-tree.h (current_tinst_level): Delete declaration, since it's
7191         static inside pt.c.
7192
7193         * typeck.c (build_modify_expr): Catch incompatible array assignment.
7194
7195         * parse.y (attribute_list, attrib): Rewrite actions to feed the
7196         right stuff to decl_attributes.
7197
7198 Thu Apr 13 11:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7199
7200         * search.c (dfs_debug_mark): Check for magic virtual like
7201         import_export_vtable.
7202
7203         * typeck.c (build_binary_op_nodefault): Don't call cp_pedwarn with
7204         four args.
7205
7206 Wed Apr 12 12:02:57 1995  Jason Merrill  <jason@deneb.cygnus.com>
7207
7208         * decl2.c (finish_file): Move prevtable pass before needs_messing_up
7209         decision.
7210
7211 Tue Apr 11 11:20:27 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7212
7213         * decl.c (finish_decl): If we're writing out a static data member of
7214         a class, we want the debug info for that class.
7215
7216         * gc.c (build_t_desc): Check linkage of a class properly.
7217
7218         * class.c (finish_struct): Set the 'headof' offset for the main
7219         vtable properly.
7220         (prepare_fresh_vtable): Fix typeinfo pointer here.
7221         (modify_one_vtable): Instead of here.
7222
7223 Mon Apr 10 12:15:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7224
7225         * repo.c (repo_get_id): New function to return the interesting
7226         identifier for a repo entity.
7227         (repo_template_used): Use it.
7228         (repo_template_instantiated): Mark the id as chosen.
7229         (init_repo): Record whether or not the id was chosen.
7230         (finish_repo): Note if an id was newly chosen.
7231
7232         * pt.c (do_function_instantiation): Call repo_template_instantiated.
7233         (do_type_instantiation): Likewise.  Don't diagnose multiple
7234         instantiation.
7235
7236         * decl2.c (finish_file): Use DECL_NOT_REALLY_EXTERN when deciding
7237         whether or not to synthesize a method.
7238
7239         Undo these changes:
7240         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
7241         * class.c (modify_all_direct_vtables): ditto.
7242         * init.c (expand_direct_vtbls_init): expand more vtables if
7243         flag_rtti is on.
7244
7245 Sat Apr  8 17:45:41 1995  Mike Stump  <mrs@cygnus.com>
7246
7247         * gc.c (build_headof): Use ptrdiff_type_node instead of
7248         integer_type_node on pointer arithmetic.
7249
7250 Sat Apr  8 11:57:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7251
7252         * typeck.c (build_modify_expr): Undo previous change.
7253
7254 Thu Apr  6 01:23:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7255
7256         * Makefile.in (compiler): Remove ../cc1plus before rebuilding it.
7257
7258         * repo.c (get_base_filename): Put the .rpo file in the directory
7259         with the object file, not the source.
7260
7261         * typeck.c (build_conditional_expr): Handle pmf's better.
7262
7263         * repo.c (finish_repo): Also use ASM_OUTPUT_LABELREF to print out
7264         the name of the symbol.
7265
7266 Wed Apr  5 15:24:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7267
7268         * repo.c (open_repo_file): Make repo filename DOS-compliant.
7269         (*): Also write a new repo file if some previously-used
7270         templates are no longer used.  Only remember the identifier.
7271
7272         * lex.c (cons_up_default_function): If this function belongs to a
7273         template class, call repo_template_used for it.
7274
7275         * repo.c (repo_template_used): Using a class means using its vtable,
7276         if any.
7277         (finish_repo): Likewise.
7278
7279         * typeck.c (build_modify_expr): Only wrap TARGET_EXPRs in RTL_EXPRs
7280         if the type has a complex copy constructor.
7281
7282         * decl2.c (lang_decode_option): -frepo implies
7283         -fno-implicit-templates.
7284
7285         * decl.c (start_function): Clear current_{base,member}_init_list.
7286
7287         * lex.c (init_lex): Also unset *_eq if ! flag_operator_names.
7288
7289 Tue Apr  4 16:11:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7290
7291         * decl.c (struct cp_function): Add {base,member}_init_list.
7292         (push_cp_function_context): Save current_{base,member}_init_list.
7293         (pop_cp_function_context): Restore them.
7294
7295 Mon Apr  3 16:55:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7296
7297         * repo.c (get_base_filename): Take filename parm, fix logic bug.
7298
7299         * typeck.c (build_compound_expr): Do not warn about a compound expr
7300         in which the first expression has no side effects.
7301         (build_x_compound_expr): Warn here instead.
7302         (build_conditional_expr): Don't warn about a conditional expression
7303         between an enum and the type it promotes to.
7304
7305         * init.c (build_new): Handle initialization of arrays of builtins
7306         properly.
7307
7308 Mon Apr  3 15:08:04 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7309
7310         * repo.c: Include config.h to get definitions of bcopy and rindex
7311         on systems that don't have them (e.g., SVR4).
7312
7313 Mon Apr  3 14:41:55 1995  Mike Stump  <mrs@cygnus.com>
7314
7315         * decl2.c (finish_table): Pass NULL_TREE instead of init to
7316         finish_decl so that it won't try and do error checking on the
7317         initializer.
7318
7319 Mon Apr  3 10:45:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7320
7321         * repo.c (get_base_filename): Analyze COLLECT_GCC_OPTIONS to
7322         determine whether this compile used -c -o.
7323         (open_repo_file): Use get_base_filename.  Remove the extension.
7324         (finish_repo): Spit out the values of main_input_filename,
7325         COLLECT_GCC and COLLECT_GCC_OPTIONS.
7326
7327         * parse.y (structsp): Add TYPENAME_KEYWORD complex_type_name.
7328
7329 Sun Apr  2 23:43:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7330
7331         * search.c (compute_access): Don't try to do access control on
7332         nested types.
7333
7334 Fri Mar 31 10:14:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7335
7336         * repo.c: New file to handle things repo.
7337
7338         * pt.c (instantiate_template): Call repo_template_used if the
7339         definition is accessible.
7340         (mark_function_instantiated): Split out from
7341         do_function_instantiation.
7342         (mark_class_instantiated): Split out from do_type_instantiation.
7343
7344         * parse.y (template_instantiate_once): Call repo_template_used.
7345
7346         * lex.c (lang_init): Call init_repo.
7347
7348         * decl2.c: Handle flag_use_repository.
7349         (finish_file): Call finish_repo.
7350
7351         * decl.c (start_method): Call repo_template_used if this is a
7352         template method.
7353
7354         * Makefile.in (CXX_OBJS): Add repo.o.
7355         (repo.o): Add dependencies.
7356
7357         * Make-lang.in (CXX_SRCS): Add repo.c.
7358
7359         * decl.c (start_function): If DECL_INTERFACE_KNOWN and
7360         DECL_NOT_REALLY_EXTERN are both set, unset DECL_EXTERNAL.
7361
7362         * typeck.c (build_binary_op_nodefault): Identify the invalid operand
7363         types used.
7364
7365         * decl.c (duplicate_decls): Propagate DECL_NOT_REALLY_EXTERN.
7366
7367 Thu Mar 30 17:54:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7368
7369         * typeck.c (build_binary_op_nodefault): Tidy up use of build_type
7370         and result_type.  When checking for comparison between signed
7371         and unsigned, use result_type rather than the (possibly shortened)
7372         type of op0.  Also, don't warn about equality comparison of a
7373         signed operand to an unsigned constant that fits in the signed
7374         type.
7375
7376         * method.c (do_build_copy_constructor): Reverse
7377         current_base_init_list after we've built it up.
7378
7379 Thu Mar 30 14:35:18 1995  Mike Stump  <mrs@cygnus.com>
7380
7381         * except.c (build_throw): Never warn about the value of throw not
7382         being used.
7383
7384 Thu Mar 30 13:16:54 1995  Mike Stump  <mrs@cygnus.com>
7385
7386         * except.c (expand_start_catch_block): Check for bad catch parameter
7387         declarations.
7388
7389 Thu Mar 30 13:06:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7390
7391         * decl.c (finish_function): Only set DECL_NOT_REALLY_EXTERN if
7392         DECL_EXTERNAL is not already set.
7393
7394 Thu Mar 30 11:26:24 1995  Mike Stump  <mrs@cygnus.com>
7395
7396         * method.c (emit_thunk): Let poplevel know that the last level is
7397         for a function so it can create a BLOCK_NODE and set DECL_INITIAL.
7398
7399 Thu Mar 30 11:15:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7400
7401         * decl2.c (import_export_inline): Don't set DECL_NOT_REALLY_EXTERN
7402         here.
7403
7404         * decl.c (grokdeclarator): OK, don't abort if we see a decl with
7405         METHOD_TYPE.
7406         (finish_function): Set DECL_EXTERNAL and DECL_NOT_REALLY_EXTERN on
7407         all deferred inlines.
7408
7409 Wed Mar 29 19:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7410
7411         * cp-tree.h (DECL_THIS_INLINE): New macro.
7412         (DECL_NOT_REALLY_EXTERN): New macro.
7413         (DECL_THIS_STATIC): New macro.
7414
7415         * decl.c: Lose all references to current_extern_inline.  Break
7416         inline semantics into DECL_INLINE for actual inlining and
7417         DECL_THIS_INLINE for the linkage wierdness.  Use DECL_THIS_STATIC.
7418         * decl2.c: Use DECL_NOT_REALLY_EXTERN to indicate that we want to
7419         emit an inline here.  Associated changes.
7420         * lex.c: Likewise.
7421         * pt.c: Likewise.
7422         * typeck.c: Likewise.
7423
7424         * call.c (build_method_call): Don't bother trying to handle inlines
7425         specially.
7426         * cvt.c (convert_to_aggr): Likewise.
7427
7428         * pt.c (do_function_instantiation): Handle instantiation of
7429         public inlines, too.
7430
7431 Wed Mar 29 16:04:25 1995  Mike Stump  <mrs@cygnus.com>
7432
7433         * except.c (init_exception_processing): Change the interface for
7434         __throw_type_match and add decl for new rtti matching routine
7435         __throw_type_match_rtti.
7436         (build_eh_type): New routine to build a run time descriptor for the
7437         expression given. 
7438         (expand_start_catch_block): Update to use new calling convention for
7439         the matcher.
7440         (expand_throw): Update to use build_eh_type.
7441
7442 Mon Mar 27 07:14:33 1995  Warner Losh   <imp@village.org>
7443
7444         * g++.c: Removed __NetBSD__ from conditional.
7445         Declare strerror if HAVE_STRERROR is defined; otherwise
7446         declare sys_errlist and sys_nerr.
7447         (my_strerror): New function.
7448
7449 Tue Mar 28 14:16:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7450
7451         * search.c (get_binfo): Don't try to be so clever.
7452
7453         * tree.c (copy_to_permanent): Also suspend_momentary().
7454
7455         * cvt.c (cp_convert_to_pointer): Hand off to convert_fn_pointer even
7456         if the types are the same.
7457
7458         * decl.c (start_function): Handle extern inlines more like C++ says
7459         we should.
7460
7461         * init.c (build_member_call): Hand constructor calls off to
7462         build_functional_cast.
7463
7464         * typeck2.c (build_functional_cast): Use DECL_NESTED_TYPENAME to get
7465         the name of the type.
7466
7467 Tue Mar 28 13:13:56 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7468
7469         * decl.c (grokdeclarator): Check for the decl returned by
7470         grokfndecl to be null before using build_decl_attribute_variant.
7471
7472 Mon Mar 27 18:04:41 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7473
7474         * init.c (build_new): Use build_pointer_type instead of
7475         TYPE_POINTER_TO.
7476
7477 Fri Mar 24 12:11:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7478
7479         * typeck.c (build_conditional_expr): Handle pmfs.
7480         (convert_for_assignment): Fix pmf support.
7481
7482         * cvt.c (convert_fn_ptr): Support !flag_vtable_thunks.
7483         (cp_convert_to_pointer): Handle pmfs.
7484         (cp_convert): Pass pmfs to cp_convert_to_pointer.
7485
7486         * typeck.c (common_type): Handle inheritance for pmfs.
7487
7488         * typeck2.c (build_m_component_ref): Do access control.
7489
7490         * typeck.c (comp_target_types): Check for conversion to void *
7491         before checking trickier conversions.
7492
7493         * decl.c (duplicate_decls): Propagate DECL_ABSTRACT_VIRTUAL_P.
7494
7495         * pt.c (push_tinst_level): Complain if template instantiation depth
7496         is greater than max_tinst_depth.
7497
7498         * typeck.c (common_type): Assume that we can call common_type to
7499         unify the target type of a pointer.
7500
7501 Thu Mar 23 00:48:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7502
7503         * decl2.c (finish_file): Don't synthesize methods at
7504         finish_vtable_prevardecl time.  Do synthesize methods that are not
7505         used, but are public and not external.
7506
7507         * cvt.c (build_type_conversion): Only give an error if for_sure.
7508
7509         * typeck.c (comp_target_types): Only support pointer conversions if
7510         nptrs > 0.
7511
7512 Wed Mar 22 19:30:15 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7513
7514         * init.c (build_new): Catch use of an initializer list where it
7515         shouldn't be.
7516
7517 Wed Mar 22 16:21:07 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7518
7519         * init.c (build_new): Wrap alloc_expr in an RTL_EXPR if nelts is
7520         non-constant.
7521
7522         * decl2.c: temp_name_counter is now public.
7523
7524         * decl.c (struct cp_function): Add temp_name_counter field.
7525         (push_cp_function_context): Save it.
7526         (pop_cp_function_context): Restore it.
7527
7528         * typeck.c (common_type): Handle unifying function types, and unify
7529         unmatched things to void* with a compiler_error, rather than
7530         silently like before.
7531
7532 Wed Mar 22 15:10:34 1995  Mike Stump  <mrs@cygnus.com>
7533
7534         * decl2.c (finish_prevtable_vardecl, finish_vtable_vardecl): Revert
7535         Brendan's last change and fix latent problem that causes TD entries
7536         to not come out when the things that need them has yet to be
7537         expanded.
7538
7539 Wed Mar 22 15:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7540
7541         * typeck.c (build_binary_op_nodefault, comparison ops): Update type0
7542         and type1, since we might have changed op0 or op1.
7543
7544 Wed Mar 22 13:33:45 1995  Jason Merrill  <jason@python.cygnus.com>
7545
7546         * typeck.c (common_type): Don't mess up templates.
7547
7548 Wed Mar 22 04:56:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7549
7550         * typeck.c (common_type): Handle ptms properly.  Also handle 
7551         T* -> void*.
7552         (build_binary_op_nodefault): New variable build_type controls what
7553         type is given to the expression when it is created.  Set this to
7554         boolean_type_node for comparison ops instead of using result_type.
7555         (comp_target_types): Allow T * -> void *.
7556
7557         * cvt.c (cp_convert_to_pointer): Do access control when converting
7558         ptms, too.
7559
7560 Tue Mar 21 17:25:06 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7561
7562         * parse.y (extern_lang_string): Catch use of linkage specs that
7563         aren't all naming the same language.
7564
7565         * class.c (finish_struct): Delete accidental duplicate code.
7566
7567 Tue Mar 21 14:00:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7568
7569         * typeck.c (build_binary_op_nodefault): Disable pedwarns about
7570         comparing functions and incomplete types.
7571
7572         * decl.c (finish_function): Only unset current_function_decl if
7573         !nested.
7574         (duplicate_decls): Last change went too far; we only want to stop
7575         checking for value/reference ambiguity.
7576
7577 Tue Mar 21 01:26:39 1995  Mike Stump  <mrs@cygnus.com>
7578
7579         * gc.c (build_generic_desc): Zap the DECL_SIZE so that we can lay it
7580         out fresh, as the new type may be larger.
7581
7582 Mon Mar 20 19:01:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7583
7584         * expr.c (extract_init): Try to expand the RTL for the
7585         initialization and figure out what it will look like so we can avoid
7586         run-time initialization.  Disabled for now.
7587         (extract_scalar_init): Helper for scalar initialization.
7588         (extract_aggr_init): Helper for aggregate initialization.
7589
7590         * decl.c (duplicate_decls): Don't complain about ambiguous
7591         declarations.
7592         (obscure_complex_init): Now returns a tree.  Call extract_init if
7593         we're optimizing and this is a toplevel decl.
7594         (finish_decl): Update accordingly.
7595
7596         * lex.c (check_newline): If we're just changing files (not pushing
7597         or popping), update input_file_stack->name.
7598
7599 Mon Mar 20 17:55:04 1995  Mike Stump  <mrs@cygnus.com>
7600
7601         * pt.c (type_unification): Only TEMPLATE_DECLs are handled right now
7602         in the transitive unification code.
7603
7604 Mon Mar 20 16:07:50 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7605
7606         * decl.c (shadow_tag): Don't allow inline, virtual, or explicit on
7607         non-functions.
7608         (grokdeclarator): Don't allow friends to be defined in local classes.
7609
7610 Sat Mar 18 04:03:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7611
7612         * decl2.c (finish_prevtable_vardecl): Use DECL_DECLARED_STATIC
7613         rather than DECL_SAVED_INSNS to decide whether or not this method
7614         was declared inline.
7615
7616         * method.c (synthesize_method): Turn off DECL_INLINE if
7617         function_cannot_inline_p thinks we're too large.
7618
7619         * typeck.c (build_indirect_ref): Use build_expr_type_conversion.
7620
7621 Fri Mar 17 17:47:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7622
7623         * class.c (instantiate_type): Handle pmfs.
7624
7625         * typeck.c (convert_for_assignment): Check types when assigning one
7626         pmf to another.
7627
7628         * decl.c (define_label): Fix logic for printing out the name of the
7629         label in an error message.
7630
7631         * error.c (dump_expr): Support ARRAY_REF.
7632
7633 Fri Mar 17 17:43:02 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7634
7635         * decl2.c (finish_vtable_vardecl): Call build_t_desc here.
7636         (finish_prevtable_vardecl): Instead of here.
7637
7638 Fri Mar 17 14:40:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7639
7640         * decl.c (expand_static_init): Also use expand_aggr_init if the
7641         initializer is a TREE_LIST.     
7642         (grokdeclarator): Only pedwarn about extra qualification if -pedantic.
7643
7644         * pt.c (unify): Fix unification of return type.
7645
7646         * expr.c (fixup_result_decl): Use store_expr, rather than
7647         emit_move_insn, to move the return value into the place where
7648         callers will expect it.
7649
7650 Thu Mar 16 22:05:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7651
7652         * init.c (build_offset_ref): Call assmble_external on functions.
7653         * typeck.c (build_component_ref): Likewise.
7654
7655 Thu Mar 16 20:28:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7656
7657         * decl.c (struct saved_scope): Add members base_init_list and
7658         member_init_list.
7659         (push_to_top_level): Save current_base_init_list and
7660         current_member_init_list to them.
7661         (pop_from_top_level): Put it back.
7662
7663 Thu Mar 16 19:21:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7664
7665         * pt.c (instantiate_template): Call assemble_external.  
7666
7667 Thu Mar 16 18:07:54 1995  Brendan Kehoe  <brendan@phydeaux.cygnus.com>
7668
7669         * class.c: Include rtl.h, to get NULL_RTX.
7670         (finish_struct): Also zero out DECL_SAVED_INSNS, to avoid problems
7671         on hosts with different sizes for each part of the union.
7672         * tree.c: Also include rtl.h.
7673         (layout_basetypes): Same change for DECL_SAVED_INSNS.
7674
7675 Thu Mar 16 13:57:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7676
7677         * pt.c (unify): Fix array domain unification for 64-bit targets.
7678
7679         * decl2.c (finish_file): Push bizarre type decl before walking the
7680         vtables the first time.
7681         (walk_vtables): OK, don't set prev to vars if the vardecl_fn messed
7682         with TREE_CHAIN (prev).
7683
7684         * init.c (emit_base_init): Use convert_pointer_to_real instead of
7685         convert_pointer_to when converting to a direct base.
7686
7687 Wed Mar 15 20:26:29 1995  Mike Stump  <mrs@cygnus.com>
7688
7689         * pt.c (type_unification): Handle transitive unification better.
7690
7691 Wed Mar 15 13:56:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7692
7693         * decl2.c (walk_vtables): Always set prev to vars.
7694         (mark_vtable_entries): Call assemble_external on the vtable entries.
7695
7696         * class.c (finish_struct): Set the vtable's size to NULL_TREE before
7697         calling layout_decl, so that it gets updated properly.
7698
7699         Finally re-enable dynamic synthesis.  This time it works.
7700         * method.c (synthesize_method): Pass decl_function_context (fndecl)
7701         to {push,pop}_cp_function_context.
7702         * decl.c (push_cp_function_context): Now takes a tree argument.
7703         (pop_cp_function_context): Likewise.
7704         * call.c (build_method_call): Enable synthesis.
7705         * lex.c (cons_up_default_function): Likewise.
7706
7707 Tue Mar 14 19:14:19 1995  Doug Evans  <dje@chestnut.cygnus.com>
7708
7709         * parse.y (setattrs): Chain onto prefix_attributes rather than
7710         setting it.
7711
7712 Wed Mar 15 13:00:00 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7713
7714         * decl.c (pushdecl): Check if the type of the VAR_DECL is an
7715         error_mark_node before trying to read TYPE_LANG_SPECIFIC. 
7716
7717 Mon Mar 13 21:00:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7718
7719         * decl.c (grokdeclarator, case ARRAY_REF): Wrap the exp with fold,
7720         and convert the size and integer_one_node to the index type.
7721
7722 Mon Mar 13 08:01:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7723
7724         * typeck.c (get_member_function_from_ptrfunc): Save the instance
7725         argument, and tack it onto the front of the COND_EXPR to make the
7726         semantics come out right.  Grab the instance argument from
7727         '*instance_ptrptr', rather than having it passed in separately.
7728         
7729         * various: Change various consed-up comparison operations to have
7730         boolean type.  Remove the instance argument in calls to
7731         get_member_function_from_ptrfunc.
7732
7733         * error.c (dump_expr): Dump true and false as "true" and "false".
7734
7735         * decl2.c (finish_file): Also set DECL_STATIC_FUNCTION_P on the
7736         global init function.
7737
7738         * decl.c (finish_function): Only set DECL_EXTERNAL here if the
7739         inline function is public.
7740
7741 Sat Mar 11 00:58:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7742
7743         * init.c (is_friend): Be more careful about checking
7744         DECL_CLASS_CONTEXT on non-member functions.
7745
7746         * decl2.c (finish_vtable_vardecl): Don't bother calling
7747         assemble_external here.
7748         (prune_vtable_vardecl): New function that just splices out the
7749         vtable decl from the top-level decls.
7750         (import_export_inline): Unset DECL_EXTERNAL at first.
7751         (finish_file): Don't bother calling assemble_external here.  Do
7752         splice out all of the vtables.
7753
7754 Fri Mar 10 14:42:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7755
7756         * decl.c (finish_function): If we're not emitting the function yet,
7757         call assemble_external for it.
7758
7759         * decl2.c (finish_prevtable_vardecl): Don't call mark_vtable_entries
7760         here.
7761         (finish_vtable_vardecl): Don't do the linkage deduction thing here.
7762         Also don't splice out the current vtable if it is unused.
7763         (finish_file): Move the second walk_vtables and the synthesis check
7764         inside the 'reconsider' loop.  Move thunk emission after the
7765         'reconsider' loop.
7766
7767 Thu Mar  9 16:28:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7768
7769         * pt.c (tsubst): Don't bother calling cp_build_type_variant, since it
7770         was passing bogus values for readonly and volatile from the original
7771         template decl, not the resultant type of the tsubst call.
7772
7773         * class.c (duplicate_tag_error): Use cp_error_at to point out the
7774         previous definition of the tag.
7775
7776 Thu Mar  9 10:46:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7777
7778         * decl.c (start_function): Clear base_init_insns and protect_list.
7779         (struct cp_function): Add base_init_insns field.
7780         (push_cp_function_context): Also save base_init_insns.
7781         (pop_cp_function_context): Also restore base_init_insns.
7782
7783 Wed Mar  8 13:31:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7784
7785         * init.c (member_init_ok_or_else): Check for initializing a static
7786         member here.
7787         (emit_base_init): Instead of here.
7788
7789 Tue Mar  7 16:03:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7790
7791         * call.c (build_method_call): Disable synthesis as needed.
7792         * lex.c (cons_up_default_function): Likewise.
7793
7794 Tue Mar  7 10:14:29 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7795
7796         * parse.y: New rules to allow attributes in a prefix position.
7797         (prefix_attributes): New variable.  Pass it into cplus_decl_attributes.
7798         (setattr): New rule.
7799         (reserved_declspecs, declmods): Catch attributes here.
7800         * decl2.c (cplus_decl_attributes): Add PREFIX_ATTRIBUTES argument.
7801         * decl.c (duplicate_decls): Pass DECL_MACHINE_ATTRIBUTES to
7802         descendent typedef.
7803         (grokdeclarator): Added code to support machine attributes.
7804         * Makefile.in (stamp-parse): Expect 5 shift/reduce failures.
7805
7806 Mon Mar  6 15:07:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7807
7808         * call.c (build_method_call): Don't synthesize methods outside of a
7809         function.
7810
7811         Make base initialization more re-entrant so that synthesis on the
7812         fly will work (and, eventually, template instantation on the fly).
7813         * init.c (sort_member_init): Don't bother with members that can't be
7814         initialized.  Reorganize a bit.  Don't initialize base members here.
7815         (sort_base_init): New function, like sort_member_init, but for base
7816         classes.  Steals some code from emit_base_init.
7817         (emit_base_init): Simplify.  Call sort_{member,base}_init before
7818         doing any initialization, so we don't have to save
7819         current_{member,base}_init_list in push_cp_function_context.
7820         (expand_aggr_vbase_init_1): Adjust for sort_base_init.
7821         (expand_aggr_vbase_init): Simplify.
7822         * decl.c (struct cp_function): Add protect_list field.
7823         (push_cp_function_context): Also save protect_list.
7824         (pop_cp_function_context): Also restore protect_list.
7825         * call.c (build_method_call): Enable synthesis at point of call.
7826         * lex.c (cons_up_default_function): Likewise.
7827
7828         * parse.y: Turn -ansi checks back into -pedantic checks.
7829
7830         * init.c (build_new): Fix -fcheck-new for array new.
7831
7832 Sat Mar  4 15:55:42 1995  Fergus Henderson  <fjh@cs.mu.oz.au>
7833
7834         * typeck.c (build_compound_expr): warn if left-hand operand of
7835         comma expression has no side-effects.
7836
7837 Fri Mar  3 15:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7838
7839         * parse.y (primary): Change 'object qualified_id *' rules to 'object
7840         overqualified_id *'.
7841
7842 Fri Mar  3 12:48:17 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7843
7844         * parse.y (unary_expr): Catch doing sizeof an overloaded function.
7845         Make the error look the same as the one we issue in c_sizeof.
7846
7847         * typeck.c (build_binary_op_nodefault): Give an error for trying
7848         to compare a pointer-to-member to `void *'.
7849
7850 Fri Mar  3 11:28:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7851
7852         * typeck.c (build_unary_op): Handle bool increment with smoke and
7853         mirrors here, rather than in expand_increment where it belongs,
7854         because Kenner doesn't agree with me.
7855
7856 Fri Mar  3 00:08:10 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7857
7858         * decl.c (grokparms): Catch a PARM_DECL being used for a default
7859         argument as well.
7860
7861 Thu Mar  2 20:05:54 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7862
7863         * init.c (build_new): Don't allow new on a function type.
7864
7865         * parse.y (primary): Avoid a crash when seeing if the arg is of
7866         the same type as that given for the typespec in an explicit dtor call.
7867
7868 Thu Mar  2 00:49:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7869
7870         * decl.c (finish_function): Change test for calling
7871         mark_inline_for_output.
7872
7873 Wed Mar  1 11:23:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7874
7875         * typeck.c (build_modify_expr): Complain if
7876         build_default_binary_type_conversion fails.
7877
7878         * init.c (expand_default_init): Handle arguments of unknown type
7879         properly.
7880
7881         * cvt.c (build_expr_type_conversion): Only complain about ambiguity
7882         if 'complain'.
7883         * various: Pass 'complain'.
7884
7885         * typeck.c (comptypes): Be more picky about comparing UPTs.
7886
7887 Wed Mar  1 11:03:41 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7888
7889         * decl.c (grokdeclarator): If declarator is null, say that the
7890         type used has an incomplete type.
7891
7892 Wed Mar  1 10:06:20 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7893
7894         * pt.c (instantiate_template): Copy the template arguments to the
7895         permanent_obstack.  Also use simple_cst_equal to compare them when
7896         looking for a previous instantiation.
7897
7898         * tree.c (make_deep_copy): Support copying INTEGER_TYPEs (assuming
7899         they are array domain types).
7900
7901 Tue Feb 28 23:24:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7902
7903         * cp-tree.h: Define WANT_* constants for passing to
7904         build_expr_type_conversion.
7905         * cvt.c (build_expr_type_conversion): New function to build
7906         conversion to one of a group of suitable types.
7907         (build_default_binary_type_conversion): Use it.
7908         * decl2.c (grok_array_decl): Likewise.
7909         * typeck.c (build_unary_op): Likewise.
7910         (build_array_ref): Tidy up a bit.
7911         (build_binary_op): Likewise.
7912
7913 Tue Feb 28 19:57:31 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7914
7915         * decl.c (grokdeclarator): Don't allow decl of an argument as `void'.
7916
7917 Tue Feb 28 17:23:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7918
7919         * parse.y (typed_declspecs1): Add 'typespec reserved_typespecquals
7920         reserved_declspecs' rule.
7921
7922         * parse.y (expr_or_declarator): Remove notype_qualified_id rule.
7923         (direct_notype_declarator): Likewise.
7924         (complex_direct_notype_declarator): Add notype_qualified_id rule.
7925
7926         * lex.c (real_yylex): Handle :> digraph properly.
7927
7928 Tue Feb 28 12:26:29 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7929
7930         * decl.c (grokdeclarator): Check if it's a friend, not if it's
7931         non-virtual, that's being initialized.  Move the check up to
7932         before FRIENDP would get cleared.  Catch an unnamed var/field
7933         being declared void.  Say just `field' instead of `structure field'
7934         in the error message.  Only go for the operator name if DECLARATOR
7935         is non-null.
7936
7937 Tue Feb 28 00:08:01 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7938
7939         * decl.c (start_function): Complain about abstract return type.
7940         (grokdeclarator): Complain about declaring constructors and
7941         destructors to be const or volatile.  Complain about declaring
7942         destructors to be static.
7943
7944         * pt.c (uses_template_parms): Handle pmfs.
7945
7946         * decl.c (grokdeclarator): Don't call variable_size for array bounds
7947         that only depend on template constant parameters.
7948
7949 Mon Feb 27 15:38:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7950
7951         * error.c (dump_decl): Only look to see if it's a vtable if we
7952         actually have a name to check out.
7953
7954 Mon Feb 27 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7955
7956         * cvt.c (convert_to_aggr): Lose misleading shortcut.
7957
7958 Sun Feb 26 17:27:32 1995  Doug Evans  <dje@canuck.cygnus.com>
7959
7960         * decl.c (set_nested_typename): Always set DECL_IGNORED_P,
7961         not just for dwarf.
7962
7963 Sun Feb 26 00:10:18 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7964
7965         * decl.c (grokdeclarator): Don't allow a static member to be
7966         declared `register'.
7967
7968         * init.c (make_friend_class): Move up to a pedwarn for the warning
7969         about a class declaring friends with itself.
7970
7971         * decl.c (grokdeclarator): You can't do `volatile friend class foo'
7972         or `inline friend class foo'.  Only try to make a friend out of
7973         TYPE if we didn't already reset it to integer_type_node.
7974
7975 Sat Feb 25 22:32:03 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7976
7977         * decl.c (grokdeclarator): Don't allow initialization of a
7978         non-virtual function.
7979
7980         * decl.c (start_function): Do a pedwarn if we're changing `main'
7981         to have an int return type.
7982
7983 Sat Feb 25 00:02:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7984
7985         * typeck.c (build_modify_expr): Handle simple assignment from
7986         TARGET_EXPRs by building up an RTL_EXPR to force expansion.  Whew.
7987
7988 Fri Feb 24 18:27:14 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
7989
7990         * decl.c (grokdeclarator): Also don't allow virtual outside of a
7991         class decl for a scope method definition performed at global binding.
7992
7993         * init.c (build_offset_ref): Don't allow creation of an OFFSET_REF
7994         of a bitfield.
7995
7996         * decl.c (grokdeclarator): Don't allow a const to be declared mutable.
7997
7998         * typeck.c (build_binary_op): Return an error_mark_node if either
7999         one of the args turned into an error_mark_node when we tried to
8000         use default_conversion.
8001
8002         * typeck.c (build_unary_op): Forbid using postfix -- on a bool.
8003
8004         * decl.c (grokdeclarator): Allow `signed' and `unsigned' to be
8005         used on `__wchar_t'.
8006
8007 Fri Feb 24 13:59:53 1995  Mike Stump  <mrs@cygnus.com>
8008
8009         * except.c (end_protect_partials): Do it the right way.
8010
8011 Wed Feb 22 15:42:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8012
8013         * typeck.c (build_binary_op_nodefault): Upgrade warning about
8014         comparing distinct pointer types to pedwarn.
8015
8016         * typeck2.c (digest_init): Cope with extra braces.
8017
8018         * typeck.c (build_binary_op_nodefault): Use tree_int_cst_sgn instead
8019         of INT_CST_LT (..., interger_zero_node).
8020
8021 Wed Feb 22 14:45:52 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
8022
8023         * except.c [!TRY_NEW_EH] (end_protect_partials): Define dummy
8024         function for systems that don't have EH.
8025
8026 Tue Feb 21 19:18:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8027
8028         * call.c (can_convert_arg): Like can_convert, but takes an arg as
8029         well.
8030
8031         * pt.c (type_unification): Allow implicit conversions for parameters
8032         that do not depend on template parameters.
8033
8034 Tue Feb 21 18:43:48 1995  Douglas Rupp  <drupp@cs.washington.edu>
8035
8036         * Make-lang.in, config-lang.in: ($exeext): New macro.
8037         * Make-lang.in: Try a "cp" if "ln" fails.
8038         * cp-tree.h (decl_attributes): Added argument.
8039         * decl2.c (cplus_decl_attribute): Add arg to decl_attributes.
8040         * cp/g++.c: Added #ifdefs for sys/file.h and process.h for NT.
8041         Modified spawnvp to have to correct number of arguments for OS/2, NT.
8042
8043 Tue Feb 21 18:36:55 1995  Mike Stump  <mrs@cygnus.com>
8044
8045         * decl.c (finish_function): Add calls to end_protect_partials to end
8046         the exception region that protects constructors so that partially
8047         constructed objects can be partially destructed when the constructor
8048         throws an exception.
8049         * init.c (perform_member_init, sort_member_init, emit_base_init):
8050         Added support for partially constructed objects.
8051         * init.c (build_partial_cleanup_for): New routine to do partial
8052         cleanups of a base class.
8053         * decl2.c (finish_file): Move the emitting of the exception table
8054         down, after we emit all code that might have exception regions in
8055         them.
8056         * except.c (end_protect_partials, might_have_exceptions_p): New
8057         routines.
8058         (emit_exception_table): Always output table if called.
8059         * cp-tree.h (protect_list, end_protect_partials,
8060         might_have_exceptions_p, emit_exception_table): Added.
8061
8062 Tue Feb 21 16:05:59 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
8063
8064         * gc.c (build_typeid): Pass a NULL_TREE, not the bogus, unused
8065         address of a local variable.
8066         * class.c (build_vfn_ref): Only try to build the PLUS_EXPR if we
8067         were given a non-null PTR_TO_INSTPTR.
8068
8069 Tue Feb 21 01:53:18 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8070
8071         * decl.c (duplicate_decls): Always lay out the merged decl.
8072
8073         * decl2.c (finish_vtable_vardecl): Don't do vtable hack on templates.
8074         (finish_prevtable_vardecl): Likewise.
8075
8076         * method.c (synthesize_method): Set interface_{unknown,only}
8077         according to the settings for our class, not the file where it comes
8078         from.
8079
8080 Sat Feb 18 12:26:48 1995  Mike Stump  <mrs@cygnus.com>
8081
8082         * except.c: Handle systems that define __i386__ but not __i386.
8083
8084 Fri Feb 17 15:31:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8085
8086         * decl2.c (reparse_decl_as_expr): Support being called without a
8087         type argument.
8088
8089         * parse.y (primary): Add '(' expr_or_declarator ')'.  Adds 4 r/r
8090         conflicts.  Sigh.
8091
8092 Fri Feb 17 12:02:06 1995  Mike Stump  <mrs@cygnus.com>
8093
8094         * parse.y (template_def, fndef, fn.def1, return_init, condition,
8095         initdcl0, initdcl, notype_initdcl0, nomods_initdcl0,
8096         component_decl_1, after_type_component_declarator0,
8097         notype_component_declarator0, after_type_component_declarator,
8098         notype_component_declarator, after_type_component_declarator,
8099         full_parm, maybe_raises, exception_specification_opt): Fix up,
8100         include exception_specification_opt maybeasm maybe_attribute and
8101         maybe_init if missing.  Rename maybe_raises to
8102         exception_specification_opt to match draft wording.  Use maybe_init
8103         to simplify rules.
8104
8105 Fri Feb 17 01:54:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8106
8107         * init.c (build_new): Set TREE_NO_UNUSED_WARNING on COMPOUND_EXPRs
8108         built for news of scalar types.
8109
8110 Thu Feb 16 17:48:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8111
8112         * typeck.c (build_binary_op_nodefault): Update code for warning
8113         about signed/unsigned comparisons from C frontend.  Realize that the
8114         code in the C frontend is, if anything, even more bogus.  Fix it.
8115         (build_binary_op): Undo default_conversion if it wasn't useful.
8116
8117         * typeck.c (build_unary_op, ADDR_EXPR): Lose bogus special case for
8118         PRE*CREMENT_EXPR.
8119
8120         * decl2.c (import_export_vtable): Don't try the vtable hack
8121         if the class doesn't have any real non-inline virtual functions.
8122         (finish_vtable_vardecl): Don't bother trying to find a non-inline
8123         virtual function in a non-polymorphic class.
8124         (finish_prevtable_vardecl): Likewise.
8125
8126         * decl2.c (import_export_vtable): Use and set DECL_INTERFACE_KNOWN.
8127
8128         * cp-tree.h (DECL_INTERFACE_KNOWN): Use DECL_LANG_FLAG_5.
8129
8130         * init.c (expand_virtual_init): Always call assemble_external.
8131
8132         * class.c (build_vfn_ref): Always call assemble_external.
8133         (build_vtable): Always call import_export_vtable.
8134         (prepare_fresh_vtable): Likewise.
8135         (add_virtual_function): Don't bother setting TREE_ADDRESSABLE.
8136
8137 Thu Feb 16 03:28:49 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8138
8139         * class.c (finish_struct): Use TYPE_{MIN,MAX}_VALUE to determine
8140         whether an enumerated type fits in a bitfield.
8141
8142 Wed Feb 15 15:38:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8143
8144         * class.c (grow_method): Update method_vec after growing the class
8145         obstack.
8146
8147 Wed Feb 15 13:42:59 1995  Mike Stump  <mrs@cygnus.com>
8148
8149         * parse.y (handler_seq): Push a level for the catch parameters.
8150
8151 Wed Feb 15 12:42:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8152
8153         * init.c (emit_base_init): Update BINFO_INHERITANCE_CHAIN on my
8154         bases, in case they've been clobbered.
8155
8156 Wed Feb 15 12:07:29 1995  Mike Stump  <mrs@cygnus.com>
8157
8158         * class.c (finish_base_struct): Set up BINFO_INHERITANCE_CHAIN here,
8159         so that one day it will always be valid.
8160         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Likewise.
8161
8162         * cp-tree.h (copy_binfo): Removed, unused.
8163         * tree.c (copy_binfo): Likewise.
8164
8165 Wed Feb 15 00:05:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8166
8167         * init.c (build_new): Save the allocation before calling
8168         expand_vec_init on it.
8169
8170         * decl.c (finish_enum): The TYPE_PRECISION of the enum type mush
8171         match the TYPE_PRECISION of the underlying type for constant folding
8172         to work.
8173
8174 Tue Feb 14 15:31:25 1995  Mike Stump  <mrs@cygnus.com>
8175
8176         * except.c (push_eh_entry, expand_start_all_catch,
8177         expand_leftover_cleanups, expand_end_catch_block): Keep track of
8178         the context in which the exception region occurs.
8179         (build_exception_table): If the region was not output, don't output
8180         the entry in the eh table for it.
8181
8182 Tue Feb 14 02:15:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8183
8184         * init.c (expand_default_init): Only use a previous constructor call
8185         if it's a call to our constructor.  Does the word "Duh" mean
8186         anything to you?
8187
8188         * decl.c (grokparms): Fine, just don't call
8189         convert_for_initialization at all.  OK?  Happy now?
8190
8191 Mon Feb 13 02:23:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8192
8193         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Make sure that the class
8194         method vector has a second element before returning it.
8195
8196         * decl.c (grokparms): Don't strip REFERENCE_TYPE before calling
8197         convert_for_initialization.
8198
8199 Sun Feb 12 03:57:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8200
8201         * typeck.c (build_modify_expr): Compare function name to
8202         constructor_name (current_class_type) instead of current_class_name.
8203
8204         * decl.c (grokparms): Don't do anything with the return value of
8205         convert_for_initialization.
8206
8207         * error.c (dump_decl): Also dump_readonly_or_volatile on the decl.
8208
8209         * decl.c (duplicate_decls): Tweak error message.
8210
8211         * typeck.c (build_const_cast): Implement checking.
8212         (build_reinterpret_cast): Implement some checking.
8213
8214         * cp-tree.h (CONV_FORCE_TEMP): Require a new temporary when
8215         converting to the same aggregate type.
8216         (CONV_STATIC_CAST): Include it.
8217         (CONV_C_CAST): Likewise.
8218         * cvt.c (convert_force): Use CONV_C_CAST instead of CONV_OLD_CONVERT.
8219         (cp_convert): Only force a new temporary if CONV_FORCE_TEMP.
8220
8221 Fri Feb 10 16:18:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8222
8223         * typeck.c (build_c_cast): Use non_lvalue to tack something on
8224         where necessary.
8225
8226         * decl.c (auto_function): Now a function.
8227         * except.c (init_exception_processing): terminate, unexpected,
8228         set_terminate, and set_unexpected have C++ linkage.
8229
8230         * typeck.c (build_unary_op, TRUTH_NOT_EXPR): Use convert instead of
8231         truthvalue_conversion for converting to bool, as it handles
8232         user-defined conversions properly.
8233         (condition_conversion): Likewise.
8234
8235         * except.c (expand_throw): Don't call convert_to_reference.
8236         Pass the correct parameters to build_new.
8237
8238         * method.c (do_build_assign_ref): Don't use access control when
8239         converting to a base reference here.
8240         (do_build_copy_constructor): Or here.
8241
8242         * init.c (build_new): Unset TREE_READONLY on the dereferenced
8243         pointer before assigning to it.
8244
8245         * decl.c (maybe_build_cleanup): Don't bother stripping const here.
8246
8247         * decl2.c (delete_sanity): You can now delete pointer to const.
8248
8249 Fri Feb 10 13:28:38 1995  Jason Merrill  <jason@python.cygnus.com>
8250
8251         * decl.c (finish_function): Don't rely on actual parameters being
8252         evaluated left-to-right.
8253         * except.c (expand_end_catch_block): Likewise.
8254
8255 Fri Feb 10 00:52:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8256
8257         * tree.c (real_lvalue_p): Like lvalue_p, but class temps aren't
8258         considered lvalues.
8259         * cvt.c (convert_to_reference): Use real_lvalue_p instead of
8260         lvalue_p.
8261
8262         * cvt.c (build_type_conversion_1): Don't call convert on aggregate
8263         types.
8264         (convert_to_reference): Fix erroneous text substitution.
8265
8266         * typeck2.c (initializer_constant_valid_p): Update from C frontend.
8267         Add new argument to all callers.
8268
8269         * typeck.c (convert_arguments): Check for error_mark_node before
8270         trying to do anything with the actual parameter.
8271
8272         * typeck.c (condition_conversion): Build up a CLEANUP_POINT_EXPR and
8273         fold it.
8274         (bool_truthvalue_conversion): Remove.  Fix all callers to call
8275         truthvalue_conversion instead.
8276         (various): Fold CLEANUP_POINT_EXPRs.
8277
8278         * parse.y (conditions): Call condition_conversion rather than
8279         building up a CLEANUP_POINT_EXPR.
8280
8281         * pt.c (end_template_decl): Don't warn_if_unknown_interface here
8282         under -falt-external-templates.
8283
8284 Thu Feb  9 05:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8285
8286         * init.c (build_new): Complain about new of const type without
8287         initializer.  Other cleanup.
8288
8289         * call.c (compute_conversion_costs): Don't call
8290         build_type_conversion with a reference type; convert to the target
8291         type and check its lvaluetude.
8292         * cvt.c (convert_to_reference): Likewise.
8293
8294         * cvt.c (build_type_conversion_1): There will never be any need to
8295         dereference references here now.
8296
8297 Thu Feb  9 00:37:47 1995  Mike Stump  <mrs@cygnus.com>
8298
8299         * except.c (expand_builtin_throw): Make sure we only `use' the
8300         value of return_val_rtx.
8301
8302 Wed Feb  8 15:45:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8303
8304         * parse.y (structsp): Don't complain about declaring a type being
8305         defined to be a friend.
8306
8307         * decl2.c (warn_if_unknown_interface): Note the template in question
8308         and the point of instantiation, for -falt-external-templates.
8309         * lex.c (reinit_parse_for_method): Pass the decl to
8310         warn_if_unknown_interface.
8311         * pt.c (instantiate_template): Likewise.
8312         (end_template_decl): Likewise.
8313
8314         * decl.c (set_nested_typename): Set IDENTIFIER_TYPE_VALUE on the
8315         nested name again, to make local classes work a bit better.
8316
8317         * typeck.c (build_function_call_real): Dereference reference after
8318         checking for incomplete type.
8319
8320         * init.c (build_new): Accept new of const and volatile types.
8321
8322 Wed Feb  8 14:04:16 1995  Jason Merrill  <jason@deneb.cygnus.com>
8323
8324         * decl.c (grokdeclarator): Fix error message.
8325
8326 Wed Feb  8 03:16:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8327
8328         * typeck.c (convert_for_initialization): Do bash arrays when
8329         converting to a reference to non-array.
8330
8331 Tue Feb  7 15:50:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8332
8333         * cvt.c (cp_convert): Don't call convert_to_reference, or
8334         automatically dereference references.  Do pass reference conversions
8335         to cp_convert_to_pointer.
8336         (cp_convert_to_pointer): Support references.
8337
8338         * call.c (build_method_call): Don't build up a reference to the
8339         parameter here; let build_overload_call handle that.
8340
8341         * typeck.c (build_c_cast): Call convert_to_reference directly if
8342         converting to a reference type.
8343         * method.c (do_build_copy_constructor): Likewise.
8344         * method.c (do_build_copy_constructor): Likewise.
8345         (do_build_assign_ref): Likewise.
8346
8347         * call.c (build_method_call): Dereference a returned reference.
8348         * typeck.c (build_function_call_real): Likewise.
8349
8350         * decl.c (xref_basetypes): Check for unions with basetypes here.
8351         (xref_tag): Instead of here.
8352
8353         * pt.c (process_template_parm): Template type parm decls are
8354         artificial.
8355
8356 Mon Feb  6 04:32:09 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8357
8358         * parse.y (typed_declspecs): Add missing semicolon.
8359         (do_xref_defn): Resurrect.
8360         (named_class_head_sans_basetype): Move template specialization
8361         definition cases to named_class_head_sans_basetype_defn.
8362
8363         * decl2.c (grokfield): Call pushdecl_class_level after setting the
8364         TYPE_NAME, not before.
8365
8366 Sun Feb  5 02:50:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8367
8368         * call.c (convert_harshness): Don't call sorry here.  Don't allow
8369         conversions between function pointer types if pedantic.
8370
8371         * pt.c (overload_template_name): Pass globalize=1 to xref_tag.
8372
8373         * lex.c (cons_up_default_function): Use the full name for the return
8374         type of op=.
8375
8376         * decl.c (set_nested_typename): Don't worry about anonymous types,
8377         as they already have a unique name.
8378         (pushdecl): Remove redundant set_nested_typename
8379         (xref_tag): Split out base handling into xref_basetypes.
8380
8381         * cp-tree.h (TYPE_INCOMPLETE): New macro; TEMPLATE_TYPE_PARMs are
8382         not considered incomplete even though their definition is unknown.
8383
8384         * decl.c (xref_defn_tag): Lose.
8385         (xref_tag): xref_next_defn = ! globalize.
8386         (pushdecl): Don't set DECL_NESTED_TYPENAME on artificial decls.  The
8387         ones that should have it set will have it set by pushtag.
8388         (pushdecl_class_level): Likewise.
8389         (pushtag): Tidy up a bit.
8390         (set_nested_typename): Push a decl for the nested typename from
8391         here, rather than from xref_defn_tag.
8392
8393         * parse.y (do_xref): Lose.
8394         (named_class_head): If we see 'class foo:' we know it's a
8395         definition, so don't worry about base lists for non-definitions.
8396
8397         * pt.c (push_template_decls): Template parm decls are artificial.
8398
8399         * decl.c (duplicate_decls): Restore check for qualifier
8400         disagreement for non-functions.
8401         (decls_match): Remove check for qualifier disagreement.
8402
8403 Fri Feb  3 14:58:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8404
8405         * decl.c (grok_reference_init): Convert initializer from
8406         reference.
8407         * typeck.c (convert_for_initialization): Likewise.
8408
8409         * decl.c (duplicate_decls): Propagate DECL_NESTED_TYPENAME.
8410
8411         * cvt.c (cp_convert): Don't convert to the same class type by just
8412         tacking on a NOP_EXPR.
8413         (convert_to_reference): Use comp_target_types instead of comptypes
8414         so that we don't allow conversions two levels down.
8415
8416 Thu Feb  2 15:07:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8417
8418         * class.c (build_vbase_path): Bash types to make the backend happy.
8419         * cvt.c (build_up_reference): Bash the types bashed by
8420         build_vbase_path to be reference types instead of pointer types.
8421         (convert_to_reference): Likewise.
8422
8423         * typeck.c (build_c_cast): Don't strip NOPs if we're converting to a
8424         reference type.
8425
8426         * parse.y (structsp): Put back error for 'struct B: public A;'.
8427
8428 Wed Feb  1 23:02:06 1995  Mike Stump  <mrs@cygnus.com>
8429
8430         * except.c: Add support for mips systems that don't define __mips
8431         but do define mips, like Ultrix.
8432
8433 Wed Feb  1 22:39:07 1995  Mike Stump  <mrs@cygnus.com>
8434
8435         * except.c: Add support for exception handling on the Alpha.
8436
8437 Wed Feb  1 10:12:14 1995  Mike Stump  <mrs@cygnus.com>
8438
8439         * decl2.c (finish_file): Fix bug in Jan 31st change.
8440
8441 Tue Jan 31 16:59:15 1995  Gerald Baumgartner  <gb@lorenzo.cs.purdue.edu>
8442
8443         * sig.c (build_signature_pointer_or_reference_type): Don't set
8444         IS_AGGR_TYPE for signature pointers/reference so expand_default_init
8445         doesn't expect to find a copy constructor.
8446         * call.c (build_method_call): Treat signature pointers/reference
8447         as if IS_AGGR_TYPE were set.
8448
8449 Tue Jan 31 13:28:56 1995  Mike Stump  <mrs@cygnus.com>
8450
8451         * gc.c (get_typeid): Pawn off error messages to build_t_desc.
8452         (build_t_desc): Inform the user here if they try and build
8453         with -frtti and don't include <typeinfo.h>.
8454
8455         * decl2.c (finish_prevtable_vardecl): Support rescanning.
8456         (finish_file): Move finish_prevtable_vardecl up to before the global
8457         initializers are done as tdecls are initialized in the global
8458         initializer.  Also Pick up any new tdecls or vtables needed by
8459         synthesized methods.
8460
8461         * class.c (finish_struct): Simplify.  We have to do rtti scanning at
8462         end, so we might as well do all of it there.
8463
8464 Tue Jan 31 05:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8465
8466         * call.c (build_method_call): Fix -fthis-is-variable for 32-bit
8467         targets, too.
8468
8469 Tue Jan 31 00:11:04 1995  Mike Stump  <mrs@cygnus.com>
8470
8471         * decl2.c (finish_prevtable_vardecl): New routine, mostly split from
8472         finish_vtable_vardecl.  It has the first half functionality from
8473         that routine.
8474         * decl2.c (finish_vtable_vardecl): Update to not include stuff not
8475         in  finish_prevtable_vardecl.
8476         * decl2.c (finish_file): Call finish_prevtable_vardecl.
8477         * gc.c (build_generic_desc): Allow it to be called when not at the
8478         global binding layer, but behave as if we were.
8479         (build_t_desc): Rearrange a bit so that it really works and is
8480         easier to follow.
8481         * class.c (finish_struct): Don't decide on tdecls here, as we have
8482         to wait until the end of the file in general to decide whether or
8483         not they come out.
8484
8485 Mon Jan 30 01:00:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8486
8487         * init.c (build_delete): Check access to operator delete before
8488         calling the destructor.
8489         * method.c (build_opfncall, DELETE_EXPR): build_method is allowed to
8490         return error_mark_node.
8491         * call.c (build_method_call): Use the one-argument op delete even if
8492         it's an error.
8493
8494         * init.c (build_new): Fix -fthis-is-variable support.
8495         * call.c (build_method_call): Likewise.
8496
8497         * call.c (convert_harshness): Make conversion from a pointer to bool
8498         worse than conversion to another pointer.
8499
8500 Sat Jan 28 16:46:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8501
8502         * init.c (build_new): Check new return value if -fcheck-new.
8503
8504         * lex.c (check_newline): Clear end_of_file when we're done, too.
8505
8506 Sat Jan 28 10:38:39 1995  Mike Stump  <mrs@cygnus.com>
8507
8508         * decl2.c (finish_vtable_vardecl): Make rtti TD tables follow
8509         vtables whereever they go.
8510
8511         * gc.c (build_t_desc): Remove old way of setting it up, as it wasn't
8512         right.
8513
8514 Sat Jan 28 09:10:44 1995  Mike Stump  <mrs@cygnus.com>
8515
8516         * decl2.c (finish_vtable_vardecl): Now set the
8517         interface/implementation of vtables on the first virtual function,
8518         if one exists, otherwise we use the old method.  This is a major win
8519         in terms of cutting down the size of objects and executables in
8520         terms of text space and data space.  Now most of the savings that
8521         #pragma interface/implementation gives is automatic in a fair number
8522         of cases.
8523
8524 Sat Jan 28 04:57:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8525
8526         * decl.c (grokdeclarator): Discard the template parameters in a
8527         template constructor declaration so that the function is always
8528         named constructor_name (ctype).
8529
8530         * lex.c (check_newline): Use ungetc to put back the character before
8531         calling HANDLE_PRAGMA.
8532
8533 Fri Jan 27 17:23:47 1995  Mike Stump  <mrs@cygnus.com>
8534
8535         * decl2.c (check_classfn): If the cname is T<int> and fn_name is T,
8536         make sure we still match them.
8537
8538 Fri Jan 27 16:32:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8539
8540         * parse.y: Add END_OF_LINE token.
8541
8542         * lex.c (check_newline): Set linemode when we see a # directive, and
8543         unset it when we're done.  Turn all 'return's into 'goto skipline'.
8544         Fix all uses of '\n', since we won't see it anymore.  Put back the
8545         character we read before checking for a sysv or target pragma.
8546         (real_yylex): If we see an EOF in linemode, return END_OF_LINE.
8547         (handle_sysv_pragma): Don't look at the input stream; quit when we
8548         see an END_OF_LINE token.
8549
8550         * input.c (getch): Return EOF if we're in line mode and at the end
8551         of a line.
8552         (put_back): Don't put back an EOF.
8553
8554 Thu Jan 26 19:26:34 1995  Mike Stump  <mrs@cygnus.com>
8555
8556         * except.c (expand_throw): Do the newing of the exception object
8557         before we load the type descriptor or the address so that we don't
8558         wipe any of the values out.
8559
8560 Thu Jan 26 19:20:00 1995  Mike Stump  <mrs@cygnus.com>
8561
8562         * except.c (init_exception_processing): Don't use r12 on the rs6000.
8563
8564 Tue Jan 24 16:36:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8565
8566         * decl.c (grokparms): Don't try to build up a reference at this point.
8567
8568         * typeck2.c (build_functional_cast): Don't assume that a NOP_EXPR
8569         will suffice to convert from integer_zero_node.
8570
8571 Wed Jan 25 15:02:09 1995  David S. Miller  <davem@nadzieja.rutgers.edu>
8572
8573         * class.c (instantiate_type): Change error message text.
8574         * typeck2.c (store_init_value): Likewise.
8575
8576 Mon Jan 23 21:57:14 1995  Mike Stump  <mrs@cygnus.com>
8577
8578         * pt.c (tsubst): When we copy a node, don't forget to copy
8579         TREE_CHAIN, we use it later.
8580
8581 Mon Jan 23 03:33:47 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8582
8583         * typeck.c (convert_for_assignment): Initialize variable before use.
8584
8585 Fri Jan 20 01:17:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8586
8587         * g++.c (main): Link with both libstdc++ and libg++ if called as
8588         something ending with "g++", otherwise only libstdc++.  Move -lm to
8589         the end of the line.
8590
8591 Thu Jan 19 15:43:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8592
8593         * call.c (build_method_call): Don't mess with 'this' before calling
8594         compute_conversion_costs.
8595
8596 Wed Jan 18 15:40:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8597
8598         * search.c (get_matching_virtual): Give line number for previous
8599         declaration.
8600
8601         * call.c (convert_harshness): Handle conversions to references
8602         better.
8603
8604         * cvt.c (build_up_reference): OK, handle {MIN,MAX}_EXPR *properly*.
8605
8606 Wed Jan 18 15:21:38 1995  Mike Stump  <mrs@cygnus.com>
8607
8608         * class.c (instantiate_type): Use DECL_CHAIN to walk lists instead,
8609         as the TREE_CHAIN for methods will take us to the next differently
8610         named function, DECL_CHAIN won't.
8611
8612 Wed Jan 18 14:26:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8613
8614         * tree.c (lvalue_p): Handle {MIN,MAX}_EXPR.
8615
8616         * decl2.c (lang_decode_option): -Wall implies -Wparentheses.
8617         warn_parentheses defaults to 0.
8618
8619         * decl.c (grokparms): Put back call to require_instantiated_type.
8620
8621 Tue Jan 17 19:56:15 1995  Mike Stump  <mrs@cygnus.com>
8622
8623         * except.c (exception_section): Use the data section on the rs6000.
8624         Change calling convention for named_section.
8625
8626 Wed Jan 17 18:20:57 1994  Fergus Henderson <fjh@munta.cs.mu.oz.au>
8627
8628         * cp-tree.h : Make if (x=0) warn with wall
8629         * parse.y : Make if (x=0) warn with wall
8630
8631 Tue Jan 17 14:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8632
8633         * decl.c (BOOL_TYPE_SIZE): BITS_PER_WORD if SLOW_BYTE_ACCESS,
8634         BITS_PER_UNIT otherwise.
8635
8636         * search.c (get_matching_virtual): Don't check the binfo if the
8637         types are the same.
8638
8639         * cvt.c (cp_convert): Just call truthvalue_conversion to convert to
8640         bool.
8641
8642 Mon Jan 16 13:28:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8643
8644         * various: Use boolean_type_node, boolean_true_node,
8645         boolean_false_node.
8646
8647         * search.c (get_matching_virtual): Allow covariant returns that
8648         don't require pointer adjustment.
8649
8650         * typeck.c (build_conditional_expr): Don't call default_conversion
8651         on ifexp.
8652
8653         * cvt.c (build_up_reference): Handle MIN_EXPR and MAX_EXPR.
8654
8655         * decl.c (grokdeclarator): Upgrade warning about &const to pedwarn.
8656
8657 Sun Jan 15 22:17:32 1995  David Binderman  <dcb@lovat.fmrco.COM>
8658
8659         * pt.c (do_function_instantiation): Free targs once we're done.
8660
8661 Sun Jan 15 22:17:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8662
8663         * decl.c (BOOL_TYPE_SIZE): Defaults to BITS_PER_WORD.
8664         (init_decl_processing): Use BOOL_TYPE_SIZE instead of CHAR_TYPE_SIZE
8665         for bool.
8666
8667 Sat Jan 14 05:33:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8668
8669         * decl2.c (finish_file): We need to mess up if there are any
8670         variables in the list, not just if there is one with a constructor.
8671
8672 Fri Jan 13 14:42:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8673
8674         * decl.c (duplicate_decls): Propagate DECL_STATIC_{CON,DE}STRUCTOR.
8675         (finish_function): Handle DECL_STATIC_{CON,DE}STRUCTOR.
8676         (finish_function): Trust rest_of_compilation.
8677
8678         * decl2.c (finish_file): Also call functions designated as static
8679         constructors/destructors.
8680
8681         * decl.c (grokdeclarator): Allow access decls of operator functions.
8682         (grokparms): Only do convert_for_initialization if the initializer
8683         has a type.
8684         (duplicate_decls): Put back push_obstacks_nochange call.
8685
8686         * lex.c (real_yylex): Downgrade complaint about the escape sequence
8687         being too large from pedwarn to warning.
8688
8689         * decl.c (grokdeclarator): Don't complain about long long in system
8690         headers.
8691
8692         * lex.c (real_yylex): Handle digraphs.
8693
8694 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8695
8696         * decl.c (init_decl_processing): -f{no-,}strict-prototype only
8697         affects C linkage declarations now.
8698
8699         * typeck.c (comp_target_types): Grok simple contravariant conversions.
8700         (common_type): t1 and t2 are interchangeable.
8701
8702         * various: Test return value of comp_target_types differently in
8703         different places; it now returns -1 for a contravariant conversion
8704         (which is fine in symmetric cases).
8705
8706         (common_type): Prefer long double to double even when
8707         they have the same precision.
8708
8709         * decl.c (grokparms): Call convert_for_initialization to check
8710         default arguments.
8711
8712         * init.c (build_new): void_type_node has a size (of 0).
8713
8714         * decl.c (decls_match): Also check for agreement of TREE_READONLY
8715         and TREE_THIS_VOLATILE.
8716         (push_class_level_binding): Properly handle shadowing of
8717         nested tags by fields.
8718
8719         * search.c (dfs_pushdecls): Likewise.
8720
8721         * decl2.c (finish_file): Don't second-guess self-initialization.
8722
8723         * cvt.c (convert_to_reference): Work with expr directly, rather than
8724         a copy.
8725
8726         * decl.c (push_overloaded_decl): Only shadow artificial TYPE_DECLs.
8727
8728         * init.c (add_friend): Downgrade duplicate friend message from
8729         pedwarn to warning.
8730
8731         * decl.c (duplicate_decls): Push obstacks before calling common_type.
8732
8733 Thu Jan 12 17:15:21 1995  Michael Ben-Gershon  <mybg@cs.huji.ac.il>
8734
8735         * except.c (push_eh_entry): set LABEL_PRESERVE_P flag for
8736         exception table labels.
8737         (expand_start_all_catch): Likewise.
8738         (expand_leftover_cleanups): Likewise.
8739         (expand_end_catch_block): Likewise.
8740         * except.c (make_first_label): new function.
8741         (expand_start_all_catch): add a call to make_first_label() before
8742         using a label as a jump destination.
8743         (expand_end_all_catch): Likewise.
8744         (expand_leftover_cleanups): Likewise.
8745         (expand_end_catch_block): Likewise.
8746         (expand_builtin_throw): Likewise.
8747         (expand_throw): Likewise.
8748         * except.c: Add ARM processor support for exception handling.
8749
8750 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8751
8752         (complete_array_type): Copy code from C frontend.
8753
8754         * lex.c (real_yylex): Don't multiply the length of a wide string
8755         literal by WCHAR_BYTES.
8756
8757         * decl.c (pushdecl): Check for redeclaration of wchar_t here.
8758         (duplicate_decls): Instead of here.
8759         (define_label): Complain about a label named wchar_t.
8760         (grokdeclarator): Complain about declarations of
8761         operator-function-ids as non-functions.
8762
8763         * typeck.c (unary_complex_lvalue): Also wrap prefix -- and ++ in
8764         COMPOUND_EXPRs.
8765         (build_unary_op): Wrap unary plus in a NON_LVALUE_EXPR.
8766
8767         * lex.c (real_yylex): Don't skip whitespace when reading the next
8768         character after ->.
8769
8770 Wed Jan 11 16:32:49 1995  Mike Stump  <mrs@cygnus.com>
8771
8772         * except.c: Allow cc1plus to be built with native compiler on rs6000.
8773         (expand_start_all_catch): Add assemble_external calls for various
8774         routines we call.
8775         (expand_leftover_cleanups): Likewise.
8776         (expand_start_catch_block): Likewise.
8777         (do_unwind): Likewise.
8778         (expand_builtin_throw): Likewise.
8779
8780 Wed Jan 11 01:05:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8781
8782         * decl.c (pushtag): Only look for a previous decl in the current
8783         binding level.  Use explicit global scope in DECL_NESTED_TYPENAME.
8784
8785         * gxx.gperf: Add __signature__ and __sigof__ keywords.
8786
8787         * decl2.c (lang_decode_option): -ansi does not set flag_no_asm.  It
8788         does set flag_no_gnu_keywords and flag_operator_names.
8789
8790         * lex.c (init_lex): 'overload' is not a keyword unless -traditional.
8791         Unset extension keywords if -fno-gnu-keywords.
8792         Allow operator names ('bitand') if -foperator-names.
8793         Never unset 'asm'; -fno-asm only affects 'typeof'.
8794
8795         * decl.c (lookup_name_real): The got_object special lookup only
8796         applies to types.
8797
8798 Tue Jan 10 18:07:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8799
8800         * spew.c (yylex): Also use DECL_NESTED_TYPENAME if got_object is set.
8801
8802         * parse.y (primary): Unset got_object after all rules that use the
8803         'object' nonterminal.
8804         (object): Set got_object.
8805
8806         * lex.h: Declare got_object.
8807
8808         * decl.c (lookup_name_real): Also lookup names in the context of an
8809         object specified.
8810
8811 Tue Jan 10 14:30:30 1995  Mike Stump  <mrs@cygnus.com>
8812
8813         * typeck.c (get_member_function_from_ptrfunc): Use ptrdiff_type_node
8814         for things that have to be added to pointers, not size_type.  Cures
8815         problems with pointer to members on Alphas.
8816         (build_binary_op_nodefault): Likewise.
8817         (get_delta_difference_: Likewise.
8818         (build_ptrmemfunc): Likewise.
8819
8820 Tue Jan 10 01:49:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8821
8822         * decl.c (pushtag): Stick the new decl in TYPE_NAME before pushing
8823         it.
8824
8825         * typeck.c (build_component_ref): Don't build up a COMPONENT_REF
8826         when dealing with overloaded member functions; just act like
8827         build_offset_ref.
8828         (commonparms): Remove misleading comment.
8829
8830         * decl.c (duplicate_decls): Complain about repeated default
8831         arguments here.
8832         (redeclaration_error_message): Instead of here.
8833         (pushdecl): Complain about missing default arguments here.
8834         (grokparms): Instead of here.
8835         (lookup_name_current_level): Also match on DECL_ASSEMBLER_NAME.
8836         (grok_reference_init): Do not complain about missing initializer if
8837         declared 'extern'.
8838
8839         * search.c (lookup_field): Don't return a TYPE_DECL if there is a
8840         function alternative and want_type is not set.
8841
8842 Mon Jan  9 18:16:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8843
8844         * decl.c (pushtag): Don't set TYPE_NAME to an identifier.  Do push
8845         the decl when the type has no TYPE_NAME.
8846         (lookup_nested_type): Don't assume that type has TYPE_NAME set.
8847         (lookup_name_real): Call lookup_field with want_type =
8848         prefer_type.
8849
8850         * search.c (lookup_field): Handle want_type properly in the presence
8851         of fields with the same name.
8852
8853         * decl.c (set_nested_typename): Set nested name for file-scope types
8854         to include leading ::.
8855         (pushdecl): Set the nested typename if the decl doesn't have one,
8856         rather than if the type's canonical decl doesn't have one.
8857
8858 Mon Jan  9 03:44:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8859
8860         * typeck.c (convert_for_assignment): Complain about contravariance
8861         violation here.
8862         (comp_target_types): Instead of here.
8863         (build_unary_op): resolve_offset_ref before checking for a valid
8864         type.
8865
8866         * spew.c (yylex): Decrement looking_for_typename after we see a
8867         _DEFN.
8868
8869         * decl.c (pushdecl): Don't install an artificial TYPE_DECL in
8870         IDENTIFIER_LOCAL_VALUE if we already have a decl with that name.
8871
8872         * typeck.c (convert_for_assignment): Converting pointers to bool
8873         does not need a cast.
8874
8875 Sun Jan  8 18:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8876
8877         * class.c (instantiate_type): Initialize nsubsts parm.
8878
8879         * pt.c (do_function_instantiation): Likewise.
8880
8881 Sat Jan  7 14:37:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8882
8883         * pt.c (tsubst): Use TREE_STATIC instead of DECL_INLINE &&
8884         DECL_SAVED_INSNS to determine whether or not we've seen a definition
8885         of this function.
8886         (instantiate_template): Likewise.
8887
8888         * call.c (convert_harshness): Allow const reference binding when
8889         called from the overloading code, but not when called from
8890         can_convert (since it isn't a conversion).
8891         (convert_harshness): Put back some disabled code.
8892
8893 Fri Jan  6 14:10:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8894
8895         * call.c (convert_harshness): There is no implicit conversion from
8896         void* to other pointer types (unless the parameter is (void*)0).
8897         (convert_harshness): Non-lvalues do not convert to reference types.
8898
8899         * class.c (finish_struct_methods): Still set
8900         TYPE_HAS_{INT,REAL}_CONVERSION.
8901
8902         * call.c (can_convert): Don't use aggregate initialization.
8903
8904         * cp-tree.h: Declare lookup_conversions.
8905
8906 Thu Jan  5 21:08:00 1995  Mike Stump  <mrs@cygnus.com>
8907
8908         * parse.y (simple_stmt): Fix duplicate case value error messages to
8909         be more readable.
8910
8911 Wed Jan  4 16:44:19 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8912
8913         * cvt.c (build_type_conversion): Total rewrite to use
8914         convert_harshness instead of reproducing conversion logic here.  Now
8915         much shorter.
8916
8917         * call.c (convert_harshness): Support conversions to bool.
8918         (can_convert): Checks whether a conversion is less harsh
8919         than USER_CODE, for build_type_conversion.
8920
8921         * search.c (add_conversions): Function for passing to dfs_walk which
8922         adds all the type conversion operators in the current type to a list.
8923         (lookup_conversions): Calls dfs_walk with add_conversions and return
8924         the list.
8925         (dfs_walk): Don't require a qfn.
8926
8927         * cp-tree.h: Lose CLASSTYPE_CONVERSIONS hackery.
8928         (CLASSTYPE_FIRST_CONVERSION): Points to elt 1 of CLASSTYPE_METHOD_VEC.
8929
8930         * class.c (finish_struct_bits): Lose CLASSTYPE_CONVERSIONS hackery.
8931         (grow_method): A separate function for building onto the growing
8932         method vector.
8933         (finish_struct_methods): Use it.  Put all type conversion operators
8934         right after the constructors.  Perhaps we should sort the methods
8935         alphabetically?
8936
8937 Mon Jan  2 14:42:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
8938
8939         * call.c (build_method_call): Lose another misleading shortcut.
8940
8941 Fri Dec 30 17:57:30 1994  Mike Stump  <mrs@cygnus.com>
8942
8943         * gc.c (build_bltn_desc): Handle bool as a built-in type.
8944
8945 Fri Dec 30 14:20:21 1994  Mike Stump  <mrs@cygnus.com>
8946
8947         * tree.c (layout_vbasetypes): Ensure that we don't loose alignment
8948         on the complete type because of small virtual bases.
8949
8950 Fri Dec 30 12:22:29 1994  Mike Stump  <mrs@cygnus.com>
8951
8952         * decl.c (n_incomplete): Bump n_incomplete up to int to match C
8953         front end.
8954         (pushdecl): Also count decls pushed that are of a type being defined
8955         as incomplete things.
8956         * class.c (finish_struct): Move hack_incomplete_structures up to
8957         just after we set it as not being defined, so that the decls we
8958         build for RTTI don't count as incomplete.
8959
8960 Thu Dec 29 18:20:57 1994  Mike Stump  <mrs@cygnus.com>
8961
8962         * pt.c (tsubst): Fix problem with defining constructors in templated
8963         classes with virtual bases.
8964
8965 Wed Dec 28 08:31:00 1994  Mike Stump  <mrs@cygnus.com>
8966
8967         * parse.y (TYPEID): Strip top-level cv-qualifiers on typeid
8968         expressions.
8969         * gc.c (build_typeid): Likewise.
8970
8971 Thu Dec 22 17:26:33 1994  Mike Stump  <mrs@cygnus.com>
8972
8973         * cvt.c (build_up_reference): Fix breakage introduced on Nov 29,
8974         don't assert on complex AGGR inits.
8975
8976 Thu Dec 22 14:32:31 1994  Mike Stump  <mrs@cygnus.com>
8977
8978         * method.c (build_overload_value): Handle pointer to members as
8979         template arguments.
8980
8981 Thu Dec 22 13:09:07 1994  Mike Stump  <mrs@cygnus.com>
8982
8983         * typeck.c (unary_complex_lvalue): Don't call sorry if we know how
8984         to do take the address of a data member for a pointer to data
8985         member.
8986
8987 Thu Dec 22 10:04:19 1994  Mike Stump  <mrs@cygnus.com>
8988
8989         * decl.c (grokdeclarator): Use the typedef name for linkage if the
8990         type doesn't otherwise have a name.
8991
8992         * decl2.c (grokfield): Likewise.
8993
8994         * class.c (finish_struct): Since we reuse the TYPE_DECL for the
8995         DECL_NAME of enums, structs and classes, we have to avoid trying to
8996         put it in the TYPE_FIELDS again.
8997
8998 Wed Dec 21 11:07:05 1994  Mike Stump  <mrs@cygnus.com>
8999
9000         * decl2.c (check_classfn): Ignore this parameter on static functions
9001         when checking to see if we match.
9002
9003 Tue Dec 20 17:47:02 1994  Mike Stump  <mrs@cygnus.com>
9004
9005         * typeck.c (unary_complex_lvalue): Handle address of non-left most
9006         pointers to members by calling get_delta_difference.
9007
9008 Mon Dec 19 22:40:53 1994  Mike Stump  <mrs@cygnus.com>
9009
9010         * decl2.c (check_classfn): Don't use decls_match yet, as it modifies
9011         static functions to early.
9012
9013 Thu Dec 19 22:37:48 1994  Mike Stump  <mrs@cygnus.com>
9014
9015         * method.c (make_thunk): Handle encoding of positive thunk offsets.
9016
9017 Sat Dec 17 13:29:50 1994  Doug Evans  <dje@canuck.cygnus.com>
9018
9019         * Make-lang.in (.PHONY): Tell GNU make C++ and c++ are phony targets.
9020
9021 Thu Dec 15 16:32:12 1994  Mike Stump  <mrs@cygnus.com>
9022
9023         * decl2.c (check_classfn): Use decls_match to check if this has
9024         already been declared, as the DECL_ASSEMBLER_NAME may have been
9025         changed via asm("new_name").
9026         * decl.c (decls_match): Make public.
9027
9028 Thu Dec 15 15:17:55 1994  Mike Stump  <mrs@cygnus.com>
9029
9030         * *.[chy] (expand_aggr_init) Add fourth argument to handle
9031         distinction between = init and (init) style of initializations.
9032         * *.[chy] (finish_decl): Add fifth argument to to handle
9033         distinction between = init and (init) style of initializations.
9034
9035 Tue Dec 13 19:16:05 1994  Mike Stump  <mrs@cygnus.com>
9036
9037         Fix some random `explicit' bugs.
9038
9039         * cvt.c (convert_to_reference): Add third parameter to
9040         convert_force.
9041         (convert_force): Likewise.
9042         * call.c (build_method_call): Likewise.
9043         * decl2.c (setup_vtbl_ptr): Likewise.
9044         * init.c (expand_virtual_init): Likewise.
9045         (build_member_call): Likewise.
9046         (build_delete): Likewise.
9047         (build_vbase_delete): Likewise.
9048         * typeck.c (build_component_addr): Likewise.
9049         (build_c_cast): Likewise.
9050         (build_modify_expr): Likewise.
9051         * cp-tree.h (CONV_NONCONVERTING): Likewise. Add so that we can
9052         distinguish the context in which the conversion appears.  Add thrid
9053         argument to build_c_cast.
9054         * cvt.c (cp_convert): Pass whether or not we want to consider
9055         non-converting constructors down to build_method_call.
9056         * decl2.c (reparse_absdcl_as_casts): Add third argument to
9057         build_c_cast.
9058         * gc.c (build_m_desc): Likewise.
9059         * init.c (build_new): Likewise.
9060         * parse.y (expr_no_commas): Likewise.
9061         (primary): Likewise.
9062         * typeck.c (build_x_function_call): Likewise.
9063         (build_static_cast): Likewise.
9064         (build_reinterpret_cast): Likewise.
9065         (build_const_cast): Likewise.
9066         (build_c_cast): Likewise.
9067         (build_ptrmemfunc): Likewise.
9068         * typeck2.c (build_functional_cast): Likewise.
9069         * init.c (expand_aggr_init): Added LOOKUP_ONLYCONVERTING to
9070         expand_aggr_init_1 as inits are converted to the destination type.
9071
9072 Tue Dec 13 16:18:57 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9073
9074         * Make-lang.in (cc1plus): Depends on c-pragma.o.
9075
9076         * Makefile.in (OBJ{DEP,}S): Add ../c-pragma.o.
9077
9078         * lex.c (check_newline): If the #pragma is not recognized by g++,
9079         try machine-specific ones too.
9080         (handle_sysv_pragma): Copied from c-lex.c.
9081
9082 Mon Dec 12 23:53:06 1994  Mike Stump  <mrs@cygnus.com>
9083
9084         * except.c (expand_throw): Fix Dec 6th change, build_new likes a
9085         reference better.
9086
9087 Mon Dec 12 18:01:00 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9088
9089         * typeck.c (build_binary_op): Lose checks on TYPE_PTRMEMFUNC_P with
9090         IS_AGGR_TYPE, since now they will not both be set on the same type.
9091
9092         * pt.c (do_pending_expansions): Don't clear TREE_PUBLIC on
9093         instantiations controlled by -fexternal-templates.
9094
9095         * decl.c (duplicate_decls): Don't complain about different values of
9096         __attribute__ ((const)) and ((noreturn)).
9097
9098 Fri Dec  9 18:17:37 1994  Doug Evans  <dje@cygnus.com>
9099
9100         * Makefile.in (BISONFLAGS): Delete --yacc.
9101         (PARSE_H): Depend on $(PARSE_C), for parallel makes.
9102         (PARSE_C): Undo last patch.
9103
9104 Fri Dec  2 10:44:36 1994  Mike Stump  <mrs@cygnus.com>
9105
9106         * Makefile.in (BISONFLAGS): Add --yacc so that output winds up in
9107         y.tab.c.
9108
9109 Thu Dec  8 17:39:46 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9110
9111         * decl.c (finish_decl): Don't call obscure_complex_init for decls
9112         of indeterminate size.
9113
9114 Wed Dec  7 16:49:22 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9115
9116         * decl.c (obscure_complex_init): Function to tweak the decl to
9117         prevent expand_decl from tring to initialize it.
9118         (finish_decl): Use it rather than writing the same code in three
9119         different places.
9120
9121         * parse.y (bad_parm): Stop trying to support parms without types.
9122
9123 Wed Dec  7 12:06:56 1994  Mike Stump  <mrs@cygnus.com>
9124
9125         * decl2.c (grokfield): Make asm specs on static member functions
9126         work.
9127
9128 Tue Dec  6 15:43:20 1994  Mike Stump  <mrs@cygnus.com>
9129
9130         * except.c (expand_throw): Make a copy of the thrown object.
9131
9132 Tue Dec  6 14:16:34 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9133
9134         * parse.y: : has lower precedence than =.
9135
9136 Tue Dec  6 12:46:17 1994  Mike Stump  <mrs@cygnus.com>
9137
9138         * decl.c (pushdecl): Use DECL_NAME of VAR_DECLs to avoid namespace
9139         manglings.
9140         (grokvardecl): Add namespace into variable name.
9141
9142 Tue Dec  6 11:26:55 1994  Mike Stump  <mrs@cygnus.com>
9143
9144         * decl2.c (current_namespace_id): New routine to transform a simple
9145         name into a name in a namespace.
9146         * decl.c (grokdeclarator): Use it.
9147         * decl2.c (get_namespace_id): Find the name of the current
9148         namespace.
9149         (push_namespace, pop_namespace): Complete out missing
9150         functionality.
9151
9152 Mon Dec  5 17:11:51 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9153
9154         * class.c (finish_struct): Don't use LONG_LONG_TYPE_SIZE, as it may
9155         not be defined.  Fix warning message for enums and restore warning
9156         for non-enums.
9157
9158         * decl2.c (push_namespace): Dummy function.
9159         (pop_namespace): Likewise.
9160         (do_namespace_alias): Likewise.
9161         (do_using_decl): Likewise.
9162         (do_using_directive): Likewise.
9163
9164         * parse.y: New token NSNAME for namespace names.
9165         (extdef): Add namespace, using definitions.
9166         (using_decl): New rule for using declarations.
9167         (any_id): New rule for identifiers with any degree of scoping.
9168         (identifier): Add NSNAME.
9169         (notype_identifier): Likewise.
9170         (component_decl): Add using_decl.
9171         (nested_name_specifier): Add NSNAME SCOPE.
9172
9173         * typeck.c (convert_for_assignment): Handle conversions between
9174         enums and bool.
9175
9176         * decl.c (duplicate_decls): Only propagate DECL_MAIN_VARIANT on
9177         FUNCTION_DECLs.
9178
9179 Mon Dec  5 13:03:16 1994  Mike Stump  <mrs@cygnus.com>
9180
9181         * class.c (finish_struct): Give an error if one tries to declare a
9182         bit-field's size greater than a long long, as the backend will dump.
9183         It is not an error to declare an enum bit-field greater than its
9184         precision.  Warn if an enum bit-field is too small to hold all
9185         its values.
9186
9187 Mon Dec  5 11:41:50 1994  Mike Stump  <mrs@cygnus.com>
9188
9189         * typeck.c (convert_for_assignment): Use cp_convert instead of
9190         convert so that we don't get static casts.
9191
9192 Sun Dec  4 11:59:01 1994  Mike Stump  <mrs@cygnus.com>
9193
9194         * cvt.c (cp_convert): Don't complain about int->enum conversion if
9195         we are doing static casts.
9196
9197 Fri Dec  2 18:32:41 1994  Mike Stump  <mrs@cygnus.com>
9198
9199         * error.c (dump_expr): Do something more intelligent with SAVE_EXPRs
9200         when dumping expressions in error messages.
9201
9202 Fri Dec  2 17:04:27 1994  Mike Stump  <mrs@cygnus.com>
9203
9204         * gc.c (build_dynamic_cast): Change interface to libg++, ensure that
9205         the return type is the right type, and make references work.
9206
9207 Fri Dec  2 16:36:43 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9208
9209         * decl.c (poplevel): Don't be confused by function-scope
9210         declarations of non-nested functions.
9211         (duplicate_decls): Propagate DECL_MAIN_VARIANT.
9212         (pushdecl): Use duplicate_decls to copy info from old decl into new
9213         function-scope one rather than doing it here.
9214
9215         * decl2.c (mark_inline_for_output): Deal with the DECL_MAIN_VARIANT
9216         of this decl, in case this is a function-scope declaration.
9217
9218         * decl.c (finish_enum): Make sure that the type has the right
9219         precision when we call fixup_*_type.
9220
9221 Tue Nov 29 19:12:07 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9222
9223         * cvt.c (build_up_reference): Strip superfluous NOP_EXPRs; we do
9224         want to build up references to rvalues if possible.
9225         (cp_convert): Stick on a NOP_EXPR when converting to the same type.
9226
9227 Tue Nov 29 11:28:59 1994  Mike Stump  <mrs@cygnus.com>
9228
9229         * parse.y (maybe_raises): Handle throw ().
9230         * parse.y (ansi_raise_identifier): grok type-ids in exception
9231         specifications.
9232         * tree.c (build_exception_variant): Use list compare to check if
9233         two exception specifications match.
9234         * decl.c (duplicate_decls, bad_specifiers): Enhance wording on error
9235         messages.
9236         * call.c (build_method_call): Remove TREE_RAISES.
9237         * cvt.c (convert_to_aggr): Likewise.
9238         * typeck.c (build_function_call_real, convert_arguments): Likewise.
9239         * init.c (expand_aggr_init_1): Likewise.
9240
9241 Tue Nov 29 09:50:39 1994  Mike Stump  <mrs@cygnus.com>
9242
9243         * except.c: Add support for m68k and mips exception handling
9244         support.
9245
9246 Tue Nov 29 08:48:33 1994  Mike Stump  <mrs@cygnus.com>
9247
9248         * except.c (expand_end_all_catch): Throw into outer context, if we
9249         fall off end of catch handlers.
9250
9251 Mon Nov 28 16:44:41 1994  Mike Stump  <mrs@cygnus.com>
9252
9253         * Makefile.in: Make is easier to decide where parse.[ch] will be
9254         built.
9255
9256 Thu Nov 17 20:11:24 1994  Doug Evans  <dje@cygnus.com>
9257
9258         * cp/Make-lang.in (CXX_INSTALL_NAME) Use program_transform_name.
9259         (GXX_INSTALL_NAME) Likewise.
9260         (CXX_CROSS_NAME) Use program_transform_cross_name.
9261         (GXX_CROSS_NAME) Likewise.
9262         (c++.install-man): Use program_transform_name on g++.1.
9263         (c++.uninstall): Likewise.
9264
9265 Mon Nov 28 13:53:03 1994  Mike Stump  <mrs@cygnus.com>
9266
9267         * parse.y (THROW): Fix precedence of throw expressions.
9268
9269 Mon Nov 28 13:15:16 1994  Mike Stump  <mrs@cygnus.com>
9270
9271         * typeck.c (build_unary_op): Allow promotions from bool to int on
9272         unary ~.
9273
9274 Sun Nov 27 00:16:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9275
9276         * method.c (build_overload_name): Use DECL_ASSEMBLER_NAME for
9277         classes when appropriate.
9278         (build_overload_nested_name): When dealing with a function context,
9279         use ASM_FORMAT_PRIVATE_NAME to tweak the name of the function to
9280         avoid conflicts between local classes of the same name.
9281
9282 Wed Nov 23 17:59:42 1994  Mike Stump  <mrs@cygnus.com>
9283
9284         * gxx.gperf, parse.y, lex.h, hash.h, lex.c (init_lex), delc.c
9285         (duplicate_decls, grokdeclarator), cp-tree.h: Add support for
9286         `explicit'.
9287         * cvt.c (convert_to_reference, cp_convert, build_type_conversion_1,
9288         build_type_conversion): Use LOOKUP_ONLYCONVERTING in
9289         build_method_calls so that non-converting constructors are not used.
9290         * call.c (build_method_call): If we shouldn't use a non-converting
9291         constructor, then don't.
9292
9293 Wed Nov 23 14:46:56 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9294
9295         * call.c (build_method_call): Don't try to synthesize methods yet.
9296
9297 Tue Nov 22 12:45:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9298
9299         * pt.c (push_template_decls): Create CONST_DECLs for template
9300         constant parameters, not VAR_DECLs.
9301
9302 Sat Nov 19 15:28:31 1994  Jim Wilson  <wilson@chestnut.cygnus.com>
9303
9304         * typeck.c (build_binary_op_nodefault): Can shorten shift only if
9305         shift count is less than size in bits of arg0.
9306
9307 Thu Nov 17 15:30:50 1994  Mike Stump  <mrs@cygnus.com>
9308
9309         * gxx.gperf, hash.h, lex.c (init_lex, real_yylex), parse.y: Add new
9310         ANSI keywords and, and_eq, bitand, bitor, explicit, namespace, not,
9311         not_eq, or, or_eq, typename, using, xor, xor_eq to g++.  Still need
9312         to add support for explicit, namespace, typename, and using, support
9313         for the rest is already in.
9314
9315 Fri Nov  4 19:04:18 1994  Mike Stump  <mrs@cygnus.com>
9316
9317         * gc.c (get_bad_cast_node): New routine to support compile time
9318         throws of bad_cast.
9319         * gc.c (build_dynamic_cast): Support throwing of bad_cast at compile
9320         time.
9321
9322 Fri Nov  4 11:12:00 1994  Mike Stump  <mrs@cygnus.com>
9323
9324         * except.c: Add hppa support.
9325
9326 Fri Nov  4 10:50:50 1994  Mike Stump  <mrs@cygnus.com>
9327
9328         * except.c: Add rs6000 support.
9329
9330 Thu Nov  3 14:24:23 1994  Mike Stump  <mrs@cygnus.com>
9331
9332         * except.c (do_unwind): Add i[34]86 support.
9333
9334 Thu Nov  3 00:10:46 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9335
9336         * pt.c (do_pending_expansions): Unset TREE_PUBLIC on implicit
9337         instantiations.
9338
9339 Wed Nov  2 15:08:24 1994  Kung Hsu  <kung@mexican.cygnus.com>
9340
9341         * decl.c (finish_function): Emit types used in method parameters
9342         into symbol table.
9343
9344 Wed Nov  2 15:05:47 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9345
9346         * pt.c (process_template_parm): Allow pointer to member function
9347         template parameter types.
9348         (uses_template_parms): Handle pointer to member function
9349         CONSTRUCTORs.
9350
9351         * g++.c (main): Cast first argument of bzero to (char *).
9352         Pass -lstdc++ instead of -lg++ unless we are invoked as 'g++'.
9353
9354 Mon Oct 31 14:50:48 1994  Kung Hsu  <kung@mexican.cygnus.com>
9355
9356         * gc.c (build_dynamic_cast): rewrite to make it work.
9357         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
9358         * class.c (modify_all_direct_vtables): ditto.
9359         * init.c (expand_direct_vtbls_init): expand more vtables if
9360         flag_rtti is on.
9361         * decl.c (init_type_desc): add default return.
9362
9363 Tue Oct 25 17:13:09 1994  Kung Hsu  <kung@mexican.cygnus.com>
9364
9365         * tree.c (debug_binfo): get rid of the initial size entry of
9366         vtable.
9367         * cp-tree.h: change flag_dossier to flag rtti, define type
9368         descriptor type nodes.
9369         * decl.c (init_type_desc): new function to initialize type
9370         descriptor type nodes.
9371         * decl.c (record_builtin_type): change flag_dossier to flag_rtti.
9372         * lex.c (init_lex): ditto.
9373         * decl.c : change variable flag_dossier to flag_rtti.
9374         * decl.c (duplicate_decls): get rid initial size entry of vtable.
9375         * decl.c (hack_incomplete_structures): take out assert 164.
9376         * search.c (get_abstract_virtuals_1): ditto.
9377         * search.c (dfs_init_vbase_pointers): change CLASSTYPE_DOSSIER to
9378         CLASSTYPE_RTTI.
9379         * parse.y: ditto.
9380         * class.c (prepare_fresh_vtable): for virtual bases, get right
9381         offset.
9382         * class.c (add_virtual_function): change flag_dossier to
9383         flag_rtti.
9384         * class.c (modify_one_vtable): modify the right rtti entry.
9385         * class.c (override_one_vtable): get rid of size entry.
9386         * class.c (finish_struct): change flag_dossier to flag_rtti, and
9387         build extra vtables, build type descriptors for polymorphic
9388         classes.
9389         * gc.c (build_headof): make headof() works correctly with new
9390         rtti.
9391         * gc.c (build_typeid): make this function work with new rtti.
9392         * gc.c (get_typeid): make this function work with new rtti.
9393         * gc.c (build_bltn_desc): new function for new rtti.
9394         * gc.c (build_user_desc): ditto.
9395         * gc.c (build_class_desc): ditto.
9396         * gc.c (build_ptr_desc): ditto.
9397         * gc.c (build_attr_desc): ditto.
9398         * gc.c (build_func_desc): ditto.
9399         * gc.c (build_ptmf_desc): ditto.
9400         * gc.c (build_ptmd_desc): ditto.
9401         * gc.c (build_t_desc): ditto.
9402         * gc.c : comment out old build_t_desc, build_i_desc, build_m_desc.
9403
9404 Tue Oct 25 13:37:41 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9405
9406         * call.c (convert_harshness): Check for TREE_UNSIGNED differences
9407         after checking for integral conversions.
9408
9409 Wed Nov 30 19:13:50 1994  Mike Stump  <mrs@cygnus.com>
9410
9411         * Version 2.6.3 released.
9412
9413 Thu Nov 17 10:56:50 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9414
9415         * typeck2.c (build_m_component_ref): Check the basetype of the
9416         member pointer against the main variant of the object type.
9417
9418 Mon Nov 14 14:21:52 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9419
9420         * cvt.c (convert_to_reference): Make sure that the original expr
9421         gets its type back when converting a reference.
9422
9423         * method.c (build_overload_name): Clear numeric_outputed_need_bar here.
9424         (build_decl_overload): Instead of here.
9425
9426 Tue Nov  8 17:11:24 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9427
9428         * cvt.c (cp_convert): Don't build a TARGET_EXPR if we're not in a
9429         function.
9430
9431         * typeck.c (convert_for_initialization): Handle initialization from
9432         a TARGET_EXPR.
9433
9434 Sun Nov  6 01:34:24 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9435
9436         * pt.c (lookup_nested_type_by_name): Fix list-walking logic.
9437         (tsubst): When replacing a TEMPLATE_TYPE_PARM, propagate
9438         TYPE_READONLY and TYPE_VOLATILE from the argument.
9439         (unify): When unifying with a TEMPLATE_TYPE_PARM, remove cv-quals
9440         present in parm from arg.
9441         (type_unification): Strip REFERENCE_TYPE from the argument type.
9442         (unify): Don't strip REFERENCE_TYPE from the argument type.
9443
9444 Sat Nov  5 22:42:15 1994  Greg McGary  <gkm@magilla.cichlid.com>
9445
9446         * pt.c (do_type_instantiation): Check to see if there's a
9447         IDENTIFIER_TEMPLATE on a class before calling
9448         instantiate_member_templates().
9449
9450 Sat Nov 12 06:35:42 1994  Mike Stump  <mrs@cygnus.com>
9451
9452         * Version 2.6.2 released.
9453
9454 Thu Nov  3 18:48:19 1994  Paul Eggert  <eggert@twinsun.com>
9455
9456         * Makefile.in (spew.o, lex.o, pt.o):
9457         Depend on $(srcdir)/parse.h, not parse.h.
9458
9459 Tue Nov  1 19:19:41 1994  Mike Stump  <mrs@cygnus.com>
9460
9461         * Version 2.6.1 released.
9462
9463 Sun Oct 23 13:19:55 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9464
9465         * decl2.c: Declare flag_access_control.
9466         (struct lang_f_options): Add access-control.
9467         * expr.c (cplus_expand_expr, NEW_EXPR): Unset flag_access_control
9468         for the call to expand_aggr_init to copy the object out of the
9469         pcc_struct_return slot.
9470         * search.c (compute_access): if (!flag_access_control) return
9471         access_public.
9472
9473 Fri Oct 21 00:32:54 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9474
9475         * lex.c (cons_up_default_function): Don't try to defer method
9476         synthesis now.
9477
9478         * decl.c (init_decl_processing): Use __pure_virtual for abort_fndecl
9479         instead of abort, since the OSF/1 dynamic linker doesn't like to see
9480         relocation entries for abort.
9481
9482         * tree.c (array_type_nelts_total): Use sizetype, not
9483         integer_type_node.
9484         (array_type_nelts_top): Likewise.
9485
9486 Thu Oct 20 15:48:27 1994  Mike Stump  <mrs@cygnus.com>
9487
9488         * decl.c (grokdeclarator): Added handling for catch parameters
9489         (CATCHPARM).
9490         * except.c (expand_start_catch_block): Use the new CATCHPARM context
9491         instead of NORMAL.
9492         * except.c (expand_throw): Don't let convert_to_reference complain
9493         about what we are doing.
9494
9495 Thu Oct 20 12:55:24 1994  Jim Wilson  <wilson@cygnus.com>
9496
9497         * method.c (emit_thunk): Call instantiate_virtual_regs.
9498
9499 Wed Oct 19 14:15:33 1994  Mike Stump  <mrs@cygnus.com>
9500
9501         * except.c (expand_exception_blocks): Make sure throw code doesn't
9502         get put in function that won't be output.
9503
9504 Mon Oct 17 18:03:15 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9505
9506         * decl.c (init_decl_processing): Make alloca a builtin.
9507
9508 Thu Oct 27 21:10:25 1994  Craig Burley  <craig@burley>
9509
9510         * g++.c (main): Only decrement "added" and set "library" to
9511         NULL when "library" != NULL (just like 940829 fix).
9512
9513 Mon Oct 17 15:56:11 1994  Mike Stump  <mrs@cygnus.com>
9514
9515         * except.c (expand_start_catch_block): Make sure the false label
9516         gets onto the permanent obstack, as it is used for the exception
9517         table.
9518
9519 Fri Oct 14 18:54:48 1994  Mike Stump  <mrs@cygnus.com>
9520
9521         * class.c (modify_one_vtable): Since the DECL_CONTEXT of fndecl can
9522         be set just below, use current_fndecl instead.
9523
9524 Fri Oct 14 15:12:22 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9525
9526         * init.c (expand_aggr_vbase_init_1): Don't call expand_aggr_init_1
9527         with LOOKUP_SPECULATIVELY.
9528         (expand_default_init): Abort if build_method_call returns NULL_TREE.
9529
9530         * typeck.c (build_modify_expr): Don't just build a MODIFY_EXPR if
9531         the rhs is a TARGET_EXPR.
9532
9533         * parse.y (left_curly): Anonymous types are not affected by #pragma
9534         interface/implementation.
9535
9536         * method.c (synthesize_method): Don't call setup_vtbl_ptr for the
9537         default constructor if it isn't needed.
9538
9539         * lex.c (cons_up_default_function): Do synthesize methods for
9540         anonymous types if necessary.
9541
9542 Thu Oct 13 17:44:55 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9543
9544         * method.c (build_decl_overload): Set numeric_outputed_need_bar to 0.
9545
9546 Wed Oct 12 13:27:57 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9547
9548         * typeck.c (build_modify_expr): Understand how to copy an aggregate.
9549
9550         * init.c (expand_default_init): Likewise.  Also remove some of the
9551         crufty code that assumes methods will not be synthesized properly.
9552
9553         * lex.c (cons_up_default_function): If the containing type has no
9554         name, these functions should never need to be called, so just
9555         declare them.
9556
9557         * lex.c (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the
9558         bitmask for lexing character constants.
9559
9560         * call.c (build_method_call): Disable code that tries to do tricky
9561         stuff with a default parameter that is a constructor call, but
9562         actually does other tricky stuff that breaks things.
9563
9564 Wed Oct 12 16:14:01 1994  Benoit Belley  <belley@cae.ca>
9565
9566         * decl.c (finish_enum): Disable code which forces enums to be signed,
9567         since this conflicts with their use as bitfields. type_promotes_to
9568         handles promotion of enums of underlying unsigned types to signed
9569         integer types.
9570
9571 Wed Oct 12 13:24:03 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9572
9573         * cvt.c (type_promotes_to): Also promote enums to long if
9574         appropriate.
9575
9576         * typeck.c (default_conversion): Don't expect type_promotes_to to
9577         return a main variant.
9578
9579 Wed Oct 12 12:19:45 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9580
9581         * call.c (build_scoped_method_call): Don't lose side effects in the
9582         object expression when calling a non-existent destructor.
9583
9584 Fri Sep  2 19:05:21 1994  Rohan Lenard  <rjl@iassf.easams.com.au>
9585
9586         * call.c (build_scoped_method_call): Remove erroneous error message
9587         when destructor call is written as a scoped call.
9588
9589 Tue Oct 11 23:48:31 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9590
9591         * various: Cast pointer arguments to bzero and bcopy to char *.
9592
9593 Tue Oct 11 19:34:32 1994  Mike Stump  <mrs@cygnus.com>
9594
9595         * class.c (get_derived_offset): Added a type parameter to limit how
9596         far up the CLASSTYPE_VFIELD_PARENT chain we search.
9597         * class.c (modify_one_vtable, fixup_vtable_deltas): When forming the
9598         offset to put into the vtable for the this parameter, make sure we
9599         don't offset from a parent of the DECL_CONTEXT of the function.
9600
9601 Tue Oct 11 16:10:52 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9602
9603         * pt.c (do_function_instantiation): Set DECL_EXTERNAL and
9604         TREE_STATIC when setting DECL_INTERFACE_KNOWN.
9605         (do_type_instantiation): Likewise.
9606
9607         * lex.c (cons_up_default_function): Set DECL_INTERFACE_KNOWN,
9608         DECL_EXTERNAL and TREE_STATIC as appropriate.
9609
9610         * decl2.c (finish_file): Also synthesize methods that don't have
9611         DECL_EXTERNAL set.  Set interface_unknown before doing so.
9612
9613         * decl.c (start_function): If DECL_INTERFACE_KNOWN is set on the
9614         function decl, don't muck with TREE_PUBLIC and DECL_EXTERNAL.
9615
9616 Mon Oct 10 00:56:53 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9617
9618         * lex.c (cons_up_default_function): Mark methods in a template class
9619         as template instances.  Store the values of interface_unknown and
9620         interface_only for do_pending_inlines.
9621         (do_pending_inlines): Use them.
9622
9623         * decl2.c (finish_file): If we haven't seen a definition of a
9624         function declared static, make the decl non-PUBLIC so compile_file
9625         can give an error.
9626
9627 Sun Oct  9 02:42:29 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9628
9629         * method.c (do_build_copy_constructor): Handle anonymous unions.
9630         (do_build_assign_ref): Likewise.
9631         (largest_union_member): Move from lex.c.
9632
9633 Sat Oct  8 14:59:43 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9634
9635         Re-implement g++'s vague linkage independent of TREE_PUBLIC.
9636         * pt.c (instantiate_member_templates): Lose redundant
9637         -fexternal-templates handling.
9638         (tsubst): Set TREE_PUBLIC and DECL_EXTERNAL on new decls.  Don't set
9639         TREE_STATIC or DECL_INTERFACE_KNOWN.
9640         (do_pending_expansions): Predicate on DECL_INTERFACE_KNOWN instead
9641         of DECL_EXTERNAL for explicit instantiations.
9642         (do_function_instantiation): Do the new thing.
9643         (do_type_instantiation): Likewise.
9644         (instantiate_template): Deal with member templates defined in a .cc
9645         file with -fexternal-templates.
9646         * except.c (expand_exception_blocks): Use DECL_LINKAGE_KNOWN to
9647         decide whether to stick builtin_throw here.
9648         * decl2.c (import_export_inline): Predicate on DECL_INTERFACE_KNOWN
9649         rather than TREE_PUBLIC.  Generally fix rules.
9650         (finish_file): Use DECL_INITIAL to determine whether or not a method
9651         has been synthesized, rather than TREE_ASM_WRITTEN.
9652         * decl.c (warn_extern_redeclared_static): Use DECL_PUBLIC instead of
9653         TREE_PUBLIC.
9654         (pushdecl): Likewise.
9655         (duplicate_decls): Likewise.  Deal with DECL_DECLARED_STATIC and
9656         DECL_INTERFACE_KNOWN. 
9657         (redeclaration_error_message): Fix checking for conflicting linkage.
9658         (define_function): Set DECL_INTERFACE_KNOWN.
9659         (grokfndecl): Function decls are PUBLIC until we are sure about
9660         their linkage.  Set DECL_DECLARED_STATIC as needed.
9661         (start_function): Deal with linkage.  Move pushdecl after linkage
9662         magic.
9663         (finish_function): Don't set TREE_ASM_WRITTEN on discarded inlines.
9664         * cp-tree.h (lang_decl_flags): Add interface_known and
9665         declared_static.
9666         (DECL_INTERFACE_KNOWN): New macro.
9667         (DECL_DECLARED_STATIC): New macro.
9668         (DECL_PUBLIC): New macro.
9669
9670         Clean up bogus use of TREE_PUBLIC.
9671         * class.c (alter_access): Fix mistaken use of TREE_PUBLIC (it
9672         doesn't correspond to TREE_PROTECTED and TREE_PRIVATE).
9673         * init.c (do_friend): Don't arbitrarily set TREE_PUBLIC.
9674
9675 Wed Oct  5 13:44:41 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9676
9677         * call.c (build_overload_call_real): Don't immediately do
9678         array->pointer conversion.
9679
9680         * pt.c (type_unification): If not passing to a reference, strip
9681         cv-quals.  Also handle array->pointer conversion.
9682
9683 Tue Oct  4 17:45:37 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9684
9685         * decl.c (grokdeclarator): Don't warn about applying const to a
9686         const typedef or template type parameter.
9687
9688         * decl2.c (finish_file): Also synthesize methods after walking the
9689         vtables.  Ugly ugly ugly.
9690
9691 Mon Oct  3 15:02:41 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9692
9693         * various: Remove lingering remnants of old exception handling code.
9694
9695         * decl2.c (finish_file): Synthesize methods before walking the
9696         vtables, so that the vtables get emitted as needed.
9697
9698         * decl.c (shadow_tag): Remove obsolete code for pushing tags and
9699         dealing with exceptions.
9700
9701 Mon Oct  3 13:05:27 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>
9702
9703         * Make-lang.in (g++-cross): Depend upon version.o and $(LIBDEPS).
9704
9705 Mon Oct  3 02:59:28 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9706
9707         * decl2.c (finish_file): Fix inline handling.
9708
9709 Sun Oct  2 00:21:56 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9710
9711         * decl.c (grokdeclarator): Handle redundant scope even better.
9712         ({push,pop}_cp_function_context): Take toplev parameter.
9713
9714         * method.c (synthesize_method): Pass toplev parameter to
9715         {push,pop}_cp_function_context depending on decl_function_context
9716         (fndecl).
9717
9718         * typeck.c (build_x_unary_op): Unary & on OFFSET_REFs is always the
9719         built-in version.
9720
9721         * method.c (synthesize_method): Don't be confused by __in_chrg
9722         parameter.
9723
9724         * class.c (popclass): Set C_C_D like start_function does.
9725
9726         * decl.c (grokdeclarator): Handle redundant scope better.
9727
9728         * parse.y (expr_or_declarator): Add '(' expr_or_declarator ')' rule.
9729         (direct_notype_declarator): Likewise.
9730         (complex_direct_notype_declarator): Remove it here.
9731
9732 Sat Oct  1 21:42:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
9733
9734         * init.c (resolve_offset_ref): Fix types used in resolving .*
9735         expressions.
9736
9737 Sat Oct  1 15:18:49 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
9738
9739         Beginnings of work to synthesize methods only when needed.
9740         * call.c (build_method_call): Synthesize methods as necessary
9741         (currently never necessary).
9742         * class.c (popclass): Don't try to set C_C_D here, as it'll end up
9743         on the wrong obstack.
9744         * decl.c (push_cp_function_context): Mostly copied from
9745         push_c_function_context.
9746         (pop_cp_function_context): Similarly.
9747         (finish_function): Reverse order of poplevel and pop_nested_class so
9748         that current_class_decl is restored properly.  
9749         (start_function): Likewise.
9750         (finish_function): Add parameter 'nested'.  Don't call
9751         permanent_allocation if (nested).
9752         * various: Pass extra parameter to finish_function.     
9753         * decl2.c (finish_file): Reorganize end-of-file inline handling,
9754         synthesizing methods as necessary.
9755         * lex.c (cons_up_default_function): Call mark_inline_for_output.
9756         Only synthesize methods immediately if #pragma implementation
9757         (currently disabled).
9758         (do_pending_inlines): Call synthesize_method.
9759         * method.c (synthesize_method): New function; all method synthesis
9760         goes through here.  Calls do_build_assign_ref and
9761         do_build_copy_constructor.
9762         (build_default_constructor): Remove.
9763         (build_dtor): Likewise.
9764         (build_assign_ref): Rename to do_build_assign_ref and remove stuff
9765         done by synthesize_method.
9766         (build_copy_constructor): Similarly.
9767
9768 Thu Sep 29 16:58:52 1994  Mike Stump  <mrs@cygnus.com>
9769
9770         * typeck.c (c_expand_return): Use magic so the backend can fixup the
9771         assignment into the return register, so cleanups won't clobber it.
9772
9773 Thu Sep 29 13:08:50 1994  Jason Merrill  <jason@deneb.cygnus.com>
9774
9775         * method.c (hack_identifier): Don't call assemble_external for
9776         template decls.
9777
9778         * decl.c (finish_decl): Also end temporary allocation if the decl in
9779         question has a type of error_mark_node.
9780
9781 Wed Sep 28 21:45:00 1994  Mike Stump  <mrs@cygnus.com>
9782
9783         * typeck.c (build_modify_expr): When optimizing ?: on lhs, make sure
9784         that if the ?: was a reference type, that the subparts will be also.
9785
9786 Wed Sep 28 16:14:04 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
9787
9788         * except.c (register_exception_table): Use Pmode, not PTRmode.
9789
9790 Fri Sep 23 13:54:27 1994  Jason Merrill  <jason@deneb.cygnus.com>
9791
9792         * lex.c (do_pending_inlines): Do method synthesis after the
9793         pending_inlines have been reversed.
9794
9795 Thu Sep 22 12:53:03 1994  Per Bothner  <bothner@kalessin.cygnus.com>
9796
9797         * decl2.c (finish_file):  Fix Brendan's fix:  Only call
9798         register_exception_table if there is a non-empty exception table.
9799
9800 Thu Sep 22 12:03:46 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
9801
9802         * decl2.c (finish_file): Only do register_exception_table if
9803         -fhandle-exceptions is being used.
9804
9805 Wed Sep 21 19:01:51 1994  Per Bothner  <bothner@kalessin.cygnus.com>
9806
9807         * except.c (output_exception_table_entry):  Simplify
9808         by using assemble_integer.
9809         (build_exception_table):  Change to return a count.
9810         Cleanup to use standard macros, instead of hard-wired
9811         sparc asm format.  Don't make __EXCEPTION_TABLE__ global.
9812         (register_exception_table):  New function.  Generate call to builtin.
9813         * decl2.c (finish_file):  Call register_exception_table.
9814         * cp-tree.h (build_exception_table):  Fix prototype.
9815
9816 Wed Sep 21 13:20:42 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
9817
9818         * tree.c (break_out_calls): Don't try to duplicate the DECL_INITIAL.
9819
9820         * decl2.c (delete_sanity): Give an error at trying to delete a
9821         function.
9822
9823 Wed Sep 21 11:47:10 1994  Jason Merrill  <jason@deneb.cygnus.com>
9824
9825         * lex.c (cons_up_default_function): Mark synthesized destructors
9826         inline.
9827
9828         * decl.c (duplicate_decls): Ignore redeclarations of wchar_t as
9829         something other than __wchar_t, complaining if -pedantic and not in
9830         a system header.
9831
9832 Tue Sep 20 09:43:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
9833
9834         * decl.c (xref_tag): Set up BINFO_INHERITANCE_CHAIN on base binfos
9835         here.
9836
9837         * typeck.c (build_modify_expr): Require complete type after checking
9838         for error_mark_node.
9839
9840         * call.c (build_method_call): Print parmtypes when complaining of
9841         ambiguous call.
9842
9843         * typeck.c (build_modify_expr): Handle assignment to array from
9844         non-array.
9845
9846         * decl.c (lookup_name_real): Deal with got_scope == error_mark_node.
9847
9848         * call.c (build_method_call): Don't bother with the exact match.
9849
9850 Mon Sep 19 00:51:39 1994  Jason Merrill  <jason@deneb.cygnus.com>
9851
9852         * init.c (expand_aggr_init): If we munge the type of the variable,
9853         also munge the type of the initializer.
9854
9855         * decl.c (grokdeclarator): Use <= when comparing to RID_LAST_MODIFIER.
9856         (init_decl_processing): Push artificial declaration of wchar_t so
9857         people don't have to declare it before they can use it.
9858
9859         * error.c (cp_line_of): return lineno in lieu of 0.
9860
9861         * typeck.c (convert_for_assignment): Handle conversion of pmfs to
9862         int and bool.
9863         (build_component_ref): Fold the COMPONENT_REF in case it can be
9864         reduced.
9865
9866         * typeck2.c (store_init_value): Don't pedwarn about non-constant
9867         bracketed initializers for automatic variables.
9868
9869 Sun Sep 18 10:12:12 1994  Jason Merrill  <jason@deneb.cygnus.com>
9870
9871         * error.c (dump_decl): Don't say `typedef enum foo foo'.
9872
9873         * decl.c (start_decl): Don't set TREE_PUBLIC on template decls just
9874         because they're affected by #pragma i/i.  We'll deal with that when
9875         they get instantiated.
9876
9877         * typeck.c (build_unary_op): Clean up cruft in ADDR_EXPR case.
9878
9879         * class.c (instantiate_type): Set TREE_CONSTANT on instantiated
9880         ADDR_EXPRs if appropriate.
9881
9882         * decl.c (build_ptrmemfunc_type): Unset IS_AGGR_TYPE on pmf types.
9883
9884         * typeck.c (build_ptrmemfunc): Handle &overloaded_method as an
9885         initializer properly.
9886         * typeck2.c (digest_init): Likewise.
9887
9888         * tree.c (cp_build_type_variant): Like c_build_type_variant, except
9889         it uses build_cplus_array_type.
9890         * *.c: Use cp_build_type_variant instead of c_build_type_variant.
9891
9892         * pt.c (do_type_instantiation): Don't try to instantiate nested
9893         enums.
9894
9895 Tue Sep 13 10:56:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
9896
9897         * cvt.c (build_up_reference): Handle preincrement and predecrement
9898         properly.
9899
9900 Tue Sep 13 09:51:59 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
9901
9902         * decl.c (finish_decl): Only lay out the rtl for DECL if it is, in
9903         fact, static.
9904
9905 Mon Sep 12 14:40:30 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
9906
9907         * decl.c (finish_decl): Lay out the rtl for DECL before doing
9908         grok_reference_init, in case it's static.
9909
9910 Mon Sep 12 12:45:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
9911
9912         * class.c (finish_struct): Don't synthesize constructors if the
9913         class has a field with the same name as the class.  Don't die on
9914         classes with no constructors or destructors.  Don't die if the head
9915         and tail of the class are in different files.
9916
9917         * decl.c (grokdeclarator): Don't treat a function pointer field
9918         with the same name as the class as a constructor.
9919
9920 Fri Sep  9 13:17:00 1994  Jason Merrill  <jason@deneb.cygnus.com>
9921
9922         * typeck.c (build_c_cast): Pull constant values out of their
9923         variables here.
9924
9925         * decl.c (duplicate_decls): Only propagate DECL_CHAIN in
9926         FUNCTION_DECLs and TEMPLATE_DECLs.
9927
9928 Thu Sep  8 10:07:48 1994  Jason Merrill  <jason@deneb.cygnus.com>
9929
9930         * decl.c (duplicate_decls): Propagate DECL_CHAIN in all DECLs that
9931         have it.
9932
9933         * pt.c (unify): REALs and INTEGERs only unify with their own genus.
9934         (instantiate_member_templates): Don't muck with DECL_EXTERNAL and
9935         TREE_PUBLIC unless -fexternal-templates.
9936
9937 Wed Sep  7 13:17:10 1994  Jason Merrill  <jason@deneb.cygnus.com>
9938
9939         * pt.c (do_type_instantiation): Call instantiate_member_templates.
9940         Deal with specializations.
9941         (tsubst): Don't stick the mangled name in DECL_NAME for function
9942         instantiations.  Don't push them, either.
9943
9944         * decl2.c (grokfield): Move code for generating the
9945         DECL_ASSEMBLER_NAME for static members from here.
9946         * method.c (build_static_name): To here.
9947         * decl.c (grokvardecl): Call build_static_name.
9948         (duplicate_decls): Keep old DECL_ASSEMBLER_NAME.
9949
9950 Mon Sep  5 12:49:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
9951
9952         * call.c (build_method_call): if -Wsynth, warn when selecting
9953         synthesized op= over user-supplied one cfront would select.
9954         * decl2.c (lang_decode_option): Handle -Wsynth.
9955
9956 Fri Sep  2 15:11:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
9957
9958         * decl.c (finish_enum): Overhaul to fix several bugs.
9959         (start_enum): Disable useless code.
9960
9961 Thu Sep  1 16:04:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
9962
9963         * typeck.c (c_expand_return): Warn about returning a reference to a
9964         temporary.
9965         (convert_arguments): Increment argument counter when using default
9966         arguments, too.
9967
9968 Wed Aug 31 14:29:22 1994  Jason Merrill  <jason@deneb.cygnus.com>
9969
9970         * decl.c (finish_decl): If the type of decl is error_mark_node,
9971         don't bother trying to do anything.
9972
9973         * typeck.c (convert_for_initialization): If the rhs contains a
9974         constructor call, pretend the lhs type needs to be constructed.
9975
9976         * init.c (expand_default_init): If we stick the object inside the
9977         initializer, mark the initializer used.
9978
9979 Tue Aug 30 13:50:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
9980
9981         * method.c (build_assign_ref): return *this;
9982         (build_assign_ref): Fix base assignment order.
9983         (build_copy_constructor): Fix member init order.
9984
9985 Mon Aug 29 13:54:39 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
9986
9987         * g++.c (main): Remember to clear out SAW_SPECLANG after we see
9988         its argument.
9989
9990 Sat Aug 27 09:36:03 1994  Jason Merrill  <jason@deneb.cygnus.com>
9991
9992         * method.c (build_copy_constructor): Also copy virtual bases.
9993
9994 Fri Aug 26 17:05:15 1994  Jason Merrill  <jason@deneb.cygnus.com>
9995
9996         * lex.c (do_pending_inlines): Clear out pending_inlines before doing
9997         any synthesis.  Also first set deja_vu on all pending_inlines.
9998
9999         * method.c (build_assign_ref): Use build_member_call to invoke base
10000         operator=, rather than build_modify_expr.  And use
10001         build_reference_type instead of TYPE_REFERENCE_TO.
10002         (build_copy_constructor): Use TYPE_NESTED_NAME to identify the
10003         basetype.
10004
10005         * decl2.c (grokfield): Don't complain about undefined local class
10006         methods.
10007
10008         * class.c (finish_struct): Don't try to synthesize methods here.
10009         * lex.c (do_pending_inlines): Instead, synthesize them here.
10010         (init_lex): Initialize synth_obstack.
10011         (cons_up_default_function): Stick synthesis request on
10012         pending_inlines.
10013
10014 Fri Aug 26 12:24:14 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
10015
10016         * call.c (build_method_call) [PCC_STATIC_STRUCT_RETURN]: Also
10017         accept an RTL_EXPR in what we're about to use for the instance,
10018         since anything which would end up with pcc_struct_return set
10019         inside cplus_expand_expr.
10020
10021         * cp-tree.h (cons_up_default_function): Note change of prototype.
10022
10023 Thu Aug 25 23:05:30 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
10024
10025         * class.c (finish_struct): Undid change from Aug 21 testing
10026         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
10027         * parse.y (left_curly): Likewise, undid change from Aug 21.
10028         * decl.c (xref_tag): Undid change from Aug 21, set
10029         CLASSTYPE_INTERFACE correctly, and added comments.
10030
10031 Thu Aug 25 00:36:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
10032
10033         Rework approach to synthesized methods; don't go through the parser
10034         anymore.
10035         * class.c (finish_struct): Use new synthesis approach.
10036         * lex.c (cons_up_default_function): Now just creates declaration,
10037         not code.
10038         (largest_union_member): #if 0 out.
10039         (default_assign_ref_body): Likewise.
10040         (default_copy_constructor_body): Likewise.
10041         * method.c (build_default_constructor): New function to synthesize X().
10042         (build_copy_constructor): Synthesize X(X&).
10043         (build_assign_ref): Synthesize X::operator=(X&).
10044         (build_dtor): Synthesize ~X().
10045
10046         * error.c (cp_line_of): If we're dealing with an artificial
10047         TYPE_DECL, look at the type instead.
10048
10049 Wed Aug 24 11:11:50 1994  Jason Merrill  <jason@deneb.cygnus.com>
10050
10051         * init.c (sort_member_init): Check warn_reorder.
10052         * decl2.c (lang_decode_option): Handle -W{no-,}reorder.
10053
10054         * cp-tree.h (CLASSTYPE_SOURCE_LINE): New macro.
10055         * error.c (cp_line_of): Use CLASSTYPE_SOURCE_LINE for aggregates.
10056         * class.c (finish_struct): Set CLASSTYPE_SOURCE_LINE.
10057
10058 Tue Aug 23 09:28:35 1994  Mike Stump  <mrs@cygnus.com>
10059
10060         * error.c (dump_decl): Improve wording, so that error messages
10061         dont't read template<, class foo>...
10062
10063 Mon Aug 22 15:30:51 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
10064
10065         * parse.y (label_colon): Also match a TYPENAME as a label name,
10066         since they may have declared a class by that name but have also
10067         tried to have a local label under the same name.
10068
10069         * pt.c (coerce_template_parms): Call cp_error, not cp_error_at,
10070         for the message so they know at what point it was instantiated.
10071
10072 Sun Aug 21 23:07:35 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
10073
10074         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
10075         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures up to left_curly time.
10076         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
10077         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures down to left_curly time.
10078         * parse.y (left_curly): New final resting place for setting
10079         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING for signatures.
10080
10081         * class.c (finish_struct): Don't test for function/field name
10082         conflicts in signatures, since all the fields are compiler-constructed.
10083
10084 Fri Aug 19 14:04:47 1994  Kung Hsu  <kung@mexican.cygnus.com>
10085
10086         * method.c (build_overload_nested_name): in qualified name
10087         mangling, the template with value instantiation will have numeric
10088         at end and may mixed with the name length of next nested level.
10089         Add a '_' in between.
10090         * method.c (build_overload_name): ditto.
10091         * method.c (build_overload_identifier): ditto.
10092
10093 Thu Aug 18 16:24:43 1994  Mike Stump  <mrs@cygnus.com>
10094
10095         * error.c (dump_decl): Handle NULL args.
10096
10097 Thu Sep 29 16:15:36 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
10098
10099         * g++.c: Rework last change so it's done like collect.c (and 
10100         gcc.c).
10101
10102 Wed Sep 14 10:17:27 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
10103
10104         * g++.c: Include <sys/errno.h> in case `errno' is a macro
10105         as permitted by ANSI C.
10106
10107 Thu Aug 18 12:48:09 1994  Mike Stump  <mrs@cygnus.com>
10108
10109         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
10110         CLASSTYPE_VTABLE_NEEDS_WRITING up to left_curly time.
10111         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
10112         CLASSTYPE_VTABLE_NEEDS_WRITING down to left_curly time.
10113         * parse.y (left_curly): New final resting place for setting
10114         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
10115
10116 Thu Aug 11 11:32:42 1994  H.J. Lu  <hjl@nynexst.com>
10117
10118         * g++.c (main): Only decrement "added" and set "library" to
10119           NULL when "library" != NULL.
10120
10121 Sat Aug 13 00:14:52 1994  Jason Merrill  <jason@deneb.cygnus.com>
10122
10123         * decl.c (grokdeclarator): Don't set TREE_PUBLIC on a function decl
10124         just because its class has a known interface.
10125         (decls_match): Deal with new format of template parms.
10126
10127         * lex.c (cons_up_default_function): Don't play with TREE_PUBLIC and
10128         DECL_EXTERNAL here.
10129
10130 Fri Aug 12 01:55:15 1994  Jason Merrill  <jason@deneb.cygnus.com>
10131
10132         * decl.c (pushtag): SET_DECL_ARTIFICIAL on gratuitous typedefs.
10133         (xref_defn_tag): Likewise.
10134         (pushdecl): Only allow artificial typedefs to be shadowed.
10135
10136         * init.c (emit_base_init): Pass the right binfos to
10137         expand_aggr_init_1.
10138
10139         * class.c (delete_duplicate_fields_1): Make it work right.
10140         (finish_struct): Catch function/field name conflict.
10141
10142         * decl2.c (check_classfn): Pass the function to cp_error, not just
10143         the name.
10144
10145         * init.c (sort_member_init): Warn when order of member initializers
10146         does not match order of member declarations.
10147         (emit_base_init): Call expand_aggr_init_1 with LOOKUP_PROTECT.
10148
10149         * error.c (dump_expr): Handle lists of functions.
10150
10151         * decl.c (start_function): #pragma interface only affects functions
10152         that would otherwise be static.
10153         (finish_decl): Don't warn about an unused variable if it has both
10154         constructor and destructor, since the 'resource allocation is
10155         initialization' idiom is relatively common.
10156
10157         * typeck.c (comp_target_types): Don't handle TEMPLATE_TYPE_PARMs.
10158         (comp_target_parms): Likewise.
10159         (compparms): Never consider default parms.
10160         (common_base_type): Don't choose a virtual baseclass if there is a
10161         more derived class in common.
10162         (build_conditional_expr): If pedantic, pedwarn about conversion to
10163         common base in conditional expr.
10164
10165         * class.c (instantiate_type): Handle template instantiation better.
10166
10167         * typeck.c (convert_arguments): Don't try to get tricky and convert
10168         to int directly when PROMOTE_PROTOTYPES is set, as it breaks
10169         user-defined conversions.
10170
10171         * lex.c (check_for_missing_semicolon): Also give error at end of
10172         file.
10173
10174         * call.c (build_method_call): Don't promote arrays to pointers here.
10175
10176         * typeck.c (convert_arguments): Don't require the actual parameter
10177         to be of a complete type if the formal parameter is a reference.
10178
10179 Thu Aug 11 15:21:40 1994  Jason Merrill  <jason@deneb.cygnus.com>
10180
10181         * decl.c (grokdeclarator): Soften 'static' on member function error
10182         to pedwarn.
10183
10184         * init.c (build_new): Don't automatically save rval.
10185         (build_offset_ref): Do field lookup with proper basetype_path.
10186
10187 Thu Aug 11 12:46:54 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
10188
10189         * errfn.c (cp_silent): Declare to mark when we should avoid
10190         emitting warnings and errors.
10191         (cp_error): Check it.
10192         (cp_warning): Likewise.
10193         (cp_pedwarn): Likewise.
10194         (cp_compiler_error): Likewise.
10195         (cp_error_at): Likewise.
10196         (cp_warning_at): Likewise.
10197         (cp_pedwarn_at): Likewise.
10198         * call.c (compute_conversion_costs): Set CP_SILENT when we start
10199         out, and make sure we turn it off before we leave.
10200
10201 Thu Aug 11 00:02:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
10202
10203         * decl2.c (grok_array_decl): Try computing *(A+B) if neither
10204         argument is obviously an array.
10205
10206 Wed Aug 10 15:32:04 1994  Jason Merrill  <jason@deneb.cygnus.com>
10207
10208         * typeck.c (c_expand_start_case): Do cleanups here.
10209
10210         * parse.y (xcond): Do bool conversion here, too.
10211         (simple_stmt, SWITCH case): Don't do cleanups here.
10212
10213         * decl.c (duplicate_decls): Don't treat builtins that have been
10214         explicitly declared specially.
10215
10216 Tue Aug  9 01:16:09 1994  Jason Merrill  <jason@deneb.cygnus.com>
10217
10218         * tree.c (make_deep_copy): Support copying pointer, reference,
10219         function, array, offset and method types.
10220
10221         * decl.c (init_decl_processing): Mark exit and abort as
10222         BUILT_IN_NONANSI so that duplicate_decls is kinder about
10223         redeclaration.
10224         (duplicate_decls): Don't give two errors for redeclaring a C
10225         function with the same parms but a different return type.
10226
10227         * parse.y (paren_cond_or_null): Do cleanup and bool conversion here.
10228         (condition): Instead of here.
10229         (simple_stmt, SWITCH case): Also do cleanup here.
10230
10231         * decl2.c (finish_anon_union): Only break out FIELD_DECLs.
10232
10233         * call.c (build_method_call): Don't throw away the side effects of
10234         the object in a call to a non-existent constructor.
10235         * parse.y (primary): Likewise.
10236
10237         * method.c (build_decl_overload): Oop.
10238
10239         * decl2.c (lang_decode_option): Deal with flag_no_nonansi_builtin,
10240         warn about uselessness of specifying -fansi-overloading.
10241
10242         * method.c (build_decl_overload): Treat any non-member new with one
10243         parameter as __builtin_new.
10244
10245         * decl.c (init_decl_processing): Setup built-in meanings of exit,
10246         _exit and abort.
10247
10248 Mon Aug  8 15:03:30 1994  Jason Merrill  <jason@deneb.cygnus.com>
10249
10250         * error.c (dump_readonly_or_volatile): Put a space between const and
10251         volatile if both apply.
10252
10253         * init.c (perform_member_init): Clean up after this initialization.
10254         (emit_base_init): Clean up after each base init, not after all have
10255         been done.
10256         (expand_aggr_vbase_init_1): Clean up after this init.
10257
10258 Sun Aug  7 14:55:05 1994  Jason Merrill  <jason@deneb.cygnus.com>
10259
10260         * call.c (build_method_call): Deal with destroying references.
10261
10262         * parse.y (condition): Do bool_truthvalue_conversion here.
10263         (paren_expr_or_null): And here.
10264         (simple_if): Not here.
10265         (simple_stmt): Or here.
10266
10267 Sat Aug  6 22:29:45 1994  Jason Merrill  <jason@deneb.cygnus.com>
10268
10269         * parse.y (paren_expr_or_null): Wrap the expression in a
10270         CLEANUP_POINT_EXPR.
10271         (condition): Likewise.
10272
10273 Sat Aug  6 19:46:37 1994  Rohan Lenard  <rjl@easams.com.au>
10274
10275         * call.c (build_scoped_method_call): Fix error message when
10276         destructor call refers to a nonexistent type.
10277
10278 Sat Apr 16 22:43:30 1993  Gerald Baumgartner  <gb@cs.purdue.edu>
10279
10280         * lex.h (rid): Deleted RID_RAISES, it's never used.
10281         Moved RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_EXCEPTION,
10282         RID_TEMPLATE and RID_SIGNATURE to the end of the enumeration,
10283         they don't need to be touched in `grokdeclarator.'
10284         (RID_LAST_MODIFIER): Defined macro to be RID_MUTABLE.
10285
10286         * decl.c (grokdeclarator): Use RID_LAST_MODIFIER instead of
10287         RID_MAX as loop limit for finding declaration specifiers.
10288
10289 Sat Apr  3 21:59:07 1993  Gerald Baumgartner  <gb@cs.purdue.edu>
10290
10291         * lex.c (debug_yytranslate): Moved to parse.y since it needs to
10292         access `yytname,' which is static in parse.c.
10293
10294 Fri Apr  2 23:36:57 1993  Gerald Baumgarnter  <gb@cs.purdue.edu>
10295
10296         * cp-tree.h (GNU_xref_ref): Fixed typo in extern declaration, it
10297         was `GNU_xref_def' instead of `GNU_xref_ref.'
10298
10299 Fri Aug  5 14:20:16 1994  Jason Merrill  <jason@deneb.cygnus.com>
10300
10301         * pt.c (do_function_instantiation): Don't set TREE_PUBLIC and
10302         DECL_EXTERNAL on 'extern' instantiations; wait until EOF to do that.
10303         (do_type_instantiation): Likewise.
10304
10305         * decl2.c (import_export_inline): Decides at EOF what an inline's
10306         linkage should be.
10307         (finish_file): Call it.
10308
10309         * decl.c (start_function): Don't rely on the settings of TREE_PUBLIC
10310         and DECL_EXTERNAL from do_*_instantiation.  Only set
10311         DECL_DEFER_OUTPUT on inlines whose linkage might actually change.
10312         (finish_function): Use DECL_DEFER_OUTPUT to decide which inlines to
10313         mark for later consideration, rather than DECL_FUNCTION_MEMBER_P.
10314
10315 Fri Aug  5 01:12:20 1994  Mike Stump  <mrs@cygnus.com>
10316
10317         * class.c (get_class_offset_1, get_class_offset): New routine to
10318         find the offset of the class where a virtual function is defined,
10319         from the complete type.
10320         * class.c (modify_one_vtable, fixup_vtable_deltas): Use
10321         get_class_offset instead of virtual_offset as get_class_offset will
10322         always provide the right answer.
10323         * tree.c (virtual_offset): Remove.  It only ever worked some of the
10324         time.
10325
10326 Tue Aug  2 12:44:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
10327
10328         * call.c (build_method_call): Put back unary_complex_lvalue call
10329         that I thought was redundant.
10330
10331         * typeck.c (c_expand_return): Fix a case I missed before.
10332
10333 Sun Jul 31 17:54:02 1994  Jason Merrill  <jason@deneb.cygnus.com>
10334
10335         * pt.c (unify): Strip cv-quals from template type arguments (when
10336         'const T*' is matched to 'const char*', that does not mean that T is
10337         'const char').
10338
10339 Fri Jul 29 01:03:06 1994  Jason Merrill  <jason@deneb.cygnus.com>
10340
10341         * pt.c (do_type_instantiation): Instantiate nested TAGS, not
10342         typedefs.  Third time's the charm?
10343
10344         * parse.y (template_parm): Support default template parms.
10345         * pt.c (process_template_parm): Likewise.
10346         (end_template_parm_list): Likewise.
10347         (coerce_template_parms): Likewise.
10348         (mangle_class_name_for_template): Likewise.
10349         (push_template_decls): Likewise.
10350         (unify): Likewise.
10351         * method.c (build_overload_identifier): Likewise.
10352         * error.c (dump_decl): Likewise.
10353
10354 Wed Jul 27 17:47:00 1994  Jason Merrill  <jason@deneb.cygnus.com>
10355
10356         * pt.c (do_type_instantiation): Only instantiate nested *classes*.
10357
10358 Tue Jul 26 13:22:40 1994  Jason Merrill  <jason@deneb.cygnus.com>
10359
10360         * search.c (note_debug_info_needed): Also emit debugging information
10361         for the types of fields.
10362
10363 Mon Jul 25 00:34:44 1994  Jason Merrill  <jason@deneb.cygnus.com>
10364
10365         * pt.c (lookup_template_class): Pass 'template' to
10366         coerce_template_parms instead of 'in_decl', since it's a more
10367         meaningful context.
10368
10369         * typeck.c (c_expand_return): Make sure any cleanups for the return
10370         expression get run.
10371         (build_c_cast): Use CONVERT_EXPR for conversion to void.
10372
10373         * pt.c (do_type_instantiation): Also instantiate nested types.
10374
10375         * typeck.c (convert_for_assignment): Don't die when comparing
10376         pointers with different levels of indirection.
10377
10378         * decl.c (grokdeclarator): The sub-call to grokdeclarator for
10379         class-local typedefs sets DECL_ARGUMENTS, so we need to clear it
10380         out.
10381
10382         * decl2.c (finish_anon_union): Don't die if the union has no
10383         members.
10384
10385         * decl.c (grokdeclarator): Undo changes to declspecs when we're done
10386         so that 'typedef int foo, bar;' will work.
10387
10388         * decl2.c (finish_file): Don't call expand_aggr_init for
10389         non-aggregates.
10390
10391 Mon Jul 25 00:03:10 1994  Teemu Torma  <tot@trema.fi>
10392
10393         * decl.c (finish_function): We can't inline constructors and
10394         destructors under some conditions with -fpic, but don't unset
10395         DECL_INLINE.
10396
10397 Mon Jul 25 00:03:10 1994  Jason Merrill  <jason@deneb.cygnus.com>
10398
10399         * typeck.c (build_object_ref): Make sure 'datum' is a valid object.
10400
10401 Sun Jul 24 14:19:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
10402
10403         * class.c (finish_struct): Don't set DECL_FIELD_BITPOS on
10404         non-fields.
10405         (finish_struct_methods): Use copy_assignment_arg_p.
10406
10407         * cvt.c (cp_convert): If expr is an OFFSET_REF, resolve it instead
10408         of giving an error.
10409
10410         * typeck.c (build_binary_op_nodefault): Don't set result_type if we
10411         don't know how to compare the operands.
10412
10413         * decl.c (grokdeclarator): Avoid seg fault when someone uses '__op'
10414         as a declarator-id in their program.  Like the Linux headers do.
10415         Arrgh.
10416
10417         * tree.c (lvalue_p): Treat calls to functions returning objects by
10418         value as lvalues again.
10419
10420         * typeck.c (build_component_addr): Use convert_force to convert the
10421         pointer in case the component type is also a private base class.
10422
10423         * search.c (get_matching_virtual): Fix bogus warning of overloaded
10424         virtual.
10425
10426         * pt.c (overload_template_name): Set DECL_ARTIFICIAL on the created
10427         TYPE_DECL to fix bogus shadowing warnings.
10428
10429 Fri Jul 22 01:15:32 1994  Jason Merrill  <jason@deneb.cygnus.com>
10430
10431         * init.c (expand_aggr_init_1): const and volatile mismatches do not
10432         prevent a TARGET_EXPR from initializing an object directly.
10433
10434 Tue Jul 19 17:55:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
10435
10436         * cvt.c (build_up_reference): Allow building up references to
10437         `this', don't warn about making references to artificial variables
10438         (like `this').
10439
10440         * tree.c (lvalue_p): `this' is not an lvalue.
10441
10442         * call.c (build_method_call): Accept using a typedef name (or
10443         template type parameter) for explicit destructor calls.
10444
10445 Thu Jul 14 09:42:23 1994  Mike Stump  <mrs@cygnus.com>
10446
10447         * Version 2.6.0 released.
10448
10449 Wed Jul 13 03:57:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
10450
10451         * method.c (hack_identifier): Put back old code so lists of
10452         non-functions will be handled properly.
10453
10454         * cp-tree.h (TYPE_NEEDS_CONSTRUCTING): #if 0 out; this macro is now
10455         defined in the language-independent tree.h.
10456
10457         * tree.c (count_functions): Avoid bogus warning when compiling this
10458         function.
10459
10460 Mon Jul 11 18:37:20 1994  Jason Merrill  <jason@deneb.cygnus.com>
10461
10462         * decl.c (grok_reference_init): Always save the initializer of a
10463         reference.
10464
10465 Fri Jul  8 17:41:46 1994  Mike Stump  <mrs@cygnus.com>
10466
10467         * decl.c (cplus_expand_expr_stmt): Wrap statement expressions inside
10468         CLEANUP_POINT_EXPRs so that the stack slots can be reused.
10469         (disabled for now)
10470
10471 Fri Jul  8 12:59:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
10472
10473         * method.c (hack_identifier): Fix for new overloading.
10474
10475         * typeck.c (build_binary_op_nodefault): Don't mess with division by
10476         zero.
10477
10478 Fri Jul  8 13:20:28 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
10479
10480         * decl2.c (finish_file): Only call walk_sigtables, if
10481         flag_handle_signatures is turned on, don't waste time otherwise.
10482
10483 Fri Jul  8 02:27:41 1994  Jason Merrill  <jason@deneb.cygnus.com>
10484
10485         * decl.c (push_overloaded_decl): Don't create overloads of one when
10486         shadowing a class type.
10487         * typeck.c (build_x_function_call): Complain about overloads of one.
10488
10489         * decl.c (grokdeclarator): Don't try to treat a char* as a tree.
10490         (grokdeclarator): Fix setting of TREE_STATIC.
10491         (start_decl): Clear DECL_IN_AGGR_P after calling duplicate_decls.
10492
10493 Thu Jul  7 22:20:46 1994  Gerald Baumgartner  <gb@andros.cygnus.com>
10494
10495         * cp-tree.h (walk_sigtables): Created extern declaration.
10496         * decl2.c (walk_sigtables): Created function, patterned after
10497         walk_vtables, even though we only need it to write out sigtables.
10498         (finish_sigtable_vardecl): Created function.
10499         (finish_vtable_vardecl): Changed 0 to NULL_PTR.
10500         (finish_file): Call walk_sigtables.
10501
10502         * sig.c (build_signature_table_constructor): Mark class member
10503         function pointed to from signature table entry as addressable.
10504
10505 Thu Jul  7 13:39:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
10506
10507         * decl.c (start_decl): Check new decl of static member variable
10508         against the declaration in the class here.
10509         (grokvardecl): Instead of here.
10510
10511         * class.c (prepare_fresh_vtable): Call import_export_vtable if not
10512         -fvtable-thunks.
10513         (build_vtable): Likewise.
10514
10515         * decl2.c (import_export_vtable): Move logic for deciding the
10516         interface of a template class from here.
10517         (import_export_template): To here.
10518         (finish_vtable_vardecl): Call import_export_template before
10519         import_export_vtable.
10520
10521 Wed Jul  6 20:25:48 1994  Mike Stump  <mrs@cygnus.com>
10522
10523         * except.c (init_exception_processing): Setup interim_eh_hook to
10524         call lang_interim_eh. 
10525         * except.c (do_unwind): Propagate throw object value across
10526         stack unwinding.
10527         * except.c (saved_throw_value): Used to hold the value of the object
10528         being thrown.  It is always a reference to the real value.
10529         * except.c (expand_start_catch_block): Add handling for the
10530         value of the exception object.
10531         * except.c (expand_start_catch_block): Add handler for the handler,
10532         so that throws inside the handler go to the outer block.
10533         * except.c (expand_end_catch_block): Likewise.
10534         * parse.y (handler_args): Use parm instead, as the other doesn't yet
10535         handle references correctly.
10536
10537 Wed Jul  6 17:55:32 1994  Per Bothner  <bothner@kalessin.cygnus.com>
10538
10539         * decl2.c (mark_vtable_entries):  If -ftable-thunks, set the
10540         vtable entry properly to abort.
10541
10542 Tue Jul  5 14:07:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
10543
10544         * typeck.c (build_binary_op_nodefault): Downgrade division by zero
10545         errors to warnings.
10546
10547         * call.c (build_overload_call_real): Handle fnname being a list of
10548         functions.
10549         * typeck.c (build_x_function_call): Pass list of functions to
10550         build_overload_call, not just the name.
10551         * tree.c (count_functions): Complain when called for invalid
10552         argument.
10553
10554         * decl.c (grokdeclarator): Fix settings of TREE_STATIC, TREE_PUBLIC
10555         and DECL_EXTERNAL on static members and initialized const members.
10556         * decl2.c (grokfield): Reflect this change.
10557
10558 Fri Jul  1 09:35:51 1994  Jason Merrill  <jason@deneb.cygnus.com>
10559
10560         * parse.y (init): ANSI C++ does not forbid { }.
10561
10562 Thu Jun 30 00:35:22 1994  Jason Merrill  <jason@deneb.cygnus.com>
10563
10564         * decl2.c (lang_decode_option): Set warn_nonvdtor along with -Wall.
10565         warn_nonvdtor defaults to off.
10566
10567         * class.c (instantiate_type): Use comptypes rather than relying on 
10568         types to satisfy ==.
10569
10570         * decl.c (start_function): Set DECL_DEFER_OUTPUT on all inlines that
10571         might be static.
10572
10573         * tree.c (build_cplus_new): Never build WITH_CLEANUP_EXPRs.
10574
10575         * decl.c (grok_reference_init): Deal with ADDR_EXPRs of TARGET_EXPRs.
10576
10577         * cvt.c (cp_convert): Pass 0 to with_cleanup_p arg of
10578         build_cplus_new.
10579
10580 Wed Jun 29 22:31:09 1994  Jason Merrill  <jason@deneb.cygnus.com>
10581
10582         * decl2.c (finish_file): Maybe consider static inlines multiple
10583         times, in case they reference each other.
10584
10585 Tue Jun 28 11:58:38 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
10586
10587         * class.c (finish_struct): Don't `cons_up_default_function's
10588         for signatures.
10589         (finish_struct): Handle an empty method_vec correctly.
10590
10591         * decl.c (grokdeclarator): Don't warn about a signature being
10592         empty in a signature pointer declaration if we only saw a
10593         forward declaration of the signature.  Changed `warning's into
10594         `cp_warning's.
10595
10596         * sig.c (build_sigtable): Don't die if a null signature table
10597         constructor is returned.
10598         (build_signature_pointer_constructor): If the signature table
10599         constructor is null, the _sptr field is set to a null pointer
10600         and cast to the appropriate type.  Make copies of all null
10601         pointers so that the type null_pointer_node doesn't get changed.
10602         (build_signature_table_constructor): Added comments.
10603
10604         * sig.c (build_signature_pointer_constructor): Complain if we
10605         try to assign to/initialize a signature pointer/reference of
10606         an undefined signature.
10607
10608 Mon Jun 27 14:05:16 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
10609
10610         * typeck2.c (store_init_value): Don't be pedantic about
10611         non-constant initializers of signature tables/pointers/references.
10612
10613 Fri Jun 24 16:49:41 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
10614
10615         * decl.c (grokdeclarator): If we are grokking an opaque typedef
10616         in a signature, don't complain about it begin static.
10617
10618 Wed Jun 29 16:44:45 1994  Mike Stump  <mrs@cygnus.com>
10619
10620         Fixes a problem of the this pointer being wrong in virtual calls to
10621         methods that are not overridden in more derived classes.
10622
10623         * class.c (fixup_vtable_delta): New routine.  It will fixup the
10624         delta entries in vtables, wheever they need updating.
10625         * class.c (finish_struct): Call the new routine for all virtual
10626         bases, as they can have different offsets, than those used in base
10627         classes that we derive our vtable from.
10628
10629 Tue Jun 28 23:49:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
10630
10631         * typeck.c (build_binary_op): Use the types before default
10632         conversions in the error message.
10633
10634         * *.c: Use c_build_type_variant instead of build_type_variant where
10635         the type might be an array.
10636
10637         * call.c (build_method_call): Call build_type_variant and
10638         build_reference_type in the right order.
10639         * decl.c (record_builtin_type): Likewise.
10640
10641 Wed Jun 29 16:58:53 1994  Jason Merrill  <jason@deneb.cygnus.com>
10642
10643         * call.c (build_method_call): Call build_type_variant and
10644         build_reference_type in the right order.
10645         * decl.c (record_builtin_type): Likewise.
10646
10647 Tue Jun 28 23:49:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
10648
10649         * typeck.c (build_binary_op): Use the types before default
10650         conversions in the error message.
10651
10652         * *.c: Use c_build_type_variant instead of build_type_variant where
10653         the type might be an array.
10654
10655 Sat Jun 25 11:50:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
10656
10657         * cvt.c (convert_to_reference): Try UDC's before doing the
10658         reinterpret_cast thang, though.
10659
10660 Fri Jun 24 01:24:01 1994  Jason Merrill  <jason@deneb.cygnus.com>
10661
10662         * typeck.c (c_expand_return): Don't USE the return value location
10663         after we've expanded the jump.
10664
10665         * decl2.c (finish_file): Make sure DECL_SAVED_INSNS is not 0 before
10666         trying to write out an inline.
10667
10668         * cvt.c (build_up_reference): Also do address adjustment when the
10669         target type uses MI.
10670         (convert_to_reference): Try UDCs only after built-in conversions.
10671         (build_type_conversion_1): Don't play games with the argument to the
10672         method.
10673         (build_type_conversion): #if 0 out code for binding to reference.
10674
10675 Thu Jun 23 00:22:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
10676
10677         * decl2.c (finish_file): Use TREE_SYMBOL_REFERENCED to decide
10678         whether to emit inlines.
10679
10680         * decl.c (grokdeclarator): Set explicit_int for decls that just
10681         specify, say, 'long'.
10682
10683         * init.c (do_friend): Do overload C functions (or call pushdecl,
10684         anyaway).
10685
10686 Wed Jun 22 13:40:49 1994  Jason Merrill  <jason@deneb.cygnus.com>
10687
10688         * cvt.c (build_up_reference): Don't call readonly_error.
10689         (convert_to_reference): Propagate const and volatile from expr to
10690         its type.
10691
10692         * tree.c (lvalue_p): Random CALL_EXPRs are not lvalues.
10693
10694         * cvt.c (build_up_reference): Break out WITH_CLEANUP_EXPR when
10695         creating a temporary.
10696         (convert_to_reference): Lose excessive and incorrect trickiness.
10697         (cp_convert): Call build_cplus_new with with_cleanup_p set.
10698
10699         * typeck2.c (build_functional_cast): Likewise.
10700
10701 Tue Jun 21 17:38:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
10702
10703         * decl.c (grokdeclarator): signed, unsigned, long and short all
10704         imply 'int'.
10705
10706         * decl.c (grokdeclarator): Allow "this is a type" syntax.
10707         (grok_reference_init): Simplify and fix.
10708
10709 Sun Jun 19 17:08:48 1994  Jason Merrill  <jason@deneb.cygnus.com>
10710
10711         * decl.c (grokdeclarator): pedwarn about a typedef that specifies no
10712         type.
10713
10714 Sat Jun 18 04:16:50 1994  Jason Merrill  <jason@deneb.cygnus.com>
10715
10716         * decl.c (start_function): Move TREE_PUBLIC and DECL_EXTERNAL
10717         tinkering to after call to pushdecl.
10718
10719 Fri Jun 17 14:48:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
10720
10721         * call.c (build_method_call): Handle destructors for non-aggregate
10722         types properly.
10723
10724 Thu Jun 16 16:48:05 1994  Jason Merrill  <jason@deneb.cygnus.com>
10725
10726         * call.c (build_method_call): Make sure that the name given for the
10727         destructor matches the constructor_name of the instance.
10728
10729         * pt.c (do_function_instantiation): A non-extern instantiation
10730         overrides a later extern one.
10731         (do_type_instantiation): Likewise.
10732
10733 Wed Jun 15 19:34:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
10734
10735         * init.c (expand_aggr_init): Use TYPE_MAIN_VARIANT to get the
10736         unqualified array type.
10737
10738         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Tests whether NODE is a
10739         CONSTRUCTOR with no elements.
10740
10741         * decl.c (various): Lose empty_init_node.
10742         (finish_decl): Use EMPTY_CONSTRUCTOR_P, do the empty CONSTRUCTOR
10743         thing depending on the value of DECL_COMMON instead of
10744         flag_conserve_space, do the empty CONSTRUCTOR thing for types that
10745         don't have constructors, don't treat a real empty CONSTRUCTOR
10746         specially.
10747
10748         * typeck2.c (process_init_constructor): Don't treat empty_init_node
10749         specially.
10750
10751 Wed Jun 15 19:05:25 1994  Mike Stump  <mrs@cygnus.com>
10752
10753         * class.c (override_one_vtable): Don't forget to merge in an old
10754         overrider when we wanted to reuse a vtable, but couldn't.
10755
10756 Wed Jun 15 15:03:16 1994  Jason Merrill  <jason@deneb.cygnus.com>
10757
10758         * decl.c (start_decl): Put statics in common again.
10759
10760         * decl.c (grokdeclarator): Return NULL_TREE for an error rather than
10761         setting the type to error_mark_node.
10762
10763         * typeck.c (build_modify_expr): Build up a COMPOUND_EXPR for enum
10764         bitfield assignments.
10765
10766 Tue Jun 14 12:23:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
10767
10768         * decl.c (grok_op_properties): Const objects can be passed by value.
10769
10770 Mon Jun 13 03:10:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
10771
10772         * decl2.c (import_export_vtable): Force implicit instantiations to
10773         be interface_only when -fno-implicit-templates.
10774
10775         * decl.c (duplicate_decls): Redeclaring a class template name is an
10776         error.
10777
10778         * pt.c (end_template_decl): Call GNU_xref_decl for class templates.
10779         * xref.c (GNU_xref_decl): Support templates.
10780
10781 Sat Jun 11 17:09:05 1994  Jason Merrill  <jason@deneb.cygnus.com>
10782
10783         * decl.c (grok_op_properties): Split out checking for whether this
10784         function should suppress the default assignment operator.
10785         * decl2.c (grok_function_init): Likewise.
10786         (copy_assignment_arg_p): New function do do just that.
10787         Now considers virtual assignment operators that take a base as an
10788         argument to count as copy assignment operators.
10789
10790         * search.c (dfs_debug_mark): Lose checks for DWARF_DEBUG and
10791         TREE_ASM_WRITTEN, as they are redundant.
10792
10793         * pt.c (end_template_decl): Don't try to set DECL_CLASS_CONTEXT on a
10794         decl that has no LANG_SPECIFIC part.
10795         (do_type_instantiation): Force the debugging information for this
10796         type to be emitted.
10797
10798         * decl.c (start_decl): Clear up uses of various types of templates
10799         (say sorry for static data members, rather than "invalid template"). 
10800         (expand_static_init): Fix initialization of static data members of
10801         template classes.
10802
10803 Fri Jun 10 00:41:19 1994  Jason Merrill  <jason@deneb.cygnus.com>
10804
10805         * decl.c (grokdeclarator): Set DECL_CONTEXT on static data members.
10806
10807         * g++.c (main): Use -xc++-cpp-output for .i files.
10808
10809         * pt.c (tsubst): Give meaningful error about declaring template for
10810         a copy constructor which was not declared in the class template.
10811         (do_type_instantiation): Explicit instantiation before the class
10812         template is an error.
10813         (instantiate_template): Don't die if tsubst returns error_mark_node.
10814
10815 Thu Jun  9 19:04:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
10816
10817         Don't synthesize the copy assignment operator if the one in a base
10818         class is pure virtual.
10819         * cp-tree.h (TYPE_HAS_ABSTRACT_ASSIGN_REF): New macro to indicate
10820         whether the type has a pure virtual copy assignment operator.
10821         * class.c (finish_base_struct): Don't generate the copy assignment
10822         operator if a base class has a pure virtual one.
10823         * decl.c (grok_op_properties): Add disabled code to set
10824         TYPE_HAS_ABSTRACT_ASSIGN_REF with comment pointing to where it is
10825         actually set.
10826         * decl2.c (grok_function_init): Set TYPE_HAS_ABSTRACT_ASSIGN_REF.
10827
10828         * decl2.c (import_export_vtable): Always treat template
10829         instantiations as if write_virtuals >= 2, and treat implicit
10830         instantiations as external if -fno-implicit-templates.
10831         (finish_file): Output all pending inlines if
10832         flag_keep_inline_functions.
10833
10834 Wed Jun  8 20:48:02 1994  Mike Stump  <mrs@cygnus.com>
10835
10836         * tree.c (layout_vbasetypes): Align virtual base classes inside
10837         complete objects, so that we don't core dump on machines such as
10838         SPARCs when we access members that require larger than normal
10839         alignments, such as a double.  Also, we bump up the total alignment
10840         on the complete type, as necessary.
10841
10842 Wed Jun  8 16:18:14 1994  Jason Merrill  <jason@deneb.cygnus.com>
10843
10844         * gxxint.texi (Free Store): New section with code for examining
10845         cookie.
10846         (Limitations of g++): Remove operator delete entry, since it is no
10847         longer accurate.  Fix access control entry.
10848
10849         * typeck.c (build_unary_op): Pedwarn about taking the address of or
10850         incrementing a cast to non-reference type.
10851         (build_modify_expr): Use convert instead of convert_force again.
10852
10853         * search.c (get_base_distance): Use IS_AGGR_TYPE_CODE to check for
10854         class type, not == RECORD_TYPE.
10855
10856         * decl.c (grokdeclarator): Cope with grokfndecl returning NULL_TREE.
10857
10858         * typeck2.c (report_case_error): #if 0 out.
10859         * lex.c (real_yylex): Lose RANGE.
10860         * parse.y: Likewise.
10861
10862 Tue Jun  7 18:17:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
10863
10864         * parse.y (simple_stmt, case ranges): Use ELLIPSIS instead of RANGE.
10865
10866 Mon Jun  6 19:39:57 1994  Jason Merrill  <jason@deneb.cygnus.com>
10867
10868         * typeck.c (build_c_cast): Don't shortcut conversions to the same
10869         type.  Don't replace consts with their values here, since that's now
10870         done in cp_convert.
10871
10872         * cvt.c (cp_convert): When converting to bool, take
10873         integer_zero_node to false_node and all other INTEGER_CSTs to
10874         true_node.
10875         (build_type_conversion): Don't complain about multiple conversions
10876         to float if we're not really converting.
10877
10878 Fri Jun  3 02:10:56 1994  Jason Merrill  <jason@deneb.cygnus.com>
10879
10880         Implement 'extern template class A<int>;' syntax for suppressing
10881         specific implicit instantiations.
10882         * cp-tree.h: Update prototypes for do_*_instantiation.
10883         * pt.c (do_pending_expansions): Don't compile 'extern' explicit
10884         instantiations.
10885         (do_function_instantiation): Set DECL_EXTERNAL on 'extern' explicit
10886         instantiations.
10887         (do_type_instantiation): Likewise.
10888         * parse.y (explicit_instantiation): Support 'extern template class
10889         A<int>;' syntax.
10890         * decl.c (start_function): Don't modify the settings of TREE_PUBLIC
10891         and DECL_EXTERNAL on explicit instantiations.
10892
10893         * cvt.c (cp_convert): Replace constants with their values before
10894         converting.
10895         (cp_convert): Consistently use 'e' instead of 'expr'.
10896
10897 Thu Jun  2 03:53:30 1994  Jason Merrill  <jason@deneb.cygnus.com>
10898
10899         * typeck2.c (build_x_arrow): Resolve OFFSET_REFs first.
10900
10901 Wed Jun  1 18:57:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
10902
10903         * typeck2.c (digest_init): Handle initializing a pmf with an
10904         overloaded method.
10905         * typeck.c (build_ptrmemfunc): Handle overloaded methods.
10906
10907         * decl.c (pushtag): Use build_decl to make TYPE_DECLs.
10908         (xref_defn_tag): Likewise.
10909         * pt.c (process_template_parm): Likewise.
10910         (lookup_template_class): Likewise.
10911         (push_template_decls): Likewise.
10912         (instantiate_class_template): Likewise.
10913         (create_nested_upt): Likewise.
10914         * class.c (finish_struct): Don't try to set DECL_CLASS_CONTEXT on
10915         TYPE_DECLs.
10916
10917         * typeck.c (convert_arguments): Make sure type is not NULL before
10918         checking its TREE_CODE.
10919
10920 Wed Jun  1 17:40:39 1994  Mike Stump  <mrs@cygnus.com>
10921
10922         * class.c (get_derived_offset): New routine.
10923         * class.c (finish_base_struct): Make sure we set BINFO_VTABLE and
10924         BINFO_VIRTUALS when we choose a new base class to inherit from.
10925         * class.c (modify_one_vtable): Use get_derived_offset to get the
10926         offset to the most base class subobject that we derived this binfo
10927         from.
10928         * class.c (finish_struct): Move code to calculate the
10929         DECL_FIELD_BITPOS of the vfield up, as we need might need it for
10930         new calls to get_derived_offset in modify_one_vtable.
10931
10932 Wed Jun  1 16:50:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
10933
10934         * init.c (build_member_call): Use build_pointer_type instead of
10935         TYPE_POINTER_TO.
10936
10937 Wed Jun  1 11:11:15 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
10938
10939         * decl.c (grokdeclarator): Make sure we have a DNAME set before we
10940         try to use it in an error.
10941
10942 Wed Jun  1 09:48:49 1994  Mike Stump  <mrs@cygnus.com>
10943
10944         * typeck.c (convert_arguments, convert_for_initialization): Don't
10945         strip NOP_EXPRs, when we are converting to a reference.
10946
10947 Wed Jun  1 01:11:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
10948
10949         * typeck.c (build_modify_expr): Don't dereference references when
10950         initializing them.
10951
10952         * decl2.c (grokfield): Don't check for grokdeclarator returning
10953         error_mark_node any more.
10954
10955         * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
10956         (start_method): Return void_type_node instead of error_mark_node.
10957
10958         * typeck.c (build_modify_expr): Resolve offset refs earlier.
10959
10960 Tue May 31 16:06:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
10961
10962         * call.c (build_method_call): Resolve OFFSET_REFs in the object.
10963
10964         * typeck.c (build_modify_expr): Dereference references before trying
10965         to assign to them.
10966
10967         * call.c (build_method_call): Don't confuse type conversion
10968         operators with constructors.
10969         * typeck2.c (build_functional_cast): Just call build_c_cast if there
10970         was only one parameter.
10971         * method.c (build_typename_overload): Don't set
10972         IDENTIFIER_GLOBAL_VALUE on these identifiers.
10973         * decl.c (grok_op_properties): Warn about defining a type conversion
10974         operator that converts to a base class (or reference to it).
10975         * cvt.c (cp_convert): Don't try to use a type conversion operator
10976         when converting to a base class.
10977         (build_type_conversion_1): Don't call constructor_name_full on an
10978         identifier.
10979         * cp-tree.h (DERIVED_FROM_P): Should be self-explanatory.
10980
10981         * decl.c (start_decl): Don't complain that error_mark_node is an
10982         incomplete type.
10983         (finish_decl): Check for type == error_mark_node.
10984
10985 Mon May 30 23:38:55 1994  Jason Merrill  <jason@deneb.cygnus.com>
10986
10987         * decl.c (start_function): Set DECL_DEFER_OUTPUT on implicit
10988         instantiations and inline members.
10989
10990         * spew.c (yylex): Set looking_for_template if the next token is a '<'.
10991
10992         * lex.h: Declare looking_for_template.
10993
10994         * decl.c (lookup_name_real): Use looking_for_template to arbitrate
10995         between type and template interpretations of an identifier.
10996
10997 Sat May 28 04:07:40 1994  Jason Merrill  <jason@deneb.cygnus.com>
10998
10999         * pt.c (instantiate_template): Zero out p if we found a
11000         specialization.
11001
11002         * decl.c (grokdeclarator): Elucidate warning.
11003         (grokdeclarator): If pedantic AND -ansi, complain about long long.
11004
11005         Make explicit instantiation work reasonably.  It is now appropriate
11006         to deprecate the use of -fexternal-templates.
11007         * pt.c (instantiate_template): Set DECL_TEMPLATE_SPECIALIZATION or
11008         DECL_IMPLICIT_INSTANTIATION on fndecl as appropriate.
11009         (end_template_instantiation): Reflect changes in USE_TEMPLATE
11010         semantics.
11011         (do_pending_expansions): if (!flag_implicit_templates) DECIDE(0);
11012         (do_function_instantiation): Don't set EXPLICIT_INST if
11013         flag_external_templates is set.  Do set TREE_PUBLIC and DECL_EXTERN
11014         appropriately otherwise.
11015         (do_type_instantiation): Set interface info for class.  Set
11016         TREE_PUBLIC and DECL_EXTERN for methods.  Do none of this if
11017         flag_external_templates is set.
11018         * parse.y: Reflect changes in USE_TEMPLATE semantics.
11019         * decl2.c: New flag flag_implicit_templates determines whether or
11020         not implicit instantiations get emitted.  This flag currently
11021         defaults to true, and must be true for -fexternal-templates to work.
11022         (finish_file): Consider flag_implement_inlines when
11023         setting DECL_EXTERNAL.  Consider flag_implicit_templates when
11024         deciding whether or not to emit a static copy.
11025         * decl.c (start_function): Set TREE_PUBLIC and DECL_EXTERNAL
11026         properly for template instantiations.
11027         (start_method): Set DECL_IMPLICIT_INSTANTIATION on methods of a
11028         template class.
11029         * cp-tree.h (CLASSTYPE_USE_TEMPLATE): Change semantics.
11030         (DECL_USE_TEMPLATE): Parallel macro for FUNCTION and VAR_DECLs.
11031         (various others): Accessor macros for the above.
11032
11033 Fri May 27 13:57:40 1994  Jason Merrill  <jason@deneb.cygnus.com>
11034
11035         * typeck.c (build_binary_op_nodefault): Division by constant zero is
11036         an error.
11037
11038 Fri May 27 13:50:15 1994  Mike Stump  <mrs@cygnus.com>
11039
11040         * class.c (override_one_vtable): Don't modify things we don't own.
11041
11042 Fri May 27 01:42:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
11043
11044         * decl.c (finish_decl): Don't postpone processing the initializer of
11045         a decl with DECL_EXTERNAL set, and do call rest_of_compilation for a
11046         PUBLIC const at toplevel.
11047         (grokdeclarator): pedwarn about initializing non-const or
11048         non-integral statics in the class body.
11049
11050         * decl.c (pushtag): Don't try to set DECL_CLASS_CONTEXT on a
11051         TYPE_DECL.
11052
11053         * call.c (convert_harshness): Dereference reference on rhs before
11054         proceeding, properly grok passing const things to non-const
11055         references.
11056
11057         * typeck.c (build_unary_op): Soften error about taking the address
11058         of main() to a pedwarn.
11059
11060         * lex.c (default_copy_constructor_body): Unambiguously specify base
11061         classes (i.e. A((const class ::A&)_ctor_arg) ).
11062         (default_assign_ref_body): Likewise.
11063
11064 Thu May 26 13:13:55 1994  Gerald Baumgartner  <gb@mexican.cygnus.com>
11065
11066         * decl2.c (grokfield): Don't complain about local signature
11067         method declaration without definition.
11068
11069         * call.c (convert_harshness): If `type' is a signature pointer
11070         and `parmtype' is a pointer to a signature, just return 0.  We
11071         don't really convert in this case; it's a result of making the
11072         `this' parameter of a signature method a signature pointer.
11073
11074         * call.c (build_method_call): Distinguish calling the default copy
11075         constructor of a signature pointer/reference from a signature
11076         member function call.
11077
11078 Thu May 26 12:56:25 1994  Jason Merrill  <jason@deneb.cygnus.com>
11079
11080         * decl2.c (grokfield): Don't set TREE_PUBLIC on member function
11081         declarations.
11082
11083         * decl.c (duplicate_decls): A previous function declaration as
11084         static overrides a subsequent non-static definition.
11085         (grokdeclarator): Don't set TREE_PUBLIC on inline method
11086         declarations.
11087
11088 Wed May 25 14:36:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
11089
11090         * decl.c (grokdeclarator): Handle initialization of static const
11091         members.
11092         (finish_decl): Likewise.
11093
11094         * decl2.c (grokfield): Allow initialization of static const members
11095         even when pedantic.
11096
11097         * decl2.c (grokfield): Deal with grokdeclarator returning
11098         error_mark_node.
11099
11100         * decl.c (grok_ctor_properties): Return 0 for A(A) constructor.
11101         (grokfndecl): Check the return value of grok_ctor_properties.
11102         (start_method): Likewise.
11103
11104         * parse.y (absdcl): Expand type_quals inline.
11105
11106 Tue May 24 19:10:32 1994  Jason Merrill  <jason@deneb.cygnus.com>
11107
11108         * decl.c (pushtag): Use IS_AGGR_TYPE rather than checking for a
11109         RECORD_TYPE.
11110
11111 Tue May 24 18:09:16 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11112
11113         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
11114         always use "__vt_%s".
11115         * decl2.c (finish_vtable_vardecl):  Don't consider abstract virtuals
11116         when looking for a "sentinal" method (to decide on emitting vtables).
11117         * decl2.c (finish_file):  Scan all decls for thunks that need
11118         to be emitted.
11119         * decl2.c (finish_vtable_vardecl):  Don't bother calling emit_thunk.
11120         * method.c (make_thunk):  Use a more meaningful label.  If there
11121         exists a matching top-level THUNK_DECL re-use it;  otherwise
11122         create a new THUNK_DECL (and declare it).
11123         * method.c (emit_thunk):  Make thunk external/public depending
11124         on the underlying method.
11125
11126 Tue May 24 00:22:04 1994  Jason Merrill  <jason@deneb.cygnus.com>
11127
11128         * pt.c (tsubst): Use lookup_name_nonclass to find guiding decls, not
11129         lookup_name.
11130
11131         * call.c (build_overload_call_real): Don't immediately pick a
11132         function which matches perfectly.
11133
11134         * decl.c (grokdeclarator): Use c_build_type_variant for arrays.
11135         (grokdeclarator): Warn about, and throw away, cv-quals attached to a
11136         reference (like 'int &const j').
11137
11138         * typeck.c (convert_arguments): Don't mess with i for methods.
11139         * call.c (build_method_call): Pass the function decl to
11140         convert_arguments.
11141
11142         * typeck.c (comp_ptr_ttypes_real): New function.  Implements the
11143         checking for which multi-level pointer conversions are allowed.
11144         (comp_target_types): Call it.
11145         (convert_for_assignment): Check const parity on the ultimate target
11146         type, too.  And make those warnings pedwarns.
11147
11148 Mon May 23 14:11:24 1994  Jason Merrill  <jason@deneb.cygnus.com>
11149
11150         * error.c (dump_char): Use TARGET_* for character constants.
11151
11152 Mon May 23 13:03:03 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
11153
11154         * tree.c (debug_no_list_hash): Make static.
11155
11156         * decl.c (decls_match): Say the types don't match if newdecl ends up
11157         with a null type, after we've checked if olddecl does.
11158         (pushdecl): Check if the decls themselves match before looking for
11159         an extern redeclared as static, to avoid inappropriate and incorrect
11160         warnings.
11161
11162 Fri May 20 14:04:34 1994  Jason Merrill  <jason@deneb.cygnus.com>
11163
11164         * decl.c (grokdeclarator): Make warning about duplicate short, etc.
11165         a pedwarn.
11166
11167         * typeck.c (build_c_cast): Casting to function or method type is an
11168         error.
11169
11170         * class.c (finish_struct): Make warning for anonymous class with no
11171         instances a pedwarn.
11172
11173         * Makefile.in (stamp-parse): Expect a s/r conflict.
11174
11175         * typeck.c (build_modify_expr): pedwarn about using a non-lvalue
11176         cast as an lvalue.
11177
11178 Thu May 19 12:08:48 1994  Jason Merrill  <jason@deneb.cygnus.com>
11179
11180         * cvt.c (type_promotes_to): Make sure bool promotes to int rather
11181         than unsigned on platforms where sizeof(char)==sizeof(int).
11182
11183 Wed May 18 14:27:06 1994  Jason Merrill  <jason@deneb.cygnus.com>
11184
11185         * typeck.c (build_c_cast): Tack on a NOP_EXPR when casting to
11186         another variant.
11187         (build_modify_expr): Don't strip NOP_EXPRs, and don't get tricky
11188         and treat them as lvalues.
11189
11190         * decl.c (shadow_tag): Do complain about forward declarations of
11191         enums and empty declarations.
11192         * parse.y: Don't complain about forward declarations of enums and
11193         empty declarations.
11194
11195         * typeck.c (convert_for_assignment): Complain about changing
11196         the signedness of a pointer's target type.
11197
11198         * parse.y (stmt): Move duplicated code for checking case values from
11199         here.
11200         * decl2.c (check_cp_case_value): To here.  And add a call to
11201         constant_expression_warning.
11202
11203         * typeck.c (convert_for_assignment): Don't complain about assigning
11204         a negative value to bool.
11205
11206         * decl.c (init_decl_processing): Make bool unsigned.
11207
11208         * class.c (finish_struct): Allow bool bitfields.
11209
11210 Wed May 18 12:35:27 1994  Ian Lance Taylor  <ian@tweedledumb.cygnus.com>
11211
11212         * Make-lang.in (c++.install-man): Get g++.1 from $(srcdir)/cp.
11213
11214 Wed May 18 03:28:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
11215
11216         * cvt.c (build_type_conversion): Lose special handling of
11217         truthvalues.
11218
11219         * search.c (dfs_pushdecls): Improve shadowing warning.
11220
11221 Tue May 17 13:34:46 1994  Jason Merrill  <jason@deneb.cygnus.com>
11222
11223         * init.c (build_delete): Throw away const and volatile on `this'.
11224
11225         * decl.c (finish_enum): Put the constants in TYPE_VALUES again,
11226         rather than the enumerators.
11227         (pushtag): s/cdecl/c_decl/g
11228
11229 Mon May 16 23:04:01 1994  Stephen R. van den Berg  <berg@pool.informatik.rwth-aachen.de>
11230
11231         * cp/typeck.c (common_type): Attribute merging.
11232         (comp_types): Utilise COMP_TYPE_ATTRIBUTES macro.
11233
11234         * cp/parse.y: Revamp attribute parsing.
11235
11236 Mon May 16 01:40:34 1994  Jason Merrill  <jason@deneb.cygnus.com>
11237
11238         * decl.c (shadow_tag): Also check for inappropriate use of auto and
11239         register.
11240
11241         * method.c (build_overload_name): Clarify that the illegal case is a
11242         pointer or reference to array of unknown bound.
11243
11244         * error.c (dump_type_prefix): Print references to arrays properly.
11245
11246         * typeck.c (various): Be more helpful in pointer
11247         comparison diagnostics.
11248
11249         * tree.c (lvalue_p): MODIFY_EXPRs are lvalues again.  Isn't this
11250         fun?
11251
11252         * parse.y: Also catch an error after valid stmts.
11253
11254         * search.c (dfs_init_vbase_pointers): Don't abort because `this' is
11255         const.
11256
11257         * typeck.c (convert_for_initialization): If call to
11258         convert_to_reference generated a diagnostic, print out the parm
11259         number and function decl if any.
11260
11261         * errfn.c (cp_thing): Check atarg1 to determine whether or not we're
11262         specifying a line, not atarg.
11263
11264         * tree.c (build_cplus_method_type): Always make `this' const.
11265
11266         * decl2.c (grokclassfn): If -fthis-is-variable and this function is
11267         a constructor or destructor, make `this' non-const.
11268
11269         * typeck.c (build_modify_expr): Don't warn specially about
11270         assignment to `this' here anymore, since it will be caught by the
11271         usual machinery.
11272
11273         * various: Disallow specific GNU extensions (variable-size arrays,
11274         etc.) when flag_ansi is set, not necessarily when pedantic is set,
11275         so that people can compile with -pedantic-errors for tighter const
11276         checking and such without losing desirable extensions.
11277
11278         * typeck2.c (build_functional_cast): Call build_method_call with
11279         LOOKUP_PROTECT.
11280         (process_init_constructor): Only process FIELD_DECLs.
11281
11282         * decl.c (finish_decl): Also force static consts with no explicit
11283         initializer that need constructing into the data segment.
11284
11285         * init.c (build_delete): Undo last patch, as it interferes with
11286         automatic cleanups.
11287
11288 Sat May 14 01:59:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
11289
11290         * call.c, class.h, cp-tree.h, cvt.c, decl2.c: Lose old overloading
11291         code.
11292
11293         * init.c (build_delete): pedwarn about using plain delete to delete
11294         an array.
11295
11296 Fri May 13 16:45:07 1994  Jason Merrill  <jason@deneb.cygnus.com>
11297
11298         * typeck.c (comp_target_types): Be more helpful in contravariance
11299         warnings, and make them pedwarns.
11300
11301         * decl.c (grokdeclarator): Use decl_context to decide whether or not
11302         this is an access declaration.
11303
11304         * class.c (finish_struct_bits): Set TYPE_HAS_INT_CONVERSION if it
11305         has a conversion to enum or bool, too.
11306
11307 Fri May 13 16:31:27 1994  Mike Stump  <mrs@cygnus.com>
11308
11309         * method.c (emit_thunk):  Make declaration for
11310         current_call_is_indirect local (needed for hppa).
11311
11312 Fri May 13 16:16:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
11313
11314         * pt.c (uses_template_parms): Grok BOOLEAN_TYPE.
11315         (tsubst): Likewise.
11316
11317 Fri May 13 16:23:32 1994  Mike Stump  <mrs@cygnus.com>
11318
11319         * pt.c (tsubst): If there is already a function for this expansion,
11320         use it.
11321         * pt.c (instantiate_template): Likewise.
11322
11323 Fri May 13 10:30:42 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
11324
11325         * parse.y (implicitly_scoped_stmt, simple_stmt case): Use
11326         kept_level_p for MARK_ENDS argument to expand_end_bindings, to avoid
11327         generating debug info for unemitted symbols on some systems.
11328
11329         * cp-tree.h (build_static_cast, build_reinterpret_cast,
11330         build_const_cast): Add declarations.
11331
11332 Fri May 13 09:50:31 1994  Mike Stump  <mrs@cygnus.com>
11333
11334         * search.c (expand_indirect_vtbls_init): Fix breakage from Apr 27
11335         fix.  We now try get_binfo, and if that doesn't find what we want,
11336         we go back to the old method, which still sometimes fails.
11337
11338 Fri May 13 01:43:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
11339
11340         * parse.y (initdcl): Call cplus_decl_attributes on the right
11341         variable.
11342         * decl2.c (cplus_decl_attributes): Don't call decl_attributes for
11343         void_type_node.
11344
11345         * typeck.c (build_binary_op_nodefault): Change result_type for
11346         comparison ops to bool.
11347         (build_binary_op): Convert args of && and || to bool.
11348         * cvt.c (build_default_binary_type_conversion): Convert args of &&
11349         and || to bool.
11350         (build_default_unary_type_conversion): Convert arg of ! to bool.
11351         (type_promotes_to): bool promotes to int.
11352
11353 Fri May 13 01:43:18 1994  Mike Stump  <mrs@cygnus.com>
11354
11355         Implement the new builtin `bool' type.
11356         * typeck.c (build_binary_op_nodefault): Convert args of && and || to
11357         bool.
11358         (build_unary_op): Convert arg of ! to bool.
11359         * parse.y: Know true and false.  Use bool_truthvalue_conversion.
11360         * method.c (build_overload_value): Know bool.
11361         (build_overload_name): Likewise.
11362         * lex.c (init_lex): Set up RID_BOOL.
11363         * gxx.gperf: Add bool, true, false.
11364         * error.c (*): Know bool.
11365         * decl.c (init_decl_processing): Set up bool, true, false.
11366         * cvt.c (cp_convert): Handle conversion to bool.
11367         (build_type_conversion): Likewise.
11368         * *.c: Accept bool where integers and enums are accepted (use
11369         INTEGRAL_CODE_P macro).
11370
11371 Thu May 12 19:13:54 1994  Richard Earnshaw  <rwe11@cl.cam.ac.uk>
11372
11373         * g++.c: Use #ifdef for __MSDOS__, not #if.
11374
11375 Thu May 12 18:05:18 1994  Mike Stump  <mrs@cygnus.com>
11376
11377         * decl2.c (lang_f_options): Handle -fshort-temps.  -fshort-temps
11378         gives old behavior , and destroys temporaries earlier.  Default
11379         behavior now conforms to the ANSI working paper.
11380
11381 Thu May 12 14:45:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
11382
11383         * typeck.c (build_modify_expr): Understand MODIFY_EXPR as an lvalue.
11384         Use convert_force to convert the result of a recursive call when we
11385         are dealing with a NOP_EXPR.  Don't automatically wrap MODIFY_EXPRs
11386         in COMPOUND_EXPRs any more.
11387         (various): Lose pedantic_lvalue_warning.
11388         (unary_complex_lvalue): Understand MODIFY_EXPR.
11389
11390         * cvt.c (convert_to_reference): Allow DECL to be error_mark_node if
11391         we don't know what we're initializing.
11392
11393 Wed May 11 01:59:36 1994  Jason Merrill  <jason@deneb.cygnus.com>
11394
11395         * cvt.c (convert_to_reference): Modify to use convtype parameter.
11396         Only create temporaries when initializing a reference, not when
11397         casting.
11398         (cp_convert): New main function.
11399         (convert): Call cp_convert.
11400         * cvt.c, decl.c, typeck.c: Fix calls to convert_to_reference.
11401         * cp-tree.h (CONV_*): New constants used by conversion code for
11402         selecting conversions to perform.
11403
11404         * tree.c (lvalue_p): MODIFY_EXPRs are no longer lvalues.
11405
11406         * typeck.c (build_{static,reinterpret,const_cast): Stubs that just
11407         call build_c_cast.
11408         * parse.y: Add {static,reinterpret,const}_cast.
11409         * gxx.gperf: Likewise.
11410
11411         * typeck.c (common_type): Allow methods with basetypes of different
11412         UPTs.
11413         (comptypes): Deal with UPTs.
11414         (build_modify_expr): Wrap all MODIFY_EXPRs in a COMPOUND_EXPR.
11415
11416         * pt.c (end_template_decl): Check for multiple definitions of member
11417         templates.
11418
11419         * call.c (build_method_call): Complain about calling an abstract
11420         virtual from a constructor.
11421
11422         * typeck.c (pointer_int_sum): Check for the integer operand being 0
11423         after checking the validity of the pointer operand.
11424
11425         * typeck2.c (digest_init): Pedwarn about string initializer being
11426         too long.
11427
11428 Tue May 10 12:10:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
11429
11430         * decl.c (push_overloaded_decl): Only throw away a builtin if the
11431         decl in question is the artificial one.
11432
11433         * parse.y (simple_stmt, switch): Use implicitly_scoped_stmt because
11434         expand_{start,end}_case cannot happen in the middle of a block.
11435
11436         * cvt.c (build_type_conversion_1): Use convert again.
11437
11438 Tue May 10 11:52:04 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
11439
11440         * typeck2.c (digest_init): Make sure we check for signed and
11441         unsigned chars as well when warning about string initializers.
11442
11443         * init.c (emit_base_init): Check if there's a DECL_NAME on the
11444         member before trying to do an initialization for it.
11445
11446 Tue May 10 11:34:37 1994  Mike Stump  <mrs@cygnus.com>
11447
11448         * except.c: Don't do anything useful when cross compiling.
11449
11450 Tue May 10 03:04:13 1994  Jason Merrill  <jason@deneb.cygnus.com>
11451
11452         * decl.c (duplicate_decls): Fix up handling of builtins yet again.
11453         (push_overloaded_decl): Likewise.
11454
11455         * cvt.c (convert): Don't look for void type conversion.
11456
11457 Mon May  9 18:05:41 1994  Jason Merrill  <jason@deneb.cygnus.com>
11458
11459         * init.c (do_friend): Only do a pushdecl for friends, not
11460         pushdecl_top_level.
11461
11462 Mon May  9 13:36:34 1994  Jim Wilson  <wilson@sphagnum.cygnus.com>
11463
11464         * decl.c (lookup_name_current_level): Put empty statement after
11465         the label OUT to make the code valid C.
11466
11467 Mon May  9 12:20:57 1994  Jason Merrill  <jason@deneb.cygnus.com>
11468
11469         * typeck.c (build_binary_op_nodefault): Only complain about
11470         comparing void * and a function pointer if void * is smaller.
11471
11472 Sun May  8 01:29:13 1994  Jason Merrill  <jason@deneb.cygnus.com>
11473
11474         * decl.c (lookup_name_current_level): Move through temporary binding
11475         levels.
11476
11477         * parse.y (already_scoped_stmt): Revive.
11478         (simple_stmt): Use it again.
11479
11480         * decl.c (poplevel): Always call poplevel recursively if we're
11481         dealing with a temporary binding level.
11482
11483 Sat May  7 10:52:28 1994  Mike Stump  <mrs@cygnus.com>
11484
11485         * decl.c (finish_decl): Make sure we run cleanups for initial values
11486         of decls.  Cures memory leak.
11487         * decl.c (expand_static_init): Likewise for static variables.
11488         * decl2.c (finish_file): Likewise for globals.
11489
11490 Sat May  7 03:57:44 1994  Jason Merrill  <jason@deneb.cygnus.com>
11491
11492         * typeck.c (commonparms): Don't complain about redefining default
11493         args.
11494
11495         * decl.c (duplicate_decls): Don't complain twice about conflicting
11496         function decls.
11497         (decls_match): Don't look at default args.
11498         (redeclaration_error_message): Complain about redefining default
11499         args.
11500
11501         * call.c (build_overload_call_real): Also deal with guiding
11502         declarations coming BEFORE the template decl.
11503
11504         * pt.c (unify): Allow different parms to have different
11505         cv-qualifiers.
11506         (unify): Allow trivial conversions on non-template parms.
11507
11508 Fri May  6 03:53:23 1994  Jason Merrill  <jason@deneb.cygnus.com>
11509
11510         * pt.c (tsubst): Support OFFSET_TYPEs.
11511         (unify): Likewise.
11512
11513         * decl2.c (finish_decl_parsing): Call push_nested_class with a type.
11514
11515         * init.c (build_offset_ref): Fix error message.
11516         * search.c (lookup_field): Likewise.
11517
11518         * call.c (build_scoped_method_call): Pass binfo to
11519         build_method_call.
11520         * typeck.c (build_object_ref): Likewise.
11521
11522         * typeck2.c (binfo_or_else): Don't return a _TYPE.
11523
11524         * class.c (finish_struct): Don't complain about re-use of inherited
11525         names or shadowing of type decls.
11526         * decl.c (pushdecl_class_level): Likewise.
11527
11528         * decl.c (finish_enum): Set the type of all the enums.
11529
11530         * class.c (finish_struct): Don't get confused by access decls.
11531
11532         * cp-tree.h (TYPE_MAIN_DECL): New macro to get the _DECL for a
11533         _TYPE.  You can stop using TYPE_NAME for that now.
11534
11535         * parse.y: Lose doing_explicit (check $0 instead).
11536         * gxx.gperf: 'template' now has a RID.
11537         * lex.h (rid): Likewise.
11538         * lex.c (init_lex): Set up the RID for 'template'.
11539
11540         * parse.y (type_specifier_seq): typed_typespecs or
11541         nonempty_type_quals.  Use it.
11542         (handler_args): Fix bogus syntax.
11543         (raise_identifier{,s}, optional_identifier): Lose.
11544         * except.c (expand_start_catch_block): Use grokdeclarator to parse
11545         the catch variable.
11546         (init_exception_processing): The second argument to
11547         __throw_type_match is ptr_type_node.
11548
11549         Fri May  6 07:18:54 1994  Chip Salzenberg  <chip@fin.uucp>
11550
11551         [ change propagated from c-decl.c of snapshot 940429 ]
11552         * cp/decl.c (finish_decl): Setting asmspec_tree should not
11553         zero out the old RTL.
11554
11555 Fri May  6 01:25:38 1994  Mike Stump  <mrs@cygnus.com>
11556
11557         Add alpha exception handling support to the compiler.
11558         Quick and dirty backend in except.c.
11559
11560         * cp/*:  Remove most remnants of old exception handling support.
11561         * decl.c (finish_function): Call expand_exception_blocks to put
11562         the exception hanlding blocks at the end of the function.
11563         * dec.c (hack_incomplete_structures): Make sure expand_decl_cleanup
11564         comes after expand_decl_init.
11565         * except.c: Reimplementation.
11566         * expr.c (cplus_expand_expr): Handle THROW_EXPRs.
11567         * lex.c (init_lex): Always have catch, try and throw be reserved
11568         words, so that we may always parse exception handling.
11569         * parse.y: Cleanup to support new interface into exception handling.
11570         * tree.def (THROW_EXPR): Add.
11571
11572 Thu May  5 17:35:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
11573
11574         * parse.y (simple_stmt, for loops): Use implicitly_scoped_stmt.
11575         (various): Lose .kindof_pushlevel and partially_scoped_stmt.
11576
11577 Thu May  5 16:17:27 1994  Kung Hsu  <kung@mexican.cygnus.com>
11578
11579         * parse.y (already_scoped_stmt): move expand_end_binding() to
11580         fix the unmatched LBB/LBE in stabs.
11581
11582 Thu May  5 14:36:17 1994  Jason Merrill  <jason@deneb.cygnus.com>
11583
11584         * decl.c (set_nested_typename): Set TREE_MANGLED on the new
11585         identifiers.
11586         (pushdecl): Check TREE_MANGLED.
11587         (xref_tag): Likewise.
11588         * cp-tree.h (TREE_MANGLED): This identifier is a
11589         DECL_NESTED_TYPENAME (named to allow for future use to denote
11590         mangled function names as well).
11591
11592         Implement inconsistency checking specified in [class.scope0].
11593         * decl.c (lookup_name_real): Don't set ICV here after all.
11594         (finish_enum): Also set the type of the enumerators themselves.
11595         (build_enumerator): Put the CONST_DECL in the list instead of its
11596         initial value.
11597         (pushdecl_class_level): Check inconsistent use of a name in the
11598         class body.
11599         * class.c (finish_struct): Check inconsistent use of a name in the
11600         class body.  Don't set DECL_CONTEXT on types here anymore.
11601         * parse.y (qualified_type_name): Note that the identifier has now
11602         been used (as a type) in the class body.
11603         * lex.c (do_identifier): Note that the identifier has now been used
11604         (as a constant) in the class body.
11605         * error.c (dump_decl): Print type and enum decls better.
11606
11607 Thu May  5 09:35:35 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
11608
11609         * typeck.c (build_modify_expr): Warn about assignment to `this'.
11610
11611 Wed May  4 15:55:49 1994  Jason Merrill  <jason@deneb.cygnus.com>
11612
11613         * init.c (build_delete): Use the global operator delete when
11614         requested.
11615
11616         * decl.c (lookup_name_real): If we find the type we're looking in a
11617         base class while defining a class, set IDENTIFIER_CLASS_VALUE for
11618         the type.
11619
11620         * class.c (finish_struct): Remove a couple of dependencies on
11621         language linkage.
11622
11623         * decl.c (pushtag): Classes do nest in extern "C" blocks.
11624         (pushdecl): Only set DECL_NESTED_TYPENAME on the canonical one for
11625         the type.
11626         (pushtag): Remove another dependency on the language linkage.
11627
11628         * lex.c (cons_up_default_function): Don't set DECL_CLASS_CONTEXT to
11629         a const-qualified type.
11630
11631         * decl.c (push_overloaded_decl): Throw away built-in decls here.
11632         (duplicate_decls): Instead of here.
11633
11634 Wed May  4 15:27:40 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11635
11636         * typeck.c (get_member_function_from_ptrfunc):  Do The Right
11637         Thing (I hope) if we're using thunks.
11638
11639 Wed May  4 13:52:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
11640
11641         * parse.y (specialization): aggr template_type_name ';'.
11642         (named_class_head_sans_basetype): Use it.
11643         (explicit_instantiation): Likewise.
11644         (tmpl.2): Revert.
11645
11646         * cvt.c (build_type_conversion_1): Use convert_for_initialization,
11647         rather than convert, to do conversions after the UDC.
11648
11649         * cp-tree.h (SHARED_MEMBER_P): This member is shared between all
11650         instances of the class.
11651
11652         * search.c (lookup_field): If the entity found by two routes is the
11653         same, it's not ambiguous.
11654
11655 Wed May  4 12:10:00 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11656
11657         * decl.c (lookup_name_real):  Check for a NULL TREE_VALUE,
11658         to prevent the compiler from crashing ...
11659
11660 Wed May  4 11:19:45 1994  Jason Merrill  <jason@deneb.cygnus.com>
11661
11662         * call.c (build_method_call): If we don't have an object, check
11663         basetype_path to figure out where to look up the function.
11664
11665         * typeck.c (convert_for_initialization): Pass TYPE_BINFO (type) to
11666         build_method_call in case exp is NULL_TREE.
11667
11668 Tue May  3 16:02:53 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11669
11670         Give a vtable entries a unique named type, for the sake of gdb.
11671         * class.c (build_vtable_entry):  The addres of a thunk now has
11672         type vtable_entry_type, not ptr_type_node.
11673         * method.c (make_thunk):  Fix type of THUNK_DECL.
11674         * class.c (add_virtual_function, override_one_vtable):  Use
11675         vfunc_ptr_type_node, instead of ptr_type_node.
11676         * cp-tree.h (vfunc_ptr_type_node):  New macro.
11677         * decl.c (init_decl_processing):  Make vtable_entry_type
11678         be a unique type of pointer to a unique function type.
11679
11680 Tue May  3 09:20:44 1994  Jason Merrill  <jason@deneb.cygnus.com>
11681
11682         * parse.y (do_explicit): Sets doing_explicit to 1.
11683         (explicit_instantiation): Use do_explicit rather than TEMPLATE
11684         directly, add "do_explicit error" rule.
11685         (datadef): Set doing_explicit to 0 after an explicit instantiation.
11686         (tmpl.2): Don't instantiate if we see a ';' unless we're doing an
11687         explicit instantiation.
11688         (named_class_head_sans_basetype): Remove aggr template_type_name
11689         ';' again.
11690
11691 Mon May  2 23:17:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
11692
11693         * search.c (lookup_nested_tag): Lose.
11694
11695         * decl2.c (grokfield): Set DECL_CONTEXT on TYPE_DECLs.
11696         (lookup_name_nonclass): Lose.
11697
11698         * decl.c (poplevel_class): Add force parameter.
11699         (lookup_name_real): Fix handling of explicit scoping which specifies
11700         a class currently being defined.  Add 'nonclass' argument.
11701         (lookup_name, lookup_name_nonclass): Shells for lookup_name_real.
11702
11703         * class.c (finish_struct): Don't unset IDENTIFIER_CLASS_VALUEs here.
11704         (popclass): Force clearing of IDENTIFIER_CLASS_VALUEs if we're being
11705         called from finish_struct.
11706
11707 Mon May  2 19:06:21 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11708
11709         * decl.c (init_decl_processing), cp-tree.h:  Removed memptr_type.
11710         (It seeems redundant, given build_ptrmemfunc_type.)
11711         * typeck.c (get_member_function_from_ptrfunc), gc.c (build_headof,
11712         build_classof):  Use vtable_entry_type instead of memptr_type.
11713         * method.c (emit_thunk):  Call poplevel with functionbody==0
11714         to prevent DECL_INITIAL being set to a BLOCK.
11715
11716 Mon May  2 15:02:11 1994  Jason Merrill  <jason@deneb.cygnus.com>
11717
11718         * parse.y (named_class_head_sans_basetype): Add "aggr
11719         template_type_name ';'" rule for forward declaration of
11720         specializations.
11721
11722 Mon May  2 15:02:11 1994  Jason Merrill  <jason@deneb.cygnus.com>
11723
11724         * class.c (instantiate_type): Deal with pmf's.
11725
11726         * Make-lang.in (cc1plus): Don't depend on OBJS or BC_OBJS, since
11727         stamp-objlist does.
11728
11729         * Makefile.in (../cc1plus): Depend on OBJDEPS.
11730         (OBJDEPS): Dependency version of OBJS.
11731
11732 Mon May  2 12:51:31 1994  Kung Hsu  <kung@mexican.cygnus.com>
11733
11734         * search.c (dfs_debug_mark): unmark TYPE_DECL_SUPPRESS_DEBUG, not
11735         DECL_IGNORED_P.
11736
11737 Fri Apr 29 12:29:56 1994  Jason Merrill  <jason@deneb.cygnus.com>
11738
11739         * class.c (finish_struct): Clear out memory of local tags.  And
11740         typedefs.
11741
11742         * decl2.c (grokclassfn): Don't set DECL_CONTEXT to a cv-qualified
11743         type.
11744         * search.c (get_matching_virtual): Be more helpful in error message.
11745
11746         * *: Use DECL_ARTIFICIAL (renamed from DECL_SYNTHESIZED).
11747
11748         * lex.c (default_assign_ref_body): Expect TYPE_NESTED_NAME to work.
11749         (default_copy_constructor_body): Likewise.
11750
11751         * class.c (finish_struct): Don't gratuitously create multiple decls
11752         for nested classes.
11753
11754 Thu Apr 28 23:39:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
11755
11756         Avoid clobbering the arg types of other functions when reverting
11757         static member functions.
11758         * decl.c (revert_static_member_fn): Rearrange arguments, don't
11759         require values for 'fn' and 'argtypes', add warning to comment
11760         above.
11761         (decls_match): Rearrange arguments in call to rsmf.
11762         (grok_op_properties): Don't pass values for fn and argtypes.
11763         * pt.c (instantiate_template): Don't pass values for fn and argtypes.
11764
11765 Thu Apr 28 16:29:11 1994  Doug Evans  <dje@canuck.cygnus.com>
11766
11767         * Make-lang.in (cc1plus): Depend on stamp-objlist.
11768         * Makefile.in (BC_OBJS): Delete.
11769         (OBJS): Cat ../stamp-objlist to get language independent files.
11770         Include ../c-common.o.
11771         (../cc1plus): Delete reference to BC_OBJS.
11772
11773 Thu Apr 28 02:12:08 1994  Jason Merrill  <jason@deneb.cygnus.com>
11774
11775         * search.c (compute_access): No really, deal with static members
11776         properly.  Would I lie to you?
11777
11778         Implement lexical hiding of function declarations.
11779         * pt.c (tsubst): Use lookup_name to look for function decls to guide
11780         instantiation.
11781         * method.c (build_opfncall): Use lookup_name_nonclass to look for
11782         non-member functions.
11783         * init.c (do_friend): Use lookup_name_nonclass to look for
11784         functions.
11785         * error.c (ident_fndecl): Use lookup_name to look for functions.
11786         * decl2.c (lookup_name_nonclass): New function, skips over
11787         CLASS_VALUE.
11788         * decl.c (struct binding_level): Lose overloads_shadowed field.
11789         (poplevel): Don't deal with overloads_shadowed.
11790         (push_overloaded_decl): Do lexical hiding for functions.
11791         * class.c (instantiate_type): Don't check non-members if we have
11792         members with the same name.
11793         * call.c (build_method_call): Use lookup_name_nonclass instead of
11794         IDENTIFIER_GLOBAL_VALUE to check for non-member functions.
11795         (build_overload_call_real): Likewise.
11796
11797         * decl.c (duplicate_decls): Check for ambiguous overloads here.
11798         (push_overloaded_decl): Instead of here.
11799         
11800         * decl.c (pushdecl): Back out Chip's last change.
11801
11802         * decl.c (grok_op_properties): operators cannot be static members.
11803
11804         * cp-tree.h (DECL_SYNTHESIZED): DECL_SOURCE_LINE == 0
11805         (SET_DECL_SYNTHESIZED): DECL_SOURCE_LINE = 0
11806         * lex.c (cons_up_default_function): Use SET_DECL_SYNTHESIZED.
11807
11808         * method.c (do_inline_function_hair): Don't put friends of local
11809         classes into global scope, either.
11810
11811         * typeck2.c (build_functional_cast): Don't look for a function call
11812         interpretation.
11813
11814 Thu Apr 28 15:19:46 1994  Mike Stump  <mrs@cygnus.com>
11815
11816         * cp-tree.h: disable use of backend EH.
11817
11818 Wed Apr 27 21:01:24 1994  Doug Evans  <dje@canuck.cygnus.com>
11819
11820         * Make-lang.in (c++.distdir): mkdir tmp/cp first.
11821         * Makefile.in (INCLUDES): Move definition to same place as
11822         parent makefile.
11823         (ALLOCA): Define.
11824         (OLDAR_FLAGS): Delete.
11825         (OLDCC): Define.
11826         (DIR): Delete.
11827         (CLIB): Define.
11828         (####site): Delete.
11829         (SUBDIR_USE_ALLOCA): Don't use ALLOCA if compiling with gcc.
11830
11831 Wed Apr 27 19:10:04 1994  Kung Hsu  <kung@mexican.cygnus.com>
11832
11833         * decl.c (xref_tag): not to use strstr(), it's not available on
11834         all platforms.
11835
11836 Wed Apr 27 18:10:12 1994  Jason Merrill  <jason@deneb.cygnus.com>
11837
11838         * class.c (finish_struct): Resolve yet another class/pmf confusion.
11839
11840         * call.c (build_overload_call_real): Don't take the single-function
11841         shortcut if we're dealing with an overloaded operator.
11842
11843 Wed Apr 27 17:35:37 1994  Mike Stump  <mrs@cygnus.com>
11844
11845         * search.c (get_base_distance): Search the virtual base class
11846         binfos, incase someone wants to convert to a real virtual base
11847         class.
11848         * search.c (expand_indirect_vtbls_init): Use convert_pointer_to_real
11849         instead of convert_pointer_to, as it now will work.
11850
11851 Wed Apr 27 15:36:49 1994  Jason Merrill  <jason@deneb.cygnus.com>
11852
11853         * cvt.c (convert_to_reference): Don't complain about casting away
11854         const and volatile.
11855
11856         * typeck.c (build_unary_op): References are too lvalues.
11857
11858 Wed Apr 27 13:58:05 1994  Mike Stump  <mrs@cygnus.com>
11859
11860         * class.c (override_one_vtable): We have to prepare_fresh_vtable
11861         before we modify it, not after, also, we cannot reuse an old vtable,
11862         once we commit to a new vtable.  Implement ambiguous overrides in
11863         virtual bases as abstract.  Hack until we make the class
11864         ill-formed.
11865
11866 Wed Apr 27 01:17:08 1994  Jason Merrill  <jason@deneb.cygnus.com>
11867
11868         * parse.y (unary_expr): Expand new_placement[opt] and
11869         new_initializer[opt] inline.
11870
11871         * search.c (lookup_fnfields): Don't throw away the inheritance
11872         information here, either.
11873         (compute_access): Handle static members properly.
11874
11875         * init.c (build_member_call): Always set basetype_path, and pass it
11876         to lookup_fnfields.
11877
11878         * search.c (lookup_field): Deal properly with the case where
11879         xbasetype is a chain of binfos; don't throw away the inheritance
11880         information.
11881         (compute_access): protected_ok always starts out at 0.
11882
11883         * init.c (resolve_offset_ref): Don't cast `this' to the base type
11884         until we've got our basetype_path.
11885
11886         * cp-tree.h (IS_OVERLOAD_TYPE): aggregate or enum.
11887
11888         * cvt.c (build_up_reference): Use build_pointer_type rather than
11889         TYPE_POINTER_TO.
11890
11891         * call.c (convert_harshness_ansi): Call type_promotes_to for reals
11892         as well.
11893
11894         * cvt.c (type_promotes_to): Retain const and volatile, add
11895         float->double promotion.
11896
11897         * decl.c (grokdeclarator): Don't bash references to arrays into
11898         references to pointers in function parms.  Use type_promotes_to.
11899
11900 Tue Apr 26 23:44:36 1994  Mike Stump  <mrs@cygnus.com>
11901
11902         Finish off Apr 19th work.
11903
11904         * class.c (finish_struct_bits): Rename has_abstract_virtuals to
11905         might_have_abstract_virtuals.
11906         * class.c (strictly_overrides, override_one_vtable,
11907         merge_overrides): New routines to handle virtual base overrides.
11908         * class.c (finish_struct): Call merge_overrides to handle overrides
11909         in virtual bases.
11910
11911 Tue Apr 26 12:45:53 1994  Jason Merrill  <jason@deneb.cygnus.com>
11912
11913         * typeck.c (build_function_call): Call build_function_call_real with
11914         LOOKUP_NORMAL.
11915
11916         * *: Don't deal with TYPE_EXPRs.
11917
11918         * tree.c (lvalue_p): If the type of the expression is a reference,
11919         it's an lvalue.
11920
11921         * cvt.c (convert_to_reference): Complain about passing const
11922         lvalues to non-const references.
11923         (convert_from_reference): Don't arbitrarily throw away const and
11924         volatile on the target type.
11925
11926         * parse.y: Simplify and fix rules for `new'.
11927
11928         * decl.c (grok_op_properties): operator void is illegal.
11929
11930 Mon Apr 25 02:36:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
11931
11932         * parse.y (components): Anonymous bitfields can still have declspecs.
11933
11934         * decl.c (pushdecl): Postpone handling of function templates like we
11935         do C functions.
11936
11937         * search.c (expand_indirect_vtbls_init): Fix infinite loop when
11938         convert_pointer_to fails.
11939
11940         * call.c (compute_conversion_costs_ansi): A user-defined conversion
11941         by itself is better than that UDC followed by standard conversions.
11942         Don't treat integers and reals specially.
11943
11944         * cp-tree.h: Declare flag_ansi.
11945
11946         * typeck.c (c_expand_return): pedwarn on return in void function
11947         even if the expression is of type void.
11948         (build_c_cast): Don't do as much checking for casts to void.
11949         (build_modify_expr): pedwarn about array assignment if this code
11950         wasn't generated by the compiler.
11951
11952         * tree.c (lvalue_p): A comma expression is an lvalue if its second
11953         operand is.
11954
11955         * typeck.c (default_conversion): Move code for promoting enums and
11956         ints from here.
11957         * cvt.c (type_promotes_to): To here.
11958         * call.c (convert_harshness_ansi): Use type_promotes_to.  Also fix
11959         promotion semantics for reals.
11960
11961 Sun Apr 24 16:52:51 1994  Doug Evans  <dje@canuck.cygnus.com>
11962
11963         * Make-lang.in (c++.install-common): Check for g++-cross.
11964         * Makefile.in: Remove Cygnus cruft.
11965         (config.status): Delete.
11966         (RTL_H): Define.
11967         (TREE_H): Use complete pathname, some native makes have minimal
11968         VPATH support.
11969         (*.o): Use complete pathname to headers in parent dir.
11970         (doc, info, dvi): Delete.
11971
11972 Sun Apr 24 16:52:51 1994  Doug Evans  <dje@canuck.cygnus.com>
11973
11974         * Make-lang.in (c++.install-common): Check for g++-cross.
11975         * Makefile.in: Remove Cygnus cruft.
11976         (config.status): Delete.
11977         (RTL_H): Define.
11978         (TREE_H): Use complete pathname, some native makes have minimal
11979         VPATH support.
11980         (*.o): Use complete pathname to headers in parent dir.
11981         (doc, info, dvi): Delete.
11982
11983 Sun Apr 24 00:47:49 1994  Jason Merrill  <jason@deneb.cygnus.com>
11984
11985         * decl.c (pushdecl): Avoid redundant warning on redeclaring function
11986         with different return type.
11987         (decls_match): Compare return types strictly.
11988
11989 Fri Apr 22 12:55:42 1994  Jason Merrill  <jason@deneb.cygnus.com>
11990
11991         * cvt.c (build_type_conversion): Do try to convert through other
11992         pointers.  This will fail if the class defines multiple pointer
11993         conversions.
11994
11995         * error.c (dump_type_prefix): Print out pointers to arrays properly.
11996         (dump_type_suffix): Likewise.  (was 'int *[]', now 'int (*)[]')
11997
11998         * typeck.c (build_unary_op): Disallow ++/-- on pointers to
11999         incomplete type.
12000
12001         * decl.c (duplicate_decls): Check mismatched TREE_CODES after
12002         checking for shadowing a builtin.  If we're redeclaring a builtin
12003         function, bash the old decl to avoid an ambiguous overload.
12004
12005         * cvt.c (convert_to_reference): Don't force arrays to decay here.
12006
12007         * tree.c (lvalue_p): A MODIFY_EXPR is an lvalue.
12008
12009         * decl.c (duplicate_decls): Don't assume that the decls will have
12010         types.
12011
12012         Mon Apr 18 11:35:32 1994  Chip Salzenberg  <chip@fin.uucp>
12013
12014         [ cp/* changes propagated from c-* changes in 940318 snapshot ]
12015         * c-decl.c (pushdecl): Warn if type mismatch with another external decl
12016         in a global scope.
12017
12018         Fri Apr 22 06:38:56 1994  Chip Salzenberg  <chip@fin.uucp>
12019
12020         * cp/typeck2.c (signature_error): Use cp_error for "%T".
12021
12022         Mon Apr 18 11:59:59 1994  Chip Salzenberg  <chip@fin.uucp>
12023
12024         [ cp/* changes propagated from c-* changes in 940415 snapshot ]
12025         * cp/decl.c (duplicate_decls, pushdecl, builtin_function):
12026         Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE.
12027
12028         Mon Apr 18 11:55:18 1994  Chip Salzenberg  <chip@fin.uucp>
12029
12030         [ cp/* changes propagated from c-* changes in 940409 snapshot ]
12031         * cp/decl.c (duplicate_decls): Put new type in same obstack as
12032         old ones, or permanent if old ones in different obstacks.
12033
12034         Mon Apr 18 11:48:49 1994  Chip Salzenberg  <chip@fin.uucp>
12035
12036         [ cp/* changes propagated from c-* changes in 940401 snapshot ]
12037         * cp/parse.y (attrib): Handle string args as expressions,
12038         merging the two rules.  `mode' attribute now takes a string arg.
12039         Delete the rule for an identifier as arg.
12040
12041         Mon Apr 18 11:24:00 1994  Chip Salzenberg  <chip@fin.uucp>
12042
12043         [ cp/* changes propagated from c-* changes in 940312 snapshot ]
12044         * cp/typeck.c (pointer_int_sum): Multiplication should be done signed.
12045         (pointer_diff): Likewise the division.
12046
12047         Sun Mar  6 19:43:39 1994  Chip Salzenberg  <chip@fin.uucp>
12048
12049         [ cp/* changes propagated from c-* changes in 940304 snapshot ]
12050         * cp/decl.c (finish_decl): Issue warning for large objects,
12051         if requested.
12052
12053         Sat Feb 19 22:20:32 1994  Chip Salzenberg  <chip@fin.uucp>
12054
12055         [ cp/* changes propagated from c-* changes in 940218 snapshot ]
12056         * cp/parse.y (attrib): Handle attribute ((section ("string"))).
12057         * cp/decl.c (duplicate_decls): Merge section name into new decl.
12058
12059         Tue Feb  8 09:49:17 1994  Chip Salzenberg  <chip@fin.uucp>
12060
12061         [ cp/* changes propagated from c-* changes in 940206 snapshot ]
12062         * cp/typeck.c (signed_or_unsigned_type): Check for any
12063         INTEGRAL_TYPE_P not just INTEGER_TYPE.
12064
12065         Mon Dec  6 13:35:31 1993  Norbert Kiesel  (norbert@i3.INformatik.rwth-aachen.DE)
12066
12067         * cp/decl.c (finish_enum): Start from 0 when determining precision
12068         for short enums.
12069
12070         Fri Dec  3 17:07:58 1993  Ralph Campbell  (ralphc@pyramid.COM)
12071
12072         * cp/parse.y (unary_expr): Look at $1 for tree_code rather than
12073         casting $$.
12074
12075         Wed Nov 17 19:22:09 1993  Chip Salzenberg  <chip@fin.uucp>
12076
12077         * cp/typeck.c (build_binary_op_nodefault): Propagate code
12078         from C front-end to optimize unsigned short division.
12079         (build_conditional_expr): Fix bug in "1 ? 42 : (void *) 8".
12080
12081         Wed Nov 17 19:17:18 1993  Chip Salzenberg  <chip@fin.uucp>
12082
12083         * cp/call.c (convert_harshness_ansi): Given an (e.g.) char
12084         constant, prefer 'const char &' to 'int'.
12085
12086         Wed Feb  3 13:11:48 1993  Chip Salzenberg  <chip@fin.uucp>
12087
12088         * cp/class.c (finish_struct_methods):  Handle multiple
12089         constructors in fn_fields list.
12090
12091 Fri Apr 22 12:48:10 1994  Kung Hsu  <kung@mexican.cygnus.com>
12092
12093         * class.c (finish_struct): use TYPE_DECL_SUPPRESS_DEBUG to flag
12094         types not to be dumped in stabs, like types in #pragma interface.
12095         * decl.c (init_decl_processing): use TYPE_DECL_SUPPRESS_DEBUG to
12096         mark unknown type.
12097
12098 Fri Apr 22 03:27:26 1994  Doug Evans  <dje@cygnus.com>
12099
12100         * Language directory reorganization.
12101         See parent makefile.
12102
12103 Thu Apr 21 18:27:57 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12104
12105         * cp-tree.h (THUNK_DELTA):  It is normally negative, so
12106         use signed .i variant of frame_size rather than unsigned .u.
12107         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
12108         use "VT" rather than "vt" due to binary incompatibility.
12109         * class.c (get_vtable_name):  Use strlen of VTABLE_NAME_FORMAT,
12110         rather than sizeof, since it is now an expression.
12111         * class.c (modify_one_vtable):  Modify to skip initial element
12112         containing a count of the vtable.
12113
12114 Thu Apr 21 00:09:02 1994  Jason Merrill  <jason@deneb.cygnus.com>
12115
12116         * lex.c (check_newline): Force interface_unknown on main input file.
12117
12118         * pt.c (do_pending_expansions): Always emit functions that have been
12119         explicitly instantiated.
12120         (do_function_instantiation): Set DECL_EXPLICITLY_INSTANTIATED.
12121         (do_type_instantiation): Set CLASSTYPE_VTABLE_NEEDS_WRITING and
12122         DECL_EXPLICITLY_INSTANTIATED on all my methods.
12123         * parse.y (explicit_instantiation): Call do_type_instantiation for
12124         types.
12125         * decl2.c (finish_vtable_vardecl): Call import_export_vtable.
12126         * decl.c (start_function): Don't set DECL_EXTERNAL on a function
12127         that has been explicitly instantiated.
12128         * cp-tree.h (DECL_EXPLICITLY_INSTANTIATED): Alias for
12129         DECL_LANG_FLAG_4.
12130         * class.c: Move import_export_vtable to decl2.c, and comment out all
12131         uses.
12132
12133 Wed Apr 20 16:51:06 1994  Jason Merrill  <jason@deneb.cygnus.com>
12134
12135         * lex.c (process_next_inline): Don't muck with DECL_INLINE.
12136         (do_pending_inlines): Likewise.
12137
12138 Tue Apr 19 22:25:41 1994  Mike Stump  <mrs@cygnus.com>
12139
12140         Reimplement vtable building, and most vtable pointer setting.
12141         Allows for earier maintenance, easier understandability, and most
12142         importantly, correct semantics.
12143
12144         * class.c (build_vtable): Removed unneeded
12145         SET_BINFO_VTABLE_PATH_MARKED.
12146         * class.c (prepare_fresh_vtable): Likewise.  Added argument.
12147         * class.c (modify_vtable_entry): General cleanup.
12148         * class.c (related_vslot, is_normal, modify_other_vtable_entries,
12149         modify_vtable_entries): Removed.
12150         * class.c (add_virtual_function): General cleanup.
12151         * class.c (finish_base_struct): Setup BINFO_VTABLE and
12152         BINFO_VIRTUALS as early as we can, so that modify_all_vtables can
12153         work.
12154         * class.c (finish_vtbls): New routine, mostly from
12155         unmark_finished_struct.
12156         * class.c (overrides): New routine.
12157         * class.c (modify_one_vtable): New routine, mostly from
12158         modify_other_vtable_entries and modify_vtable_entries.
12159         * class.c (modify_all_direct_vtables, modify_all_indirect_vtables,
12160         modify_all_vtables): New routines.
12161         * class.c (finish_struct): Added arguemnt to prepare_fresh_vtable
12162         call.  General cleanup on how pending_hard_virtuals are handled.
12163         General cleanup on modifying vtables.  Use finish_vtbls, instead of
12164         unmark_finished_struct.
12165         * cp-tree.h (init_vtbl_ptrs, expand_direct_vtbls_init,
12166         get_first_matching_virtual, get_matching_virtual,
12167         expand_vbase_vtables_init,  expand_indirect_vtbls_init): Update.
12168         * cvt.c (convert_pointer_to_real): cleanup error message.
12169         * decl.c (grokfndecl): General cleanup.
12170         * decl.c (finish_function): Change init_vtbl_ptrs call to
12171         expand_direct_vtbls_init.  Change expand_vbase_vtables_init call to
12172         expand_indirect_vtbls_init.
12173         * init.c (expand_virtual_init): Remove unneeded argument.
12174         * init.c (init_vtbl_ptrs): Rename to expand_direct_vtbls_init, added
12175         two arguments to make more general.  Made more general.  Now can be
12176         used for vtable pointer initialization from virtual bases.
12177         * init.c (emit_base_init): Change expand_vbase_vtables_init call to
12178         expand_indirect_vtbls_init.  Change init_vtbl_ptrs call to
12179         expand_direct_vtbls_init.
12180         * init.c (expand_virtual_init): General cleanup.
12181         * init.c (expand_default_init): Change expand_vbase_vtables_init
12182         call to expand_indirect_vtbls_init.
12183         * init.c (expand_recursive_init_1): Change expand_vbase_vtables_init
12184         call to expand_indirect_vtbls_init.
12185         * init.c (expand_recursive_init): Change expand_vbase_vtables_init
12186         call to expand_indirect_vtbls_init.
12187         * search.c (get_first_matching_virtual): Rename to
12188         get_matching_virtual.  General cleanup and remove setting of
12189         DECL_CONTEXT.  That is now done in a cleaner way in
12190         modify_vtable_entry and add_virtual_function.
12191         * search.c (expand_vbase_vtables_init): Rename to
12192         expand_indirect_vtbls_init.  General cleanup.  Use
12193         expand_direct_vtbls_init to do hard work.  Ensures that _all_ vtable
12194         pointers from virtual bases are set up.
12195         * search.c (bfs_unmark_finished_struct, unmark_finished_struct):
12196         Removed.
12197
12198         * *.[chy]: Remove support for VTABLE_USES_MASK.
12199
12200 Tue Apr 19 12:51:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
12201
12202         * cvt.c (convert_to_reference): Use NOP_EXPRs to switch between
12203         reference and pointer types instead of bashing the types directly.
12204
12205         * call.c (build_overload_call_real): Use the TREE_CODE to determine
12206         whether the function is overloaded or not, rather than
12207         TREE_OVERLOADED.
12208         * *: Remove all uses of TREE_OVERLOADED.
12209
12210         * decl.c (grokdeclarator): Only complain about initializing const
12211         fields when -ansi or -pedantic.
12212
12213 Tue Apr 19 12:42:42 1994  Doug Evans  <dje@canuck.cygnus.com>
12214
12215         * cp-tree.h (THUNK_DELTA): frame_size is now a union.
12216
12217 Mon Apr 18 00:17:13 1994  Jason Merrill  <jason@deneb.cygnus.com>
12218
12219         Do overloading on a block-by-block basis, not function-by-function.
12220         * decl.c: Lose overloads_to_forget.
12221         (struct binding_level): Add overloads_shadowed field.
12222         (poplevel): Restore overloads_shadowed.
12223         (push_overloaded_decl): Use overloads_shadowed instead of
12224         overloads_to_forget.
12225         (finish_function): Don't look at overloads_to_forget.
12226
12227         Copy enum_overflow logic from c-decl.c.
12228         * decl.c (start_enum): Initialize enum_overflow.
12229         (build_enumerator): Use enum_overflow.  Also use current_scope().
12230
12231         * search.c (current_scope): Move Brendan's comment from
12232         build_enumerator here.
12233
12234         * typeck.c (convert_for_assignment): Change warnings to pedwarns for
12235         discarding const/volatile.
12236
12237 Sat Apr 16 01:18:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
12238
12239         * typeck.c (comp_target_parms): Accept TEMPLATE_TYPE_PARMs on the rhs.
12240         (comp_target_types): Likewise.
12241
12242         * decl.c (lookup_name): Don't unset got_scope here.
12243
12244         * spew.c (yylex): Only replace yylval with the TYPE_NESTED_NAME if
12245         got_scope != NULL_TREE.
12246
12247 Fri Apr 15 16:36:33 1994  Jason Merrill  <jason@deneb.cygnus.com>
12248
12249         Horrible kludge to prevent templates from being instantiated by
12250         their base classes.
12251         * parse.y (template_instantiate_once): Unset TYPE_BEING_DEFINED
12252         before we get to left_curly.
12253         * pt.c (instantiate_class_template): Set TYPE_BEING_DEFINED.
12254
12255         * error.c (dump_decl): If it's a typedef, print out the name of the
12256         decl, not just the underlying type.
12257
12258         * decl.c (pushdecl): If the old duplicate decl was a TYPE_DECL,
12259         update the IDENTIFIER_TYPE_VALUE of its name.
12260
12261         * decl2.c (finish_file): When processing the initializer for a
12262         static member, pretend that the dummy function is a member of the
12263         same class.
12264
12265 Fri Apr 15 15:56:35 1994  Kung Hsu  <kung@mexican.cygnus.com>
12266
12267         * class.c (build_vtable_entry): revert Apr 4 change.
12268         * decl2.c (mark_vtable_entries): replace pure virtual function
12269         decl with abort's.
12270
12271 Fri Apr 15 13:49:33 1994  Jason Merrill  <jason@deneb.cygnus.com>
12272
12273         * typeck.c (build_conditional_expr): Pedwarn on pointer/integer
12274         mismatch, and don't pedwarn on 0/function pointer mismatch.
12275
12276         * typeck2.c (digest_init): Lose code for special handling of unions.
12277         (process_init_constructor): Since they're handled just fine here.
12278         Pedwarn on excess elements.
12279
12280         * decl2.c (grokfield): Complain about local class method declaration
12281         without definition.
12282
12283 Fri Apr 15 13:19:40 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12284
12285         * method.c (emit_thunk):  Add extern declaration for
12286         current_call_is_indirect (needed for hppa).
12287
12288 Thu Apr 14 16:12:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
12289
12290         Improve local class support; allow classes in different blocks to
12291         have the same name.
12292         * decl.c (pushtag): Support local classes better.
12293         (pushdecl_nonclass_level): New function for pushing mangled decls of
12294         nested types into the appropriate scope.
12295         (xref_defn_tag): Use pushdecl_nonclass_level instead of
12296         pushdecl_top_level. 
12297         (grokfndecl): Don't mess with IDENTIFIER_GLOBAL_VALUE for local
12298         class methods.
12299         * method.c (do_inline_function_hair): Likewise.
12300
12301         * class.c (finish_struct): It is legal for a class with no
12302         constructors to have nonstatic const and reference members.
12303
12304 Thu Apr 14 07:15:11 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
12305
12306         * decl.c (push_overloaded_decl): Avoid giving errors about
12307         built-ins, since duplicate_decls will have given warnings/errors
12308         for them.
12309
12310 Thu Apr 14 03:45:12 1994  Jason Merrill  <jason@deneb.cygnus.com>
12311
12312         * cvt.c (convert_to_reference): Warn about casting pointer type to
12313         reference type when this is probably not what they wanted.
12314
12315 Wed Apr 13 13:12:35 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12316
12317         * decl.c (finish_decl):  Don't mindlessly set TREE_USED for
12318         static consts any more (toplev.c has now been modified to
12319         not emit warnings if they are unused).
12320
12321 Wed Apr 13 00:22:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
12322
12323         * decl.c (grok_op_properties): If op new/delete get here with
12324         METHOD_TYPEs, do a revert_static_member_fn.
12325
12326         * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Lose.
12327         * init.c (is_aggr_typedef): Don't look at
12328         IDENTIFIER_CLASS_TYPE_VALUE.
12329         (get_aggr_from_typedef): Likewise.
12330         (get_type_value): Likewise.
12331         * call.c (build_scoped_method_call): Don't rely on overloaded
12332         template names having IDENTIFIER_CLASS_VALUE set.
12333
12334         * parse.y (component_decl_1, fn.def2): Revert rules for
12335         constructors.
12336         (component_decl_1, fn.def2): Use $1 instead of $$, since $$ is being
12337         clobbered.
12338
12339         * decl.c (start_function): Only warn about `void main()' if pedantic
12340         || warn_return_type.
12341
12342 Tue Apr 12 02:14:17 1994  Jason Merrill  <jason@deneb.cygnus.com>
12343
12344         Clean up overloading of the template name.
12345         * class.c (pushclass): overload the template name whenever pushing
12346         into the scope of a template class, not just if it is
12347         uninstantiated.
12348         (popclass): Correspondingly.
12349         * search.c (push_class_decls): Don't overload_template_name.
12350         * pt.c (overload_template_name): Don't set IDENTIFIER_LOCAL_VALUE or
12351         DECL_CONTEXT on things.
12352         * parse.y (left_curly): Don't overload_template_name.
12353         * class.c (finish_struct): Don't undo_template_name_overload.
12354
12355         * method.c (build_opfncall): Only pass one argument to global op
12356         delete.
12357
12358         * call.c (build_method_call): Use TYPE_VEC_DELETE_TAKES_SIZE to
12359         decide how many arguments to use for vec delete.
12360
12361         * decl.c (grok_op_properties): Be consistent in modifying
12362         current_class_type.
12363         (grokdeclarator): Only complain about function decls with no return
12364         type if we're being pedantic.
12365
12366 Mon Apr 11 00:10:53 1994  Jason Merrill  <jason@deneb.cygnus.com>
12367
12368         Add support for operator new [] and operator delete [].
12369
12370         * tree.def: Add VEC_NEW_EXPR and VEC_DELETE_EXPR.
12371         * ptree.c (print_lang_type): Indicate vec new/delete.
12372         * parse.y: Support vec new/delete.
12373         * method.c (build_decl_overload): Deal with vec new/delete.
12374         (build_opfncall): Likewise.
12375         * lex.c (init_lex): Set up values of ansi_opname and opname_tab for
12376         vec new/delete.  vec new uses "__vn", and vec delete uses "__vd".
12377         * init.c (init_init_processing): Set up BIVN and BIVD.
12378         (do_friend): Don't clean up after mistaken setting of TREE_GETS_NEW,
12379         since it doesn't happen any more.
12380         (build_new): Support vec new.  Always call something.
12381         (build_x_delete): Support vec delete.
12382         (build_vec_delete): Lose dtor_dummy argument, add use_global_delete,
12383         and pass it to build_x_delete.
12384         * decl2.c (delete_sanity): Don't change behavior by whether or not
12385         the type has a destructor.  Pass use_global_delete to
12386         build_vec_delete.
12387         (coerce_delete_type): Make sure that the type returned has a first
12388         argument of ptr_type_node.
12389         * decl.c (init_decl_processing): Also declare the global vec
12390         new/delete.
12391         (grokdeclarator): Also force vec new/delete to be static.
12392         (grok_op_properties): Note presence of vec new/delete, and play with
12393         their args.  If vec delete takes the optional size_t argument, set
12394         TYPE_VEC_DELETE_TAKES_SIZE.
12395         * cp-tree.h (TYPE_GETS_{REG,VEC}_DELETE): New macros to simplify
12396         checking for one delete or the other.
12397         (lang_type): gets_new and gets_delete are now two bits long.  The
12398         low bit is for the non-array version.  Lose gets_placed_new.
12399         (TYPE_VEC_DELETE_TAKES_SIZE): New macro indicating that the vec
12400         delete defined by this class wants to know how much space it is
12401         deleting.
12402         (TYPE_VEC_NEW_USES_COOKIE): New macro to indicate when vec new must
12403         add a header containing the number of elements in the vector; i.e.
12404         when the elements need to be destroyed or vec delete wants to know
12405         the size.
12406         * class.c (finish_struct_methods): Also check for overloading vec
12407         delete.
12408         * call.c (build_method_call): Also delete second argument for vec
12409         delete.
12410
12411         * decl.c (grokdeclarator): Correct complaints again.
12412         (grokdeclarator): Fix segfault on null declarator.
12413         (decls_match): Also accept redeclaration with no arguments if both
12414         declarations were in C context.  Bash TREE_TYPE (newdecl) here.
12415         (duplicate_decls): Instead of here.
12416
12417         * parse.y (nested_name_specifier_1): Lose rules for dealing with
12418         syntax errors nicely, since they break parsing of 'const i;'.
12419
12420         * decl.c (lookup_name): if (got_scope == current_class_type)
12421         val = IDENTIFIER_CLASS_VALUE (name).
12422
12423         * search.c (lookup_nested_tag): Look in enclosing classes, too.
12424
12425         * spew.c (yylex): Only look one character ahead when checking for a
12426         SCOPE.
12427
12428         * lex.c (check_newline): Read first nonwhite char before
12429         incrementing lineno.
12430
12431         * decl.c (grokdeclarator): Don't claim that typedefs are variables
12432         in warning.
12433
12434         * parse.y: Divide up uses of unqualified_id into
12435         notype_unqualified_id and unqualified_id, so that TYPENAME can be
12436         used as an identifier after an object.
12437
12438         * class.c (push_nested_class): Don't push into non-class scope.
12439
12440         * decl.c (grokdeclarator): If an identifier could be a type
12441         conversion operator, but has no associated type, it's not a type
12442         conversion operator.
12443
12444         * pt.c (unify): Check for equality of constants better.
12445
12446         * decl.c (grokdeclarator): Don't complain about access decls.
12447
12448 Sun Apr 10 02:39:55 1994  Jason Merrill  <jason@deneb.cygnus.com>
12449
12450         * decl.c (grokdeclarator): pedwarn about data definitions without
12451         types here.
12452
12453         * parse.y (datadef): Don't pedwarn about decls without types here,
12454         since that is valid for functions.
12455         (fn.def2, component_decl): Support constructors with declmods again.
12456         (nomods_initdecls): For decls without any mods, so that we don't try
12457         to get declspecs from some arbitrary $0.
12458
12459         * search.c (lookup_field): Use cp_error.
12460
12461         * parse.y (nested_name_specifier_1): Don't check aggr/non-aggr type
12462         here; it breaks destructors for non-aggr types.
12463
12464         * decl.c (lookup_name): Only look for TYPE_DECLs in base classes of
12465         a type being defined, like the comment says.
12466         If got_scope is not an aggregate, just return NULL_TREE.
12467
12468         * pt.c (create_nested_upt): Kung's code for creating types nested
12469         within uninstantiated templates now lives here (it used to live in
12470         hack_more_ids).  It needs to be expanded.
12471
12472         * parse.y: Stop calling see_typename so much.
12473
12474         * decl.c (lookup_name): Deal with TTPs and UPTs.
12475
12476         * lex.c (real_yylex): Don't set looking_for_typename just because we
12477         saw a 'new'.
12478         (dont_see_typename): #if 0 out.
12479
12480         * spew.c (yylex): Increment looking_for_typename if the next
12481         character is SCOPE, rather than setting it to 1; this way, the value
12482         from seeing an aggr specifier will not be lost.  This kinda relies
12483         on looking_for_typename never being < 0, which is now true.
12484
12485         * parse.y (nested_name_specifier_1): Accept TEMPLATE_TYPE_PARMs,
12486         too.
12487         (named_class_head_sans_basetype): Accept template types, too.  Oops.
12488
12489 Fri Apr  8 16:39:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
12490
12491         * decl2.c (reparse_decl_as_expr1): Handle SCOPE_REFs.
12492
12493         * parse.y: Lose START_DECLARATOR.
12494
12495         * search.c (lookup_nested_tag): New function to scan CLASSTYPE_TAGS
12496         for a class.
12497
12498         * parse.y: Simplify fn.def2 and component_decl.  Support 'enum
12499         A::foo' syntax.  Catch invalid scopes better.
12500
12501         * parse.y, lex.c: lose TYPENAME_COLON.
12502
12503         * decl2.c (groktypefield): #if 0 out.
12504
12505         * decl.c (lookup_name): If the type denoted by got_scope is
12506         currently being defined, look in CLASSTYPE_TAGS rather than FIELDS.
12507
12508         * class.c (push_nested_class): Don't try to push into
12509         error_mark_node.
12510
12511 Fri Apr  8 07:26:36 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
12512
12513         * Makefile.in (stamp-parse): Update count of conflicts to 33.
12514
12515 Thu Apr  7 17:47:53 1994  Jason Merrill  <jason@deneb.cygnus.com>
12516
12517         A saner implementation of nested types that treats template types
12518         no differently from non-template types.  There are still some
12519         shortcomings of our system; most notably, it is difficult to look
12520         for a nested type that is hidden by another name, because of the way
12521         we keep track of hidden types.  But this shouldn't be a problem for
12522         just about anyone.  Perhaps lookup_field should be fixed up a bit.
12523
12524         * spew.c: Moved handling of nested types/scoping from the lexer
12525         into the parser.  Removed variable template_type_seen_before_scope.
12526         Removed functions frob_identifier, hack_more_ids, and various cruft
12527         that was #if 0'd out in the past, reducing the size of the file from
12528         1146 lines to 450 lines.  We can't quite do away with spew.c yet,
12529         though; we still need it for do_aggr () and checking for SCOPE after
12530         the current identifier.  And setting lastiddecl.
12531
12532         * parse.y: Moved handling of nested types/scoping from the lexer
12533         into the parser, using a new global variable `got_scope'.  Reduced
12534         the number of states by 53.  Implemented all uses of explicit global
12535         scope.  Removed terminals SCOPED_TYPENAME and SCOPED_NAME.  Removed
12536         nonterminals tmpl.1, scoped_base_class, id_scope, typename_scope,
12537         scoped_typename.  Added nonterminals nested_type,
12538         qualified_type_name, complete_type_name, qualified_id, ptr_to_mem,
12539         nested_name_specifier, global_scope, overqualified_id, type_name.
12540         Changed many others.  Added 9 new reduce/reduce conflicts, which are
12541         nested type parallels of 9 that were already in the grammar for
12542         non-nested types.  Eight of the now 33 conflicts should be removed
12543         in the process of resolving the late binding between variable and
12544         function decls.
12545
12546         * gxxint.texi (Parser): Update.
12547
12548         * cp-tree.h (IS_AGGR_TYPE_CODE): Add UNINSTANTIATED_P_TYPE.
12549
12550         * lex.h: Add decl for got_scope.
12551
12552         * lex.c (see_typename): Claim to be the lexer when calling
12553         lookup_name.
12554
12555         * decl.c (lookup_name): When called from the lexer, look at
12556         got_scope and looking_at_typename; otherwise don't.
12557
12558 Thu Apr  7 22:05:47 1994  Mike Stump  <mrs@cygnus.com>
12559
12560         31th Cygnus<->FSF merge.
12561
12562 Thu Apr  7 17:47:53 1994  Jason Merrill  <jason@deneb.cygnus.com>
12563
12564         * decl2.c (mark_vtable_entries): Call this to mark all the
12565         entries in the vtable addressable.
12566         (finish_decl_parsing): Handle SCOPE_REFs.
12567
12568         * decl.c (decls_match): Always call compparms with strict == 1.
12569         Handle the special case of C function redecl here.
12570         (duplicate_decls): Only keep the old type if the new decl takes no
12571         arguments.
12572
12573         * typeck.c (compparms): Also allow t1 to be ... if strict == 0.
12574
12575 Thu Apr  7 16:17:50 1994  Mike Stump  <mrs@cygnus.com>
12576
12577         * class.c (build_vtable_entry): Fix breakage introduced Apr 5
12578         17:48:41.
12579
12580 Wed Apr  6 16:05:10 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12581
12582         * init.c (build_virtual_init), search.c (build_vbase_vtables_init),
12583         ch-tree.h:  Every place these functions were called, the result was
12584         immediately passed to expand_expr_stmt.  Reduce redundancy by
12585         calling expand_expr_init *inside* these functions.  These
12586         makes for a simpler interface, and we don't have to build
12587         compound expressions.  Hence, rename these function to:
12588         expand_virtual_init and expand_vbase_vtables_init respectively.
12589         * init.c, decl.c:  Change callers of these functions.
12590         * init.c, cp-tree.h (expand_virtual_init):  Make static.
12591
12592         * decl2.c (finish_file): Check TREE_PUBLIC||TREE_ADDRESSABLE
12593         rather than DECL_SAVED_INSNS before emitting inlines.
12594
12595 Wed Apr  6 13:06:39 1994  Jason Merrill  <jason@deneb.cygnus.com>
12596
12597         * spew.c (init_spew): #if 0 out stuff used by arbitrate_lookup.
12598
12599         * decl.c (duplicate_decls): If this is a new declaration of an
12600         extern "C" function, keep the type (for the argtypes).
12601         (redeclaration_error_message): Don't check DECL_LANGUAGE here.
12602         (decls_match): Call compparms with a value of strict dependent on
12603         the value of strict_prototypes for DECL_LANGUAGE (oldecl).
12604
12605         * typeck.c (compparms): ... is only equivalent to non-promoting
12606         parms if we're not being strict.
12607
12608         * parse.y (empty_parms): Don't check flag_ansi || pedantic here.
12609
12610         * decl.c (init_decl_processing): if (flag_ansi || pedantic)
12611         strict_prototypes_lang_c = strict_prototypes_lang_cplusplus;
12612
12613         * decl2.c (grok_function_init): Don't set DECL_INITIAL on pure
12614         virtuals.
12615
12616 Tue Apr  5 17:48:41 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12617
12618         Support for implementing vtables with thunks.
12619         * tree.def (THUNK_DECL):  New TREE_CODE.
12620         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY), tree.c
12621         (fnaddr_from_vtable_entry):  Handle flag_vtable_thunks case.
12622         * cp-tree.h (memptr_type):  New variable.
12623         * class.c (build_vtable_entry):  Build thunk if necessary.
12624         * class.c (build_vfn_ref):  If using thunks, don't need
12625         to add delta field from vtable (there is none!).
12626         * decl.c: Add memptr_type as well as vtable_entry_type.
12627         If using thunks, the latter is just ptr_type_node.
12628         * gc.c, typeck.c:  Use memptr_typeChange, not vtable_entry_type.
12629         * decl2.c (finish_vtable_vardecl):  Handle thunks.
12630         * expr.c (cplus_expand_expr):  Support THUNK_DECL.
12631
12632         * decl.c (grokdeclarator):  Set DECL_THIS_EXTERN if "extern".
12633         * decl.c (start_function):  Set current_extern_inline based on
12634         DECL_THIS_EXTERN, not TREE_PUBLIC.
12635         * decl.c (finish_function):  Call mark_inline_for_output if needed,
12636
12637         Improve intelligence about when to emit inlines.
12638         * cp-tree.h (lang_decl_flags):  New field saved_inline.
12639         * cp-tree.h (DECL_SAVED_INLINE):  New macro.
12640         * class.c (add_virtual_function):  Don't set TREE_ADDRESSABLE.
12641         * decl.h, decl.c (pending_addressable_inlines):  Removed.
12642         * decl2.c (pending_addressable_inlines):  Renamed to saved_inlines.
12643         * decl2.c (mark_inline_for_output):  Do nothing if
12644         DECL_SAVED_INLINE;  otherwise set it (and add to saved_inlines list).
12645         * decl2.c (finish_vtable_vardecl):  SET_CLASSTYPE_INTERFACE_KNOWN
12646         and set CLASSTYPE_INTERFACE_ONLY if there is a non-inline virtual.
12647         * decl2.c (finish_file):  Writing out inlines later, so we can
12648         also handle the ones needed for vtbales.
12649         * decl2.c (write_vtable_entries, finish_vtable_typedecl):  Removed.
12650
12651         * cp-tree.h, class.c, decl2.c, search.c:  Remove -fvtable-hack
12652         and flag_vtable_hack.  Use -fvtable-thunks and flag_vtable_thunks
12653         instead.  (The rationale is that these optimizations both break binary
12654         compatibility, but should become the default in a future release.)
12655
12656 Wed Apr  6 10:53:56 1994  Mike Stump  <mrs@cygnus.com>
12657
12658         * class.c (modify_vtable_entries): Never reset the DECL_CONTEXT
12659         of a fndecl, as we might not be from that vfield.
12660
12661 Tue Apr  5 17:43:35 1994  Kung Hsu  <kung@mexican.cygnus.com>
12662
12663         * class.c (add_virtual_function): fix bug for pure virtual, so
12664         that DECL_VINDEX of the dummy decl copied won't be error.
12665         (see also Apr 4 change)
12666
12667 Tue Apr  5 17:23:45 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12668
12669         * typeck.c (c_expand_return):  Before checking that we're not
12670         returning the address of a local, make sure it's a VAR_DECL.
12671         (And don't worry about it being a TREE_LIST.)
12672
12673 Tue Apr  5 13:26:42 1994  Jason Merrill  <jason@deneb.cygnus.com>
12674
12675         * parse.y (YYDEBUG): Always define.
12676         * lex.c (YYDEBUG): Likewise.
12677
12678 Mon Apr  4 11:28:17 1994  Kung Hsu  <kung@mexican.cygnus.com>
12679
12680         * class.c (finish_struct): backup out the change below, put the
12681         new change for the same purpose. The change below breaks code.
12682
12683         * class.c (finish_struct): if pure virtual, copy node and make
12684         RTL point to abort, then put in virtual table.
12685         * decl2.c (grok_function_iit): reinstate Mar 31 change.
12686
12687 Sat Apr  2 03:12:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
12688
12689         * init.c (build_new): pedwarn about newing const and volatile
12690         types.
12691
12692         * tree.c (get_identifier_list): Only do the special handling
12693         thing if we're dealing with the main variant of the record type.
12694
12695         * cvt.c (convert_to_reference): When converting between
12696         compatible reference types, use the pointer conversion machinery.
12697         Don't just blindly overwrite the old type.
12698
12699 Fri Apr  1 17:14:42 1994  Jason Merrill  <jason@deneb.cygnus.com>
12700
12701         * call.c (build_method_call): When looking at global functions,
12702         be sure to use instance_ptr for the first argument, not some version
12703         of it that has been cast to a base class.  Also do this before
12704         comparing candidates.
12705
12706 Thu Mar 31 19:50:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
12707
12708         * call.c (build_method_call): Constructors can be called for
12709         const objects.
12710
12711 Thu Mar 31 16:20:16 1994  Kung Hsu  <kung@mexican.cygnus.com>
12712
12713         * decl2.c (grok_func_init): do not abort as rtl for pur virtual
12714         fucntions. They can be defined somewhere else.
12715
12716 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
12717
12718         * decl.c (init_decl_processing): Declare __builtin_return_address
12719         and __builtin_frame_address for C++ as well.
12720
12721 Thu Mar 31 12:35:49 1994  Mike Stump  <mrs@cygnus.com>
12722
12723         * typeck2.c (store_init_value): Integral constant variables are
12724         always constant, even when doing -fpic.
12725
12726 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
12727
12728         * decl.c (redeclaration_error_message): Pass the types to
12729         comptypes.
12730
12731 Wed Mar 30 21:29:25 1994  Mike Stump  <mrs@cygnus.com>
12732
12733         Cures incorrect errors about pure virtuals in a class, when they
12734         have been overridden in a derived class.
12735
12736         * search.c (get_abstract_virtuals): Reimplement.
12737         * search.c (get_abstract_virtuals_1): New routine.
12738
12739 Wed Mar 30 14:10:04 1994  Jason Merrill  <jason@deneb.cygnus.com>
12740
12741         * pt.c (push_template_decls): Make the pushed level pseudo
12742         global.
12743
12744         * parse.y (extdefs): Don't pop everything if the current binding
12745         level is pseudo_global.
12746
12747         * decl.c (pop_everything): Stop on reaching a pseudo-global
12748         binding level.
12749
12750         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Change to more reliable test.
12751
12752         * decl.c (duplicate_decls): Only copy DECL_SOURCE_{FILE_LINE} if
12753         the old decl actually had an initializer.
12754
12755         * {various}: Clean up gcc -W complaints.
12756
12757         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Currently defined to be
12758         (DECL_CONTEXT (NODE) != NULL_TREE).
12759
12760         * parse.y (lang_extdef): Call pop_everything if necessary.
12761
12762         * decl.c (pop_everything): New function for popping binding
12763         levels left over after a syntax error.
12764         (pushdecl): Use DECL_FUNCTION_MEMBER_P to decide whether or not
12765         a function is a member.
12766
12767 Wed Mar 30 14:20:50 1994  Mike Stump  <mrs@cygnus.com>
12768
12769         Cures calling a more base base class function, when a more derived
12770         base class member should be called in some MI situations.
12771
12772         * search.c (make_binfo): Use more the more specialized base
12773         binfos from the binfo given as the second argument to make_binfo,
12774         instead of the unspecialized ones from the TYPE_BINFO.
12775         * class.c (finish_base_struct): Likewise, update callers.
12776         * search.c (dfs_get_vbase_types): Likewise.
12777         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Likewise.
12778         * decl.c (xref_tag): Use NULL_TREE instead of 0.
12779         * lex.c (make_lang_type): Likewise.
12780
12781 Wed Mar 30 14:10:04 1994  Jason Merrill  <jason@deneb.cygnus.com>
12782
12783         * decl.c (pushdecl): If pushing a C-linkage function, only do a
12784         push_overloaded_decl.
12785         (duplicate_decls): Standard overloading does not shadow built-ins.
12786
12787 Tue Mar 29 00:54:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
12788
12789         * pt.c (end_template_decl): Don't call push_overloaded_decl.
12790
12791         * init.c (do_friend): Don't call push_overloaded_decl.
12792
12793         * decl.c (pushdecl): Call push_overloaded_decl for functions and
12794         function templates.
12795         (duplicate_decls): functions and function templates are not
12796         duplicates, but don't complain about calling this function to
12797         compare them.
12798         (push_overloaded_decl): Don't deal with linkage.  Call
12799         duplicate_decls.
12800         (redeclaration_error_message): Deal with linkage.
12801
12802         * decl.c (start_function): If push_overloaded_decl returns an
12803         older version of the function, deal with it.
12804
12805         * decl.c (start_function): Be sure only to push_overloaded_decl
12806         for non-members.
12807
12808         * decl.c (grokfndecl): Put back clearing of DECL_CHAIN for
12809         methods.
12810         (start_function): Lose broken and redundant code for checking old
12811         decl.
12812
12813         * init.c (add_friend): Give line numbers of both friend decls
12814         when warning about re-friending.
12815
12816         * pt.c (tsubst): Use comptypes rather than == to compare the
12817         types of the method as declared and as defined, since default
12818         parameters may be different.
12819
12820         * call.c (build_method_call): Use brendan's candidate printing
12821         routine.
12822
12823         * decl.c (start_method): Methods defined in the class body are
12824         inline whether or not it's a template class.
12825
12826 Mon Mar 28 16:39:26 1994  Jason Merrill  <jason@deneb.cygnus.com>
12827
12828         * parse.y (initdcl0): Add "extern" to current_declspecs if
12829         have_extern_spec && ! used_extern_spcec.
12830
12831         * tree.c (really_overloaded_fn): A fn with more than one
12832         overload.
12833
12834         * pt.c (end_template_decl): Use really_overloaded_fn.
12835
12836         * decl.c (duplicate_decls): When smashing a decl into a previous
12837         definition, keep the old file and line.
12838         Don't deal with overloaded functions.
12839         Lose old code for checking arg types of functions.
12840         Check for overloaded C functions.
12841         (pushdecl): Deal with overloaded functions.
12842         (start_decl): Expect pushdecl to return an appropriate function decl.
12843         (start_function): Likewise.
12844         (push_overloaded_decl): Don't check for overloaded C functions.
12845
12846         * *.c: Stop using DECL_OVERLOADED, it being archaic.
12847         TREE_OVERLOADED should probably go, too.
12848
12849 Mon Mar 28 14:00:45 1994  Ron Guilmette  <rfg@netcom.com>
12850
12851         * typeck.c (comp_target_types): Call comp_target_parms with
12852         strict == 1.
12853
12854 Sun Mar 27 00:07:45 1994  Jason Merrill  <jason@deneb.cygnus.com>
12855
12856         * parse.y (empty_parms): Don't parse () as (...) in extern "C"
12857         sections if we're compiling with -ansi or -pedantic.
12858
12859         * decl.c (decls_match): Don't treat (int) and (int&) as matching.
12860
12861         * decl2.c (grokfield): Don't pedwarn twice about initializing
12862         field.
12863
12864         * decl.c (push_overloaded_decl): Warn about shadowing
12865         constructor.
12866         (redeclaration_error_message): Don't allow 'int a; int a;'
12867
12868         * cvt.c (build_up_reference): Only check for valid upcast if
12869         LOOKUP_PROTECT is set, not just any flag.
12870
12871 Fri Mar 25 01:22:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
12872
12873         * lex.c (check_newline): When we see a #pragma implementation,
12874         also set it for the main input file.
12875
12876         * init.c (build_new): Convert array size argument to size_t.
12877
12878         * parse.y (primary): If we're doing a parenthesized type-id, call
12879         groktypename before passing it to build_new.
12880
12881         * call.c (build_method_call): Deal properly with const and
12882         volatile for instances of reference type.
12883
12884         * decl.c (store_return_init): Change 'if (pedantic) error' to 'if
12885         (pedantic) pedwarn'.
12886
12887         * decl.c (grokdeclarator): Don't complain about putting `static'
12888         and `inline' on template function decls.
12889
12890 Thu Mar 24 23:18:19 1994  Jason Merrill  <jason@deneb.cygnus.com>
12891
12892         * call.c (build_method_call): Preserve const & volatile on
12893         `this'.
12894
12895 Thu Mar 24 16:21:52 1994  Mike Stump  <mrs@cygnus.com>
12896
12897         * init.c (build_new, build_vec_delete): Use global new and delete
12898         for arrays. 
12899         * decl2.c (delete_sanity): Likewise.
12900
12901 Thu Mar 24 02:10:46 1994  Jason Merrill  <jason@deneb.cygnus.com>
12902
12903         * cvt.c (convert_to_reference): If i is an lvalue,
12904         (int &)i -> *(int*)&i, as per 5.2.8p9 of the latest WP.
12905         (convert_force): Call convert_to_reference with LOOKUP_COMPLAIN.
12906
12907 Wed Mar 23 17:45:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
12908
12909         * decl.c (duplicate_decls): Also propagate DECL_TEMPLATE_MEMBERS
12910         and DECL_TEMPLATE_INSTANTIATIONS.
12911
12912         * init.c (build_new): Handle array typedefs properly.
12913
12914 Wed Mar 23 18:23:33 1994  Mike Stump  <mrs@cygnus.com>
12915
12916         30th Cygnus<->FSF merge.
12917
12918 Wed Mar 23 00:46:24 1994  Mike Stump  <mrs@cygnus.com>
12919
12920         * class.c (modify_vtable_entries): Avoid running off the end of the
12921         virtuals list when processing a virtual destructor.
12922         * class.c (get_vtable_entry): Likewise.
12923
12924 Wed Mar 23 00:23:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
12925
12926         * decl.c (duplicate_decls): If two template decls don't match,
12927         just return 0.
12928
12929 Tue Mar 22 23:49:41 1994  Jason Merrill  <jason@deneb.cygnus.com>
12930
12931         * typeck.c (convert_for_assignment): Don't pedwarn about
12932         converting function pointer to void *.
12933
12934 Tue Mar 22 22:23:19 1994  Mike Stump  <mrs@cygnus.com>
12935
12936         Major revamp of pointer to member functions.  Cures major
12937         nonfunctionality when used in casts, and MI situations.
12938
12939         * cvt.c (convert_force): Update call site of build_ptrmemfunc.
12940         * typeck.c (convert_for_assignment): Likewise.
12941         * typeck2.c (digest_init): Likewise.
12942         * typeck2.c (process_init_constructor): Simplify by moving code into
12943         digest_init.
12944         * typeck2.c (digest_init): Do default_conversions on init value, if
12945         we are processing pointer to member functions.
12946         * class.c (get_vfield_offset): Now non-static.  Convert bit offset
12947         into byte offset.
12948         * cp-tree.h (get_vfield_offset): Likewise.
12949         * typeck.c (get_member_function_from_ptrfunc): Convert down to right
12950         instance, before fetching vtable pointer.
12951         * typeck.c (get_delta_difference): New routine.
12952         * typeck.c (build_ptrmemfunc): Revamp to handle casting better, also
12953         get vtable pointer out of right subobject.
12954
12955 Tue Mar 22 17:56:48 1994  Mike Stump  <mrs@cygnus.com>
12956
12957         * search.c (get_binfo): Return NULL instead of aborting, when
12958         passed a UNION_TYPE.
12959
12960 Tue Mar 22 12:44:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
12961
12962         These patches implement handling of redefinition/redeclaration of
12963         templates.
12964
12965         * typeck.c (comptypes): Simplify.  All TEMPLATE_TYPE_PARMs are
12966         considered compatible.
12967
12968         * parse.y (template_def): Pass defn argument to end_template_decl.
12969
12970         * pt.c (end_template_decl): Add defn argument.  Check for
12971         redefinition.  Simplify.
12972
12973         * error.c (OB_UNPUT): New macro, to remove mistakes.
12974         (aggr_variety): Subroutine of dump_aggr_type.
12975
12976         * decl.c (decls_match): Support templates.
12977         (duplicate_decls): No longer static.  Don't try to lay out template
12978         decls.
12979         (pushdecl): Simplify.
12980
12981         * cp-tree.h (DECL_TEMPLATE_MEMBERS): Use DECL_SIZE instead of
12982         DECL_INITIAL.
12983
12984 Mon Mar 21 11:46:55 1994  Jason Merrill  <jason@deneb.cygnus.com>
12985
12986         * error.c (dump_decl): Support class template decls.
12987         (dump_type): Don't adorn template type parms.
12988
12989         * decl.c (duplicate_decls): Save DECL_TEMPLATE_INFO from old decl
12990         if it was a definition.
12991         (redeclaration_error_message): Do the cp_error thang, and reject
12992         redefinition of templates.
12993
12994 Mon Mar 21 19:36:06 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12995
12996         * decl.c (grokdeclarator):  Set TREE_PUBLIC for METHOD_TYPE
12997         in FIELD context, when appropriate.  Also,
12998         CLASSTYPE_INTERFACE_ONLY is irrelevant to setting TREE_PUBLIC.
12999         Also, simplify check for bogus return specifiers.
13000
13001 Mon Mar 21 11:46:55 1994  Jason Merrill  <jason@deneb.cygnus.com>
13002
13003         * parse.y (after_type_declarator1): Expand type_quals.
13004         (notype_declarator1): Likewise.
13005         (absdcl1): Likewise.
13006
13007 Sat Mar 19 01:05:17 1994  Jason Merrill  <jason@deneb.cygnus.com>
13008
13009         * decl.c (grokdeclarator): Treat class-local typedefs like static
13010         members; i.e. 'typedef int f();' means that f is a function type,
13011         not a method type.
13012
13013         * parse.y (decl): Change direct_* back to *.
13014         (type_id): Change direct_abstract_declarator to absdcl.
13015         (direct_declarator, direct_initdecls, direct_initdcl0): Remove again.
13016
13017 Fri Mar 18 12:47:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
13018
13019         These two patches fix crashes on instantiating a template inside a
13020         function with C linkage or containing labels.
13021
13022         * class.c (current_lang_stacksize): No longer static.
13023
13024         * decl.c (struct saved_scope): Add lang_base, lang_stack,
13025         lang_name, lang_stacksize, and named_labels.
13026         (push_to_top_level): Save them.
13027         (pop_from_top_level): Restore them.
13028
13029         * gxxint.texi (Parser): Update.
13030
13031         These two patches finish moving the task of expr/declarator
13032         ambiguity resolution from the lexer to the parser, and add one more
13033         r/r conflict.  START_DECLARATOR can now be nuked.
13034
13035         * parse.y (decl): Add "direct_" in typespec X rules.
13036         (direct_declarator): New nonterminal for
13037         direct_after_type_declarator and direct_notype_declarator.
13038         (direct_initdecls): Like initdecls, but uses direct_initdcl0.
13039         (direct_initdcl0): Like initdcl0, but uses direct_declarator.
13040         (named_parm): Add typespec direct_declarator rule.
13041
13042         * spew.c (yylex): #if 0 out START_DECLARATOR insertion.
13043
13044         These two patches disable some excessive cleverness on the part of
13045         g++; a non-class declaration always hides a class declaration in the
13046         same scope, and g++ was trying to unhide it depending on the
13047         enclosing expression.
13048
13049         * spew.c (arbitrate_lookup): #if 0 out.
13050
13051         * decl.c (lookup_name): Never call arbitrate_lookup.
13052
13053         * parse.y (complex_notype_declarator1): Add '*'
13054         complex_notype_declarator1 and '&' complex_notype_declarator1 rules.
13055
13056         * parse.y (complex_direct_notype_declarator): Restore id_scope
13057         see_typename TYPENAME rule, remove all other rules beginning with
13058         those tokens.
13059         (notype_unqualified_id): Add '~' see_typename IDENTIFIER rule.
13060
13061 Thu Mar 17 17:30:01 1994  Jason Merrill  <jason@deneb.cygnus.com>
13062
13063         These changes fix the compiler's handling of the functional cast/
13064         object declaration ambiguities in section 6.8 of the ARM.  They also
13065         add 11 reduce/reduce conflicts.  Sigh.
13066
13067         * parse.y: Add precedence decls for OPERATOR and '~'.
13068         (notype_unqualified_id): New nonterminal, encompasses all of the
13069         ANSI unqualified-id nonterminal except TYPENAMEs.
13070         (expr_or_declarator): New nonterminal to delay parsing of code like
13071         `int (*a)'.
13072         (primary): Use notype_unqualified_id.
13073         (decl): Add typespec initdecls ';' and typespec declarator ';'
13074         rules.
13075         (initdcl0): Deal with the above.
13076         (complex_notype_declarator1): A notype_declarator that is not also
13077         an expr_or_declarator.
13078         (complex_direct_notype_declarator): A direct_notype_declarator that
13079         doesn't conflict with expr_or_declarator.  Use
13080         notype_unqualified_id.  Remove id_scope see_typename TYPENAME rule.
13081         (functional_cast): New nonterminal, for the three functional cast
13082         rules.  So that they can be moved after
13083         complex_direct_notype_declarator.
13084         (see_typename): Don't accept type_quals any more.
13085
13086         * decl2.c (reparse_decl_as_expr): New function to deal with parse
13087         nodes for code like `int (*a)++;'.      
13088         (reparse_decl_as_expr1): Recursive subroutine of the above.
13089         (finish_decl_parsing): New function to deal with parse nodes for
13090         code like `int (*a);'.  See the difference?
13091
13092 Thu Mar 17 12:16:10 1994  Mike Stump  <mrs@cygnus.com>
13093
13094         These changes break binary compatibility in code with classes
13095         that use virtual bases.
13096
13097         * search.c (dfs_get_vbase_types): Simplify and correct to make
13098         sure virtual bases are initialized in dfs ordering.
13099         * search.c (get_vbase_types): Simplify and make readable.
13100
13101 Thu Mar 17 12:01:10 1994  Jason Merrill  <jason@deneb.cygnus.com>
13102
13103         * parse.y: s/ typename / type_id /g
13104
13105 Wed Mar 16 17:42:52 1994  Kung Hsu  <kung@mexican.cygnus.com>
13106
13107         * parse.y (typespec): add SCOPE TYPENAME for global scoped 
13108         type. e.g. ::B x.
13109
13110         * decl.c (complete_array_type): fix a bug that in -pendantic
13111         mode even there's no initializer, it will continue to build
13112         default index.
13113
13114 Wed Mar 16 17:43:07 1994  Jason Merrill  <jason@deneb.cygnus.com>
13115
13116         * parse.y (direct_notype_declarator): Add PTYPENAME rule, remove
13117         all of the scoped PTYPENAME rules.
13118
13119 Wed Mar 16 16:39:02 1994  Mike Stump  <mrs@cygnus.com>
13120
13121         * init.c (build_offset_ref): The value of A::typedef_name is
13122         always the TYPE_DECL, and never an error.
13123
13124 Tue Mar 15 20:02:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
13125
13126         * search.c (get_base_distance_recursive): Two binfos can only
13127         represent the same object if they are both via_virtual.
13128
13129         * class.c (finish_base_struct): Check vbases for ambiguity, too.
13130
13131         * search.c (get_vbase_types): Accept binfo argument, too.
13132
13133 Tue Mar 15 19:22:05 1994  Kung Hsu  <kung@mexican.cygnus.com>
13134
13135         * decl.c (complete_array_type): complete TYPE_DOMAIN of the 
13136         initializer also, because back-end requires it.
13137
13138 Tue Mar 15 15:33:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
13139
13140         * error.c (dump_expr): Support member functions (which show up as
13141         OFFSET_REFs).
13142
13143 Mon Mar 14 16:24:36 1994  Mike Stump  <mrs@cygnus.com>
13144
13145         * init.c (build_new): Set the return type of multidimensional
13146         news correctly.
13147
13148 Fri Mar 11 15:35:39 1994  Kung Hsu  <kung@mexican.cygnus.com>
13149
13150         * call.c (build_method_call): if basetype not equal to type
13151         of the instance, use the type of the instance in building
13152         destructor.
13153
13154 Thu Mar 10 17:07:10 1994  Kung Hsu  <kung@mexican.cygnus.com>
13155
13156         * parse.y (direct_notype_declarator): add push_nested_type for
13157         'template_type SCOPED_NAME' rule.
13158
13159 Tue Mar  8 00:19:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
13160
13161         * parse.y (parm): Add typed_declspec1 {absdcl, epsilon} rules.
13162
13163 Sat Mar  5 04:47:48 1994  Jason Merrill  <jason@deneb.cygnus.com>
13164
13165         * parse.y (regcast_or_absdcl): New nonterminal to implement late
13166         reduction of constructs like `int ((int)(int)(int))'.
13167         (cast_expr): Use it.
13168         (sub_cast_expr): Everything that can come after a cast.
13169         (typed_declspecs1): typed_declspecs that are not typed_typespecs.
13170         (direct_after_type_declarator): Lose PAREN_STAR_PAREN rule.
13171         (direct_abstract_declarator): Replace '(' parmlist ')' rule with
13172         '(' complex_parmlist ')' and regcast_or_absdcl.
13173         (parmlist): Split
13174         (complex_parmlist): Parmlists that are not also typenames.
13175         (parms_comma): Enabler.
13176         (named_parm): A parm that is not also a typename.  Use declarator
13177         rather than dont_see_typename abs_or_notype_decl.  Expand
13178         typed_declspecs inline.
13179         (abs_or_notype_decl): Lose.
13180         (dont_see_typename): Comment out.
13181         (bad_parm): Break out abs_or_notype_decl into two rules.
13182
13183 Fri Mar  4 18:22:39 1994  Jason Merrill  <jason@deneb.cygnus.com>
13184
13185         * decl2.c (reparse_decl_as_casts): New function to change parse
13186         nodes for `(int)(int)(int)' from "function taking int and returning
13187         function taking int and returning function taking int" to "... cast
13188         to int, cast to int, cast to int".
13189
13190         * decl2.c (reparse_decl_as_expr): Recursive function to change
13191         parse nodes for `A()()' from "function returning function returning
13192         A" to "A().operator()".
13193
13194         * parse.y (primary): Replace `typespec LEFT_RIGHT' rule with
13195         `typespec fcast_or_absdcl' rule.
13196         (fcast_or_absdcl): New nonterminal to implement late reduction of
13197         constructs like `A()()()()'.
13198         (typename): Replace `typespec absdcl1' rule with
13199         `typespec direct_abstract_declarator' rule.
13200         (direct_abstract_declarator): Replace `LEFT_RIGHT type_quals' rule
13201         with `fcast_or_absdcl type_quals' rule.
13202
13203 Fri Mar  4 16:18:03 1994  Mike Stump  <mrs@cygnus.com>
13204
13205         * tree.c (lvalue_p): Improve OFFSET_REF handling, so that it
13206         matches Section 5.5.
13207
13208 Fri Mar  4 14:01:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
13209
13210         * error.c (dump_type_prefix): Don't print basetype twice for
13211         pmfs.
13212
13213 Fri Mar  4 13:24:33 1994  Mike Stump  <mrs@cygnus.com>
13214
13215         * typeck.c (convert_arguments): Handle setHandler(A::handlerFn)
13216         so that it is like setHandler(&A::handlerFn).  Cures an `invalid
13217         lvalue in unary `&''.
13218
13219 Fri Mar  4 11:15:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
13220
13221         * gxxint.texi (Copying Objects): New section discussing default
13222         op= problems with virtual inheritance.
13223
13224         * decl2.c (grokoptypename): Just does grokdeclarator and
13225         build_typename_overload, since the parser can't call grokdeclarator
13226         directly.
13227
13228         * method.c (build_typename_overload): Set IDENTIFIER_GLOBAL_VALUE
13229         and TREE_TYPE on generated identifiers.
13230
13231         * decl.c (grokdeclarator): Don't deal with TYPE_EXPRs anymore.
13232
13233         * parse.y (parm): Convert `const char *' to `__opPCc' here.
13234
13235         * error.c (dump_decl): Say sorry rather than my_friendly_aborting
13236         if we can't figure out what to do.
13237         (dump_type*): Likewise.
13238
13239         * typeck2.c (build_m_component_ref): 'component' is an expr, not
13240         a decl.  Also move the IS_AGGR_TYPE check after the stripping of
13241         REFERENCE_TYPE.
13242
13243 Fri Mar  4 04:46:05 1994  Mike Stump  <mrs@cygnus.com>
13244
13245         * call.c (build_method_call): Handle b->setHandler(A::handlerFn)
13246         so that it is like b->setHandler(&A::handlerFn).  Cures an `invalid
13247         lvalue in unary `&''.
13248
13249 Thu Mar  3 12:38:15 1994  Jason Merrill  <jason@deneb.cygnus.com>
13250
13251         * parse.y: Add precedence specification for START_DECLARATOR.
13252         (type_quals): Move before primary.
13253         (typename): Move before typed_declspecs, add 'typespec absdcl1' rule.
13254
13255         * decl2.c (grokoptypename): Lose.
13256
13257         * decl.c (grokdeclarator): Parse TYPE_EXPRs in the initial scan,
13258         rather than waiting until later.
13259
13260 Wed Mar  2 14:12:23 1994  Jason Merrill  <jason@deneb.cygnus.com>
13261
13262         * parse.y (unary_expr): Use 'typename' in 'new' rules, rather
13263         than expanding it inline.
13264         (typename): Expand empty option of (former) absdcl inline.
13265         (abs_or_notype_decl): Likewise.
13266         (absdcl): Lose empty rule.
13267         (conversion_declarator): New nonterminal for 'typename' of 'operator
13268         typename'.
13269         (operator_name): Use it instead of absdcl.
13270
13271         * parse.y: Add precedence declarations for SCOPED_TYPENAME,
13272         TYPEOF, and SIGOF.
13273         (typed_declspecs): Accept typed_typespecs, rather than typespec
13274         directly.  Add rules with reserved_typespecquals.
13275         (reserved_declspecs): Don't accept typespecqual_reserved at the
13276         beginning of the list.  The typed_declspecs rule will deal with this
13277         omission.
13278         (declmods): Accept nonempty_type_quals, rather than TYPE_QUAL
13279         directly.
13280
13281         * parse.y (direct_notype_declarator,
13282         direct_after_type_declarator, direct_abstract_declarator): Split up
13283         the declarator1 nonterminals to match the draft standard and avoid
13284         ambiguities.
13285         (new_type_id, new_declarator, direct_new_declarator,
13286         new_member_declarator): New nonterminals to implement the subset of
13287         'typename' allowed in new expressions.
13288         (unary_expr): Use new_type_id instead of typename.
13289         (after_type_declarator1, absdcl1): Fix semantics of member pointers.
13290         (abs_member_declarator, after_type_member_declarator): Lose.
13291
13292         * parse.y (absdcl1): Don't require parens around
13293         abs_member_declarator.
13294         (abs_member_declarator): Lose see_typename from rules.
13295         (after_type_member_declarator): Likewise.
13296
13297         * tree.c (get_identifier_list): New function, containing code
13298         previously duplicated in get_decl_list and list_hash_lookup_or_cons.
13299         (get_decl_list): Use it.
13300         (list_hash_lookup_or_cons): Likewise.
13301
13302         * parse.y (typed_declspecs, declmods): It's not necessary to hash
13303         the declspecs on class_obstack, so don't.  This way typed_typespecs
13304         can reduce to typed_declspecs.
13305
13306 Wed Mar  2 14:29:18 1994  Jason Merrill <jason@cygnus.com>
13307
13308         * cvt.c (build_up_reference): If we aren't checking visibility,
13309         also allow base->derived conversions.
13310
13311 Mon Feb 28 15:14:29 1994  Per Bothner  <bothner@kalessin.cygnus.com>
13312
13313         * typeck.c (build_c_cast): Remove bogus hack when converting
13314         to a reference type.
13315
13316         * cp-tree.h (lang_decl::vbase_init_list, DECL_VBASE_INIT_LIST):
13317         Removed, not used.
13318         (lang_stype::methods, lang_decl::next_method): New fields.
13319         (CLASSTYPE_METHODS, DECL_NEXT_METHOD):  New macros.
13320         * decl.c (duplicate_decls):  Preserve DECL_NEXT_METHOD.
13321
13322         * cp-tree.h, decl2.c (flag_vtable_hack):  New flag.
13323         * decl2.c (finish_vtable_vardecl):  If flag_vtable_hack,
13324         and  !CLASSTYPE_INTERFACE_KNOWN, try to use the presence of
13325         a non-inline virtual function to control emitting of vtables.
13326         * class.c (finish_struct):  Build CLASSTYPE_METHODS list.
13327         * search.c (build_vbase_vtables_init):  Don't assemble_external
13328         (yet) if flag_vtable_hack.
13329         * class.c (build_vfn_ref):  Likewise.
13330
13331 Mon Feb 28 14:54:13 1994  Jason Merrill  <jason@deneb.cygnus.com>
13332
13333         * parse.y (component_decl): Don't include "typed_declspecs
13334         declarator ';'" speedup, since it breaks enums.
13335
13336 Fri Feb 25 15:43:44 1994  Per Bothner  <bothner@kalessin.cygnus.com>
13337
13338         * class.c (finish_struct):  Minor optimization for building
13339         fn_fields list.
13340
13341 Fri Feb 25 15:23:42 1994  Jason Merrill  <jason@deneb.cygnus.com>
13342
13343         * decl.c (start_function): Fix detection of function overloading.
13344
13345 Thu Feb 24 22:26:19 1994  Mike Stump  <mrs@cygnus.com>
13346
13347         * lex.c (check_newline): #pragma interface can take a string
13348         argument, just like #pragma implementation.  #pragma implementation
13349         checks for garbage on the line, line #pragma interface does.  Main
13350         input files do not auto implement like named files, #pragma
13351         implementation must be used explicitly.
13352
13353 Thu Feb 24 17:09:01 1994  Jason Merrill  <jason@deneb.cygnus.com>
13354
13355         * parse.y (components): Handle list of one again.
13356         (notype_components): Likewise.
13357         (after_type_declarator1): Take maybe_raises out again.
13358
13359         * gxxint.texi (Parser): Document additional r/r conflict.
13360
13361 Wed Feb 23 14:42:55 1994  Jason Merrill  <jason@deneb.cygnus.com>
13362
13363         * gxxint.texi (Parser): Add node.
13364
13365         * Makefile.in (stamp-parse): Update expected conflict count.
13366
13367         * parse.y (various): Replace "declmods declarator" with "declmods
13368         notype_declarator".  The comment saying that "declmods declarator ';'"
13369         corresponds to "int i;" was wrong; it corresponds to "const i;".
13370         (component_decl): Add "typed_declspecs declarator ';'" rule; this
13371         *does* correspond to "int i;".  Change "declmods components" to
13372         "declmods notype_components".
13373         (components): Don't deal with a list of one anymore.
13374         (notype_components): New nonterminal, corresponds to notype_declarator.
13375         ({after_,no}type_component_decl{,0}): More new nonterminals.
13376         ({after_,no}type_declarator): Fold in START_DECLARATOR token.
13377         Eliminates four reduce/reduce conflicts.
13378
13379         (expr): Depend on nontrivial_exprlist instead of nonnull_exprlist.
13380         (nontrivial_exprlist): New nonterminal: A list of at least two
13381         expr_no_commas's.
13382         (nonnull_exprlist): Depend on nontrival_exprlist.
13383         Eliminates four reduce/reduce conflicts.
13384
13385         (named_class_head): Move intermediate code block into separate
13386         nonterminal so that we can stick %prec EMPTY on it.
13387
13388         Add more %prec EMPTY's to eliminate remaining shift/reduce
13389         conflicts.
13390
13391         (after_type_declarator): Add maybe_raises to fndecl rules.
13392         (after_type_declarator_no_typename): Remove.
13393         For correctness.
13394
13395         Document remaining reduce/reduce conflicts.
13396
13397 Tue Feb 22 12:10:32 1994  Jason Merrill  <jason@deneb.cygnus.com>
13398
13399         * search.c (get_base_distance): Only bash BINFO_INHERITANCE_CHAIN
13400         (TYPE_BINFO (type)) if we care about the path.
13401
13402         * tree.c (lvalue_p): A COND_EXPR is an lvalue if both of the
13403         options are.
13404
13405 Mon Feb 21 19:59:40 1994  Mike Stump  <mrs@cygnus.com>
13406
13407         * Makefile.in (mostlyclean): lex.c is a source file, don't
13408         remove.
13409
13410 Sat Feb 19 01:27:14 1994  Jason Merrill  <jason@deneb.cygnus.com>
13411
13412         * parse.y: Eliminate 20 shift/reduce conflicts.
13413
13414 Fri Feb 18 11:49:42 1994  Jason Merrill  <jason@deneb.cygnus.com>
13415
13416         * pt.c (type_unification): Add subr argument; if set, it means
13417         that we are calling ourselves recursively, so a partial match is OK.
13418         (unify): Support pointers to methods and functions.
13419         (tsubst): Support method pointers.
13420         * decl.c (build_ptrmemfunc_type): No longer static, so that
13421         tsubst can get at it.
13422
13423         * init.c (is_aggr_typedef): Pretend template type parms are
13424         aggregates.
13425         * decl2.c (build_push_scope): If cname refers to a template type
13426         parm, just grin and nod.        
13427
13428         * call.c (build_overload_call_real): Pass subr argument to
13429         type_unification.
13430         * pt.c (do_function_instantiation): Likewise.
13431         * class.c (instantiate_type): Likewise.
13432
13433         * search.c (get_base_distance): If BINFO is a binfo, use it and
13434         don't mess with its BINFO_INHERITANCE_CHAIN.
13435
13436         * cvt.c (convert_to_reference): Fix temporary generation.
13437         If ambiguous, return error_mark_node.
13438
13439         * init.c (build_new): Put back some necessary code.
13440
13441 Thu Feb 17 15:39:47 1994  Jason Merrill  <jason@deneb.cygnus.com>
13442
13443         * init.c (build_new): Deal with array types properly.
13444
13445         * search.c (get_binfo): Become a shell for get_base_distance.
13446         (get_binfo_recursive): Lose.
13447         (get_base_distance_recursive): Find the path to the via_virtual base
13448         that provides the most access.
13449         (get_base_distance): Likewise.
13450
13451         * parse.y (explicit_instantiation): Syntax is 'template class
13452         A<int>', not 'template A<int>'.
13453
13454         * typeck.c (convert_for_initialization): Remove bogus warning.
13455
13456         * parse.y (datadef): Revert patch of Oct 27.
13457
13458 Thu Feb 17 15:12:29 1994  Per Bothner  <bothner@kalessin.cygnus.com>
13459
13460         * class.c (build_vfn_ref):  Cast delta field to ptrdiff_type_node,
13461         rather than integer_type_node.  Does wonders for the Alpha.
13462
13463 Thu Feb 17 13:36:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
13464
13465         * decl.c (build_ptrmemfunc_type): Make sure that the pmf type
13466         goes onto the same obstack as its target type.
13467
13468 Wed Feb 16 00:34:46 1994  Jason Merrill  <jason@deneb.cygnus.com>
13469
13470         * cvt.c (convert_to_reference): If converting via constructor
13471         on local level, go back to build_cplus_new approach.
13472
13473         * tree.c (build_cplus_new): If with_cleanup_p, set cleanup slot
13474         to error_mark_node to prevent expand_expr from building a cleanup
13475         for this variable.
13476
13477         * lex.c (default_assign_ref_body): Return *this from the memcpy
13478         version, too.
13479
13480         * decl.c (grok_reference_init): Just return if called with
13481         error_mark_node, don't worry about initializing non-const reference
13482         with temporary.
13483
13484         * cvt.c (convert_to_reference): Do the right thing for
13485         non-aggregate reference conversions, pedwarn when generating a
13486         non-const reference to a temporary.
13487
13488         * class.c (finish_struct): TYPE_HAS_COMPLEX_{INIT,ASSIGN}_REF and
13489         TYPE_NEEDS_CONSTRUCTING all depend on TYPE_USES_VIRTUAL_BASECLASSES
13490         again.
13491
13492 Tue Feb 15 19:47:19 1994  Jason Merrill  <jason@deneb.cygnus.com>
13493
13494         * decl.c (grok_reference_init): Pawn off a lot of the work on
13495         convert_to_reference.  Generally do the right thing.
13496
13497         * cvt.c (convert_to_reference): Conform to the initial comment;
13498         i.e. don't create temps if decl != error_mark_node.  Handle
13499         cleanups better for temps that do get created.  Don't pretend
13500         that we can use an 'A' to initialize a 'const double &' just by
13501         tacking on a NOP_EXPR.  Support LOOKUP_SPECULATIVELY.
13502
13503         * call.c (build_method_call): Set TREE_HAS_CONSTRUCTOR on
13504         constructor calls.      
13505
13506 Mon Feb 14 14:50:17 1994  Jason Merrill  <jason@deneb.cygnus.com>
13507
13508         * decl.c (grok_reference_init): Make a temporary for initializing
13509         const reference from constant expression.
13510
13511 Mon Feb 14 11:31:31 1994  Per Bothner  <bothner@kalessin.cygnus.com>
13512
13513         * cp-tree.h, decl.c (set_identifier_local_value):  Deleted function.
13514         * decl.c (pushdecl):  Define decl in correct binding_level
13515         (which isn't always the inner_binding_level).
13516
13517         * cvt.c (build_up_reference):  Don't ever call expand_aggr_init.
13518         It's ugly, and I don't think it's the right thing to do.
13519
13520         * cp-tree.h, class.c, decl.c, decl2.c, sp/search.c: 
13521         Remove NEW_CLASS_SCOPING, assuming it is always 1.
13522         * decl.c (pop_decl_level):  Removed; manually inlined.
13523
13524 Sun Feb 13 19:04:56 1994  Jason Merrill  <jason@deneb.cygnus.com>
13525
13526         * class.h (candidate): Add basetypes field.
13527
13528         * call.c (build_method_call): Do access checking after choosing a
13529         function, not before.
13530
13531         * Makefile.in (cvt.o, call.o, method.o): Depend on class.h.
13532         (mostlyclean): Remove ../cc1plus.
13533
13534 Fri Feb 11 11:52:26 1994  Jason Merrill  <jason@deneb.cygnus.com>
13535
13536         * class.c (finish_struct): Don't allow adjusting access to a field
13537         of a base class if a local field has the same name.
13538
13539         * error.c (dump_type_prefix): Output basetype for METHOD_TYPEs.
13540
13541 hu Jan 13 17:55:51 EST 1994 Gnanasekaran Swaminathan <gs4t@virginia.edu>
13542
13543             * cp-tree.h (DESTRUCTOR_NAME_P): do not confuse AUTO_TEMP names
13544             with destructor names when either NO_DOLLAR_IN_LABEL or
13545             NO_DOT_IN_LABEL are not defined.
13546
13547             Now `template <class T, T f(T&), const T*> class A {...}' works.
13548
13549             * pt.c (grok_template_type): substitute template parm types
13550             with actual types in complex type as well.
13551             (coerce_template_parms): update the grok_template_type ()
13552             function call.
13553
13554         * pt.c (tsubst): Traverse method list using DECL_CHAIN.
13555
13556         * decl.c (grok_op_properties): Allow operator++/-- to have
13557         default arguments.
13558
13559         * typeck2.c (store_init_value): Don't abort when called to
13560         initialize a type that needs constructing with a CONSTRUCTOR.
13561
13562         * init.c (expand_aggr_init_1, CONSTRUCTOR case): If
13563         store_init_value fails, build and expand an INIT_EXPR.  If
13564         store_init_value succeeds, call expand_decl_init.
13565
13566 Fri Feb 11 02:49:23 1994  Mike Stump  <mrs@cygnus.com>
13567
13568         * class.c (build_vbase_path): Use complete_type_p instead of
13569         resolves_to_fixed_type_p to determine if the virtual bases are in
13570         their right place for the type of expr.  Cures problem of thinking a
13571         virtual base class is one place, when it is in fact someplace else.
13572
13573 Fri Feb 11 00:26:46 1994  Mike Stump  <mrs@cygnus.com>
13574
13575         * init.c (resolve_offset_ref): Make sure we first convert to
13576         intermediate type, if given, when dealing with members off `this'.
13577         Solves an incorrrect `type `foo' is not a base type for type
13578         `multiple'' when it is infact, a base type.
13579
13580 Thu Feb 10 21:49:35 1994  Mike Stump  <mrs@cygnus.com>
13581
13582         * class.c (modify_other_vtable_entries): Use get_binfo, instead
13583         of binfo_value.  Solves problem with compiler giving a `base class
13584         `B' ambiguous in binfo_value (compiler error)' on complex MI
13585         herarchies, when a virtual function is first defied in a virtual
13586         base class.
13587
13588 Thu Feb 10 17:19:32 1994  Mike Stump  <mrs@cygnus.com>
13589
13590         * class.c (build_vbase_path): Don't complain about ambiguous
13591         intermediate conversion when converting down to a virtual base
13592         class, even if they might seem to be ambiguous.
13593
13594 Thu Feb 10 12:18:26 1994  Jason Merrill  <jason@deneb.cygnus.com>
13595
13596         * typeck2.c (build_functional_cast): #if 0 out constructor
13597         inheritance code, improve error messages.
13598
13599         * class.c (finish_base_struct): Complain about base with only
13600         non-default constructors in derived class with no constructors.
13601
13602         * decl.c (grokdeclarator): Fix detection of virtual new/delete.
13603
13604 Wed Feb  9 22:02:32 1994  Mike Stump  <mrs@cygnus.com>
13605
13606         * search.c (build_mi_virtuals, add_mi_virtuals,
13607         report_ambiguous_mi_virtuals): Removed unneeded code.
13608         * class.c (finish_struct_bits): Likewise.
13609
13610 Wed Feb  9 11:27:17 1994  Jason Merrill  <jason@deneb.cygnus.com>
13611
13612         * pt.c (end_template_instantiation): Push decl before
13613         pop_from_top_level.
13614
13615         * typeck2.c (build_m_component_ref): Make sure datum is of
13616         aggregate type.
13617
13618         * init.c (get_type_value): New function, returns
13619         IDENTIFIER_TYPE_VALUE or IDENTIFIER_CLASS_TYPE_VALUE or NULL_TREE.
13620
13621         * call.c (build_method_call): Don't die on call to destructor for
13622         non-type.
13623
13624         * decl.c (grokdeclarator): Complain about virtual op new and op
13625         delete, make static virtuals unvirtual instead of unstatic.
13626
13627         * typeck.c (build_c_cast): Also call default_conversion on
13628         methods.
13629
13630         * decl.c (grokdeclarator): Don't complain about anonymous
13631         bitfields.
13632
13633         * parse.y (simple_stmt, for loops): Move the continue point after
13634         the cleanups.
13635
13636         * class.c (finish_struct): Fix setting of
13637         TYPE_HAS_COMPLEX_INIT_REF.
13638
13639 Tue Feb  8 13:21:40 1994  Jason Merrill  <jason@deneb.cygnus.com>
13640
13641         * init.c (build_new): Deal with `new double (1)'.
13642
13643         * class.c (finish_struct): TYPE_HAS_COMPLEX_*_REF are supersets of
13644         TYPE_HAS_REAL_*_REF, but TYPE_HAS_COMPLEX_INIT_REF is independent of
13645         TYPE_NEEDS_CONSTRUCTING.
13646
13647         * decl.c (duplicate_decls): Propagate access decls.
13648
13649         * typeck2.c (process_init_constructor): Accept empty_init_node
13650         for initializing unions.
13651
13652         * class.c, lex.c, cp-tree.h: Use
13653         TYPE_HAS_COMPLEX_ASSIGN_REF where TYPE_HAS_REAL_ASSIGN_REF was used
13654         before, use TYPE_HAS_COMPLEX_INIT_REF for TYPE_NEEDS_CONSTRUCTING in
13655         some places.
13656
13657         * decl.c (finish_decl): Don't complain about uninitialized const
13658         if it was initialized before.
13659
13660 Mon Feb  7 18:12:34 1994  Jason Merrill  <jason@deneb.cygnus.com>
13661
13662         * lex.c (default_assign_ref_body): Don't deal with vbases for
13663         now.
13664
13665         * decl.c (finish_decl): Fix reversed logic for objects and other
13666         things that need to be constructed but have no initializer.
13667
13668         * class.c (finish_struct): Don't set TYPE_HAS_* flags that are
13669         set by grok_op_properties or finish_decl.
13670
13671         * decl.c: Don't warn about extern redeclared inline unless
13672         -Wextern-inline is given.
13673         * decl2.c (lang_decode_option): Likewise.
13674         * cp-tree.h: Likewise.
13675
13676 Mon Feb  7 17:29:24 1994  Per Bothner  <bothner@kalessin.cygnus.com>
13677
13678         * decl.c (pushdecl_with_scope): Fix thinko.  Add forward
13679         declaration.
13680
13681         * decl.c (pushdecl_with_scope):  New function.
13682         * decl.c (pushdecl_top_level):  Use new function.
13683         * decl.c (pushtag):  Initialize newdecl.
13684         * decl.c (pushtag):  Push new type decl into correct scope.
13685
13686 Mon Feb  7 14:42:03 1994  Jason Merrill  <jason@deneb.cygnus.com>
13687
13688         * call.c, cvt.c, init.c, search.c, cp-tree.h:
13689         Eradicate LOOKUP_PROTECTED_OK.
13690
13691 Mon Feb  7 13:57:19 1994  Per Bothner  <bothner@kalessin.cygnus.com>
13692
13693         * decl.c (pushtag, xref_tag), cp-tree.h:  Add extra parameter
13694          'globalize' to signify implicit declarations.
13695         * decl.c (globalize_nested_type, maybe_globalize_type):  Removed.
13696         * decl.c (set_identifier_type_value_with_scope):  New function.
13697         * decl.c (set_identifier_local_value):  Simplify.
13698         * spew.c (yylex, do_addr):  Modify to return a _DEFN if a
13699         forward declaration (followed by ';' and not preceded by 'friend').
13700         * class.c, decl.c, except.c, init.c, parse.y,
13701         pt.c, search.c: Add new argument to calls to xref_tag and
13702         pushtag.
13703
13704 Mon Feb  7 00:22:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
13705
13706         * cp-tree.h (ACCESSIBLY_UNIQUELY_DERIVED_P): New macro, means what
13707         ACCESSIBLY_DERIVED_FROM_P meant before.
13708         (ACCESSIBLY_DERIVED_FROM_P): Now disregards ambiguity.
13709
13710         * cvt.c (build_up_reference): Call get_binfo with PROTECT == 1.
13711
13712         * search.c (get_base_distance_recursive): Members and friends of
13713         a class X can implicitly convert an X* to a pointer to a private or
13714         protected immediate base class of X.
13715         (get_binfo_recursive): Likewise.
13716         (get_base_distance): Ignore ambiguity if PROTECT < 0.
13717         (get_binfo): Lose multiple values of PROTECT.
13718         (compute_access): Protected is OK if the start of the
13719         search is an accessible base class of current_class_type.
13720
13721         * method.c (build_opfncall): Do check access on operator new here.
13722
13723         * decl.c (finish_function): Don't check access on operator new
13724         here.
13725
13726 Sun Feb  6 14:06:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
13727
13728         * decl.c (xref_tag): The base of a derived struct is NOT always
13729         public.  Duh.
13730
13731         * pt.c (do_explicit_instantiation): New function, called from
13732         parser to do explicit function instantiation.
13733         (type_unification): Allow the args list to be terminated with
13734         void_list_node.
13735         (do_pending_expansions): Look at i->interface for non-member
13736         templates.
13737
13738         * parse.y (datadef): Move explicit_instantiation here.
13739         (structsp): From here.
13740         (datadef): Complain about `int;'.
13741
13742 Sun Feb  6 12:33:18 1994  Per Bothner  <bothner@kalessin.cygnus.com>
13743
13744         * pt.c (end_template_instantiation), cp-tree.h:  Remove unused
13745         second parameter, and simplify first from a TREE_LIST where
13746         we only care about its TREE_VALUE to just the value (an IDENTIFIER).
13747         * pt.c (instantiate_member_templates):  Simplify argument list
13748         from a TREE_LIST to just an IDENTIFIER.
13749         * lex.c (yyprint):  PRE_PARSED_CLASS_DECL is now just an IDENTIFIER.
13750         * parse.y (template_instantiate_once):  Simplify accordingly.
13751         * decl.c (inner_binding_level): New.  Use various places to
13752         simplify.
13753
13754 Sun Feb  6 02:49:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
13755
13756         * typeck2.c (build_functional_cast): int() -> int(0).
13757
13758 Sat Feb  5 00:53:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
13759
13760         * class.c (finish_struct): Don't do a bitwise copy for op= if the
13761         class has a virtual function table.
13762
13763         * typeck.c (convert_for_initialization): Restore warnings about
13764         not using defined op=.  Should really be my_friendly_aborts, I
13765         s'pose.
13766
13767 Fri Feb  4 14:21:00 1994  Jason Merrill  <jason@deneb.cygnus.com>
13768
13769         * class.c (finish_struct): Tidy up conditions for doing bitwise
13770         copies of objects.
13771
13772         * decl.c (build_default_constructor): #if 0 out.
13773
13774         * *: Eradicate TYPE_GETS_{ASSIGNMENT,ASSIGN_REF,CONST_ASSIGN_REF,
13775         CONST_INIT_REF}, TYPE_HAS_REAL_CONSTRUCTOR.
13776
13777         * decl.c (grokdeclarator): Don't return void_type_node for
13778         friends being defined here.
13779
13780         * init.c (perform_member_init): Only do the init if it's useful.
13781
13782         * lex.c (default_copy_constructor_body): If we don't need to do
13783         memberwise init, just call __builtin_memcpy.
13784         (default_assign_ref_body): Likewise.
13785
13786         * decl.c (grokdeclarator): If friendp && virtualp, friendp = 0.
13787
13788 Fri Feb  4 13:02:56 1994  Mike Stump  <mrs@cygnus.com>
13789
13790         * lex.c (reinit_parse_for_method, cons_up_default_function):
13791         Don't give warn_if_unknown_interface warning when it came from a
13792         system header file.
13793         * pt.c (end_template_decl, instantiate_template): Likewise.
13794         * decl.c (start_decl): Likewise.
13795
13796 Fri Feb  4 00:41:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
13797
13798         * decl.c (grokdeclarator): Don't try to set TYPE_WAS_ANONYMOUS on
13799         enums.
13800
13801         * decl2.c (constructor_name_full): Use IS_AGGR_TYPE_CODE instead of
13802         IS_AGGR_TYPE, since we don't know it's a type.
13803
13804 Thu Feb  3 11:36:46 1994  Jason Merrill  <jason@deneb.cygnus.com>
13805
13806         * decl.c (grokdeclarator): Don't complain about anonymous unions.
13807
13808         * cp-tree.h (TYPE_WAS_ANONYMOUS): This struct was originally
13809         anonymous, but had a name given to it by a typedef.
13810
13811         * decl.c (grokdeclarator): When renaming an anonymous struct, set
13812         TYPE_WAS_ANONYMOUS.
13813
13814         * decl2.c (constructor_name_full): Use TYPE_WAS_ANONYMOUS.
13815
13816         * cp-tree.h (DECL_UNDEFINED_FRIENDS): #if 0 out.
13817
13818         * init.c (xref_friend): Don't set up DECL_UNDEFINED_FRIENDS.
13819         (embrace_waiting_friends): Don't use DECL_UNDEFINED_FRIENDS.
13820         
13821         * decl.c (grokdeclarator): Set TYPE_NESTED_NAME properly on nested
13822         anonymous structs that get typedef'd.
13823
13824         * decl.c (grokdeclarator): Always return void_type_node for
13825         friends.
13826
13827         * error.c (dump_function_decl): Don't use DECL_CLASS_CONTEXT for
13828         friends.
13829         (dump_function_decl): Don't print out default args for
13830         a function used in an expression.
13831
13832         * decl.c (grokdeclarator): Give error on abstract declarator used
13833         in an invalid context (i.e. `void (*)();').
13834
13835         * error.c (cp_line_of): Support _TYPE nodes.
13836         (cp_file_of): Likewise.
13837
13838         * cvt.c (build_up_reference): Don't abort if passed a SAVE_EXPR;
13839         it can happen for the RHS of an assignment stmt where the LHS is
13840         a COND_EXPR.
13841
13842         * init.c (expand_aggr_init_1): Deal with bracketed initializer
13843         lists properly.
13844
13845         * class.c (finish_struct): Deal with enumerators and typedefs
13846         again.
13847
13848 Wed Feb  2 11:30:22 1994  Jason Merrill  <jason@deneb.cygnus.com>
13849
13850         * class.c (finish_struct): Tidy up loop over fields.
13851
13852         * errfn.c (cp_thing): Don't advance twice after a format.
13853
13854         * class.c (finish_struct): Complain about needing a constructor
13855         if a member has only non-default constructors, and don't try to
13856         generate a default constructor.
13857
13858         * decl.c (finish_decl): Also do the constructor thing if
13859         TYPE_NEEDS_CONSTRUCTING is set (for arrays).
13860
13861         * search.c (unuse_fields): New function: mark all fields in this
13862         type unused.
13863         (dfs_unuse_fields): Helper function.
13864
13865         * class.c (pushclass): If the new class is the same as the old
13866         class, still unuse the fields.
13867         (unuse_fields): Move to search.c.
13868
13869         * decl.c (grok_op_properties): Add friendp argument.
13870         (grokfndecl): Pass it.
13871         (start_method): Likewise.
13872
13873         * decl2.c (delete_sanity): Add use_global_delete parameter to catch
13874         ::delete calls.
13875
13876         * parse.y (unary_expr): Pass new parameter to delete_sanity.
13877
13878         * lex.c (default_copy_constructor_body): Don't choke if the union
13879         has no fields.
13880         (default_assign_ref_body): Likewise.
13881
13882         * call.c (compute_conversion_costs_ansi): Do the right thing for
13883         ellipsis matches.
13884
13885         * decl.c (push_to_top_level): Optimize.
13886
13887         * decl.c (start_function): Look for the lexical scope of a friend
13888         in DECL_CLASS_CONTEXT.
13889
13890         * init.c (do_friend): Set DECL_CLASS_CONTEXT on global friends.
13891
13892 Tue Feb  1 15:59:24 1994  Jason Merrill  <jason@deneb.cygnus.com>
13893
13894         * cp-tree.h (TREE_GETS_PLACED_NEW): New macro.
13895
13896         * init.c (init_init_processing): Don't assign BIN/BID to the
13897         IDENTIFIER_GLOBAL_VALUEs of their respective operators.
13898         (build_new): Check TREE_GETS_PLACED_NEW.
13899
13900         * decl.c (grok_op_properties): Don't set TREE_GETS_NEW for a decl of
13901         op new with placement, set TREE_GETS_PLACED_NEW.
13902
13903         * cp-tree.h (ANON_UNION_P): New macro.  Applies to decls.
13904
13905         * class.c (finish_struct): Don't treat anonymous unions like
13906         other aggregate members.  Do synthesize methods for unions without
13907         a name, since they may or may not be "anonymous unions".
13908
13909         * decl2.c (grok_x_components): Wipe out memory of synthesized methods
13910         in anonymous unions.
13911
13912         * lex.c (default_copy_constructor_body): Support unions.
13913         (default_assign_ref_body): Likewise.
13914
13915 Mon Jan 31 12:07:30 1994  Jason Merrill  <jason@deneb.cygnus.com>
13916
13917         * cp-tree.h: Fix documentation of LOOKUP_GLOBAL, add prototypes.
13918
13919         * error.c (args_as_string): New function (%A), like type_as_string
13920         except NULL_TREE -> "..."
13921
13922         * call.c (build_overload_call_real): Fix for new overloading.
13923
13924         * decl.c (grok_op_properties): Set all of the TYPE_OVERLOADS_* flags
13925         here.
13926
13927         * parse.y (operator_name): Instead of here.
13928
13929         * typeck2.c (build_functional_cast): Treat a TREE_LIST as a list
13930         of functions.
13931
13932         * call.c (build_overload_call_real): Support LOOKUP_SPECULATIVELY.
13933
13934         * method.c (build_opfncall): Don't need to massage return value
13935         any more, call build_overload_call with all flags.
13936
13937         * typeck.c (build_x_binary_op): Put back speculative call to
13938         build_opfncall.
13939         (build_x_unary_op): Likewise.
13940         (build_x_conditional_expr): Likewise.
13941
13942 Mon Jan 31 10:00:30 1994  Mike Stump  <mrs@cygnus.com>
13943
13944         * cvt.c (build_type_conversion_1): Change call to pedwarn into
13945         warning, and conditionalize upon warn_cast_qual.
13946
13947 Fri Jan 28 11:48:15 1994  Jason Merrill  <jason@deneb.cygnus.com>
13948
13949         * search.c (lookup_field): If xbasetype is a binfo, copy it to
13950         avoid clobbering its inheritance info.
13951
13952         * call.c (build_method_call): Don't overwrite basetype_path with
13953         TYPE_BINFO (inst_ptr_basetype) if they have the same type.
13954
13955         * search.c (compute_access): Fix handling of protected inheritance
13956         and friendship with the enclosing class.
13957
13958         * typeck2.c (store_init_value): Allow passing of TREE_CHAIN for
13959         initialization of arbitrary variable.
13960
13961         * typeck2.c (build_functional_cast): Only try calling a method if
13962         one exists.
13963
13964         * decl.c (grokdeclarator): Move handling of constructor syntax
13965         initialization into first loop for generality.
13966         (parmlist_is_random): Lose.
13967
13968         * lex.c (cons_up_default_function): Set TREE_PARMLIST on arguments
13969         to default function.
13970
13971 Thu Jan 27 19:26:51 1994  Jason Merrill  <jason@deneb.cygnus.com>
13972
13973         * decl.c (grokparms): Abort if we get called with something we don't
13974         expect.
13975
13976 Thu Jan 27 17:37:25 1994  Mike Stump  <mrs@cygnus.com>
13977
13978         * call.c (build_overload_call_real): Change argument complain to
13979         flags to match style of rest of code.  Pass it down to
13980         build_function_call_real as necessary.
13981         * call.c (build_overload_call, build_overload_call_maybe): Change
13982         argument complain to flags to match style of rest of code.
13983         * cp-tree.h (build_function_call_real): Added fourth flags
13984         argument.
13985         * cvt.c (convert_to_reference): Only give warning messages, if
13986         LOOKUP_COMPLAIN is set.
13987         * typeck.c (build_x_function_call): Change simple complain
13988         argument to build_overload_call_maybe and build_overload_call, to
13989         LOOKUP_COMPLAIN to match style of rest of code.
13990         * typeck2.c (build_functional_cast): Likewise.
13991         * typeck.c (build_function_call_real): Add flags, so that we can
13992         not complain, if we don't want to complain.  Complain about
13993         arguments, if we are complaining, otherwise don't.
13994         * typeck.c (build_function_call, build_function_call_maybe):
13995         Stick in flags argument.
13996         * typeck.c (build_x_binary_op, build_x_unary_op,
13997         build_x_conditional_expr, build_x_compound_expr): Follow style of
13998         build_x_indirect_ref, as it is more correct and more common.
13999
14000 Thu Jan 27 14:36:20 1994  Jason Merrill  <jason@deneb.cygnus.com>
14001
14002         * call.c (build_method_call): Don't check for being called with
14003         a pointer.
14004
14005         * decl2.c (finish_file): Don't play with DECL_CLASS_CONTEXT for the
14006         static initializer function.
14007
14008         * init.c (build_member_call): Use convert_force here, too.
14009
14010         * search.c (compute_access): Only treat static members specially
14011         if they are referenced directly.
14012
14013 Wed Jan 26 18:28:14 1994  Jason Merrill  <jason@deneb.cygnus.com>
14014
14015         * gxxint.texi (Access Control): New node.
14016
14017         * search.c (current_scope): New function; returns whichever of
14018         current_class_type and current_function_decl is the most nested.
14019         (compute_access): Total overhaul to make it clearer and more
14020         correct.  Don't use the cache for now; in the only situation where
14021         it was used before, it gained nothing.  This frees up three of the
14022         DECL_LANG_FLAGs for possible other use!
14023
14024         * cp-tree.h: #if 0 out DECL_PUBLIC & friends.
14025
14026         * typeck.c (build_component_ref_1): Don't check DECL_PUBLIC.
14027
14028         * call.c (build_method_call): Use convert_force to cast `this' --
14029         rely on the access checking for the method itself.
14030
14031         * init.c (is_friend): Do the nesting thing, handle types.  I am
14032         my own friend.
14033         (is_friend_type): Become a shell for is_friend.
14034         (add_friend): Never stick in ctype.
14035         Why are the friendship functions in init.c, anyway?
14036
14037 Wed Jan 26 17:50:00 1994  Mike Stump  <mrs@cygnus.com>
14038
14039         * cvt.c (build_type_conversion_1): Don't conditionalize call to
14040         pedwarn upon pedantic.
14041
14042 Wed Jan 26 17:20:46 1994  Mike Stump  <mrs@cygnus.com>
14043
14044         * cvt.c (convert_to_reference): Add 8.4.3 checking so that one
14045         gets a warning if one tries to initialize a non-const & from a
14046         non-lvalue.
14047         * cvt.c (convert_to_reference): Use %P format for argument
14048         numbers in warnings.
14049
14050 Wed Jan 26 14:35:06 1994  Mike Stump  <mrs@cygnus.com>
14051
14052         * init.c (build_delete): Follow style in call.c to construct the
14053         virtual call to the desctructor, as that code is right.  Fixes a
14054         problem of the compiler saying a pointer conversion is ambiguous.
14055
14056 Wed Jan 26 11:28:14 1994  Jason Merrill  <jason@deneb.cygnus.com>
14057
14058         * cp-tree.h (VTABLE_NAME_P): Change other occurrence of
14059         VTABLE_NAME_FORMAT to VTABLE_NAME.
14060
14061         * *: s/visibility/access/g
14062
14063 Tue Jan 25 18:39:12 1994  Jason Merrill  <jason@deneb.cygnus.com>
14064
14065         * typeck.c (build_modify_expr): Don't smash references if INIT_EXPR.
14066
14067 Tue Jan 25 13:54:29 1994  Mike Stump  <mrs@cygnus.com>
14068
14069         * init.c (build_delete): Back out Jan 17th & 18th pacthes, as
14070         they break libg++.
14071
14072 Tue Jan 25 13:11:45 1994  Jason Merrill  <jason@deneb.cygnus.com>
14073
14074         * decl.c (duplicate_decls): Fix pointer arithmetic.
14075
14076 Mon Jan 24 15:50:06 1994  Chip Salzenberg  <chip@fin.uucp>
14077
14078             [ cp-* changes propagated from c-* changes in 940114 snapshot ]
14079             * cp-parse.y (maybe_attribute): Allow multiple __attribute__
14080             clauses on a declaration.
14081
14082 Mon Jan 24 17:06:23 1994  Jason Merrill  <jason@deneb.cygnus.com>
14083
14084         * class.c (finish_struct): Do synthesize methods for anon
14085         structs, just not unions.
14086
14087 Mon Jan 24 13:50:13 1994  Kung Hsu  <kung@mexican.cygnus.com>
14088
14089         * decl.c (xref_tag): handle anonymous nested type.
14090         * decl.c (globalize_nested_type): add no globalize bit check.
14091         * spew.c (hack_more_ids) : templated nested decl not push top
14092         level.
14093
14094         * parse.y : get rid of 'goto do_components'. It is much better
14095         for debugging.
14096
14097         * decl.c (is_anon_name): get rid of the function and use the
14098         macro ANON_AGGRNAME_P.
14099         * pt.c : ditto.
14100
14101 Fri Jan 21 14:06:02 1994  Jason Merrill  <jason@deneb.cygnus.com>
14102
14103         * class.c (finish_struct): Don't synthesize any methods for
14104         anonymous structs/unions.
14105
14106         * typeck.c (build_modify_expr): Don't treat pmf's as class objects.
14107
14108 Thu Jan 20 18:56:46 1994  Jason Merrill  <jason@deneb.cygnus.com>
14109
14110         * method.c (build_opfncall): Call build_indirect_ref on
14111         synthesized instance for operator delete.
14112
14113         * pt.c (type_unification): Don't abort if called with a list of
14114         types in ARGS.
14115
14116         * class.c (instantiate_type): Deal with function templates.
14117
14118 Thu Jan 20 16:55:35 1994  Jim Wilson  <wilson@sphagnum.cygnus.com>
14119
14120         * Makefile.in (CC): Default to cc not gcc.
14121
14122 Thu Jan 20 13:47:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
14123
14124         * typeck.c (build_modify_expr): Call constructor if appropriate.
14125
14126         * decl.c (push_to_top_level): Clear out class-level bindings cache.
14127
14128 Wed Jan 19 13:51:22 1994  Jason Merrill  <jason@deneb.cygnus.com>
14129
14130         * call.c (resolve_scope_to_name): Work recursively (previously only
14131         looked down one level).
14132
14133         * lex.c (do_pending_inlines): If we're still dealing with the last
14134         batch of inlines, don't start working on a new one.
14135
14136         * Makefile.in (stamp-parse): Update conflict count.
14137         (TAGS): Fix.
14138
14139         * parse.y (explicit_instantiation): New rule; implements
14140         'template A<int>' syntax (though not 'template foo(int)' yet).
14141         (structsp): Add explicit_instantiation.
14142
14143 Tue Jan 18 13:53:05 1994  Jason Merrill  <jason@deneb.cygnus.com>
14144
14145         * class.c (finish_struct, etc.): Simplify decision to synthesize
14146         a destructor.
14147
14148         * call.c, class.c, cp-tree.h, decl.c, init.c,
14149         ptree.c, search.c, typeck.c, typeck2.c: Nuke
14150         TYPE_NEEDS_CONSTRUCTOR (change all calls to TYPE_NEEDS_CONSTRUCTING).
14151         * init.c (expand_aggr_init_1): Don't try non-constructor methods
14152         of initializing objects.
14153         (build_new): Don't try other methods if the constructor lookup fails.
14154
14155         * class.c (finish_base_struct): Set cant_have_default_ctor and
14156         cant_synth_copy_ctor properly.
14157         (finish_struct): Likewise.
14158
14159 Mon Jan 17 13:58:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
14160
14161         * typeck.c (build_modify_expr_1): #if 0 out again.
14162         (build_modify_expr): #if 0 out memberwise init code again.
14163
14164         * lex.c (default_copy_constructor_body): Be const-correct.
14165         (default_assign_ref_body): Likewise.
14166
14167         * init.c (perform_member_init): Use TYPE_HAS_CONSTRUCTOR to decide
14168         whether or not to use it, rather than TYPE_NEEDS_CONSTRUCTING.
14169         (expand_aggr_init): Disable silent conversion from initializer list
14170         to list of args for a constructor.
14171
14172         * class.c (base_info): Lose needs_default_ctor.
14173         (finish_base_struct): Likewise.
14174         (finish_struct): Likewise.
14175
14176         * decl.c (init_decl_processing): Don't turn off flag_default_inline
14177         just because flag_no_inline is on.
14178         (finish_decl): Use TYPE_HAS_CONSTRUCTOR to decide to use
14179         constructor.
14180
14181         * class.c (finish_struct): Synthesize default ctor whenever
14182         allowed.
14183
14184         * Makefile.in (TAGS): Don't try to run etags on cp-parse.y.
14185
14186 Sat Jan 15 18:34:33 1994  Mike Stump  <mrs@cygnus.com>
14187
14188         * Makefile.in, configure: Handle the C++ front-end in a
14189         subdirectory.
14190         * cp-*: Move C++ front-end to cp/*.
14191
14192 Fri Jan 14 14:09:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
14193
14194         * cp-typeck.c (build_function_call_real): Modify to match other
14195         instances of taking the address of the function.
14196
14197         * cp-class.c (finish_struct): Set TYPE_HAS_REAL_CONSTRUCTOR to 1 if
14198         there are non-synthesized constructors.
14199         Only set TYPE_NEEDS_CONSTRUCTOR if TYPE_HAS_REAL_CONSTRUCTOR.
14200         Always generate copy constructor if possible.
14201
14202         * cp-tree.h (lang_type): Add has_real_constructor bitfield.
14203         (TYPE_HAS_REAL_CONSTRUCTOR): Define.
14204
14205         * cp-lex.c (default_copy_constructor_body): Use init syntax
14206         for all bases.
14207
14208         * cp-type2.c (store_init_value): Only give error for initializer list
14209         if TYPE_HAS_REAL_CONSTRUCTOR.
14210
14211 Thu Jan 13 15:38:29 1994  Jason Merrill  <jason@deneb.cygnus.com>
14212
14213         * cp-tree.h (DECL_SYNTHESIZED): Add defn.
14214         (lang_decl): Add synthesized bitfield to decl_flags.
14215
14216         * cp-lex.c (cons_up_default_function): Use DECL_SYNTHESIZED to mark
14217         artificial methods, rather than a line # of 0.
14218
14219 Fri Jan 14 18:25:29 1994  Kung Hsu  <kung@mexican.cygnus.com>
14220
14221         * cp-decl (xref_tag): fix a bug in conflict type.
14222         * cp-parse.y : add SCOPED_NAME for uninstantiated template nested
14223         type reference.
14224         * cp-spew.c (yylex) : generated SCOPED_NAME token.
14225         * cp-lex.c (yyprint): handle SCOPED_NAME.
14226
14227 Fri Jan 14 17:00:29 1994  Mike Stump  <mrs@cygnus.com>
14228
14229         * cp-decl.c (pushdecl): Revert patch from Jan 11 19:33:03, as it is
14230         not right.
14231
14232 Thu Jan 13 14:00:35 1994  Kung Hsu  <kung@mexican.cygnus.com>
14233
14234         * cp-decl2.c (grok_x_components): fix a bug that enum type does not
14235         have type_flags.
14236
14237 Thu Jan 13 11:39:34 1994  Mike Stump  <mrs@cygnus.com>
14238
14239         Ensure that all vtable pointers are initialized with all the right
14240         values.
14241
14242         * cp-class.c (is_normal): Changed to reflect new meaning of
14243         CLASSTYPE_VFIELD_PARENT.
14244         * cp-class.c (maybe_fixup_vptrs): Use of
14245         CLASSTYPE_NEEDS_VIRTUAL_REINIT here is misguided.  Use
14246         BINFO_MODIFIED instead.
14247         * cp-class.c (finish_struct): Changed to reflect new meaning of
14248         CLASSTYPE_VFIELD_PARENT.
14249         * cp-decl.c (get_binfo_from_vfield): Removed, unneeded now.
14250         * cp-decl.c (finish_function): Use init_vtbl_ptrs, instead of open
14251         coding it here.
14252         * cp-init.c (init_vfields): Changed name to init_vtbl_ptrs, and
14253         re-implement.
14254         * cp-init.c (emit_base_init): Use new name init_vtbl_ptrs.
14255         * cp-tree.h (vfield_parent): Changed to integer.
14256         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): Changed docs to reflect new
14257         meaning.
14258         * cp-tree.h (init_vtbl_ptrs): Added init_vtbl_ptrs.
14259
14260 Wed Jan 12 18:24:16 1994  Kung Hsu  <kung@mexican.cygnus.com>
14261
14262         * cp-decl.c (xref_tag): re-implement globalize nested type.
14263         * cp-decl2.c (grok_x_components): ditto.
14264         * cp-parse.y: ditto.
14265         * cp-tree.h (lang_type): add no_globalize bit in type_flags.
14266
14267 Wed Jan 12 14:08:09 1994  Jason Merrill  <jason@deneb.cygnus.com>
14268
14269         * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC on friend
14270         decls with a definition attached.
14271
14272         * cp-typeck.c (build_modify_expr): Undo previous change in the case
14273         of INIT_EXPRs.
14274
14275 Tue Jan 11 19:33:03 1994  Jason Merrill  <jason@deneb.cygnus.com>
14276
14277         * cp-typeck.c (build_modify_expr): Replace code for generating
14278         assignment semantics for classes with an error.
14279         (build_modify_expr_1): #if 0 out.
14280
14281         * cp-decl.c (pushdecl): Patch bogus design of pushdecl
14282         behavior for overloaded functions (it doesn't push anything).
14283
14284         * cp-class.c (finish_struct): When generating default op=,
14285         set TYPE_HAS_ASSIGNMENT.
14286
14287 Mon Jan 10 18:48:06 1994  Mike Stump  <mrs@cygnus.com>
14288
14289         * cp-cvt.c (convert): Make {double, clashing enum} -> enum
14290         invalid.
14291         * cp-typeck.c (convert_for_assignment): Simplify.
14292         * cp-decl2.c (warn_enum_clash): Removed.
14293         * invoke.texi (-Wenum-clash): Removed.
14294         * toplev.c (-Wenum-clash): Removed.
14295
14296 Mon Jan 10 17:48:37 1994  Kung Hsu  <kung@mexican.cygnus.com>
14297
14298         * cp-decl.c (finish_decl): fix incorrect popclass call.
14299
14300         * cp-decl.c (is_anon_name): new function, check whether the name
14301         is anonymous name generated by compiler.
14302         * cp-decl.c (grokdeclarator): allow nested SCOPE_REF
14303         * cp-spew.c (hack_more_ids): handle nested type in template.
14304         * cp-parse.y : handle nested type reference in uninstantiated
14305         template.
14306         * cp-call.c (build_method_call): handle uninstantiated template
14307         case.
14308         * cp-pt.c (search_nested_type_in_tmpl): new function, search nested 
14309         type in template.
14310         * cp-pt.c (lookup_nested_type_by_name): new function, lookup nested 
14311         type by name.
14312         * cp-pt.c (tsubst): handle nested type search by name.
14313
14314 Mon Jan 10 14:32:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
14315
14316         * cp-init.c (build_member_call): Propagate qualifiers to new type.
14317
14318         * cp-call.c (build_method_call): Count functions the new way.
14319
14320 Fri Jan  7 19:03:26 1994  Jason Merrill  <jason@deneb.cygnus.com>
14321
14322         * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for nested classes,
14323         too.
14324
14325 Tue Jan  4 16:45:51 1994  Kung Hsu  <kung@cirdan.cygnus.com>
14326
14327         * cp-parse.y: change to handle whether to globalize nested class.
14328         * cp-decl.c(xref_tag, maybe_globalize_type): Likewise.
14329
14330 Mon Jan  3 22:22:32 1994  Gerald Baumgartner  <gb@cygnus.com>
14331
14332         * Makefile.in cp-call.c cp-class.c cp-cvt.c cp-decl.c cp-decl2.c
14333         cp-error.c cp-init.c cp-lex.c cp-lex.h cp-method.c cp-parse.y
14334         cp-spew.c cp-tree.c cp-tree.h cp-type2.c cp-typeck.c cp-xref.c
14335         gplus.gperf toplev.c: Incorporated C++ signature extension.
14336         * cp-sig.c: New file, contains most of signature processing.
14337         * cp-hash.h: Regenerated from gplus.gperf.
14338
14339         * gcc.1 g++.1: Added explanation for  the `-fhandle-signatures'
14340         and `-fno-handle-signatures' command line flags.
14341
14342         * gcc.texi: Changed the last-modification date.
14343         * invoke.texi: Added `-fhandle-signatures' in the list of
14344         C++ language options.  Added explanation for this option.
14345
14346 Tue Dec 28 21:10:03 1993  Mike Stump  <mrs@cygnus.com>
14347
14348         * cp-init.c (expand_vec_init): Remove comptypes test, as it is too
14349         harsh here.
14350
14351 Tue Dec 28 13:42:22 1993  Mike Stump  <mrs@cygnus.com>
14352
14353         * cp-pt.c (do_pending_expansions): Decide to expand a template
14354         member function, based upon it's class type, not the class type of
14355         the first place it was declared.
14356
14357 Tue Dec 28 05:42:31 1993  Mike Stump  <mrs@cygnus.com>
14358
14359         * cp-class.c (is_normal): New routine, use to determine when the
14360         given binfo is the normal one.  (The one that should have the simple
14361         vtable name.)
14362         * cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME
14363         to check if two fndecls are `the same'.  Sometimes this routine can
14364         modify the main vtable, and normal should be 1, in that case, so use
14365         is_normal() to determine if this is the main vtable for the class.
14366         Don't recurse down virtual bases, as they are shared, and we take
14367         care of them elsewhere.
14368         * cp-class.c (modify_vtable_entries): If we have already updated the
14369         vtable with the new virtual, don't do it again.
14370         * cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as
14371         appropriate.  Do virtual function overriding in virtual bases, after
14372         normal overriding, so that the base function list in DECL_VINDEX is
14373         not overridden, before we have a chance to run through the list.
14374         Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'.
14375         Make sure we pass the right address into modify_vtable_entries.
14376         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which
14377         binfo is the one that has the vtable that we based our vtable on.
14378
14379 Fri Dec 24 09:40:52 1993  Michael Tiemann  <tiemann@blues.cygnus.com>
14380
14381         * cp-typeck.c (c_expand_start_case): Use default_conversion to
14382         convert expression from reference type if necessary.
14383
14384 Wed Dec 22 17:58:43 1993  Jason Merrill  <jason@deneb.cygnus.com>
14385
14386         * cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before
14387         trying to read its TREE_VALUE.
14388
14389         * cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here.
14390         (finish_struct): Instead of here.
14391
14392 Tue Dec 21 14:34:25 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14393
14394         * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't
14395         have TYPE_PTRMEMFUNC_P set before we try to build its
14396         CLASSTYPE_ID_AS_LIST.
14397         (get_decl_list): Likewise, when trying to read it.
14398
14399         * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined.
14400         (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT.
14401
14402 Mon Dec 20 13:35:03 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14403
14404         * cp-typeck.c (rationalize_conditional_expr): New function.
14405         (unary_complex_lvalue): Use it.
14406         (build_modify_expr): Use it, since trying to do an ADDR_EXPR of it
14407         with build_unary_op won't cut it.  Don't wrap the COND_EXPR with a
14408         SAVE_EXPR either.
14409
14410         * cp-decl2.c (explicit_warn_return_type): Deleted variable.
14411         (lang_decode_option): Set warn_return_type, not explicit_*, for
14412         -Wreturn-type and -Wall.  This is what rest_of_compilation uses to
14413         decide if it should go into jump_optimize or not.
14414         * cp-tree.h (explicit_warn_return_type): Deleted.
14415         * cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*.
14416         (finish_function): Also complain about no return in a non-void fn if
14417         we're being pedantic (don't rely on use of -Wreturn-type).
14418
14419 Fri Dec 17 15:45:46 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14420
14421         * cp-decl.c (grokdeclarator): Forbid declaration of a function as
14422         static if it's being done inside another function.
14423
14424         * cp-search.c (compute_visibility): Check for friendship both ways.
14425
14426 Fri Dec 17 14:28:25 1993  Jason Merrill  <jason@deneb.cygnus.com>
14427
14428         * cp-cvt.c (build_default_binary_type_conversion): Make error
14429         messages more helpful.
14430
14431         * cp-error.c (op_as_string): New function, returns "operator =="
14432         given EQ_EXPR or suchlike.
14433
14434 Fri Dec 17 13:28:11 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14435
14436         * cp-call.c (print_n_candidates): New function.
14437         (build_overload_call_real): Use it when we complain about a call
14438         being ambiguous.
14439
14440 Fri Dec 17 12:41:17 1993  Jason Merrill  <jason@deneb.cygnus.com>
14441
14442         * cp-call.c (build_method_call): Fix checking for static call
14443         context.
14444
14445         * cp-method.c (build_opfncall): Call build_indirect_ref on argument
14446         to operator new.
14447
14448         * cp-init.c (build_new): Don't mess with rval when building
14449         indirect ref.
14450
14451 Thu Dec 16 16:48:05 1993  Kung Hsu  <kung@cirdan.cygnus.com>
14452
14453         * cp-lex.c (default_assign_ref_body): add check when TYPE_NESTED_
14454         NAME(type) may not be exist. It's not a problem for old compiler.
14455
14456 Thu Dec 16 14:46:06 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14457
14458         * cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's
14459         never used for anything.
14460         (struct lang_type, member type_flags): Delete field
14461         `alters_visibility', and up `dummy' by 1.
14462         * cp-class.c (finish_base_struct): Delete code that copies the
14463         setting of CLASSTYPE_ALTERS_VISIBILITIES_P.
14464         (finish_struct): Delete code that sets it.
14465
14466 Thu Dec 16 14:44:39 1993  Jason Merrill  <jason@deneb.cygnus.com>
14467
14468         * cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to
14469         build_method_call that I messed up before.
14470
14471         * cp-search.c (get_base_distance): If protect > 1, allow immediate
14472         private base.
14473
14474         * cp-class.c (finish_base_struct): Set cant_synth_* correctly.
14475         (finish_struct): Likewise.  Well, nigh-correctly; it won't deal
14476         properly with the case where a class contains an object of an
14477         ambiguous base class which has a protected op=.  Should be fixed
14478         when the access control code gets overhauled.
14479         (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly.
14480
14481 Thu Dec 16 12:17:06 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14482
14483         * cp-lex.c (real_yylex): Turn the code back on that deals with
14484         __FUNCTION__ and __PRETTY_FUNCTION__.  Don't use lookup_name, to
14485         avoid the ambiguity problems that led to it being turned off in the
14486         first place.
14487
14488         * cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P
14489         to see if something is a method.
14490
14491 Wed Dec 15 18:35:58 1993  Mike Stump  <mrs@cygnus.com>
14492
14493         * cp-typeck.c (build_modify_expr): Avoid error messages on small
14494         enum bit fields.
14495         * cp-typeck.c (convert_for_assignment): Add missing argument to
14496         cp_warning and cp_pedwarn calls.
14497
14498 Wed Dec 15 18:25:32 1993  Jason Merrill  <jason@deneb.cygnus.com>
14499
14500         * cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base
14501         initializers; it's just anachronistic.
14502
14503         * cp-decl.c (finish_decl): Don't require external-linkage arrays
14504         to have a complete type at declaration time when pedantic.
14505
14506 Tue Dec 14 11:37:23 1993  Jason Merrill  <jason@deneb.cygnus.com>
14507
14508         * cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set.
14509
14510         * cp-call.c (build_method_call): Don't dereference pointer given
14511         as instance.
14512
14513         * cp-decl.c (finish_function): Don't pass pointer to
14514         build_method_call.
14515         (finish_function): Likewise.
14516
14517         * cp-typeck.c (build_x_function_call): Likewise.
14518
14519         * cp-method.c (build_component_type_expr): Likewise.
14520
14521         * cp-init.c (build_member_call): Likewise.
14522         (build_new): Likewise.
14523
14524 Mon Dec 13 18:04:33 1993  Kung Hsu  <kung@cirdan.cygnus.com>
14525
14526         * cp-decl.c (xref_tag): fix regression created by changes made 
14527         in Dec. 7 1993.
14528         * cp-decl.c (xref_defn_tag): fix parallel nested class problem.
14529
14530 Fri Dec 10 12:40:25 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14531
14532         * cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print
14533         out the final evaluation of the function, so we can see if ELLIPSIS,
14534         USER, and EVIL were set at the end.
14535
14536         * cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue,
14537         only go for setting TRIVIAL_CODE if we are dealing with types that
14538         are compatible.
14539
14540 Thu Dec  9 18:27:22 1993  Mike Stump  <mrs@cygnus.com>
14541
14542         * cp-decl.c (flag_huge_objects): New flag to allow large objects.
14543         * toplev.c (lang_options): Likewise.
14544         * cp-decl2.c (flag_huge_objects, lang_f_options): Likewise.
14545         * cp-decl.c (delta_type_node): New type for delta entries.
14546         * cp-tree.h (delta_type_node): Likewise.
14547         * cp-decl.c (init_decl_processing): Setup delta_type_node.
14548         * cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use
14549         delta_type_node instead of short_integer_type_node. 
14550         * cp-class.c (build_vtable_entry): Likewise.
14551
14552 Thu Dec  9 16:19:05 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14553
14554         * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of
14555         NO_{DOLLAR,DOT} macro checks, so it always gets defined.
14556         (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL.
14557
14558 Wed Dec  8 17:38:06 1993  Mike Stump  <mrs@cygnus.com>
14559
14560         * cp-decl.c (finish_decl): Make sure things that can go into
14561         "common", do go into common, if -fcommon is given.
14562
14563 Wed Dec  8 13:01:54 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14564
14565         * cp-call.c (print_harshness) [DEBUG_MATCHING]: New function.
14566         (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out
14567         argument matching diagnostics to make instantly clear what the
14568         compiler is doing.
14569
14570         * cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue,
14571         then check to see if the penalty was increased due to
14572         signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't.
14573
14574 Tue Dec  7 18:29:14 1993  Kung Hsu  <kung@cirdan.cygnus.com>
14575
14576         * cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution
14577         problem.
14578
14579 Tue Dec  7 16:09:34 1993  Jason Merrill  <jason@deneb.cygnus.com>
14580
14581         * cp-class.c (finish_struct): Before synthesizing methods, if no
14582         methods have yet been declared then set nonprivate_method.  Don't
14583         set non_private method after synthesizing a method.
14584
14585         * cp-lex.c (extract_interface_info): If flag_alt_external_templates
14586         is set, tie emitted code to the location of template instantiation,
14587         rather than definition.
14588
14589         * cp-tree.h: Declare flag_alt_external_templates.
14590
14591         * cp-decl2.c (lang_decode_option): Support -falt-external-templates.
14592
14593         * toplev.c (lang_options): Likewise.
14594
14595 Mon Oct  4 12:50:02 1993  Chip Salzenberg  <chip@fin.uucp>
14596
14597         [changes propagated from 930810 snapshot]
14598         * cp-decl.c (init_decl_processing): Make long long available for use
14599         as SIZE_TYPE and PTRDIFF_TYPE.
14600         (finish_decl): Allow file-scope static incomplete array.
14601         (grokdeclarator): Don't pass on const and volatile fron function
14602         value type to function type.
14603         Warn here for volatile fn returning non-void type.
14604         * cp-parse.y (attrib): Accept attributes `volatile' with alias
14605         `noreturn', and `const'.
14606         * cp-typeck.c (default_conversion): Don't lose const and volatile.
14607         (build_binary_op_nodefault): Generate pedantic warning for comparison
14608         of complete pointer type with incomplete pointer type.
14609         (build_c_cast): Be careful that null pointer constant be INTEGER_CST.
14610
14611 Tue Dec  7 10:46:48 1993  Jason Merrill  <jason@deneb.cygnus.com>
14612
14613         * cp-init.c (expand_vec_init): When creating a temporary for copying
14614         arrays, use the type of the source, not the target.
14615
14616         * cp-cvt.c (convert): Pass an argument for errtype to
14617         convert_to_reference.
14618
14619         * cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with
14620         methods, -> and `this'.
14621
14622 Mon Dec  6 17:12:33 1993  Jason Merrill  <jason@deneb.cygnus.com>
14623
14624         * cp-error.c (parm_as_string): New function; returns `this' or arg
14625         number.  Corresponds to %P.
14626         (dump_expr): Deal with method calls.
14627
14628         * cp-cvt.c (convert_to_reference): Stop using warn_for_assignment.
14629         * cp-typeck.c (convert_for_assignment): Likewise.
14630         (warn_for_assignment): Lose.
14631
14632 Mon Dec  6 11:33:35 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14633
14634         * cp-call.c (ideal_candidate_ansi): Delete code that was never
14635         doing anything useful.  Instead, sort once, and DO NOT wipe
14636         out any codes with EVIL_CODE, since that's what we use as a
14637         marker for the end of the list of candidates.
14638
14639         * cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN.
14640
14641 Mon Dec  6 12:49:17 1993  Jason Merrill  <jason@deneb.cygnus.com>
14642
14643         * cp-init.c (get_aggr_from_typedef): New function, like
14644         is_aggr_typedef but returns the _TYPE.
14645
14646         * cp-call.c, cp-init.c, cp-method.c: Eradicate err_name.
14647
14648 Sun Dec  5 18:12:48 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14649
14650         * cp-lex.c (readescape): Pedwarn when a hex escape is out of range.
14651
14652 Thu Nov 25 23:50:19 1993  Chip Salzenberg  <chip@fin.uucp>
14653
14654         Delay language context change until beginning of next decl.
14655
14656         * cp-lex.h (c_header_level): Removed.
14657         (pending_lang_change): Declared.
14658         * cp-lex.c (c_header_level): Renamed from in_c_header, made static.
14659         (pending_lang_change): Defined.
14660         (check_newline): Rework code that recognizes line number and
14661         filename changes.  Instead of pushing and popping lang context,
14662         increment and decrement pending_lang_change.
14663         (do_pending_lang_change):  Push and pop lang context according
14664         to value of pending_lang_change.
14665         * cp-parse.y (extdefs): Use lang_extdef instead of extdef.
14666         (extdef): Same as extdef, but call do_pending_lang_change() first.
14667
14668 Mon Nov 15 15:39:15 1993  Chip Salzenberg  <chip@fin.uucp>
14669
14670         * cp-typeck.c (build_binary_op_nodefault): Warn for ordered
14671         compare of ptr with 0 only if pedantic in both cases.
14672
14673 Thu Nov 25 13:31:37 1993  Chip Salzenberg  <chip@fin.uucp>
14674
14675         Reinstate the below patch, which got lost in the Cygnus merge:
14676         Tue Nov 23 13:59:24 1993  Hallvard B Furuseth  (hbf@durin.uio.no)
14677         * cp-parse.y (maybe_type_qual): Don't fail to set $$.
14678
14679 Wed Nov 17 19:03:30 1993  Chip Salzenberg  <chip@fin.uucp>
14680
14681         * cp-parse.y (attrib): Allow "ident(ident)" like the C front end.
14682
14683 Fri Oct 22 20:43:37 1993  Paul Eggert  <eggert@twinsun.com>
14684
14685         * cp-lex.c (real_yylex): Diagnose floating point constants
14686         that are too large.
14687
14688 Wed Nov 17 19:10:37 1993  Chip Salzenberg  <chip@fin.uucp>
14689
14690         * cp-type2.c (build_functional_cast): ARM page 16: When a class
14691         and an object, function or enumerator are declared in the same
14692         scope with the same name, the class name is hidden.
14693
14694 Wed Nov 17 19:07:18 1993  Chip Salzenberg  <chip@fin.uucp>
14695
14696         * cp-call.c (convert_harshness_ansi): Distinguish float, double,
14697         and long double from each other when overloading.
14698         (compute_conversion_costs_{ansi,old}, build_method_call,
14699         build_overlay_call_real, convert_to_aggr): Always set and
14700         always use H_LEN member of candidate structure.
14701
14702 Mon Oct 11 23:10:53 1993  Chip Salzenberg  <chip@fin.uucp>
14703
14704         * cp-decl.c (duplicate_decls): Note redeclarations of library
14705         functions, and generate distinct warnings for them.
14706
14707 Mon Oct  4 12:26:49 1993  Chip Salzenberg  <chip@fin.uucp>
14708
14709         Support format warnings in G++.
14710
14711         * cp-tree.h: Protect against multiple inclusion.
14712         Declare all public functions in c-common.c (copy from c-tree.h).
14713         (STDIO_PROTO): Define.
14714         (warn_format): Declare.
14715         (record_format_info): Remove declaration.
14716         * cp-decl.c (init_decl_processing): Call init_function_format_info.
14717         * cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format.
14718         * cp-typeck.c (build_function_call_real): Call check_function_format.
14719         (record_format_info): Remove -- obsolete stub.
14720
14721 Sat Jul 24 12:04:29 1993  Chip Salzenberg  <chip@fin.uucp>
14722
14723         * cp-decl.c (duplicate_decls): Don't warn for non-extern var decl
14724         following an extern one (for -Wredundant-decls).
14725         * cp-parse.y (primary): In statement expression case, if compstmt
14726         returns something other than a BLOCK, return it unchanged.
14727
14728 Thu Dec  2 20:44:58 1993  Chip Salzenberg  <chip@fin.uucp>
14729
14730         * cp-decl.c (warn_extern_redeclared_static): New function made
14731         from code extracted from pushdecl.
14732         (duplicate_decls, pushdecl): Call new function.
14733         (lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE
14734         to be a TREE_LIST when function is declared in 'extern "C" {}'.
14735
14736 Fri Dec  3 16:01:10 1993  Jason Merrill  <jason@deneb.cygnus.com>
14737
14738         * cp-class.c (duplicate_tag_error): Use cp_error.
14739         (finish_base_struct): Check for ambiguity with direct base, and don't
14740         generate op= or copy ctor if it exists.
14741
14742 Fri Dec  3 15:32:34 1993  Kung Hsu  <kung@cirdan.cygnus.com>
14743
14744         * cp-init.c (expand_member_init): when initializer name is null,
14745         don't try to build it now because emit_base_init will handle it.
14746
14747 Fri Dec  3 12:28:59 1993  Jason Merrill  <jason@deneb.cygnus.com>
14748
14749         * cp-lex.c (init_lex): Initialize input_filename to "<internal>" for
14750         code such as ExceptionHandler::operator=.
14751
14752 Fri Dec  3 10:32:08 1993  Jason Merrill  <jason@deneb.cygnus.com>
14753
14754         * cp-decl.c (grokdeclarator): Don't try to print out dname when
14755         complaining about arrays of references if decl_context==TYPENAME,
14756         since it will be null.
14757
14758         * cp-decl2.c: Default to flag_ansi_overloading.
14759
14760 Thu Dec  2 18:05:56 1993  Kung Hsu  <kung@cirdan.cygnus.com>
14761
14762         * cp-call.c (build_method_call): use binfo from instance if it's
14763         different from binfo (basetype_path) passed from above.
14764
14765 Wed Nov 17 19:14:29 1993  Chip Salzenberg  <chip@fin.uucp>
14766
14767         cp-error.c (dump_expr): Use unsigned chars to output a
14768         TREE_REAL_CST in hex.
14769
14770 Thu Dec  2 11:05:48 1993  Jason Merrill  <jason@deneb.cygnus.com>
14771
14772         * cp-class.c (finish_struct): Fix typo in setting
14773         cant_synth_asn_ref.
14774
14775         * cp-tree.h (TYPE_NESTED_NAME): New macro, does
14776         DECL_NESTED_TYPENAME (TYPE_NAME (NODE)).
14777
14778         * cp-lex.c (default_copy_constructor_body): Change
14779         DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype).
14780         (default_assign_ref_body): Likewise.
14781         (default_copy_constructor_body): Call operator= explicitly for
14782         base classes that have no constructor.
14783
14784 Thu Dec  2 10:47:15 1993  Michael Tiemann  <tiemann@blues.cygnus.com>
14785
14786         * cp-call.c (build_method_call): If the instance variable is
14787         converted to error_mark_node when we're trying to convert it to the
14788         base type of a method we're looking up, return error_mark_node.
14789
14790 Thu Dec  2 10:41:16 1993  Torbjorn Granlund  <tege@cygnus.com>
14791
14792         * cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR
14793         cases, tests for unsigned operands by peeking inside a NOP_EXPR.
14794
14795 Wed Dec  1 13:33:34 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14796
14797         * cp-call.c (compute_conversion_costs_ansi): Use the size of struct
14798         harshness_code, not the size of short, for clearing out the
14799         ansi_harshness.
14800
14801         * cp-call.c (print_candidates): New function.
14802         (build_method_call): When we had some candidates, but didn't get a
14803         usable match, don't report that we got an error with the first
14804         candidate.  Instead, say there were no matches, and list the
14805         candidates with print_candidates.  In the second pass, make sure we
14806         clear out ever_seen, so we can accurately count the number of
14807         functions that qualified.
14808
14809 Wed Dec  1 09:53:59 1993  Torbjorn Granlund  <tege@cygnus.com>
14810
14811         * cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR
14812         only if op1 is known to be != -1.
14813         (build_binary_op_nodefault): Handle *_DIV_EXPR likewise.
14814
14815 Tue Nov 30 14:07:26 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
14816
14817         * cp-method.c (hack_identifier): If the field itself is private, and
14818         not from a private base class, say so.
14819
14820 Mon Nov 29 03:00:56 1993  Jason Merrill  <jason@deneb.cygnus.com>
14821
14822         * cp-decl.c (grokdeclarator): Always warn on initialization of
14823         const member.
14824
14825 Wed Nov 24 00:49:35 1993  Jason Merrill  <jason@deneb.cygnus.com>
14826
14827         * cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly.
14828         (finish_base_struct): Set cant_synth_asn_ref properly.
14829
14830         * cp-lex.c (cons_up_default_function): Add section for operator=.
14831         (default_assign_ref_body): New function, mostly cribbed from
14832         default_copy_constructor_body.
14833
14834         * cp-class.c (base_info): Add members cant_synth_copy_ctor,
14835         cant_synth_asn_ref, no_const_asn_ref.
14836         (finish_base_struct): Update no_const_asn_ref, note that you should
14837         update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF.
14838         (finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and
14839         initialize them properly.  Set no_const_asn_ref properly.  Set
14840         cant_synth_* in some of the situations where they should be set.
14841         Propagate TYPE_GETS_ASSIGN_REF.  Use cant_synth_copy_ctor.  Add call
14842         to cons_up_default_function for operator=.
14843
14844 Tue Nov 23 20:24:58 1993  Mike Stump  <mrs@cygnus.com>
14845
14846         * cp-cvt.c (convert_force): Add code to perform casting of pointer
14847         to member function types.
14848         * cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate
14849         when the conversion should be done, regardless.
14850         * cp-tree.h (build_ptrmemfunc): Likewise.
14851         * cp-type2.c (digest_init): Likewise.
14852         * cp-typeck.c (convert_for_assignment): Likewise.
14853
14854 Tue Nov 23 18:06:58 1993  Jason Merrill  <jason@deneb.cygnus.com>
14855
14856         * cp-error.c (dump_expr): Do the right thing for variables of
14857         reference type.
14858
14859         * cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF
14860         and its kin properly.
14861         (xref_tag): Propagate TYPE_GETS_ASSIGN_REF.
14862
14863 Tue Nov 23 12:26:13 1993  Mike Stump  <mrs@cygnus.com>
14864
14865         * cp-method.c (build_opfncall): Don't count pointer to member
14866         functions as aggregates here, as we don't want to look up methods in
14867         them.  The compiler would core dump if we did, as they don't have
14868         normal names.
14869         * cp-typeck.c (build_indirect_ref): Improve wording on error
14870         message.
14871
14872 Mon Nov 22 14:22:23 1993  Jason Merrill  <jason@deneb.cygnus.com>
14873
14874         * cp-decl.c (grok_op_properties): Allow operator?: with pedwarn
14875         (since it's supported in other compiler bits).
14876
14877         * cp-method.c (report_type_mismatch): Use cp_error; ignore err_name
14878         argument.
14879
14880         * cp-error.c (dump_function_decl): Don't print return type for
14881         constructors and destructors.
14882
14883         * cp-cvt.c (cp_convert_to_pointer): Import code from
14884         convert_to_pointer so we can return error_mark_node in the case of an
14885         error, and to allow more meaningful error messages.
14886         (build_type_conversion): Don't go through void* when trying
14887         to convert to a pointer type.
14888
14889         * cp-decl.c (grokfndecl): Move call to grok_op_properties back
14890         after grokclassfn so that it's dealing with the right decl.
14891         (grok_op_properties): Don't assert !methodp for op new and op delete.
14892
14893         * cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now
14894         no uses of it in the compiler).
14895
14896         * cp-call.c (build_scoped_method_call): Fix for destructors of simple
14897         types.
14898         (build_method_call): Likewise.
14899
14900 Fri Nov 19 12:59:38 1993  Jason Merrill  <jason@deneb.cygnus.com>
14901
14902         * cp-tree.c (count_functions): Abstraction function.
14903
14904         * cp-call.c (build_overload_call_real): Deal with new overloading
14905         properly, remove dead code.
14906
14907         * gcc.c (default_compilers): Generate and use .ii files in the
14908         intermediate stage of compiling C++ source.
14909
14910 Fri Nov 19 11:26:09 1993  Jim Wilson  <wilson@sphagnum.cygnus.com>
14911
14912         * cp-expr.c (cplus_expand_expr): Make call_target a valid memory
14913         address before using it, so it can be later safely compared.
14914
14915 Fri Nov 12 15:30:27 1993  Jason Merrill  <jason@deneb.cygnus.com>
14916
14917         * cp-pt.c (tsubst): Deal with new overloading.
14918
14919         * cp-typeck.c (fntype_p): is the arg function type?
14920         (comp_target_parms): pedwarn on conversion from (anything) to (...).
14921         (build_x_function_call): Deal with new overloading.
14922
14923         * cp-tree.c (decl_list_length): Deal with new overloading.
14924         (decl_value_member): Like value_member, but for DECL_CHAINs.
14925
14926         * cp-decl.c (duplicate_decls): Deal with new overloading.
14927         (start_decl): Likewise.
14928
14929         * cp-class.c (instantiate_type): Deal with new overloading.
14930
14931         * cp-call.c (convert_harshness_ansi): Deal with new overloading.
14932         (convert_harshness_old): Deal with new overloading.
14933         (build_overload_call_real): Likewise.
14934
14935 Mon Nov  8 13:50:49 1993  Jason Merrill  <jason@deneb.cygnus.com>
14936
14937         * cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL
14938         if unambiguous, NULL_TREE otherwise.
14939         (get_first_fn): Returns the first appropriate FUNCTION_DECL.
14940         (is_overloaded_fn): Returns whether or not the passed tree is
14941         a function or list of functions.
14942
14943         * cp-init.c (init_init_processing): use `get_first_fn' to find
14944         the FUNCTION_DEFN for new and delete.
14945
14946         * cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut
14947         code size in half (I spit on special cases).
14948
14949 Tue Sep  7 20:03:33 1993  Jason Merrill  <jason@deneb.cygnus.com>
14950
14951         * cp-decl.c: Allow references and template type parameters as well